Project Overview
TL;DR: This one started at the dinner table. Asking my daughter about her day, the answer was "okay, I guess," and when I asked what she was struggling with, she said math, specifically decimals. She's dyslexic and has ADHD, and has made remarkable progress on the dyslexia side thanks to years of extra work and the teachers and programs at her school, so I know what steady, patient effort looks like for her when the support around it is right. What she said next is what stuck: worksheets are boring, it's easy to get distracted, and it isn't fun to learn that way. Plenty of apps already teach math, but I wanted to build something tailored specifically to her, something made just for her, which feels different than something built for everyone. The design problem became: how do you get a reluctant sixth grader to practice at least three times a week and actually want to come back? The answer I landed on was borrowing the Tamagotchi concept, a persistent virtual pet whose needs and mood change over time based on how consistently you show up for it, and pairing that pull with her actual math practice. Everything from there was measured against one line: never make a struggling learner feel worse for struggling.
The Challenge & Context
The brief wasn't really a brief; it was one kid. She loves ballet and puppies, and she's decided math isn't for her. Building a worksheet with a login wasn't going to change that. The job was to design something that competes for her attention honestly, on the same terms as everything else she opens on an iPad, without ever feeling like more school.
Two goals had to run in parallel: a real tool this specific kid would actually use, and a design process worth documenting as the choices were made, not gestured at after the fact in a retrospective.
Never make a struggling learner feel worse for struggling.
Every mechanic that follows was measured against that one line. When a feature and the principle disagreed, the feature lost, and most of the interesting design work here was subtraction, not addition, built on the lynchpin of simplicity.
The Process & Decision-Making
Before choosing any mechanic, the first job was pinning down what "motivation to practice" should actually target: coming back regularly, trying harder in the moment, or both. The answer, frequency over intensity, cascaded into nearly every later decision. In-session effort was already handled structurally, since a wrong answer is retried until it's right, so she can't coast past a hard question. That left the reward system exactly one job: pull her back tomorrow. Anything that didn't serve that, or that added pressure, became a candidate for removal.
That reasoning played out across four systems, each decided as a set of trade-offs, worked through on a running FigJam board rather than written up after the fact.
The practice loop. She picks her own difficulty up front, easy, medium, or hard, because ownership over the challenge is what keeps the session calm. A wrong tap is marked "tried" and she picks again, so she's never stuck and never shown wrong and moved past. Her score counts first-try-correct, tracked separately from mastery, so a question she gets right after a retry still counts as practiced, a growth signal rather than a grade. A scratchpad and a clue drawer sit as overlays on the question itself, so she can work out an answer or ask for a hint without ever leaving the screen. Cut from this system: adaptive difficulty (auto-adjusting the level takes the choice away from her, and the choice is what protects the low-stress feel) and any skip-or-reveal escape hatch (the point is staying engaged with the hard question, gently).
The reward economy. One currency, one spend: correct answers earn treats, and treats do exactly one thing, feed the puppy. A first-try answer earns 3 treats, a correct answer after a retry earns 1, and a perfect round with no misses adds a 10-treat bonus on top. A weekly goal rewards practicing any three distinct days for a 15-treat bonus that can't fail; a miss just resets quietly on Monday. Cut: daily streaks (streak-anxiety is the exact feeling the whole product is designed against), wrong-answer penalties (she already has to retry, so docking points double-punishes and fights that mechanic — this one was proposed and reversed in the same sitting), a separate "tried hard" in-session reward (redundant with retry-until-correct, and it would bait her toward levels she isn't comfortable with just to chase points), and a second currency for a ballet track (two economies means twice the UI and half the clarity).
The companion. The puppy is the reason to come back, so it has to pull gently and never guilt. A continuous happiness meter, 0 to 100, decays gently over quiet days, giving a soft reason to return that a non-decaying pet never would. A floor of 25 keeps it from ever reading as fully sad, with a fast rebound when fed and no guilt language anywhere near it — the pull must never tip into a pet you failed. It lives on its own dedicated screen, reached from the nav, so it reads as a real, checkable companion rather than a decoration in a corner. Cut: discrete growth stages (they can't decay smoothly, so they can't create the gentle daily pull a continuous meter can) and a non-decaying pet (comfortable, but it removes every reason to open the app on a quiet day).
Content and theming. A script computes and verifies every answer before it ships, 510 answers, zero hand-typed, so no arithmetic typo lands in front of a kid who's already unsure. Content and theme were also kept as separate layers, so mechanics could be built and tested before a single illustration existed. Cut: theming baked directly into the question text ("Each ballerina needs 3/4 yard of ribbon…"), which welds content to a theme that wasn't designed yet and turns every future re-theme into a full content rewrite.
The Solution & Final Design
Everything above resolves into one closed loop: practice a round, earn treats (first-try answers earn more), feed the puppy, happiness rises. Happiness decays gently on quiet days but never drops below 25 and never reads as "sad," so there's always a soft reason to come back tomorrow, and never a reason to feel behind.
"Low-anxiety" only means something if it's specified, so the product is held to six concrete guardrails:
- Happiness floor: 25%. The pet is never fully sad, no matter how long she's away.
- Wrong answers: zero penalty, ever. Retrying is the mechanic, not a punishment.
- No streaks. A weekly goal resets quietly, so a missed day costs nothing.
- No failure states. Misses are silent, never surfaced, never counted against her.
- Progress is personal. Shown as her own bests, never a comparison or a required target.
- Copy is audited for guilt. "Let's try again," never "Incorrect."
The result is a living v1: a full iPad-web app with a practice hub, self-paced rounds, a companion with four moods and its own wardrobe, a how-to-play guide, and progress tracking, all offline and on-device. That early puppy wireframe above shipped as this:
Impact, Outcomes & Learnings
v1 kept scope deliberately tight: get the practice loop, the one-currency reward economy, and the companion right and simple before layering anything on top. The reward and decay values are honest starting points, still awaiting real-usage tuning, because a design that pretends it's finished stops learning from the kid using it.
What worked: separating content, flow, and theming into distinct stages kept each decision focused and easy to revisit alone. Deciding what to exclude was as clarifying as deciding what to include, and every cut traced back to the same principle. A single spendable currency over an abstract score gave the reward loop a real decision instead of just a number going up.
What I'd reconsider: the early instinct to theme the question text would have coupled content to a theme that wasn't designed yet — the right call was to separate them, but it took a round-trip to see it. The wrong-answer penalty was proposed before it was caught; a fine outcome, but the north-star principle should have ruled it out on sight rather than needing a second look.
Reflection: Because the foundation is small, data-driven, and client-only, the next steps are additions rather than rewrites — more grade-level question pools, more companions and themes, deeper personalization of the pet and its space, optional accounts scoped carefully around child privacy, and eventually a native SwiftUI build for offline-guaranteed, Apple Pencil-first use. This project was as much a discipline in restraint as it was a design exercise: the interesting decisions were almost always about what a struggling learner didn't need to feel.