Pet Imagination processes a pet photo through nine distinct art styles in under 60 seconds. No signup, no queue. Here is what the pipeline looks like from an engineering perspective and what the usage data told us about how people actually choose styles.
The nine styles and why they are not one prompt
The nine styles in Pet Imagination are Renaissance, Watercolor, Anime, Sketch, Sheriff, Wizard, Astronaut, Final Boss, and Blocky.
Early on, we tried running all of them through a single prompt template with a style parameter swapped in. The results were mediocre across the board. A Renaissance portrait needs heavy chiaroscuro lighting and detailed fabric rendering. A Blocky portrait needs sharp geometry and flat color fills. Asking one prompt to handle both meant neither looked right.
So we split the pipeline. Each style now has its own prompt structure, its own negative prompt set, and tuned inference parameters. Renaissance gets more diffusion steps and a higher guidance scale to preserve fine detail in fur texture and costume elements. Blocky gets fewer steps and a lower scale so the output stays simplified and graphic rather than overcooked. Anime sits somewhere in between with added emphasis on linework and exaggerated features.
The tradeoff is maintenance cost. Nine configurations instead of one means nine prompt sets to test whenever we change the underlying model or update preprocessing. But the visual quality gap between a dedicated pipeline and a generic one was immediately obvious. We shipped the separate configurations and the per-style quality has held since.
How we keep generation under 60 seconds
The target was a product decision, not an infrastructure constraint. We measured early prototypes and found that anything past about 90 seconds caused visible dropoff. People uploaded their photo, stared at a progress indicator, and left the page. Under 60 seconds kept most users waiting through to the result.
Three decisions keep us there.
Warm inference endpoints. Cold starts on GPU instances are response time killers. We maintain a pool of warm instances that scales based on traffic patterns. US mornings and European evenings are predictable spikes. Outside those windows, a small standing pool handles the baseline.
Preprocessing on the client side. Before the photo reaches our server, the browser resizes and normalizes the input. A 12-megapixel phone camera photo becomes a consistent resolution before upload. This reduces upload time and makes inference duration more predictable.
Render on demand, preview at low resolution. When a user picks a style, we generate the full-resolution portrait for that one style. But the preview grid showing all nine options uses lower-resolution thumbnails rendered in a parallel batch call. The heavy generation only happens for the style someone actually taps.
What users actually pick
We expected Renaissance to dominate. It looked the most "premium" in internal testing and we placed it first in the grid. It performs well, but the most consistently picked style turned out to be Anime. Pet owners gravitate toward stylized, expressive versions of their animals. Something about oversized eyes and clean linework on a golden retriever hits different.
Blocky was another surprise, especially with cats. The chunky pixel-style geometry works particularly well on cats with strong face shapes.
The least picked style across the board is Sketch. Our working theory: it looks too much like a standard photo filter. Users want visible transformation. They want their pet to look like a painting or a character, not a pencil trace of the original. Enhancement is not what people came for.
This data shaped how we order the picker. We moved Anime to the first visible position, kept Renaissance second, and rotated Sketch toward the end. Small layout change, but the completion rate from "style selected" to "portrait generated" ticked up noticeably once the most appealing options sat in the top row.
What we applied to other products
We build several image and media products at Inithouse. The Pet Imagination pipeline work directly influenced decisions on Ziva Fotka, our photo-to-video animator for bringing old family photos to life.
On Ziva Fotka, we had the same architectural question: one generic animation pipeline or mode-specific ones. The Pet Imagination quality data made the answer clear before we shipped. Specialized beats generic when the user can see the output. We split Ziva Fotka's processing paths early and avoided the rewrite.
The other transferable lesson: client-side preprocessing is worth the upfront engineering investment on every product that handles user-uploaded images. Upload variability (phone cameras, screenshots, scanned prints) is the single biggest source of unpredictable processing times. Normalize the input early and the rest of the pipeline becomes much more consistent.
The numbers
- 9 art styles, each with a dedicated inference configuration
- Generation target: under 60 seconds for standard uploads
- Most picked style: Anime, consistently ahead of Renaissance
- Least picked: Sketch
- Blocky is disproportionately popular among cat owners
Pet Imagination is a free AI pet portrait generator. Upload a photo, pick a style, get artwork. No account required.
We write about what we learn building products at Inithouse. More engineering notes from the portfolio at inithouse.com.
Top comments (0)