Inspiration
My kids can get a confident-sounding answer from AI in seconds. What they can't get from it is the pause before believing it — the habit of thinking critically and independently instead of just accepting what they're told. I didn't want a filter or a lecture. I wanted a way to sit beside my child and practise that questioning together, without turning family time into a test. So I built a small weekend ritual instead of another chatbot.
What it does
Before You Believe It is a 5–7 minute, five-step reasoning canvas: Think → Push Back → Check → Make → Own.
- Live GPT-5.6 builds the mission. A parent enters any general topic and age band, and GPT-5.6 generates a complete reasoning mission in real time — reshaping all five steps: the claim, the questions worth pausing on, the hidden assumptions, the evidence clues, and the answer scaffolds. It prepares material to question, never a verdict.
- The child chooses the question that makes them pause, reveals a hidden assumption, compares evidence clues, and writes a working answer in their own words. AI never grades, scores, diagnoses, ranks, or judges it.
- A calm Learning Receipt separates the child’s contribution, AI’s help, the evidence checked, and what is still uncertain. The child’s work stays in the browser session and is never sent to the model.
- A bundled Floating City mission keeps the activity working if the model is momentarily unavailable, so a live demo never breaks. (Just for public to understand how the app works. Judge will always have live GPT generation for any topic, once the app is unlocked)
The difference: most "AI + kids" tools make the model the authority. This one deliberately slows the model down — GPT-5.6 generates the material to question, and the family does the reasoning.
How GPT-5.6 and Codex power the app
GPT-5.6 — the live reasoning engine (runtime). When a parent submits a topic, a Vercel serverless function calls the OpenAI Responses API with gpt-5.6. The request is deliberately constrained: reasoning: { effort: 'low' }, max_output_tokens: 900, and a strict json_schema (strict: true) with eight required fields — including exactly three evidence cards. A developer instruction forbids grading, scoring, diagnosis, ranking, persuasion, verdicts, invented citations, and any request for personal data. The server verifies a signed, HTTP-only judge cookie before any model call, applies a 15-second timeout, and re-validates the model's JSON against the schema before the browser renders it as text nodes only — never injected HTML. The child's working answer is never included in the request. GPT-5.6 is what makes the activity endlessly replayable: every topic produces a genuinely new claim, assumption, and clue set to question together.
Codex — the build partner (development). Codex was hands-on across the whole build: the accessible Think→Push Back→Check→Make→Own canvas, the deterministic mission-state transitions and Learning Receipt transforms (mission-state.js), the signed HTTP-only judge-access boundary (demo-access.js), the GPT-5.6 request/response validation (live-challenge.js), the 31-test Node suite plus a Playwright browser smoke test, the architecture/ADR docs, and the demo artifacts. I made the product calls — keep the interaction non-judgmental, keep the child's work local, and keep the parent-child conversation (not a model verdict) at the centre.
How we built it
Static HTML, CSS, and modern browser JavaScript render a responsive, accessible 2D reasoning canvas. The live path is a Vercel serverless boundary, POST /api/live-challenge: a private reviewer code is exchanged for a signed, HTTP-only cookie (2-hour scope) before the server calls GPT-5.6 through the Responses API. The API key lives only in Vercel environment variables and never reaches the browser. Strict JSON Schema plus server-side validation constrain everything the browser receives.
Challenges we ran into
Showing real GPT-5.6 without making the demo fragile or inviting a child to treat the model as an authority. Fix: limit live GPT to challenge material, constrain its output with a schema, keep the child's answer local, and keep a bundled mission as a reliability floor so a live demo never dead-ends.
Guarding a paid model endpoint with no database or auth service. Fix: a private reviewer code + short-lived signed cookie. I don't pretend it's durable rate limiting — the repo documents the replay limit and the production path openly, rather than overclaiming.
Accomplishments that we're proud of
- Live GPT-5.6, bounded on purpose: a real model feature that's useful because it's constrained — prompts to question, not answers to obey.
- 31 passing Node unit tests + a Playwright browser smoke test covering full mission flow, session restore, reset, copy fallback, reduced motion, console errors, and responsive overflow at 320 / 768 / 1024 / 1440px.
- Zero child data leaves the browser — the child's answer is never sent to GPT-5.6.
- A graceful fallback so the live demo degrades instead of breaking under a flaky network.
What we learned
The most valuable AI-education interaction may be the one that slows the model down. Drawing clear lines — what AI gave, what the child gave, what evidence was checked, what's still open — makes the experience more trustworthy precisely because it stops pretending to be certain. A demo can prove real model capability while designing for failure at the same time.
What's next for Before-You-Believe
- Human-reviewed, source-aware GPT-5.6 challenge packs.
- A server-side GPT-5.6 Agents SDK flow: a Mission Director coordinating an Inquiry Designer, Skeptic, and Evidence Guardian, validating output before it ever reaches the canvas.
- Parent-and-child usability sessions, and durable rate limiting before opening live generation to the public.
Built With
- css
- html
- javascript
- node.js
- openai-codex
- openai-gpt-5.6
- openai-responses-api
- vercel-serverless-functions
Log in or sign up for Devpost to join the conversation.