Project · An AI image generation system I built for ecommerce
Real products. Generated worlds. Same result every time.
tldr; I designed and built a system that turns one written product brief into consistent, production-ready ecommerce imagery, running the latest AI image models through their APIs. The system, not any single image, is the portfolio piece.
Every image on this page came out of that system: a product lock written once and pasted verbatim into every prompt, reference plates attached to every generation, a realism block that rotates exactly one human flaw, and a log that records every prompt, ratio, attempt and pick by ID. An automated runner I wrote sends each brief to the newest image models over their APIs and files the result under its ID, so the full set of 90 came back in under two hours with one person at the controls. The products are fictional and fully generated so nothing here trades on a brand I did not shoot for. Every image had a stated job before it was made.
01 Consistency
One product, six worlds, three times
The primary problem in production AI imagery is not one good image, it is the tenth one matching the first. Each row is one generated reference plate carried into 6 scenes by attaching the plate and repeating the product lock word for word. Shape, label, colour and scale hold across the row.
Fragrance
glass, amber liquid, black wood cap, cream label





Footwear
knit upper, grey suede overlays, gum outsole





Skincare
frosted glass jar, brushed aluminium lid, sage band





02 Placements
The copy zone stays empty until the type arrives
Hero, feed, story and sale creative are briefed with the zone first. The render leaves it plain and evenly lit, the focal point sits where the crop will keep it, and the headline, price and call to action are placed afterwards. Top row: raw renders with the zone reserved. Bottom row: finished creative.
Zone reserved
raw renders, nothing added





Finished creative
headline, price, CTA placed where the render left room






03 Category heroes
Product page conversion across categories
Same system, different materials: glass, foil, denim, leather, steel. Each brief named the surface, the light and the one detail the shopper needs to see.






04 Lifestyle
The customer sees their own life
People with real skin, rooms with real clutter, one flaw per frame. The product stays sharp and never hidden by more than a third.








05 Feature explainers
Back the claim
Each image supports one product claim on the page. The claim is written under it because that is what the image is judged on.






06 UGC
Performance creative that reads as a customer's phone
The camera line changes to a phone, on-camera HDR and honest clutter are allowed, and the product still matches its plate.





07 Interface
How the image behaves inside the layout
An image is finished when it holds in the product page, the phone hero, the grid and the billboard, not when it looks good alone.





08 Process
The system is the portfolio piece
Everything above came from 4 text blocks and a runner I built. The blocks are pasted, never paraphrased. The runner picks the model, sets aspect ratio and references per prompt, calls the model's API and writes the log. Swap the model and the system stays the same, which is how it keeps up as newer models ship.
1. Product lock, written once, pasted verbatim
Product: the perfume bottle in the reference images, reproduced exactly. Shape: tall rectangular flacon, 12cm, shoulders slightly rounded, heavy thick base. Material: clear glass, amber liquid at 90 percent fill. Cap: black lacquered wood cylinder, matte. Label: small cream paper rectangle centred on the front, thin black border, text unreadable. Same scale, colour and proportion in every image. Nothing added to the product.
2. Realism block
Shot on a Canon EOS R5, 50mm or 100mm macro prime, f/5.6 to f/8, ISO 100, colour-accurate raw conversion, gentle S-curve, no HDR. Studio: one large softbox key plus a white bounce. Location: natural window light shaped with one bounce. True white balance. Real surface texture, real reflections in glass and metal, real shadows with soft edges. No CGI sheen, no plastic skin, no oversaturation, no vignette filter, no lens flare.
3. One flaw only, rotated
a. slight highlight clipping on the window b. one prop a little off its mark c. faint fingerprint on glass or metal d. a crumb, petal or thread on the surface e. camera a degree off level f. a water ring where a glass stood g. one light left on in daylight h. a corner of backdrop paper visible i. a stray hair on fabric j. focus a hair in front of the label
4. Negatives, appended to all
No text, no watermark, no extra copies of the product, no warped label, no floating objects, no melted edges, no wrong proportions, no cartoon, no illustration, no render look.
How a run works
- Reference plates are generated first (P01 fragrance, P02 sneaker, P03 skincare) and stored once as the reference set for the whole run.
- A script writes SHOTS.md: one heading per image with ID, ratio and title, a REFS line, then lock + scene + realism + flaw + negatives.
- The runner I wrote reads each brief, selects the latest image model, sets the ratio and a single output, attaches the named plates, calls the model's API and saves the native-resolution result as img/ID.jpg.
- Any prompt the model filters is timed out and reworded. IDs that already have a file on disk are skipped, so a run can be stopped and resumed at any point.
| Elapsed | ID | Ratio | Refs | Result |
|---|---|---|---|---|
| 0:00:00 | P01 | 1:1 | none | plate saved 1024x1024, 18 s |
| 0:08:17 | A01 | 1:1 | P01 | saved, run of 79 begins |
| 1:22:54 | B09 | 3:4 | none | saved 896x1200, 20 s |
| 1:24:17 | H01 | 16:9 | P01 | saved 1376x768, 34 s |
| 1:28:43 | H08 | 4:3 | P02 | filtered, timed out, reworded |
| 1:35:31 | H11 | 1:1 | P02 | saved 1024x1024, 31 s |
94 generations, 3 filtered, 90 kept, under two hours end to end. Full log and SHOTS.md available on request. Latest image models · API · Automated runner
What I would do for a real product
Photograph 3 clean angles of the actual item, write the lock from the photos and the spec sheet, generate 4 per prompt on the strongest current model, keep the one that matches the plate, and publish the log with the deck. The same system, with the client's product held constant.
Want this run on your product?
Send three clean angles and a spec sheet. You get the plate, the lock, the finals and the log.
Get in touch → More projects →