Live in production · Retrieval for any sport

Bring AI to the library you already have.

PlayPath indexes your existing video, drills and articles — rugby, football, netball, swimming, whatever your catalogue covers — then answers your members' questions inside your own product, with citations that point back to your content, on your domain.

No migration. Your catalogue stays where it is.

Demo corpus · rugby Live

Click a chip — or hit ↑ — to see PlayPath answer in real time.

This is the same streaming endpoint your integration calls. The demo runs on a rugby catalogue because that is what our first customer connected — there is no sport-specific logic in the engine. Point it at a swimming or basketball library and it behaves identically.

Running today at The Rugby Site
497
videos indexed and queryable
~500/day
personalised slates served
3
surfaces live: search, chat, recommendations
<1s
to first streamed token
How it works

Three steps, and none of them are “migrate your content”.

You keep your CMS, your player, and your paywall. PlayPath sits alongside them and does the retrieval.

Step 01

Push your catalogue

Send bounded public metadata — id, title, topics, coach, availability — to /api/v1/content-parents/batch. Write-only credential. No member data leaves your side.

Step 02

We index and link it

Embeddings plus an entity graph connect drills to concepts to coaches — so a question about the breakdown, the high press, or the pick-and-roll finds the clip that never used those words. The vocabulary is learned from your catalogue, not hard-coded per sport.

Step 03

Call the API, or drop in the widget

One GET for a streaming answer, or the WordPress plugin if you'd rather not write any client code at all.

Capabilities

What your members get.

Every one of these runs against your catalogue, in your sport, scoped to your organisation. Turn on what you want; the rest stays dark.

Semantic search

Answers with receipts.

Members ask in plain language and get a written answer with the exact clips and passages it drew from. Every citation resolves to a URL on your domain — the answer sends traffic into your library, not away from it.

Hybrid vector + keyword Streaming SSE In production
Recommendations

Different every time they come back.

Ranks your catalogue per member from what they've actually assigned, watched and finished — then rotates, so a returning coach never gets the same three cards twice. Retired content is filtered out before it can be offered.

Co-assignment ranking Exposure rotation In production
Plan builder

From question to training session.

Members assemble a session on a canvas of phase-coloured blocks — warm-up through cool-down — pulling drills straight out of your library as references, with revision history and squad sharing.

Drag to reorder Cited references Revisions
Match analysis

Any spreadsheet, read properly.

A coach uploads whatever match file their analyst produced — no fixed template — and gets structured stats plus a written narrative that points at the drills in your library which address what went wrong.

Layout-agnostic xlsx Opposition + individual stats
Coach chat

It remembers the squad.

A tool-calling assistant that holds context across sessions — the age grade being coached, what was worked on last week, which drills already landed — so members stop re-explaining themselves every time.

Persistent memory Tool calling In production
Squads

Built for a club, not a solo user.

Members organise players into squads and groups, share plans across a coaching staff, and carry age-grade and level context into every answer the assistant gives them.

Roles + invitations Shared plans
Integrate

A key per job, and nothing more.

Every endpoint is scoped. Your ingestion credential can write catalogue and never read an answer; your read credential can never write. Turn on only the groups you use.

Ingest

telemetry:ingest Write-only. Public metadata and activity signals — never member records.
POST /api/v1/content-parents/batch Catalogue hierarchy — which chapters belong to which course.
POST /api/v1/recommendation-contents/batch Rankable content: title, topics, coach, availability, published date.
POST /api/v1/source-activity-events/batch What members assigned, opened, played or finished. Drives ranking.

Ask

chat Retrieval-grounded answers with sources.
GET /api/rag/stream Server-sent events. Sources arrive before the prose.
POST /api/rag/chat The same answer as one JSON response, when you cannot stream.

Recommend

recommendations:read Personalised, rotating slates per member and surface.
POST /api/v1/recommendations A ranked slate for one member on one surface, with a reason per item.

Converse

chat Multi-turn coach sessions that keep context between visits.
POST /api/conversations Open a session for a member.
POST /api/conversations/:id/messages/stream Add a turn and stream the reply, tool calls included.
POST /api/conversations/:id/blocks Write session-plan blocks directly, stamped with coach authorship.
POST /api/end_user_profiles Upsert a member profile so answers land at the right age grade and level.

Library

content:read content:write Read or manage the indexed items themselves. Separate scopes, so read access never implies write.
GET /api/items List and inspect what PlayPath has indexed for you.
POST /api/items Create, update or remove an item. Content changes trigger re-embedding.

The one you will call most

GET /api/rag/stream
$ curl -N "https://playpath.io/api/rag/stream" \
    --get \
    --data-urlencode "message=Why is our scrum collapsing?" \
    --data-urlencode "api_key=$PLAYPATH_KEY"

event: content_source
data: {"type": "shared_sample",
       "organization_name": "The Rugby Site",
       "organization_slug": "the-rugby-site",
       "read_only": true}

data: The most common cause is the tighthead
data: binding late. Three drills in your
data: library address exactly this…

# The content_source event lands first, so you can paint
# citations before the prose arrives. 4,000 char cap on message.
Security

Your catalogue is yours.

Isolated per organisation

Every query, embedding and recommendation is scoped to your organisation. One tenant's content is never reachable from another's credential.

Scoped API keys

Keys carry explicit scopes — chat, ingestion, recommendations — and default to deny. An ingestion key cannot read answers.

Public metadata only

Ingestion takes id, title, topics, coach and availability. No member records, no recipient data, no paywalled body text.

Get started

Point it at your library and see what it finds.

We'll index a slice of your catalogue and send back real answers against your own content — before you write a line of integration code.

Coaching on your own? Sign up as a coach →