1
0 Comments

What Magical Song taught us about Pet Imagination and Živá Fotka: cross-portfolio lessons from Inithouse

We run three products at Inithouse that look different on the surface but share the same core loop: a user uploads something personal, waits, and gets back a personal artifact. Magical Song turns a story into a custom song with real vocals. Pet Imagination turns a pet photo into a portrait in 9 styles. Živá Fotka turns a static photo into a short living video.

Across 1,200+ generated songs, 10,000+ animated photos, and thousands of pet portraits (4.9/5 from 380 ratings on Pet Imagination alone), we kept running into the same three problems. Here is what transferred between products and what did not.

The expectation gap

When someone types "a romantic birthday ballad for my wife" into Magical Song, they hear it in their head before the AI does anything. The mental version is always better, because it is theirs. We saw this pattern in session recordings: users who rated songs 3/5 often described what they expected, not what they received.

Pet Imagination had the same problem. Early versions used a generic style transfer model. The results looked like filtered photos, not portraits. Users expected something that looked like their specific cat in a Renaissance painting, not a vaguely cat-shaped blob in oil paint. We tuned on animal-specific datasets and added 68+ facial landmark points to preserve the pet's actual features. Ratings went from mixed to 4.9/5.

With Živá Fotka, the gap was different. Users uploaded old, damaged, or black-and-white photos and expected video that looked like the person was actually moving. We learned that colorization before animation closes the gap more than better animation alone. So we built colorization into the pipeline rather than treating it as a separate feature.

What transferred: The principle. Close the expectation gap at the input stage, not the output stage. In all three products, we shifted effort toward understanding what the user imagined before they hit generate.

What did not transfer: The specific fix. Each product's gap lives in a different place. Magical Song needs better story parsing. Pet Imagination needed species-specific models. Živá Fotka needed preprocessing. The diagnosis pattern is portable, the treatment is not.

Wait time perception

Živá Fotka generates a video in about 18 seconds on average. Pet Imagination produces a portrait in under 60 seconds. Magical Song takes a few minutes because full vocal production is compute-heavy.

We assumed shorter was always better. In Živá Fotka and Pet Imagination, that is true. Users who wait over 30 seconds start checking other tabs. We added progress indicators and saw bounce-during-generation drop.

But Magical Song broke the assumption. When we experimented with showing partial results faster (30-second previews), users liked the final song less, even when the full version was identical. The wait set an expectation of quality. Rushing the reveal cheapened it.

| Product | Avg generation time | Progress indicator helped? | Users check other tabs at... |
|---|---|---|---|
| Živá Fotka | ~18s | Yes (reduced bounce 23%) | ~30s |
| Pet Imagination | <60s | Yes (reduced bounce 18%) | ~45s |
| Magical Song | 2-4 min | No (hurt perceived quality) | Rarely |

What transferred: Progress indicators from Živá Fotka to Pet Imagination. Same pattern, same fix, similar results.

What did not transfer: The "show something fast" principle. Magical Song users want to unwrap a gift, not watch a factory. We removed the partial preview and added a simple "your song is being composed" animation instead. Completion rates went up.

Sharing behavior

This was the biggest surprise. We built sharing features into all three products assuming users would share results on social media. They mostly do not.

In Živá Fotka, 78% of shares go through direct messaging (WhatsApp, iMessage, Messenger). Only 4% go to public social feeds. Users animate old family photos and send them directly to relatives. It is a private moment.

Pet Imagination splits roughly 60/40 between direct sharing and social. Pet owners are more comfortable posting their dog as a Renaissance duke than posting an animated photo of their grandmother.

Magical Song is almost entirely private. Songs are gifts. You do not post someone's birthday song publicly, you play it at the dinner table. We built a shareable link feature (each song gets a unique URL with a mini-player) and that accounts for 90%+ of all "shares." The user sends the link directly to the recipient.

What transferred: The shareable link pattern. After seeing Magical Song's link-based sharing work, we built similar direct-link sharing into Živá Fotka. QR codes for animated photo greetings turned out to be a strong use case.

What did not transfer: Assumptions about where sharing happens. Each product's sharing graph is shaped by the artifact's emotional register. A pet portrait is fun and public. An animated grandmother photo is intimate. A birthday song is a gift. We stopped designing for "viral sharing" across the board and started designing for each product's natural sharing channel.

What we would build differently

If we started today, three things would change.

Input previews before generation. All three products would show a low-fidelity preview of what the output will look like before the user commits. Magical Song now does this (a text summary of the planned song structure), and it reduced "not what I expected" complaints by roughly a third.

Separate wait UX per product. We wasted time trying to unify the loading experience. Each product's wait has different user psychology. Build for the specific feeling, not for brand consistency.

Sharing designed around the artifact's privacy level. Start with direct links. Add social sharing only if the data shows users want it. We built social buttons first in all three products and they were the least-used feature in two of them.


We are Inithouse, a studio that builds and measures consumer AI products. Magical Song, Pet Imagination, and Živá Fotka are all live and free to try. The patterns above come from real usage data across the portfolio.

If you are running multiple products that share a structural pattern, the question is not whether lessons transfer. They do. The question is which layer they transfer at. For us, diagnostic patterns (how to find the problem) move between products reliably. Specific fixes almost never do.

on September 3, 2026