Kate Shaw
← All work
EdTech · Mobile-first web app · 2026

Designing behaviour change through storytelling and interactive learning

A 12-module programme for 11-year-olds who don't have a phone yet, and the parents who'll hand them one. Progression, feedback and motivation loops designed around one outcome: a conversation at home. Built with Claude Code from concept to a live, paid product in six weeks, and shipped deliberately without a single gamification mechanic.

My role Co-founder & lead designer
Platform Responsive web app (Next.js)
Timeline Apr – Jun 2026 · modules monthly to Dec 2026
Built with Claude Code · Supabase · Stripe

Radish is a mission-led social enterprise helping families grow up well with technology: a ten-book storybook series for 7 to 11s, and Radish Learning, a 12-module digital-literacy programme for children of eleven and up who don't yet have a phone, social media or a device of their own. I co-founded it with Alex Stone, who has spent twenty years running alternative-education schools for excluded children, and I'm its lead designer.

The method is older than the internet. In the 1970s my father wrote an anti-drugs education programme for Health Canada that used storybooks and characters to spark conversations between children and adults, built by a team of more than fifty researchers, educators and writers, and starting deliberately at age seven. My mother studied that programme at the University of Kent and found what made it work: not the stories themselves, but the conversations they prompted between children and the adults in their lives. Radish is that finding, rebuilt for the phone.

The trigger was closer to home: my son, at eight, was shown things through an in-game ad that no eight-year-old should see. Radish isn't anti-tech. It's pro-childhood.

A Radish lesson in progress: SkillzBot greets Fred in a chat thread, and a 'Tell a grown-up' panel lets the child type what didn't make sense and send it to a parent
A lesson in progress, and the "Tell a grown-up" path that lets a child flag what didn't make sense straight to a parent, in their own words.

A phone ban buys you time. What you do with that time is what matters.

Parents see two options: restrict, or delay. Both buy time; neither uses it. Radish is a third path: education and conversation before the phone arrives, and that changes what the product has to optimise for. The behaviour we wanted wasn't screen time in our app. It was a conversation at home, started by a child who'd just learned something and a parent who knew what to ask.

That sounds soft. It has hard consequences for design: every module has to end in something to talk about; the parent has to be equipped, not policed; and anything that keeps a child inside the app for its own sake is working against the goal. Rules without conversations create workarounds. Conversations without structure don't stick. Radish is the structure.

Four rules that decided most things

Preparation, not reaction

All content is written in the future tense: "when you go online", "before you get a phone". The child is being prepared for something, not corrected for it.

The parent is the instructor, not the gatekeeper

Parents preview each module, see their child's answers, and get three conversation starters. No surveillance framing, no "risk" reports.

Two voices, never blurred

The child's surface is dark, warm and direct; the parent's is light and editorial. Different fonts, colour and register, so nobody is ever unsure who a screen is talking to.

Every artefact ends in a conversation

Each book and each module closes with prompts written so the adult goes first: a disclosure, not an interrogation.

A lesson that reads like a conversation, because that's the outcome we wanted

Lessons are delivered by SkillzBot, "the older sibling who's already been through all of this", as a messaging thread. Each paragraph arrives as its own bubble, with a typing indicator and a deliberate 1.5-second pause between them. Testers validated the slow pace: it's the rhythm of a chat with someone who's listening, and it's written into the project's design log so nobody speeds it up later. The pattern came from a same-day loop: competitor research in the morning, the bubble-by-bubble decision by the afternoon, shipped that evening.

Quizzes are scenario questions (a quiet boy joins a loud group chat; what's the most useful thing he could do?) and a wrong answer gets a hint bubble and another go. There's no penalty, no score during the quiz and no results screen. The parent sees a first-try score later, which is where it's actually useful.

The conversation prompts are the product's real output, so they're written with care: the adult discloses first ("Someone asked me to describe myself in three words today and I completely froze…") and asks second. One tip travels with every module: first conversations about big topics work better side by side, on a walk or in the car, than face to face.

Child · dashboard The child's dashboard on a dark indigo shell: SkillzBot introduces itself as the older sibling who's been through all of this, above module cards for Knowing yourself and Who you are online
Child · quiz A scenario quiz question about a quiet boy joining a loud group chat, with four answer options and one selected
Parent · Let's Talk The parent's Let's Talk view on a warm light theme, explaining that each module comes with three conversation starters, with module cards showing progress and a new message badge
Two audiences, one journey: the child's dark, focused space; a scenario quiz with no score shown; and the parent's Let's Talk view with conversation starters for every module.

Twelve modules, one at a time

Every module is the same shape: lesson, quiz, lesson, quiz, lesson, quiz. About five minutes for a lesson, three for a quiz, so a whole module fits inside one evening. A module opens only when it has content, its release date has passed, and the previous module is complete. Nothing decays and nothing can be lost: completion is permanent, so there is never a reason to come back out of fear.

Cadence does the job streaks usually do. A new module lands on the first of every month through December, and the badge on a locked card ("Coming 1 October") is computed from the date, so it turns itself into a live module on the day without anyone deploying anything. Locked cards are shown at full opacity with their full description: no blur, no teasing, no countdown. There are no percentages anywhere in the product, just lesson pills and counts.

When a child has finished everything that's out, SkillzBot says so and makes a promise rather than a demand: "You're all caught up. A new module lands on the first of every month. I'll see you back here then."

  1. Module 1, Knowing yourself, done
  2. Module 2, Who you are online, done
  3. Module 3, Kindness and empathy, done
  4. Module 4, Friendships online, done
  5. Module 5, When things go wrong, done
  6. Module 6, Cyberbullying, done
  7. Module 7, Privacy and personal information, available now
  8. Module 8, Your digital footprint, released, locked until module 7 is complete
  9. Module 9, Social media pressure, released, locked until module 8 is complete
  10. Module 10, Spotting what's real, coming 1 October
  11. Module 11, Talking to a trusted adult, coming 1 November
  12. Module 12, Labels and language, coming 1 December
The progression model: sequential unlock plus a monthly release. The only colour in the strip marks the one thing to do next.
Child · dashboard, September 2026 The child dashboard showing an upcoming module card at full opacity with a 'Coming 1 October' badge
A locked card keeps its full description and a date. Nothing is hidden to make you want it.

A wrong answer costs nothing except another go

1

Pick an answer

Selecting is submitting. There is no "Check" button and no way to skip, reveal or fail.

2

Wrong: marked, explained, offered again

The option gets a ✗ and can't be picked twice. A hint bubble explains the reasoning, then: "Have another go 👆". We removed the fade on wrong options after testing so they read as marked, not shamed.

3

Right: a small celebration, then the teaching

A haptic tap, a synthesised ding, SkillzBot bounces, a celebration GIF, one of eight lines ("Nailed it 🎯"), and then the substantive feedback that validates the reasoning, not the answer.

4

Done: confetti once, no results screen

The last question auto-advances. Confetti fires once. SkillzBot: "Nice work, that's the quiz done." No score, no stars, no summary. The first-try score is stored and shown to the parent as "Got it first try" or "Tried 2 other answers first", which is where the signal is useful.

Wrong answer A quiz question in the wrong state: the chosen option is marked with a cross, SkillzBot explains the reasoning in a bubble, and a second bubble says Have another go
Right answer The same question answered correctly: a celebration GIF, a one-line celebration message, the explanation bubble, and a Next question button
The two states of the loop, captured from the live product. Nothing to collect in either.

The child's loop ends in a conversation. The parent's loop starts one.

The child's loop. Every visit opens with one SkillzBot line, chosen by the day of the year from twenty-eight (a mix of things worth knowing early and deliberately bad jokes): "Did you know it takes roughly two months to build a new habit? So the small choices you make now actually stick." Then a lesson, a quiz, a celebration, and a completion teaser that hooks forward rather than nags back: "Module 5 done. Module 6 is about cyberbullying: spotting it, stopping it, and making sure you're never the one doing it, even by accident." The teaser fires only when the next module is unlocked and untouched.

The parent's loop. Preview the module before the child starts. When the child finishes, or sends a note, a "New message" chip appears and one email goes out ("Fred has a message for you on Radish"). The module's Let's Talk page carries three disclosure-first prompts and one situational tip: "Try it on a walk or in the car, not sitting face to face." A share button puts the prompts on the parent's phone or emails them to a co-parent. The conversation happens offline. There is no in-app reply, by design. The parent's "next module" is soft-locked until the child finishes, so prompts arrive at the right moment rather than all at once.

Three doors between the loops. "Tell a grown-up" in the lesson header, "Message my parent" on the dashboard, and a small "?" inside every lesson that flags the exact paragraph a child didn't understand. The parent's review screen replays the lesson with the child's flags and answers inline.

The one nudge in the whole product is shown honestly: leaving a lesson early gets a "Wait, don't go! You're so close, Fred" modal with an undisguised "Go to dashboard" button underneath it.

Two loops joined by one outcome The child's loop (lesson as a chat, scenario quiz with retry until right, celebration then move on, next lesson unlocks) and the parent's loop (preview the module, child's answers and first-try score, three prompts where the adult goes first, new module on the first of the month) both point at one node: a conversation at home. Child loop Parent loop Lesson as a chat Scenario quiz,retry until right Celebration,then move on Next lessonunlocks A conversationat home The outcome we optimise for Previewthe module Child's answers,first-try score Three prompts,adult goes first New moduleon the 1st
Two engines, one output. Neither loop rewards staying in the app; both point at the conversation.
Child · Tell a grown-up The Tell a grown-up modal over a lesson: Want to tell a grown-up something? This goes straight to your parent, with a text field and a Send to parent button
Parent · Let's Talk A parent module page with a situational Tip callout and three numbered conversation prompts written as the parent's own disclosure first
Parent · review The parent review of a completed quiz: a First-try score, and per-question badges reading Got it first try or Tried other answers first
The bridge and the parent side, captured from the live product: the child's door to a grown-up, the prompts and tip, and the first-try score in the one place it's useful.

What carries motivation instead

Every mechanic had to pass the same test: does it serve the behaviour we want, or the metric we can measure?
Mechanic What it does The behaviour it serves
Sequential unlock Modules open in order; finishing one opens the next. Always a next thing, never a menu of twelve.
Monthly release badge A new module on the first of every month, shown as "Coming 1 October" and computed from the date. A rhythm to return to, without a countdown or a streak.
Retry until right A wrong answer gets a hint and "Have another go". No penalty, no skip, no score shown. Thinking again instead of guessing fast.
Small celebration A GIF, one line ("Nailed it"), a ding and a tap, then the explanation. Progress is celebrated, not engineered. Nothing to collect.
First-try score to the parent Counted only on the first pick; shown as "Got it first try" or "Tried 2 other answers first" in the parent review. Gives the parent something specific to ask about, not a mark to praise or punish.
Completion teaser After a module, SkillzBot names what the next one is about. Fires only when the next module is unlocked and untouched. Curiosity about the next topic, never guilt about the current one.
Daily SkillzBot line One line per visit from twenty-eight, chosen by the day of the year: values, facts about attention and habits, bad jokes. A reason to open the app that isn't a task, and a voice a child recognises.
Tell a grown-up, three doors Lesson header button, dashboard "Message my parent", and an in-lesson "?" that flags the exact paragraph. The conversation at home, started by the child.
Disclosure-first prompts Three per module, written as the parent's own story first and a question second. Lowers the pressure on the child; adults go first.
Situational tip One per module: on a walk, in the car, just after a screen, at bedtime, check your own settings first. Makes the conversation easy to start in the right place, not just the right words.
Share to a co-parent Prompts copy to the phone or email to the other parent. Gets the prompt out of the app and into the house.
Parent soft-lock The parent's next module opens when the child finishes the current one. Prompts arrive at the right moment, never all at once.
Future-tense rule "If someone ever sends you a message", never "Has anyone ever sent you". Preparation, not confession. A child can answer honestly.

No points. No streaks. No unlocks.

The original product definition called for "an engaging reward system" and quizzes to "keep kids motivated". I took the reward system out. Points, streaks and leaderboards optimise for finishing screens, and finishing screens wasn't the behaviour we wanted. Worse, they teach a child that the app is the thing to come back to, when the whole point is that the conversation is.

Considered and rejected. Each of these is a good mechanic somewhere; none of them serves a conversation at home.
Mechanic What it optimises for Why not here
Points and XP Screens completed, sessions started. A child chasing points learns that the app is the point. Ours is the talk afterwards.
Streaks Daily return through loss aversion. A missed day becomes a failure. The programme is monthly by design, and guilt isn't the tone.
Leaderboards Social comparison. Comparing yourself to other 11-year-olds is the problem module 9 exists to talk about.
Badges and levels Collection and status. Nothing to collect keeps the celebration about the answer, not the trophy.
In-flow score, results screen Performance and grading. Retry-until-right makes a score meaningless to the child. The first-try signal goes to the parent instead.
Push notifications Re-engagement. The child has no phone yet. The parent is the channel: one email per session, only when there's a message.

I'm not against motivation mechanics. I've designed reminder loops, progress rings and progressive unlocks for a health wearable, and they earned their place. The test is the same everywhere: does the mechanic serve the behaviour you actually want, or the metric you can most easily measure? For eleven-year-olds and a conversation at home, the honest answer was no.

In an adult health product the answer is often yes, with conditions. A currency that converts real activity into something the person values serves the behaviour; a currency that converts taps does not. A coach whose personality is the reward can carry a habit for months; a badge rarely does. The hypotheses I'd test first are the same ones I tested here by hand: which single mechanic moves the first week's return, whether a celebration or a progress state does more for the second week, and where a nudge tips from encouragement into pressure.

SkillzBot is scripted, not a live model, on purpose

It would have been quick to put a language model behind SkillzBot. I didn't. Every lesson is written by hand, so a child can't go off-script or be answered by an unpredictable model, and a parent can read exactly what their child will read before they read it. That's a decision about where AI belongs, and with eleven-year-olds, on a product that trades on trust, it belongs in the tools, not in the room. I've written more about that boundary in Designing with and for AI.

Two audiences, three themes, one voice

The design system runs three themes off one token set. Marketing is cream, like real paper, with a friendly serif and one loud colour, Radish Pink, used with confidence. The child's app is a near-black indigo shell with frosted surfaces and lime section labels, so a child's work feels like its own warm, focused space at night. The parent's app is warm grey with white cards and an editorial serif: adult, calm, never gamified. Fonts are role-locked: Recoleta for children and marketing, Playfair Display for parents, Lato for everything else.

The system shipped with a WCAG 2.2 AA audit (contrast, focus states, reduced-motion alternatives for every animation, tap targets), because a warm product that excludes people isn't warm.

Claude Code as a design partner

I built Radish Learning with Claude Code, from concept to a live, paid product in about six weeks and 336 commits: the design system, the lesson and quiz players, parent and child dashboards, authentication, payments, the marketing site. Not because I wanted to be an engineer, but because working artefacts pressure-test design decisions in a way static mocks can't. When the lesson pacing felt wrong, I changed a timing constant and felt it, rather than annotating a frame and waiting.

The part I'd show any design team is the context. Radish has layered instruction files (CLAUDE.md, PRODUCT.md, DESIGN.md) that Claude reads before any work, and they became a design-decision log: every tester-validated decision written down where the next session will find it, with the reason it must not be reverted. A design-system skill loads the whole system before any design task. When I needed a direction for the kids' dashboard, I built three live-code options in one page and compared them side by side. That's the shift I think matters for senior designers: not faster mockups, but decisions made against real artefacts and remembered by the tools.

radish-learning/CLAUDE.md Design-decision log · excerpt
  • Lesson player Animation pacing is intentionally slow (iMessage/WhatsApp feel); testers validated this. Do not speed up timing constants.
  • Quiz player Child retries until correct. There is no results/score screen shown to the child.
  • Parent dashboard One pink slab maximum. Pink marks the primary action, not status.
  • Nav Do not revert to "Web app": "app" confused users into thinking there was something to download.
  • Product No surveillance framing. No gamification (no XP, streaks, unlocks).
Context files as institutional memory: every tester-validated decision is written where the next session will read it.

Tested by hand, on purpose

Radish has no analytics. No pixels, no event tracking, no A/B framework, by design and stated in the privacy policy. That means every behaviour decision on this page was made from qualitative signal rather than dashboards: a five-star feedback widget in every parent module header that lands in my inbox, beta testing rounds with families, and their notes turned into commits. The largest single drop from one of those rounds added vocabulary cards, free-text answers, sounds, haptics, confetti and the whole child-to-parent messaging system. Four modules were rewritten to an 11-year-old's reading level. The lesson pacing was slowed from 600 to 1500 milliseconds, the opposite direction to every engagement-optimised product, because testers said the faster version felt like being talked at.

In a product with analytics I'd instrument three things first, each as a hypothesis with a number attached: the first-try rate per question (which questions teach and which just confuse), the volume of child-to-parent messages per module (whether the bridge is being used), and the return on release day (whether a monthly promise actually brings people back). I would want to be proved wrong about at least one of them.

Behaviour design Progression design Storytelling Content design Competitor research Prototype testing with families Design system Claude Code Accessibility audit Payments & onboarding

Where it is now

1

Live, paid product

Radish Learning launched in June 2026 at £4.99 a month, with a new module released on the first of every month through December 2026.

2

Twelve modules, one arc

From self-esteem and identity through friendships, resilience and cyberbullying to privacy, digital footprint, social-media pressure, spotting what's real, talking to a trusted adult, and labels and language. Self-esteem comes first on purpose: it's the most protective thing a child can take online.

3

Endorsed by the people who'd know

"The question section was essential in helping him think more deeply about what was going on in the stories, and how it might relate to his own life and relationships." (Dr Emily, educational psychologist)

4

Accessible by design

WCAG 2.2 AA audit shipped in June 2026: contrast, focus states, reduced motion, tap targets.

What I learnt

Decide the behaviour first, then the mechanics. The most valuable design decision was a subtraction. If I'd started from "how do we keep kids engaged", I'd have built the reward system in the brief and measured the wrong thing forever.

Adults go first. Disclosure-first prompts, side-by-side conversations, parents who preview before children see. Every place we lowered the pressure, the conversation got easier. That's true of grown-ups and health data too.

Working artefacts change the conversation. Deciding against a prototype you can hold beats deciding against a picture of one. AI made that cheap enough to be the default.