AI image generation demos usually optimize for one impressive output. A product
has to solve a different problem: helping a real user get a repeatable, useful
result.
I have been building GenBlink, a workflow where a
user uploads one clear adult portrait, chooses a curated visual pack, and
generates 10–50 photos. Here are the product lessons that mattered more than
adding another model dropdown.
1. Constrain creative direction before generation
A generic prompt field creates an enormous possibility space. It also makes
failures difficult to diagnose. Was the problem the source image, the requested
scene, the wardrobe, the pose, or the model?
Curated packs reduce that ambiguity. Each pack has a coherent photographic
language: professional studio, candid city dating, golden-hour fitness, quiet
luxury, retro yearbook, creator studio, and so on.
Users still get variation, but the system is not inventing a new art direction
for every image.
2. Treat identity preservation as a backend responsibility
The public prompt should describe only what the user wants to change. It should
not expose or require users to understand the system instructions used to keep
the reference person recognizable.
That separation has two benefits:
- the interface stays understandable;
- the backend can consistently apply the identity-preservation behavior.
The user can add a small direction such as a wardrobe detail or glasses without
having to rewrite the rules for face, age, hair, skin tone, and body
proportions.
3. Make credit behavior transactional
When one generated photo equals one credit, the backend needs more than a
single integer balance.
The workflow reserves credits before starting, records successful use, and
returns credits for failed or canceled generations. An append-only ledger makes
the result auditable and allows operational reports for purchases, reservations,
successful photos, and refunds.
The user-facing promise becomes simple: one successful photo uses one credit.
The implementation underneath still has to handle partial batches correctly.
4. Stream partial progress
A batch of 10–50 images should not behave like one long request. Users need to
see each result as it completes, including which outputs failed and which can be
downloaded already.
The history view becomes a core product surface, not an afterthought. It needs:
- persistent jobs,
- per-image status,
- modal preview,
- individual and selected downloads,
- delete controls for uploaded sources,
- and a way to reuse a source or generated result.
This also makes a partial provider failure much less destructive. Seven useful
photos can still be delivered even if three attempts fail.
5. Store the user prompt separately from system behavior
People should be able to copy the creative direction that produced a photo.
They should not receive a long internal instruction block.
Storing the user-visible prompt separately makes “copy prompt” and “redo image”
honest. It also lets the backend evolve without changing what the user sees in
history.
6. Build for review, not blind acceptance
Generative photography still produces mistakes: distorted hands, inconsistent
accessories, strange reflections, or a face that drifts too far from the
reference.
The product should assume that selection is part of generation. Modal preview,
select all, download selected, delete, and remix are not secondary gallery
features. They are the quality-control workflow.
7. Explain the transformation visually
“Generate AI photos” is abstract. A source portrait, an arrow, and a small
gallery of outputs communicates the product in seconds.
That visual appears across the landing page, pack catalog, tool pages, and
comparison pages because it explains both the required input and the expected
output without a paragraph of copy.
The product principle
The biggest lesson is that an AI feature becomes a product when the surrounding
workflow is predictable:
- clear input,
- bounded creative direction,
- visible progress,
- transactional credits,
- honest failure recovery,
- and tools for reviewing and reusing results.
The model matters, but the contract around the model is what users experience.
You can see the current workflow and pack catalog at
genblink.com/packs.
Disclosure: I am building GenBlink.
Top comments (0)