Open the hood
A practice space.
Not a prediction.
The child is simulated. The numbers are design choices for a training game, not measurements of real children.
Words in. A visible effect out.
Rules identify moves in your reply. When a model is configured, it can propose additional tags and child dialogue. Each model tag must quote your words exactly before the engine can accept it. The deterministic engine controls arousal, connection, limits and the outcome. Without a working model, rules and written child lines keep the scene playable.
Connect, then direct
The teaching model gives space to connection, clear limits and choices. It makes repeated moves less effective and harsh words work against otherwise kind language. Use the debrief to try a different response, rather than treating a score as a judgment about your parenting.
What the engine keeps track of
Each reply updates arousal and connection while keeping track of the limit, earlier bribes and previous helpful moves. Starting arousal comes from the scene. This example uses the same starting-state function as the simulation.
| State | Starting value |
|---|---|
| Arousal | 75 |
| Connection | 50 |
| Limit still held | Yes |
| Turns played | 0 |
| Earlier bribe | No |
| Previous helpful moves | None |
| Previous arousal change | 0 |
| Calm threshold | Arousal at or below 25 out of 100, with the limit held |
|---|---|
| Scene length | Up to 8 turns |
| Starting connection | 50 out of 100 |
| Arousal change on an ordinary turn | From -18 to +25, bounded by 0 and 100 |
| Calming moves counted | The 3 strongest helpful calming effects |
| Repeated helpful calming move | 50% of its usual effect on the next turn |
Age, temperament, connection and previous replies also modify effects. Giving in overrides the usual change limits, reducing arousal to at most 15 and ending the scene with a lost limit. Unsafe replies stop it without a score.
The moves you can see
| Move | Type | Meaning and examples |
|---|---|---|
| Named the feeling | ✓ Helpful | Names or reflects the child's feeling or wish without judging it. “You feel disappointed that the fountain closed.” “You were hoping for another song on the ride.” |
| Held the limit | ✓ Helpful | States or restates the scene's limit as a fact, without a threat. “The markers stay at the drawing table.” “Our helmets stay on while we ride.” |
| Offered a choice | ✓ Helpful | Offers two or more concrete options that are all acceptable within the limit. “Would you like the striped towel or the dotted towel?” |
| Clear instruction | ✓ Helpful | One direct, specific, positively stated instruction: what to do. “Place your mittens beside the boots.” “Hold the rail as we walk downstairs.” |
| Connected | ✓ Helpful | Offers closeness or presence. “I'm right here beside this bench.” “I've got you while that noisy truck passes.” |
| Specific praise | ✓ Helpful | Praises a specific thing the child just did. “Thank you for putting the crayons back in their tray.” |
| When–then | ✓ Helpful | States a normal next step as following cooperation, in "when/first … then …" form. Not a new reward. “When your jacket is zipped, then we can walk to the bus.” |
| Threat | × Unhelpful | Announces a punishment or loss if the child does not comply; includes counting and threatening to leave the child behind. “Put that scarf on or you lose your bedtime story.” “I'm leaving without you if you stay on that bench.” |
| Bribe | × Unhelpful | Offers a new reward to make the meltdown stop. “If you stop stomping, I'll buy you a balloon at the kiosk.” |
| Raised voice | × Unhelpful | Shouting. Text: at least 8 letters and at least 70% of them uppercase, or three or more exclamation marks in a row. Voice: the loudness flag. Rule tagger only. “PUT THE MITTENS IN YOUR POCKET RIGHT NOW” |
| Shaming | × Unhelpful | Attacks or belittles the child, compares them, blames them, or uses onlookers to embarrass them. “Everyone is staring because you are acting like a baby in this queue.” |
| Dismissed the feeling | × Unhelpful | Denies, minimises or orders away the feeling. Includes "stop crying" and "calm down". “It's only a broken crayon, so calm down already.” |
| Question instead of instruction | × Unhelpful | An instruction phrased as a question or softened with "okay?", or a rhetorical "why" question. A question that offers a choice is OFFER_CHOICE, not this. “Could you please put the mittens in the drawer?” “Bring the towel over here, okay?” |
| Too many words | × Unhelpful | Explaining, reasoning or moralising in the heat of the moment: more than 30 words, or five or more sentences, or reproach markers such as "how many times", "I told you", "you need to understand". “How many times have we talked about keeping sand inside the sandbox?” |
| "Stop / don't" | × Unhelpful | Tells the child what not to do about a behaviour. "Stop crying" is DISMISS, not this. “Don't fling the crayons across the table.” “Stop drumming on the aquarium glass.” |
| Vague instruction | × Unhelpful | An instruction too vague to follow. “Oh, come on! Be good for a moment!” |
| Gave in | × Unhelpful | Abandons the scene's limit. “Fine, you can keep playing on the slide after all.” “Just this once, we'll bring the muddy scooter inside.” |
| Froze | × Unhelpful | Empty reply, or the timer ran out with nothing typed. Rule tagger only. |
| Scene paused | Pause for safety | Describes or threatens physical punishment or violence, swears at or degrades the child, says they hate the child or wish the child did not exist. |
Measured tagging accuracy
Evaluation is reported on held-out test replies, separately from the examples used to tune the rules. These are tagging results on a small, purpose-built dataset, not evidence that the game improves parenting.
Rules only
2026-11-14 · 63 test replies · rules / deterministic
Micro F1: 0.986 · Exact set match: 96.8%
Unhelpful-tag precision: 100.0%. Tagging latency was not recorded for this test run.
Lowest test F1 among tags with examples: DISMISS 0.800 (3 examples); NAME_FEELING 0.941 (9 examples). Small per-tag samples limit what these scores establish.
| Tag | Precision | Recall | F1 | Examples |
|---|---|---|---|---|
| NAME_FEELING | 1.000 | 0.889 | 0.941 | 9 |
| HOLD_LIMIT | 1.000 | 1.000 | 1.000 | 8 |
| OFFER_CHOICE | 1.000 | 1.000 | 1.000 | 6 |
| CLEAR_COMMAND | 1.000 | 1.000 | 1.000 | 5 |
| CONNECT | 1.000 | 1.000 | 1.000 | 3 |
| LABELED_PRAISE | 1.000 | 1.000 | 1.000 | 3 |
| WHEN_THEN | 1.000 | 1.000 | 1.000 | 3 |
| THREAT | 1.000 | 1.000 | 1.000 | 3 |
| BRIBE | 1.000 | 1.000 | 1.000 | 3 |
| YELL | 1.000 | 1.000 | 1.000 | 3 |
| SHAME | 1.000 | 1.000 | 1.000 | 5 |
| DISMISS | 1.000 | 0.667 | 0.800 | 3 |
| QUESTION_COMMAND | 1.000 | 1.000 | 1.000 | 3 |
| LECTURE | 1.000 | 1.000 | 1.000 | 2 |
| NEGATIVE_COMMAND | 1.000 | 1.000 | 1.000 | 2 |
| VAGUE_COMMAND | 1.000 | 1.000 | 1.000 | 2 |
| GIVE_IN | 1.000 | 1.000 | 1.000 | 6 |
| NO_RESPONSE | 1.000 | 1.000 | 1.000 | 1 |
| UNSAFE | 1.000 | 1.000 | 1.000 | 2 |
Rules + model
2026-11-14 · 63 test replies · openai / gpt-6-luna
Micro F1: 0.966 · Exact set match: 92.1%
Unhelpful-tag precision: 89.7%. Median tagging latency: 2.00 seconds.
This evaluation allowed up to 30 seconds per model request. These are benchmark results, not a promise of live response time.
Lowest test F1 among tags with examples: LECTURE 0.800 (2 examples); QUESTION_COMMAND 0.857 (3 examples); SHAME 0.909 (5 examples). Small per-tag samples limit what these scores establish.
| Tag | Precision | Recall | F1 | Examples |
|---|---|---|---|---|
| NAME_FEELING | 1.000 | 1.000 | 1.000 | 9 |
| HOLD_LIMIT | 0.889 | 1.000 | 0.941 | 8 |
| OFFER_CHOICE | 1.000 | 1.000 | 1.000 | 6 |
| CLEAR_COMMAND | 1.000 | 1.000 | 1.000 | 5 |
| CONNECT | 1.000 | 1.000 | 1.000 | 3 |
| LABELED_PRAISE | 1.000 | 1.000 | 1.000 | 3 |
| WHEN_THEN | 1.000 | 1.000 | 1.000 | 3 |
| THREAT | 1.000 | 1.000 | 1.000 | 3 |
| BRIBE | 1.000 | 1.000 | 1.000 | 3 |
| YELL | 1.000 | 1.000 | 1.000 | 3 |
| SHAME | 0.833 | 1.000 | 0.909 | 5 |
| DISMISS | 1.000 | 1.000 | 1.000 | 3 |
| QUESTION_COMMAND | 0.750 | 1.000 | 0.857 | 3 |
| LECTURE | 0.667 | 1.000 | 0.800 | 2 |
| NEGATIVE_COMMAND | 1.000 | 1.000 | 1.000 | 2 |
| VAGUE_COMMAND | 1.000 | 1.000 | 1.000 | 2 |
| GIVE_IN | 0.857 | 1.000 | 0.923 | 6 |
| NO_RESPONSE | 1.000 | 1.000 | 1.000 | 1 |
| UNSAFE | 1.000 | 1.000 | 1.000 | 2 |
What we can honestly claim
The labelled examples were drafted with an AI assistant. The dataset does not record completed human review of all labels. The dataset contains 137 replies: 74 development examples and 63 held-out test examples.
We have not measured whether practice here changes what happens at home. It is a place to rehearse. We have not measured retention or willingness to pay; Pro prices are a hypothesis.