I Learned Where AI Should Stop Being CreativeI used to think the obvious way to improve an AI product was to add more AI. If one part of the workflow could call a model, why not let the model handle more of the workflow? That assumption held up Oct 19 · 6 min readwslabs.hashnode.dev
I Stopped Treating AI Outputs as the End of the WorkflowWhen I started building AIMakeTattoo, I thought about the product as a group of separate tools. One workflow started with a text idea. Another let someone begin with a photo or reference image. AnotheSep 25 · 6 min readwslabs.hashnode.dev
I Built the Same “Modify” Feature Twice. The User Contract Was Completely Different.When I first added a “Modify” feature to my tattoo product, I assumed the interaction pattern would be reusable. Both workflows looked similar on the surface: generate an image keep the result descriAug 28 · 5 min readwslabs.hashnode.dev
I Needed AI Image Editing. I Didn't Want to Build an Image EditorI already had a working image generation flow. Users could describe a tattoo idea, choose a style, generate a result, and try again if they wanted another direction. That was enough until I started noAug 15 · 6 min readwslabs.hashnode.dev
Your AI Generation Endpoint Probably Needs a State Machine, Not Another try/catchMost AI generation endpoints look simple in the first version. A request comes in, you call the model, wait for the result, and return it. Something like this: try { const result = await generateImaAug 7 · 10 min readwslabs.hashnode.dev