Own productLive
A reading app with 2,543 voice clips, and a pipeline that checks every one
Plimmery teaches children aged 4 to 9 to read. AI voices the lessons at build time, two speech-to-text models check every spoken line, and no AI runs while a child is learning.
- Industry
- Education
- What it shows
- AI voice generation, Automated quality checks, Product build
- Year
- 2026
- See it live
- plimmery.com



In numbers
- lessons across 13 stages, from first sounds to reading books
- 119
- recorded voice clips, each checked before release
- 2,543
- test files across the app
- 328
- browser journeys that play the app like a child would
- 23
Figures come from the project’s own files and records.
What changes
The steps people did by hand, and the route the work takes now.
A lesson needs new spoken words
Before
- Book a voice actor
- Record every word
- Listen to every clip
- Re-record the mistakes
With AI
- Two AI voices record every phrase
- Two models check each spoken line
- A person hears only the disputes
Every sound voiced and checked before release
The problem
For a child learning phonics, the voice is the lesson. A sound pronounced slightly wrong teaches the wrong sound. Human voice actors for thousands of words, in two accents, are slow and expensive to re-record every time the curriculum changes, and live AI voices can say something different every time.
What we built
A complete reading app: 119 lessons across 13 stages, a placement test, a parent dashboard, accounts, billing on the web and on Android, and a mascot who reads with the child. It runs without ads, streaks or nagging, and daily time limits are built in. In a lesson, the child taps the speaker, hears a sound and picks the letter that makes it. Every one of those sounds went through the pipeline below.
Where the AI is, and where it isn’t
AI does the heavy lifting before release, not during a lesson. Every phrase in the curriculum is voiced by text-to-speech, then two separate speech-to-text models listen back to every spoken line. Only the lines they dispute go to a person, so human review time goes where it’s needed. Single sounds and letter names are checked by ear alone.
If a clip is ever missing, the app plays silence rather than falling back to a robotic browser voice, and a test blocks the release before that can reach a child.
The system behind it
The voices are one part of a larger product: 163k lines of code, 66k of them tests, with 10 outside services from 7 companies, 21 API routes and 10 database tables, every one with row-level security. The system map shows every part and twelve journeys through it, checked against the code and production on 12 October 2026. Below, a preview of it, how each spoken line is checked and the gates a release has to pass.
Interactive system map
Every part of Plimmery, and how they connect
42 parts and 12 journeys, from a child's lesson to a payment, the voice and a release. Checked against the code and production on 12 October 2026.
Play 12 journeys, or click any of its 42 parts.
- API routes in production
- 21
- tables, all with row-level security
- 10
- third-party services, from 7 companies
- 10
- 01ScriptLessons are written as typed code, so every line the app can say is known before release.2,495 lines
- 02Voice and hashTwo TTS engines record each line. The file name is a hash of text, override and recipe, so only changed lines are regenerated.2,543 MP3s
- 03Two transcriptionswhisper-1 and gpt-4o-transcribe each write down what they hear in every spoken line.2 model families
- 04VerdictBoth transcripts are compared with the script after normalising case, punctuation and spaces.6 verdicts
- 05Ear checkA review page ranks the worklist worst first in 7 groups; flags per voice include inhale, artifact, flat and wrong.7 groups
- 06Release gatesSeven checks run in CI and on deploy. If one fails, nothing ships.7 gates
Ear check and fix loop
- inhale
- artifact
- blank
- flat
- slow
- fast
- wrong
- 1Reword the line or add a pronunciation override, which gives it a new file name
- 2Regenerate only that file
- 3Check that line again, by machine and by ear
Machine verdicts, last full sweep, 6 July 2026
| Verdict | US | UK | Total | Share |
|---|---|---|---|---|
| OK | 1,232 | 1,217 | 2,449 | 82.0% |
| Suspect | 149 | 145 | 294 | 9.8% |
| Confirmed | 88 | 104 | 192 | 6.4% |
| Blank | 2 | 3 | 5 | 0.2% |
| Informational | 3 | 5 | 8 | 0.3% |
| Not checked | 20 | 20 | 40 | 1.3% |
| All checks | 1,494 | 1,494 | 2,988 | 100% |
- 01Every spoken string has a recordingA test lists every string the app could ever speak. If one has no recording, the release stops.
- 02The files match the manifest exactlyNo file named in the manifest is missing, and no unused file ships with the app.
- 03Everything the interface says is recordedLines the interface speaks outside the lessons are covered too.
- 04Word lists are heard correctly in both accentsEvery word list is transcribed back from the US and the UK voice and must match the script.
- 05No line the voices can’t sayLines may not use letter clusters the voices stumble on, and fragile items sit only at the start or end of a sentence.
- 06The recipe is pinnedA file’s name changes when its processing changes, and changing the voice or model is refused unless the recipe id is bumped.
- 07No templated speechSpoken lines are fixed text, never assembled at run time, so every one can be recorded and checked in advance.
What it shows
Generating content with AI is the easy half. The value is in the checking: two independent machine reviews, a human for the disputed cases, and a release gate that makes the rules impossible to skip. The same approach works for any company producing content at volume, from product descriptions to training material.
Under the hood
- Next.js
- Supabase
- Cloudflare Workers
- OpenAI TTS and transcription
- Google Cloud TTS
- Lemon Squeezy
- Google Play Billing
- Resend
- Playwright
- Vitest
01Curriculum as code
Lessons are written as typed templates, so every phrase the app can say is known in advance.
02Voice generation
Two text-to-speech engines record US and UK English at build time, with delivery instructions for each sound.
03Machine checks
Two speech-to-text models transcribe every spoken line. If both disagree with the script it is bad; if one does it is suspect. Single sounds are checked by ear.
04Human ear
Only flagged clips reach a person, ranked worst first, on a review page built for fast listening.
05Release gate
Type checks, lint, unit tests, an audio-coverage test and journey tests must all pass before anything ships.
06Runtime
The app plays recorded files. Accounts and progress sync through Supabase; payments come from the web or Google Play.