The concept
A kid fails quadratics for reasons that aren't quadratics. The crack is never where the lesson is — it's three layers down, in a shaky grasp of factoring, fractions, or negative signs. No teacher with 200 students has time to find it, so the gap compounds year after year.
Sarthi talks with the student. The moment they stall, it traces the gap downward — concept by concept — until it hits something they already know. Then it teaches its way back up, by conversation, not lecture. You only climb a level once you've proven it.
It starts with Class 10 deliberately: it's the only exam where 100% mastery is an honest promise — a finite corpus (14 Maths + 13 Science chapters, plus sample and board papers, all with marking schemes). A bounded game you can actually complete.
Design decisions
A concept graph, not a syllabus list
Every topic is decomposed into a prerequisite DAG down to bedrock — "you can't do the parent until you own the child" — so the engine can find and fix the real missing brick.
Descend, then teleport back
On a gap the tutor drills into the prerequisite, the student masters it, and control teleports straight back to where they were stuck — no slow re-teaching climb.
A separate, deterministic tester
Grading is done by deterministic graders (algebraic-equivalence / numeric / MCQ), not LLM vibes — mastery is proven, not asserted, so it can't be faked.
Append-only journey log
Every step is written to an append-only log that is the single source of truth; the frame stack, mastery overlay, and travel cache are all derived from it — never mutated.
The content is the moat, not the model
The LLM is a swappable engine behind a router (currently DeepSeek V4); the asset is the source-faithful node content. Every node cites verbatim NCERT source, and math is render-gated for fidelity.
A knowledge flywheel
When a student proves an insight, it is captured, reviewed, and can be integrated back into that micro-lesson — the corpus gets sharper the more it's taught.
Links
Live product (API is on a free tier — the first request after idle may take ~30–60s to wake). Source is a private repository.