Set the exam date.
We pace the practice.
Pick a syllabus, pick the topics in scope, set the date and the intensity — CurioPilot lays out a day-by-day plan with mastery gates between topics. State persists across devices. No predicted scores, no leaderboards. Just where your child is, and what they’re doing today.
Day by day
One product. Three places to start.
A parent paying for their own child, an admin running pre-board prep across Grade 10, a teacher of 28 students. The product capture is different. The plan engine is the same.
Single child. Syllabus + date.
You set the syllabus and the date. CurioPilot paces the practice. State syncs across the tablet and phone — pause on one, resume on the other.
Grade-wide. Server-resolved.
Roll exam prep across a whole grade. Audiences resolve from divisionIds on the server — never trusted from the client. Drift-guarded by a real test.
Class. Dedup-aware.
Spin up exam prep for the section you teach. No two students see the same practice question — dedup-aware across the class. Mastery gates per student.
Dedup-aware across the class.
Five steps. Five minutes. One plan.
The wizard is the whole product capture for exam prep — captured from the live demo seed tenant, not a Figma mockup.
Pause on the tablet. Pick up on the phone.
Plan state persists. The next question on the phone is the same next question that was on the tablet. Same idempotency keys, same audit trail. If your child closes the lid mid-mastery-check, the gate reopens where it was — not at the top.
- Durable state
- Plan, position, mastery bands — all server-side.
- Idempotent submits
- Submit twice from a flaky connection — counted once.
- Offline reads
- Today’s practice cached; the AI hint-giver requires connectivity.
- No re-doing work
- A finished mastery check is finished — across every device.
No skipping ahead.
No predicted scores.
Between each topic, a short mastery check. ‘Blooming’ or above passes — the plan moves to the next topic. Otherwise, ‘still growing’ — the same topic, with fresh practice questions.
The exam date doesn’t move. The plan stretches. If a topic needs more time, another topic gets less. Mock exams move from ‘scheduled’ to ‘if there’s time’ — never the other way round.
Server-resolved audiences.
When a school admin sets up pre-board prep across a grade, the audience isn’t a list of student IDs sent from the browser. The browser sends divisionIds. The server resolves the enrolled students. Drift between those two views is a release-blocking test failure.
- Class resolves from the section’s divisionId.
- Grade resolves from a list of divisionIds — all sections of that year.
- Drift-guard is a real test — exam-prep-audience-drift-guard.test.ts fails CI if a client and server roster disagree by even one student.
- Every audience resolution is logged in TraceLayer with the resolving admin’s ID, the timestamp, and the resolved enrolment count.
{
"syllabus": "cambridge-igcse-maths-0580",
"examDate": "2026-06-21",
"intensity": "steady",
"topicsInScope": ["quadratics","circle-theorems", …],
"audience": {
"kind": "grade",
divisionIds: ["g10-a","g10-b","g10-c","g10-d"]
// no studentIds — never trusted from the client
}
}License-gated under exam-prep.
Standard / Campus for schools. Family / Premium Family for B2C. The matrix below matches /pricing.
| Feature | Family free | Premium Family B2C · paid | Standard Schools | Campus Schools · multi-site |
|---|---|---|---|---|
| Exam prep wizard | — | |||
| Single-child plans | — | |||
| Class- & grade-wide plans | — | — | ||
| Server-resolved audiences | — | — | ||
| Mastery gates between topics | — | |||
| Resume across devices | — | |||
| TraceLayer audit per audience resolve | — | — | ||
| Mock exams (Phase 2 — roadmap) | — | Roadmap | Roadmap | Roadmap |
The list is canonical. Adding a syllabus is one PR.
The five questions parents actually ask.
Pulled from real conversations with parents in Dubai, Singapore, Mumbai, and London.
Set the date.
We’ll handle the timetable.
Free to start. Add the syllabus, the topics, and the exam date — the day-by-day plan is ready before you’ve finished your coffee.