← Selected workRead the bookThe architectureThe iterationProduct archive ↗Try the builder ↗

Pet Protagonists / Independent product

A pet photo.
A story.
A book you can hold.

A personalized storybook service that took a pet's personality and photo through writing, illustration, review, and print-ready book production. I built the product and the system behind it.

Coda, a cream-colored dog, illustrated in a field of wildflowers
Coda's Magical
Twilight Adventure
Actual generated artwork / preserved from the book PDF
RoleProduct, engineering & operations
Build historyOctober 2025 – August 2026
What survivesThe book, the experience, the engineering

01 / The idea

Make something personal enough to keep.

Pet Protagonists started with an approachable idea: put someone's own pet at the center of a story. The name, the odd little habits, the recognizable face. Let the customer choose a setting and an illustration style, then turn it into a keepsake.

The interesting engineering question was how to make that experience repeatable. A paid order had to become a coherent story, a consistent set of characters, a usable preview, and a deliverable book. Each handoff added real product work.

That became the project: connecting creative generation to the practical details of payments, storage, retries, email, and printing.

02 / The result

Start with the thing it made.

This is Coda's Magical Twilight Adventure, created for the Youngs. The preserved PDF includes my dedication: “I know I enjoyed making it!” Browse the actual pages below, or open the complete print file.

Coda's Magical Twilight Adventure

24-page interior · December 2025 · Preserved original

Open full PDF ↗
Book PDF page 6Book PDF page 7
PDF pages 6–7 of 24

Rendered directly from the original generated PDF, with its original credits and dedication preserved in the full file.

03 / The work

The work between the idea and the book.

I worked across the customer-facing product and the systems that had to complete an order. The difficult parts showed up between steps.

01 / Character identity

The same pet, page after page.

Extract character descriptions, build reference images, and carry those anchors into each scene. Later iterations tightened which characters could appear and varied retry prompts without losing the original identity.

02 / Durable generation

A long job with a recoverable path.

Story writing, scene extraction, illustration, storage, and delivery run through background workflows. Saved progress, bounded concurrency, retry limits, and order states make individual failures manageable.

03 / Physical output

Pixels had to become print files.

Image processing and PDF layout had to account for trim, bleed, safe areas, page counts, and a wraparound cover. The printing workflow included preview, approval, an admin review step, and a Lulu integration.

04 / Running a product

The unglamorous parts counted too.

Stripe checkout, gift flows, coupon handling, customer emails, analytics, an admin workshop, evaluation datasets, tracing, and a social-content pipeline all sit around the generation itself.

04 / The system

One experience. Several cooperating systems.

The application coordinated the customer journey. Background workflows carried work across model calls and failures. Database records held progress; object storage held the resulting images and print files.

Architecture: customer uses Next.js, Stripe confirms payment, Inngest coordinates story and illustration workflows, PostgreSQL stores order state, R2 stores assets, and approved books go through print review and Lulu.

Reconstructed from the application and workflow source. Simplified to show responsibilities and handoffs; this is a record of the built system.

Character consistency: pet photos and descriptions feed shared character anchors; anchors feed per-scene prompts and generated illustrations; selected scenes can be retried while retaining the same character information.

05 / The iteration

A product takes more than its first version.

The repository records a succession of concrete problems and improvements. This is the part of the build I want to preserve alongside the polished pages.

  1. Get the complete order path working.

    The first MVP joined story creation, checkout, email delivery, public story pages, analytics, and end-to-end test automation.

  2. Make characters hold together.

    Character extraction and saved descriptions became part of scene generation. Model comparison work examined image quality, speed, and cost.

  3. Push through the printing details.

    Book interiors, covers, print-safe layout, and debug versions were generated and revised. Coda's preserved book comes from this phase.

  4. Make quality easier to inspect and improve.

    Reference-image handling, character descriptions, model updates, tracing, evaluation datasets, cover alignment, and selective retry behavior received further work.

  5. Work on distribution and the customer experience.

    A social-content workflow, an admin workshop, saved form progress, and improvements to the creation flow extended the work beyond generation.

Timeline based on repository history, implementation documents, and the preserved book files.

What I carry into the next build

Follow the idea all the way to the artifact.

This project brought product design, AI orchestration, payments, operational tooling, and physical output into one system. The useful evidence is here: a complete book, an inspectable architecture, and a record of iteration.

I like work that connects an ambitious idea to something people can actually use. If your problem needs that combination of curiosity, engineering, and follow-through, let's talk.