Five product decisions that doubled Photo AI Studio retention
How we doubled D7 retention on Photo AI Studio by killing the gallery, charging differently, and removing 'AI' from half the UI. Specific changes, real numbers.
Photo AI Studio is one of our consumer apps — you upload selfies, train a model, generate portraits. We launched it in early 2024 into a crowded market. The first version had decent week-one numbers and atrocious week-four numbers. D7 retention sat around 11%.
Six months later D7 is at 23%. Here’s what actually moved the needle. None of it was the model.
1. We killed the public gallery
The original app had a TikTok-style feed of other users’ generations. The thinking was: inspiration drives usage. Show people what’s possible.
What actually happened: new users opened the app, scrolled the feed for 90 seconds, and bounced. They never trained their own model. The feed was so good it made the empty state of their account feel embarrassing.
We replaced it with a personal gallery only. Your own generations, your own history. D1 retention jumped 6 points within two weeks of the change. The lesson:
Social proof and onboarding friction are the same axis. More inspiration = more comparison = more bounce.
If you’re building a creative AI tool, be very careful about showing users what experts are making before they’ve made anything themselves.
2. We stopped calling it “training”
The original flow had a screen that said: “Training your model. This usually takes 20-30 minutes.”
Users hated this. Half of them closed the app and never came back. The other half stared at the progress bar.
We changed the copy to: “Studying your photos. We’ll text you when your portraits are ready.” Same backend. Same wait time. We added a push notification + SMS opt-in on that screen.
Return rate after the wait jumped from 41% to 78%. The framing matters more than the feature. “Training a model” is a developer’s concept. “Studying your photos” is a human one. And giving people permission to leave the app is almost always better than asking them to wait inside it.
3. We removed credits. Then we brought them back differently.
V1 had a credit system. 100 credits for $9.99. Each generation cost 4 credits. Users hated it for the reason everyone hates credits: they couldn’t predict what anything would cost or how much they had left.
We moved to unlimited generations on a $14.99/month plan. Conversion went up. Retention went down. People generated 200 portraits in the first week, got bored, and churned.
The fix was a middle path: unlimited standard generations, with a weekly allowance of “studio” generations (higher quality, more compute). The studio bucket refills every Monday.
Before: credits everywhere → confusion
Middle: unlimited everything → novelty churn
Now: unlimited base + scarce premium → weekly return habit
That “refills Monday” thing is doing a lot of work. People come back on Monday. It’s the same psychological lever as a video game daily quest, and we should have shipped it on day one.
4. We made the first portrait deterministic
This one is small and weird and matters a lot.
When a user’s model finished training, the original app dropped them into the generation screen. Empty prompt. Blinking cursor. Most people typed something like “me as a CEO” and got a generic, slightly uncanny result. Then they closed the app.
We changed it: the moment training finishes, we automatically generate four portraits in styles we know work well for that user’s apparent demographic (we infer some basics from the training photos). The user opens the notification and sees four good results already done. No prompt required.
This cost us about $0.40 in compute per new user. It was the single biggest retention lever we shipped. D7 went from 16% to 21% on that change alone.
The lesson for anyone building generative tools: the empty prompt is the enemy. If your user’s first interaction with your AI is a blank text box, you’ve already lost a third of them. Pre-generate. Suggest. Default to something good.
5. We added a “this one sucked” button
Not a thumbs up / thumbs down. Just one button, on bad generations. The copy is literally “This one sucked — regenerate free.”
Three things happened:
- We got an honest, high-signal dataset of failure cases. About 12% of generations get flagged. We use that data to tune our prompt scaffolding and to identify which user models are producing bad output and need retraining.
- Users felt heard. The free regenerate took the sting out of a bad result. NPS went up 14 points.
- We learned that users have remarkably consistent taste — a user who flags a generation as bad will flag similar generations as bad 80% of the time. We started using their flag history as a personal style signal for future generations.
A thumbs up / thumbs down would have given us none of this. The specificity of “this one sucked” — the slightly profane, slightly emotional copy — got people to actually press it. We tried “low quality” and “not what I wanted” first. Both got pressed 3-4x less often. Tone matters in feedback UI.
What didn’t work
For balance, here’s what we tried that did nothing or hurt:
- Streaks. We added a generation streak counter. It moved no metrics and made the UI noisier. Killed it after three weeks.
- Referral credits. Tried “invite a friend, get 10 free studio generations.” Referral rate was below 1%. Not worth the engineering.
- A better base model. We swapped in a meaningfully better fine-tuning approach mid-year. Quality went up. Retention barely moved. Once a generation is “good enough,” making it better doesn’t seem to drive habit. Habit is driven by structure, not quality ceiling.
That last one is the uncomfortable one. We spent two engineer-months on the model upgrade. It moved retention maybe 1 point. The “refills Monday” change took an afternoon and moved it 4.
The pattern
Looking at all five wins, none of them are about the AI. They’re about:
- Removing comparison anxiety (kill the gallery)
- Translating developer concepts into human ones (“studying your photos”)
- Designing for return cadence (refills Monday)
- Eliminating the empty state (pre-generated portraits)
- Building feedback loops with personality (this one sucked)
If you’re building an AI product and your retention is bad, my first guess is that it’s not your model. It’s that you’re shipping the AI’s mental model instead of a user’s. Generations cost money, blank prompts are scary, and “unlimited” feels free until it feels worthless.
Fix the wrapping. The model is probably fine.
If you’re building a consumer AI product and want a second pair of eyes on your retention surfaces, get in touch.
Related posts
Five product decisions that doubled Photo AI Studio retention
What actually moved the needle on Photo AI Studio's D7 retention. Pricing, onboarding, model choice, refund flow, and a push notification we almost shipped wrong.
How we batch-generate 50,000 cover images per month for Interior AI Designs
The actual queue, the actual costs, the actual failure modes behind running 50k FLUX renders a month for Interior AI Designs without lighting our bank account on fire.
How we batch-generate 50,000 cover images a month for Interior AI Designs
The actual pipeline behind 50k monthly room renders at Interior AI Designs: queues, FAL, idempotency keys, and the boring failure modes nobody writes about