← Canvas
Product DesignAI

Plaio · AI Storytelling for Families

Plaio

The child is always the author. Plaio asks questions and illustrates — it never writes the story.

Role
Cofounder · Design & AI Systems
Company
Plaio
Domain
Families · AI
Year
Nov 2025 – Present
Status
Private Beta · v1 Live
Website
The Product

A conversation that ends as a hardcover book.

A child talks with one agent, one question at a time — hero, world, plot — collecting three badges on a story board. When the third badge lands, the system compiles the whole conversation into a structured blueprint, renders 24 illustrated panels, and the finished story is printed as a hardcover book with the child's name on it.

3 workshops · 15+ children
San Francisco & UC Berkeley, ages 6–12
24 illustrated panels
per story, rendered in parallel
Every story printed
a hardcover the child actually holds
Story Adventure — The gated conversation. The Story Board's three badges are the state machine rendered for a child; the answer chips are structured [OPTIONS] output; the Report flag is a guardrail surface.
01

Story Adventure

The gated conversation. The Story Board's three badges are the state machine rendered for a child; the answer chips are structured [OPTIONS] output; the Report flag is a guardrail surface.

The Library — Finished stories on a shelf. Every card is a 24-panel book that already passed four guardrails — the one surface in the product with no failure state.
02

The Library

Finished stories on a shelf. Every card is a 24-panel book that already passed four guardrails — the one surface in the product with no failure state.

The System

The interesting design decisions are system decisions: where safety sits, who remembers, what an agent is allowed to see.

The Pipeline

How is unstructured dialogue compiled into a print-ready artifact?

Three phases around one shared blueprint object. No agent talks to another agent — they read and write the blueprint, and safety guardrails screen every crossing.

PHASE 1 · CONVERSATION → three badges 1 The child’s message ARTIFACT one turn of many — typed or spoken Safety guardrail inbound the child’s message, before any agent sees it 2 Conversation agent AGENT character → setting → plot, one question at a time Safety guardrail outbound · ↻ regenerates the agent’s output — the reply and the milestone 3 Badge  ×3 AGENT hero · world · plot — three badges end it PHASE 2 · BLUEPRINT → one shared object 4 Story JSON AGENT compiles the whole conversation into one object Safety guardrail outbound · ↻ regenerates every field of the blueprint, at once 5 Story blueprint SHARED OBJECT characters[]   name · role · description key_objects[]  the artifact, the vehicle settings[]     4–6 places · 23–25 scenes Character sheets DECLARED ONCE [CHARACTER: Mia] visual_description · reference_image PHASE 3 · RENDER → 24 panels, then a book 6 Scene refiners AGENT ×2 setting — a returning place changes its light illustration — position sets mood, beat sets framing 7 Tag resolution DETERMINISTIC every tag swapped for its stored description 8 Illustration  ×24 CONCURRENT every panel renders in parallel Safety guardrail outbound · ↻ regenerates every finished panel 9 A printed book ARTIFACT hardcover, with the child’s name on it
The Child's Side

Where do system phases and user experience diverge?

Two clocks. Blueprint and render are two different engineering problems that collapse into one undifferentiated wait for a seven-year-old — the map between the lanes is not 1:1, and that mismatch is where the product is most likely to lose a child.

The system PIPELINE TIME PHASE 1 · CONVERSATION ~20 min gathers story elements, awards badges PHASE 2 · BLUEPRINT seconds compiles one shared object PHASE 3 · RENDER minutes twenty-four panels in parallel PIPELINE COMPLETE nothing left to run TWO PHASES · ONE WAIT The child EXPERIENCED TIME STEP 1 · TALKING a conversation with one agent STEP 2 · WAITING one wait, not two the child cannot tell blueprint from render — it is all one wait STEP 3 · READING turning pages that cost nothing ON SCREEN a chat — one question at a time, with tappable answer chips THE WAIT 1–2 s per reply. A blocked reply regenerates and takes twice as long — the child reads it as thinking. IF BLOCKED A redirect, never a refusal. Inbound: steered back into the story. Outbound: the first attempt never reaches the screen — only the regenerated one. ON SCREEN twenty-four tiles filling in as panels finish, over a progress bar THE WAIT Minutes, not seconds — panels render in parallel, but the slowest sets the wall clock. The one place the product can lose a child. ◻ open — what fills this wait is the unsolved screen IF BLOCKED A panel that fails screening regenerates in place. The grid just fills more slowly — no gap in the book, and no message about it. ON SCREEN the finished book, page by page THE WAIT None. Every page is already rendered and screened. IF BLOCKED No failure state, by construction — nothing reaches the book without crossing a guardrail. THE PARENT Configures the boundary once, before the first story — phobias, nightmare triggers, avoided topics — and rates the finished story at the end of the book: the product’s evaluation signal.
The Call

How is continuity engineered into a stateless model call?

Every box marked agent above is one call, assembled from the same four layers. The model receives a single string and remembers nothing between calls — every kind of continuity in the finished book is put there by a layer, not remembered by the model.

system_prompt written once · identical on every call role the one thing this agent does, and what it must never do output_contract the exact shape it has to return, field by field This is the layer a designer actually writes. It is the interface. Instruction layer HAND-WRITTEN blueprint_slice read from the shared object reads only the fields this agent is allowed to see writes only the fields it is allowed to change No agent receives another agent’s output directly. They share an object, not a conversation. State layer SHARED OBJECT character_sheets substituted, not recalled [CHARACTER: Mia] swapped for her stored description and reference image string_swap plain substitution — no model involved in this step The model is never asked to remember what Mia looks like. Resolution layer DETERMINISTIC violation_hint present only on a retry what_broke which rule the blocked attempt violated not_the_text the rejected output is discarded, never fed back in Empty on a first attempt. This layer is the whole self-correction mechanism. Correction layer USUALLY EMPTY CONCATENATED model_call stateless context_window the four layers above, concatenated into one string memory none — this call knows nothing about the previous one Every kind of continuity in the finished book is put there by a layer, not remembered here. Model THE ONLY PROBABILISTIC STEP schema_validation enforces the output_contract declared above parse the response must match the shape the prompt declared reject a malformed response is re-requested, never patched by hand Checks whether the output is the right shape. Says nothing about whether it is safe. Contract layer DETERMINISTIC guardrail two LLM layers · see The Boundary screens the output, before it can be written anywhere parent_config phobias, nightmare triggers and avoided topics apply here Checks whether the output is safe. Says nothing about whether it is the right shape. Safety layer PROBABILISTIC BLOCK the same call runs again PASS written into the blueprint
The Boundary

Why is safety enforced as a bidirectional boundary, not a filter?

Nothing crosses in either direction without being read twice — a fast explicit check, then a contextual one. Blocked output returns a violation hint the same agent regenerates against, so the child never sees a refusal.

THE CHILD SAFETY GUARDRAIL runs in both directions THE SYSTEM ▶▶  Inbound — anything entering the system What the child types one turn of the conversation, typed or spoken layer_1 LLM · fast explicit harm, crisis language, personal details layer_2 LLM · contextual framing, tone and intent — plus the parent’s settings The agent reads it no agent ever sees text that has not crossed this line BLOCK Redirected, not refused steered back into the story ◀◀  Outbound — anything leaving it What the child reads nothing arrives here that has not crossed back layer_2 LLM · contextual companion language, jailbreak compliance, crisis wording layer_1 LLM · fast explicit harm, crisis language, personal details The agent writes a reply, a blueprint field, or a finished panel BLOCK violation_hint the same agent regenerates
Three Decisions

What I chose, what I rejected, and why.

01

A blackboard, not a relay

chose

One blueprint object every agent reads and writes.

rejected

Agents passing context to each other.

Drift compounds across 24 scenes. One inspectable object beats six conversations you can't see into.

02

Memory in the data, not the model

chose

Character sheets, resolved per scene by deterministic tag substitution.

rejected

Asking the model to remember what Mia looks like.

The same face across 24 panels needs a guarantee, not a probability.

03

Correction inside the loop

chose

Blocked output regenerates against a violation hint, invisibly.

rejected

A refusal message at the surface.

A six-year-old gets a working story, not an error state — and no lesson in what not to say.

The Evaluation Loop

How I know the system does what I designed.

A children's product can't A/B test its way to safety, so the checks run at three distances from the child.

In the fieldFamily workshops

3 sessions, 15+ children ages 6–12, San Francisco and UC Berkeley. Watching where the model drifts is the eval loop: each session tightened the system prompt, the phase constraints, and the structured-output markers.

In productionParent feedback

A rating instrument at the end of every finished book — the parent judges the story at the moment they have just read it. That signal is the product's evaluation metric.

InternalPrompt lab

Full trace of every story: each agent's input and output, side by side across prompt versions — so a failure can be attributed to the agent that caused it.

Child using Plaio in a workshop session
Families at a Plaio workshop
Child drawing, extending the story by hand
Plaio workshop, full group, San Francisco
Where It Is

Private beta, recruiting the first 200 families.

v1 is live, in use by families in the beta, with every finished story printed and shipped as a hardcover book.

Next project
Stealth AI Health