case_study
SparkTales
AI storytelling SaaS for parents & educators
Full-stack engineer — Next.js app & LLM generation pipeline
- Next.js
- TypeScript
- LLMs
- Node
- GCP

problem
The problem
Generative AI for children raises the bar twice over. Output has to be reliably age-appropriate and coherent — a model that wanders off-tone is a product risk, not a quirk. And generation takes real time, so the wait had to feel like the product working rather than the product hanging.
The pipeline also had to be cost-aware: LLM and image generation are the expensive part of the unit economics, so the architecture needed to control how much work each story actually triggered.
approach
What I engineered
- Built the Next.js application end to end — story creation flow, library, and account surfaces — with server-side rendering for the content that benefits from it.
- Engineered the LLM generation pipeline with structured prompting and validation so stories stayed on-tone, age-appropriate, and coherent across sections.
- Added guardrails and content checks around generation so unsafe or off-spec output was caught before it ever reached a child's screen.
- Designed the generation UX around real latency — streamed/staged progress and resilient states so a multi-second generation read as deliberate, not stalled.
- Kept generation cost in check by bounding token usage per story and reusing context where the model allowed, rather than regenerating from scratch.
result
The result
A live AI storytelling product that takes a parent or educator from prompt to a finished, illustrated, age-appropriate story — with the safety and consistency that audience demands.
The product is shipped and generating stories for real users. Engagement and generation-cost figures are pending client sign-off before they're published here.
- Vertex AI
- Gemini generation pipeline
- Story + audio
- illustrated, age-aware output
- Guardrailed
- kid-safe by design
Public scope (SparkTales — built on Google Vertex AI). Engagement and cost-per-story figures are available from the client on request.
work_with_me
Have a project like this?
Tell me the problem on a 20-minute call and I'll tell you how I'd approach it — the same way SparkTales started.
Discuss your project