
When I first started building AIMakeTattoo, I treated generation as the main event.
A user entered an idea, chose a style, generated an image, and got a result.
That seemed like a complete workflow.
It wasn't.
The more I watched how people actually used the product, the more obvious it became that a generated image was often just the point where the real decision-making started.
People rarely wanted to start over
One of the most useful patterns I noticed was how often someone liked most of a result but wanted to change one part.
Not a completely new image.
Just one part.
Remove the flowers.
Keep the composition but change the lettering.
Make it simpler.
Try a different style.
Change the size.
That sounds small, but it changed how I thought about the product.
A traditional generator tends to treat each result as disposable. If something is wrong, you generate again and hope the next result is closer.
That works when exploration is the goal.
It is much less useful once someone already has something they want to keep.
That was the reason I started treating the generated result as something that should remain editable.
The tattoo design workflow I was building gradually became less about generating more images and more about helping people continue from the image they already had.
Generation and refinement are different jobs
This distinction took me longer to appreciate than it should have.
Generation is good at opening possibilities.
Refinement is about reducing them.
Those are almost opposite tasks.
At the beginning, a user might be asking:
“What could this idea look like?”
Later, the question becomes:
“Can I keep this but remove that?”
Or:
“Would this still work if it were smaller?”
Or:
“What happens if I put it on my forearm instead?”
Once the user reaches that stage, another fresh generation can actually be a step backward.
They no longer need more possibilities.
They need control.
The result became a reusable object
That led to a product decision that ended up affecting much more than the editing feature itself.
Instead of thinking of each generator as a separate workflow, I started thinking of the result as something that could move between tools.
The same image could be modified.
It could be saved.
It could be shared.
It could be reopened from history.
And eventually, it could be previewed on the body.
That sounds obvious in retrospect, but it was not how I originally built the product.
Originally, each feature mostly cared about getting to its own result.
Once the result became reusable, the handoff between features became part of the product.
Placement created another kind of question
Editing solved one problem, but it exposed another.
Even if someone liked the design itself, they still did not necessarily know whether it worked on the body.
A flat image on a white background does not tell you much about scale.
It does not tell you whether the design feels too wide for the forearm.
It does not show how a vertical design sits on the upper arm.
It does not tell you whether the composition feels balanced once it follows the shape of the body.
That is why I added a way to preview a design on the body.
The goal was not to simulate the final tattoo perfectly.
It was to answer a simpler planning question:
Does this direction still make sense when it is placed somewhere real?
That turned out to be a much more useful next step than simply generating another variation.
The hard part became the handoff
Once generation, modification, and placement preview existed, the difficult part was no longer building each feature independently.
It was preserving context between them.
If someone generates a design and then opens Modify, they should not feel like they are starting a new task.
If they move from Modify to Try On, the edited version should be the thing that carries forward.
If they return later, the previous result should still make sense.
These are not glamorous problems.
Most of them are state, routing, persistence, and UI decisions.
But they have had more impact on how coherent the product feels than adding another model or another generation option would have.
More AI was not always the answer
This also changed how I think about AI features in general.
It is tempting to improve an AI product by adding more generation.
More prompts.
More models.
More variations.
More automated decisions.
But some of the most useful parts of AIMakeTattoo are not generative at all.
Roman numeral conversion should be deterministic.
Cost estimation is closer to a calculator.
Font comparison works better as a direct preview.
Placement sometimes needs a simple visual check rather than another generated image.
The question I ask more often now is not:
“Can AI do this?”
It is:
“What is the shortest useful step between the user's current result and their next decision?”
Sometimes the answer is AI.
Sometimes it is a normal tool.
A better result is not always a new result
That has probably been the biggest product lesson for me.
At first, I assumed improving the product meant helping users generate better images.
Now I think a large part of the value comes from helping users keep useful work and move it forward.
A generated image can be valuable.
But if the only thing the user can do next is generate again, the workflow is still fragile.
Letting someone keep what works, change one part, check placement, and continue from there makes the result much more useful.
Generation gets attention.
Continuation is what makes the product feel complete.
Comments(0)
Join the discussion by logging into your account.
No comments yet. Be the first to comment!