Case study · Sales enablement · 0→1

From content graveyard to just-in-time selling.

Sales-content management for the Mindtickle platform. Admins organise approved content into hubs and assets; reps find exactly what a deal needs and share it with prospects; and every share is tracked — so the seller sees what actually landed.

Role: Built 0→1 Adopted company-wide React · TypeScript Relay · GraphQL persisted queries @dnd-kit · Design System
aviato.mindtickle.com/learner/assets
The Asset Hub landing: featured hubs and 17 total hubs (Case Studies, Competitive Intel, Playbooks, Deck Templates, and more), a Plays sidebar with guided content sequences, and a prominent Share assets action.
The rep's view — hubs, assets, and guided Plays, with sharing front and centre (Aviato demo org).
0→1
Built from scratch
Company-wide
Shipped as part of the core package, across the customer base
Relay
Persisted-query GraphQL data layer
Share → Track
A closed engagement-analytics loop
01
The problem

Great sales content is worthless if nobody can find it.

Marketing builds battlecards, case studies, and decks — then they vanish into drives and wikis. Reps can't find the approved version, so they improvise or reuse something stale, and nobody knows whether a prospect ever opened what was sent.

Asset Hub makes the right content discoverable, shareable, and measurable: organised into hubs, surfaced where reps work, shared in a click — and every prospect interaction tracked back to the seller.

02
The model

Hubs, assets, and guided plays.

Content is organised into hubs that nest into a hierarchy, holding assets with thumbnails, owners, expiry, and usage stats. Plays string assets into guided sequences — "How to Win Against ACME," "MEDDPICC Foundations" — so reps get a path, not just a pile.

Structure

Nestable hubs → assets

A real hierarchy (parent-chain links, an ALL · ASSET · HUB entity filter, public/restricted access) — reorderable by drag-and-drop with @dnd-kit.

Guidance

Plays

Curated sequences that walk a rep through the right content for a moment — competitive intel, onboarding, a methodology — instead of leaving them to hunt.

Reach

Share in a click

Pick recipients and share via email (Nylas) or a link, single or multi-recipient — the entry point to the whole share→track loop.

03
The engineering

A performance-minded Relay data layer.

The notable choice here is the data layer: React + Relay (GraphQL) rather than plain queries — fragment colocation, @connection-driven pagination, and persisted-query maps pushed to a global store so the client ships query IDs, not query text.

Relay + persisted queries

Components declare their own data needs as fragments; Relay composes them into efficient queries. Persisted-query maps (built at compile time, served from a shared store) mean smaller requests and a tighter security surface — a sophisticated, performance-first data layer.

Built on the Mindtickle design system

Composed from dozens of @mindtickle/* components (action bars, badges, banners, the asset-hub shared UI) plus browser-interaction-time for accurate engagement tracking — consistent with the platform, fast to build on.

A monorepo, embedded in the shell

Structured as a monorepo — asset-library (the app) and content-shared (a reusable library) — and loaded as part of the Mindtickle platform shell, so Asset Hub composes with the rest of the product (it also ships assets inside Digital Sales Rooms).

04
The share → track loop

Closing the loop: from a share to an engagement signal.

Sharing isn't the end — it's the start of a measurement loop. When a rep shares, the prospect opens a branded external page (no account needed), every interaction is captured, and it all flows back to the seller's Interactions dashboard.

Rep
Shares an asset
email · link
Prospect
Opens external page
no account
System
Captures engagement
views · time-spent
Seller
Sees Interactions
dashboard
aviato.mindtickle.com/learner/assets/interactions
The Interactions dashboard: per-share rows showing views (e.g. 162), time-spent (e.g. 2h 59m 36s), and share method, filterable by recipient, date range, and share type — recipient emails redacted.
The other half of the loop — views and time-spent per share (recipient emails redacted).
05
Receipts

Not a side feature — part of the core product.

Built 0→1 and shipped as part of the core package, adopted across Mindtickle's entire customer base:

0→1
Built from scratch
Company-wide
Adopted across the customer base
Core package
Shipped as part of the platform, not a bolt-on
Relay
Persisted-query GraphQL data layer
Nested hubs
A real content hierarchy, drag-to-reorder
Share → Track
Closed-loop engagement analytics

Adoption reflects Asset Hub shipping as part of Mindtickle's core package across its customer base.

Keep reading

The platform work underneath.

Next case study
Frontend Build Revamp →