Tobias Taulien

Teach the Robot Chinese

Adopt Xiǎodòu (小豆), a cute robot student, and teach it Chinese characters flashcard-by-flashcard. It genuinely learns — a tiny real learning model under the hood — makes adorably plausible mistakes, and grows from babbling toddler-bot to exam-acing scholar-bot.

Runs 100% in your browser — check the network tab
Lv1
0/50
Hi! I'm Xiǎodòu (小豆), which means 'little bean.' I know zero Chinese characters. Let's fix that.
You show me a character and its answer, I guess, you tell me if I'm right. That's the whole game. Ready?

Packs

Numbers & Time
25 characters
🔒 People & Family
25 characters
🔒 Nature
25 characters
🔒 Body & Food
25 characters
🔒 Actions
25 characters
🔒 Places
25 characters

看看我的脑子 — Brain viewer

0 characters met, colored by strength. This is the actual model state — nothing here is faked.

Teach Xiǎodòu a character to see its brain light up.

Wardrobe

Settings

Under the Hood

Xiǎodòu isn’t pretending — here’s its actual brain. Every character has a strengthfrom 0 to 1. Grade it right and strength inches up toward 1; grade it wrong and it still inches up, just more slowly — even a wrong answer teaches it something. Strength also decays a little every real day it isn’t practiced, which is why characters you taught it weeks ago need a refresher.

The believable-mistakes trick: when Xiǎodòu answers wrong, it doesn’t pick a random character. It samples from that character’s hand-flagged confusable set (未 vs 末) or from characters that share a radical with it — the same reason you might blank on which one is which.

The magic-trick moment: radicals accumulate their own strength from every character built from them. So the first time Xiǎodòu sees a brand-new character whose pieces it already knows well, it gets a real, measurable head start on guessing right — not scripted, just arithmetic on strengths it already has.

Go deeper

This is a distant, much smaller cousin of two real ideas: spaced repetition (strength + decay, the same shape as apps like Anki) and feature-based similarity (guessing via shared radicals is the same move as a real model guessing via shared learned features — just with 150 hand-picked features instead of millions of automatically-discovered ones).

The whole model is ~150 lines of plain TypeScript, no ML libraries, unit-tested against a seeded 50-lesson simulation to confirm the learning curve actually looks like learning (fast early gains, a plateau, and a real dip whenever a new character pack unlocks).