Case study 01 · Station 01 · The Problem
A practice platform, not a course
Enterprises have AI tools but not AI habits. So I built a place where employees practise on real work and get scored on how they worked.
01 ·The problem.
Companies buy AI licences and usage plateaus at novelty. The thesis: this is an adoption gap, not an awareness gap — and adoption is built by repeated, realistic practice with honest feedback, not by courses about AI. Three negations shaped the product and are enforced in code: not a course (the words module, lesson, course and training are banned in learner-facing copy), not a wrapper around one model, not surveillance.
02 ·Discovery and the decision.
The decision was to build a practice loop, not a course, and not a wrapper around one model. Onboarding takes five minutes and asks eight questions; a live diagnostic sets a silent baseline. Each mission brief is rendered in the learner’s own industry. They attempt it in the embedded chat or paste back an exchange from any tool their company allows — both routes score through the same code path. The Judge scores six dimensions with verbatim evidence; the pass is computed server-side. Kai debriefs against the learner’s own trajectory and ends with one line: “One thing for next time.” Retries are free and unlimited, because the miss-then-pass pair is where the skill forms. A winning pattern can be published to the team playbook.
03 ·The build.
The single most consequential design decision: referee and coach, kept apart. The Judge is impartial and evidence-quoting; it returns scores and quotes only, application code does the arithmetic, and it never sees the golden answer or the brief. Kai carries all narrative and never produces a submittable answer: the hint ceiling is a worked example from a different scenario, enforced in the prompt and by a server-side similarity screen. A scorer that encourages stops being trusted; a coach that scores stops being safe to be honest with.
Who is allowed to say you got better is a structural property, not a convention. The learner’s profile is event-sourced and append-only. Writer authority is enforced in one database function: the Judge may append dimension trends, the mission engine may move stage and streak, Kai may set one focus goal, and the learner owns their tool list. Anything else throws and is logged. Kai cannot flatter a learner into a higher score; the Judge cannot promote anyone.
04 ·Trust.
Built for the buyer’s procurement review. A client-free core with a CI gate against client strings. Row-level tenancy in Postgres. Learner scores are private by default; admin views sit behind a k≥5 anonymity floor enforced in SQL. Every model call is metered against an envelope of at most 15 frontier calls per learner-week, visible on an admin tile. Learner text enters prompts wrapped as untrusted content; suspected injection is logged, never punished.
05 ·Launch and learn.
Built July to September 2026 with AI-assisted tooling, held to a written constitution and an append-only decision log: 137 decisions, 800+ tests, 48 missions across 8 seasons, 6 Context Packs. Deployed on Railway; in pilot with global IT services firms, where it scores the artefacts of a Forward Deployed Engineer programme. Every client is a versioned Context Pack; the handover unit is the pack plus its specification, never a fork. The metered envelope of at most 15 frontier calls per learner-week gives seat pricing a real unit cost to stand on.
The product is the loop, not the model.