Forly โ AI-Powered Children's Storytelling App with ElevenLabs Narration and Claude-Generated Plots
The Brief
Geryn Evans, a UK-based EdTech founder, had a clear insight: children engage dramatically more with stories when they are the protagonist. Existing audiobook apps for kids were passive โ fixed content, no personalisation, no AI.
The product vision was a subscription app where parents insert up to 5 children's names as characters, choose from a library of multi-cultural tales, and the AI generates a personalised version narrated in a natural voice โ not robotic text-to-speech.
The technical requirements were demanding:
- Real-time AI story personalisation with name insertion (not just string replacement โ the narrative grammar had to adapt)
- High-quality voice narration via ElevenLabs (2 male + 2 female voice options)
- Story regeneration on demand โ Claude AI rewrites the plot structure when the child wants a different adventure
- Offline library โ downloaded stories must be available without internet
- Child lock โ 4-digit PIN separating adult account settings from child-facing content
- Stripe subscription with 7-day free trial
What We Built
Flutter Mobile App (iOS, Android, iPad)
A dual-mode app: an adult setup experience (account management, subscription, child profile creation) and a child-facing reader with large typography, immersive illustrations, and audio controls. The 4-digit PIN gates the mode switch.
Children browse story categories (adventure, fantasy, nature, myths from 14 cultures), select a tale, choose their narrator voice, and tap Play. The AI personalisation runs in the background before narration begins โ typical wait time under 8 seconds.
AI Personalisation Pipeline
We built a two-stage pipeline:
Stage 1 โ Story Template Processing: Each story in the library is stored as a structured template with tagged character roles (protagonist, sibling, friend). When a child profile is loaded, the pipeline substitutes names and adjusts pronouns, possessives, and verb agreements using a fine-tuned prompt layer.
Stage 2 โ Claude AI Story Regeneration: When a child taps "Tell it differently," Claude receives the story template, the character names, and a randomised plot variation seed. It rewrites the narrative arc while keeping the cultural setting and characters consistent. Parents can tap a "Read to me" button on any regenerated story to trigger a fresh ElevenLabs narration.
ElevenLabs Voice Integration
Four voice profiles (two male, two female) are selectable per story session. Narration is generated server-side and streamed to the app. Generated audio files are cached per story-voice combination to avoid re-generation costs on repeat listens.
Offline Library
Downloaded stories are stored locally with SQLite and encrypted at rest. Children can access their library on flights, in the car, or in areas with poor connectivity. The download queue manages concurrent downloads with progress indicators.
Stripe Subscriptions
7-day free trial โ monthly or annual subscription. Referral codes generate trial extensions (both referrer and new user get +7 days). The admin panel tracks subscription revenue, churn rate, and cohort retention.
React.js Admin Panel
The content team manages the story library, uploads new tales, manages voice recordings, and reviews user-reported content issues โ all through a clean React dashboard backed by the same Node.js API.
Tech Stack
| Layer | Technology |
|---|---|
| Mobile | Flutter 3 / Dart (iOS + Android + iPad) |
| Backend | Node.js + Express |
| Admin Panel | React.js |
| Database | PostgreSQL |
| AI Story Generation | Claude AI (Anthropic) |
| AI Voice Narration | ElevenLabs API |
| Payments | Stripe (subscriptions + trials) |
| Push Notifications | Firebase Cloud Messaging |
| Crash Reporting | Firebase Crashlytics |
| Monitoring | Prometheus + Grafana |
| Storage | AWS S3 (audio cache) |
Results
4.8โ App Store rating in the first 60 days, with parents specifically citing voice quality and the name personalisation as standout features in reviews.
68% free trial to paid conversion โ significantly above the 20โ30% industry benchmark for children's subscription apps. The offline download feature was cited by users as the primary reason they converted.
8-second median personalisation time from story selection to narration start โ fast enough that children don't perceive a loading wait.
2.3 stories per session average โ children actively use the regeneration feature, with 41% of sessions including at least one "Tell it differently" tap.
4.5-month delivery from signed proposal to App Store + Google Play submission โ including the full admin panel, Stripe integration, ElevenLabs pipeline, and Claude AI story engine.
14 cultural storytelling traditions represented in the launch library, with AI narration quality consistent across all 14.
What Made This Work
ElevenLabs was the right voice technology choice. We evaluated Google WaveNet and Amazon Polly โ both produced narration that parents in user testing described as "robotic" for children's stories. ElevenLabs' expressiveness closed the gap between AI and human narration at a cost structure that worked within the subscription economics.
The hardest engineering problem was pronoun agreement in regenerated stories. When Claude rewrites a plot with a female protagonist named "Sofia," every pronoun, possessive, and verb conjugation in the narrative needs to be correct. We built a post-processing validation layer that catches agreement errors before the story reaches the narration pipeline.