Background
SnuggleRead had a simple pitch: a children's book in which your child is the hero, their name woven through the story, their photo on the cover. The founders could produce one book by hand in an afternoon of design work. That afternoon was the business problem: personalization doesn't scale if a designer touches every order. The whole pipeline, story, cover, layout, print file, had to run itself.
Challenges
- Free-form AI text was too risky for a children's product. Stories had to stay warm, age-appropriate, and structurally identical from book to book.
- Print is unforgiving. A file that looks perfect on screen gets rejected, or printed wrong, without exact bleed, trim, 300-DPI resolution, and a spine width that changes with page count.
- Parents upload real photos: dim living rooms, busy backgrounds, half-cropped grandparents.
Solution
We treated each book as a template with controlled blanks. The story arcs are written and edited by people; OpenAI fills in the personalized threads, the name, pronouns, small scene details, inside those rails. Every book reads like it was written for one child, and none of them can go off-script.
The production line is code. Uploaded photos pass through automatic background removal, covers are composed on HTML Canvas, and Puppeteer renders every page to a print-ready, 300-DPI PDF with correct bleed and a spine computed from the final page count. The finished file goes straight to Lulu's print-on-demand API, which prints and ships the physical book. Firebase carries order state the whole way, so parents watch their book move from “composing” to “printed”.
Key features
- Human-written story arcs, AI-personalized inside strict rails
- Automatic photo cleanup and cover composition on Canvas
- Puppeteer-rendered 300-DPI print PDFs with computed spine width
- Direct print-and-ship through the Lulu API
- Live order status, from “composing” to “printed”
Outcome
About three minutes from photo to print-ready PDF, with no designer in the loop.