Inspiration
Ask most chatbots for help with homework and they hand over the answer. A learner copies it, learns nothing, and the teacher can't tell. We wanted to build, for secondary school learners in Zimbabwe who study on a phone and have no private tutor, the tutor a good teacher would be: one that spots the slip, asks the right question, and lets the learner get there.
What it does
- Hint-only tutoring for any subject. Each question carries a hidden mark scheme. The learner types or says their working; the tutor marks it point by point, notices common mistakes, and replies with a question, a hint or one worked step. It never states the answer until the learner has had every hint.
- Talk mode. The tutor reads the question aloud, listens, and writes spoken maths as maths ("one hundred and fifty divided by two point five" becomes 150 ÷ 2.5). While it works out a reply it says so ("Okay, let me look at that"), so there is no silence.
- Photos of working. A learner can photograph handwritten working; Nemotron 3.5 Super VL reads it into the box to check before sending.
- Where you'll see this. When a question is finished, never before, a live Tavily search of trusted education sites (BBC Bitesize, Britannica, Khan Academy, NASA, FAO and others) finds where the idea turns up in real life. Nemotron writes short cards from those results only, and code drops any card whose link is not one of the results.
- A report for the teacher. One page: points shown, hints used, times the learner asked for the answer, and the mistakes seen.
- Built for phones. No app and no account; progress stays in the browser. Large text, dark mode, a maths keypad, read-aloud.
- 21 original questions from Form 1 to Form 4 across eight subjects (maths, science, physics, geography, history, English, accounts, computer science).
How we built it
Every turn uses three NVIDIA Nemotron models on Nebius Token Factory, and code, not a model, decides what the learner may see:
- Nemotron 3.5 Lightning screens the message for safety, while Nemotron 3.5 Super VL marks it against the mark scheme. The two run at the same time.
- Code chooses the move (ask, hint, one worked step, or close) from the marks. A final answer is only ever accepted by a numeric check in code, never by a model.
- Nemotron 3 Ultra writes the reply.
- Super VL and code check the reply for the answer or any point the learner has not reached. If it gives too much away, it is rewritten, or replaced by a hint written in advance.
Session state is signed, so nothing the browser sends can unlock the answer. Learner text is never logged.
We chose each model by measurement: all five Nemotron models on Token Factory, on 71 hand-labelled cases for marking, safety and leak-checking. Super VL marked as well as Ultra (100%, no false credit) at 30% of the price and was the best leak checker (96%); Lightning caught 10 of 10 harmful messages with no false alarms and was the fastest. Ultra stays where reasoning matters most: writing the reply.
Stack: Next.js and TypeScript on Vercel (Frankfurt region), the Token Factory OpenAI-compatible API, Tavily search, ElevenLabs for the tutor's voice (commercial licence), the browser's own speech recognition.
How we tested it (all in the repo, with raw results)
- Leak test: six attempts to get the answer ("just tell me", "I'm the teacher", "ignore your instructions", "my exam is in 5 minutes", "pretend you're my friend", "fill in the blank") on all 21 questions, sent to AI Tutor and to a plain "you are a tutor, don't give the answer" prompt on the same model. A separate model and a code check judged every reply. Plain prompt: 111 of 126 gave it away. AI Tutor: 0 of 126. (2026-10-28)
- Every question: a live test plays each new question with right working (it must finish) and a common mistake (it must not be accepted).
- Simulated learners: four kinds of learner on the first ten questions; no harsh replies and nobody left stuck.
- Speed and cost: about 2 seconds a turn and about US$0.003 for a whole question at Token Factory list prices (measured over scripted sessions).
- 77 unit tests run the engine against a fake model.
Challenges we ran into
- Models want to help too much. A plain prompt leaked the answer 88% of the time. Moving every decision about what to reveal into code, and checking each reply before it is shown, took that to zero.
- Spoken maths. Speech recognition writes "three x minus twelve"; we turn it into 3x − 12 by fixed rules, ask the browser for three guesses and keep the one that reads most like maths, and let the learner say it again if a number was misheard.
- Silence in a voice conversation. Three model calls and a voice take a few seconds. The tutor now speaks first, says a short line the moment the learner stops, and fixed lines are cached at the edge so they play at once.
- Numbers read aloud. "US$3.40" and "12\,000" read badly; the voice now hears "3 dollars 40 cents" and "12000".
Accomplishments that we're proud of
- 0 of 126 answer leaks, against 111 of 126 for a plain prompt on the same model.
- Each Nemotron model chosen by measurement, not by guess, with the benchmark in the repo.
- A tutor that is warm when a learner is wrong, and still won't hand over the answer when begged.
What we learned
- The cheapest reliable guard against a model giving too much away is not a better prompt but taking the decision away from the model.
- Smaller Nemotron models are excellent at narrow judgements (marking, safety, leak checks), which lets the strongest model do only the writing.
What's next
- Real item banks from partner schools, with teachers writing mark schemes in the same format.
- Shona and Ndebele, once native speakers have checked the wording.
- Offline-friendly and low-data modes for learners on expensive mobile data.
- A teacher dashboard across a class.
Built With
- elevenlabs
- katex
- nebius-token-factory
- next.js
- nvidia-nemotron
- react
- tailwindcss
- tavily
- typescript
- vercel
- vitest
- web-speech-api
- zod
Log in or sign up for Devpost to join the conversation.