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.

Five product decisions that doubled Photo AI Studio retention

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.

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:

  1. 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.
  2. Users felt heard. The free regenerate took the sting out of a bad result. NPS went up 14 points.
  3. 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:

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:

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