← Asset Platform
For engineering

Asset Platform — Architecture

How content assets are discovered, described, embedded, verified and linked to journeys — and how that runs distributed across many machines writing into one shared store.

Two systems, joined by a tag

The platform keeps two concerns deliberately separate, connected only by the asset ↔ journey tag:

1 · Asset catalog (system of record)

Curriculum-agnostic. Every asset that exists — video, image, interactive, document — with its provenance, media location and a machine-written brief of what it teaches. This is what the portal shows.

2 · Knowledge graph (LOs & journeys)

The learning structure the chapter-research side produces. The catalog never owns journeys; it only carries a tag from an asset (or asset part) to the journey / LO it covers.

Keeping them apart means the same asset can be reused across journeys, and the graph can evolve without rewriting the catalog.

The pipeline

each unit: Extract → Describe → Embed → Match → Verify → Link (bold = an LLM pass)

Assets and parts

A file used in slices — a book read a page at a time, a video referenced by timestamp — is an :Asset with :AssetPart children (PART_OF). The part is what gets tagged and embedded, so a single source can serve many journeys at different locators.

Distributed by design (no LAN)

Discovery happens on many machines, none on a shared network. Every seat is an outbound-only HTTPS client of one central hub:

Browser / worker ──HTTPS──▶ Cloudflare Pages ├─ index.html (static portal) └─ functions/ax/[[path]] ─HTTPS(secret)─▶ mcp-db ─▶ Postgres

Data model

TableHolds
ax_assetone row per content-addressed asset — provenance, product, curriculum, grade, kind, title, chapter, media location, servable
ax_workthe work queue & claim lock — stage (pool→claimed→…→done), claimed_by, claim_expires, attempts
ax_briefthe Describe output — the structured brief JSON, a hash, and a pointer to the raw extract
ax_tokenwho may do what — worker / populator / admin bearer tokens

Embedding, vector index and the journey tag land in a later migration (bge-m3 embeddings, a Neo4j graph with vector indexes). Briefs come first.

Hosting