A teacher, not a mascot — the build log behind Chu

LearnTo Team · November 7, 2026

Language apps optimized for retention. Ours started from a different question: what does it feel like to be taught by a person instead of a queue of exercises? The answer we shipped is Chu, the on-screen teacher in the free LearnTo Mandarin course. This is the build log — what's actually inside, claim by claim.

A face that says the words

Chu isn't a cartoon owl or a streak counter with eyes. Every one of the course's 226 words has its own short talking clip — 299 files of her looking at you and saying the word out loud, lips moving, character and pinyin on screen. You repeat it back. The dialogue scenes run the same way: 92 original lines across 12 scenes, each with recorded audio, characters, and pinyin.

The pipeline that produces her: curriculum JSON → original lesson prose → pinyin QA pass → recorded voice → lip-synced talking video → brand overlay. Every step scripted, so a corrected word re-renders in minutes, not weeks.

The reaction engine

The design rule: celebrate effort loudly, correct mistakes quietly. Behind Chu is a small deterministic engine — pick({ learnerGender, event, streak }) returns a gesture clip and a spoken line. Not random, not engagement-scored: tiered by effort.

Two engineering notes we care about. Gender is optional and declared, never inferred — garbage input falls back to neutral and never throws. And the tiers key on effort only: milestones outrank streaks, streaks outrank plain completion. Seventy-two gesture clips sit behind the selector, and the engine's test suite must stay green before anything ships.

Quizzes that refuse to help you

The hardest calls were about restraint. The unit quiz plays the Chinese word — twice if you ask — and never says the English. The meaning was learned by listening and reading earlier in the lesson, so the quiz tests recall, not recognition. Recognition ("was it A or B?") feels like learning. Recall feels wobbly and is.

Units unlock in order: Unit N opens only when Unit N−1 is complete. It removes the option to spiral ahead and panic, which is the most common way beginners quit.

And some things we killed in review. An early celebration gesture didn't read as intended when we checked it frame by frame, so we kept the footage but disabled the selection rather than hope nobody noticed. Marketing claims get held to the same bar: if the shipped product doesn't do it, the copy doesn't say it.

It's free

Twelve units, 226 words, 92 dialogue lines, the reaction engine, the recall quizzes — all of it lives at learnsto.com/mandarin with no trial timer. Vocabulary data derives from CC-CEDICT under CC BY-SA 4.0, with attribution embedded in the course itself.

If you build reactive avatars or tutoring UX, we'd genuinely like the feedback. Go say 你好 back to her.

📬 Get weekly lessons in your inbox

Join our newsletter. No spam, just the best new lessons every week.