Letter Friends

Inspiration

The idea began at home. My son is learning to read and write, and we read a lot of books together. I realised that motivation is the crucial part of learning: when a text is too simple, a learner gets bored, when it is too difficult, they may want to give up.

I thought AI could make it possible to create stories on demand that fit a child's current literacy level, giving them an encouraging learning curve instead of a one-size-fits-all text. Letter Friends turns that idea into a daily adventure: a child writes a real letter to a friend in a storybook valley, goes to bed, and finds a reply in the morning.

The central idea was to make one-to-one guidance feel warm and attainable without replacing the child's agency or turning the experience into an open chat box. Each animal has a recognisable voice and a reason to write back, while the child remains the author of the journey.

What it does

Letter Friends (Waldpost in German) is a local-first reading and writing app for children aged 6 and above. A child chooses one of six animal friends on a map, writes a letter, ends the day, and receives a sealed reply the next morning.

The app supports German and British English with 10 child-selectable reading levels. AI tailors every animal letter by adapting vocabulary, length, sentence structure, questions, and writing prompts to the child’s level, while keeping them fully in control. Their own writing is never graded, corrected, or automatically assessed.

Optional features include daily feedback from Olivia the owl (the personal coach) and a final learning summary for adults. Focused reading mode breaks difficult letters into one sentence at a time, with optional text-to-speech support. As children advance, letters naturally become longer and richer while remaining warm and personal.

How we built it

We built Letter Friends as a local-first React 19, TypeScript, and Vite web app, then packaged it as a lightweight native macOS application using Tauri 2. The illustrated valley is a static visual asset, with animal hotspots, postboxes, mail states, focus treatment, and accessibility controls implemented as standard HTML and CSS overlays for full interactivity and responsiveness.

GPT-5.6 powers animal letters, daily feedback, and adult summaries through the OpenAI Responses API. We also used Codex extensively during development to implement product rules as typed state transitions, generate prompts, tests, artwork, the demo video, and the working desktop app.

Planning was done with GPT-5.6 SOL at high reasoning effort, captured in version-controlled Markdown files. Implementation started with GPT-5.6 Luna at high effort, then switched to GPT-5.6 SOL at medium effort once token budget allowed. The entire app was developed on macOS with a native user experience as the top priority.

Tauri and Vite enabled a fast workflow: most features were tested in the Vite dev server and Codex’s in-app browser, with final checks performed in the native Tauri app. The shared web foundation also opens a future path for a hosted web version. We relied on the OpenAI Developer Docs plugin, Markdown tools, and Git integration throughout.

Each animal has its own reviewable character asset. When a child sends a letter, deterministic prompt assembly combines the selected animal’s personality, valley setting, reading level, and limited conversation history. Generation runs in the background so the child can continue exploring.

We also researched established German literacy references, including VERA and IQB reading-demand guidance, to shape the ten reading levels and the learning curve.

The AI pipeline includes several safeguards:

  • Deterministic prompt assembly using one language, one animal, one reading level, and limited history only.
  • Strict JSON schemas and Zod validation for reliable output.
  • Local repair for minor format issues or constrained retries.
  • Prompt guardrails, refusal handling, and safe error states always apply. When strict moderation is enabled, omni-moderation-latest also performs strict checks on both input and output.
  • First name substitution handled locally for privacy.

All profiles, drafts, and correspondence are stored locally with no account required. When live generation is used, the child’s letter content is sent to OpenAI to create the animal reply, the stored first name remains local and is replaced with a placeholder before the request. Native macOS speech uses AVSpeechSynthesizer where available, with browser fallback. Focused reading mode supports sentence-by-sentence navigation, word highlighting, and local assistance.

Challenges we ran into

The main challenge was making AI-generated letters feel personal and warm while keeping them predictable and safe. We needed each animal to maintain a consistent voice using only concrete details from the child’s letter, without assuming hidden emotions, intentions, or abilities.

Another difficulty was turning flexible model output into a reliable experience for early readers. We had to gracefully handle incomplete responses, malformed JSON, overly long letters, accidental signatures, and moderation blocks without losing the child’s draft or inventing content.

Codex itself performed very well and caused no notable issues. Per hackathon rules, we built everything with a single thread. This was not our usual developer workflow, but it worked ok for this project.

Privacy and pacing were also core product concerns. As a local-first app, everything had to survive reloads, safely preserve drafts, and make the child’s name feel personal without sending it to the model.

Balancing safety with a fluent experience proved tricky. Moderation and refusals had to protect children without confusing interruptions, so drafts are always preserved and failures remain recoverable. During testing, omni-moderation-latest blocked too many otherwise innocent questions from my son, who is fascinated by police stories, so finding the right safety calibration remains important.

Finally, the hackathon timeline forced us to focus. We prioritized a complete, testable learning journey over perfection. Early hands-on testing with children helped us identify the moments that matter most: choosing a friend, writing a letter, opening the next day’s post, and working through a difficult sentence at their own pace.

Accomplishments that we're proud of

  • Building and testing the project together with my six-year-old son, whose curiosity and love for stories shaped the product from day one.
  • Delivering a complete, polished native macOS app in a short time, with a fully working journey from writing the first letter to receiving the next morning’s reply.
  • Creating an experience with real potential to make reading and writing practice more motivating by meeting children at their current literacy level with engaging, personalized stories.
  • Demonstrating that AI can generate on-demand letters that adapt to a child’s exact reading level, from short early-reader notes to longer, richer exchanges.

What we learned

  • Codex excels at Tauri and React development, enabling fast progress from planning to a coherent native app.

  • GPT-5.6 Luna and SOL are outstanding partners for planning, implementation, and review when used at high reasoning effort.

  • Reliable child-facing AI needs strong validation, repair, and recovery. A good prompt alone is not enough.

  • Reading level involves more than length: vocabulary, sentence structure, questions, prompts, and reading support must align.

  • Children thrive on focus, clarity, and positive reinforcement. Simple moments like choosing a friend or opening the next day’s mail matter most.

  • Distinct animal characters make AI letters feel personal and part of an ongoing story.

  • Native features, especially macOS speech, significantly boost accessibility.

Overall, child-facing AI must be built as a complete system, where persistence, error handling, moderation, and clear feedback are just as important as prompt quality.

What's next for Letter Friends

  • More hands-on testing with children and parents, followed by targeted prompt and animal-soul refinements to maximize motivation.
  • Hosting Letter Friends as a web service on the existing shared foundation (e.g. via OpenAI Sites).
  • Exploring “Login with ChatGPT” as a simpler alternative to manual OpenAI API key setup for families.
  • Investigating GPT-Live integration for coaching while maintaining the app’s calm, bounded, and child-friendly experience.

Any future expansion will stay true to the core principles: local ownership of the child’s journey, clearly bounded AI roles, and never grading or correcting a child’s free writing.

Built With

  • gpt
  • luna
  • macos
  • openai
  • react
  • sol
  • tauri
  • vite
Share this project:

Updates