Pick a path. Run the pipeline.
Warm path uses a real preset user with a portfolio.
Cold path asks for a MiFID profile and routes through CohortPop.
Curated FAR-Trans users, by risk profile.
Real anonymised users, grouped by their MiFID risk profile. Each card shows the account tier, capacity, and actual asset-class composition. Click to select, then run the pipeline.
How the pipeline composes?
Two planes meet at the registry. A weekly Cloud Run Job trains, validates and publishes versioned artifacts to GCS; the Cloud Run API loads whichever version is marked production on cold start.
Training plane
A Cloud Run Job (frs-train), triggered weekly by Cloud Scheduler, rebuilds features and retrains every component — EASE, the three per-class CBF matrices, cohort popularity and the risk map — then runs the 61-split nDCG + suitability evaluation.
Before publishing, it runs parity checks against the current production artifacts to catch silent regressions when notebook logic is ported into the serving modules.
Model registry
Each run publishes an immutable bundle keyed by timestamp + git SHA, with a manifest recording the code commit, data window, hyperparameters, eval metrics and parity flags — lineage from any served prediction back to the exact code and data.
A registry.json holds the production pointer. The API resolves it on cold start; rollback is repointing it to any past version — no rebuild, no redeploy.
Serving plane & limits
The Cloud Run API loads the production bundle into memory and serves recommendations through the scorer → risk filter → allocator → explainer pipeline, scaling to zero when idle.
Honest limits: this is research code on a public dataset — no auth, no per-user data isolation, and parity is recorded but does not yet block a publish.