SWShi Warreninwslabs.hashnode.dev·Aug 15 · 6 min readI 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 no00
SWShi Warreninwslabs.hashnode.dev·Aug 7 · 10 min readYour 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 generateIma00
SWShi Warreninwslabs.hashnode.dev·Jul 30 · 11 min readBuilding an Image-to-Tattoo Workflow Without Turning It Into a Generic Image FilterI recently added an Image to Tattoo workflow to AIMakeTattoo. From the user’s point of view, the feature is simple: upload a photo or sketch, choose a tattoo style, adjust a few controls, and generate00
SWShi Warreninwslabs.hashnode.dev·Jul 21 · 5 min readI Kept Adding AI Guardrails Until Every Output Started Looking the SameThe feature sounded simple I recently added an idea-refinement step to an AI product. The workflow was meant to be straightforward: rough user input → clearer visual direction → image generation User00
SWShi Warreninwslabs.hashnode.dev·Jul 14 · 10 min readI Split One AI Generator Into Six Smaller Tools. I’m Still Not Sure It Was the Right Move.When I first built AIMakeTattoo, the product was easy to explain. A user describes a tattoo idea, chooses a style, and gets an AI-generated visual concept. That was the entire product story. It was al10