Kuriei

Prompt engineering

What 100 AI Image Renders Taught Us About Ad Prompts

· 7 min read · Kuriei team

Kuriei generates ad creative from a product URL: it writes copy, picks a layout, and renders the image with an AI image model. We maintain 25 layout templates for that step, and until recently they were reasoned prompts we’d never actually stress-tested — written the way you’d brief a photographer, not the way an image model actually reads text. Over a few days we rewrote all 25, rendered close to 100 test images to check the results, and kept notes on what broke and why. This is what we found.

One finding is worth leading with, because it’s the one that changed how we write every prompt now: telling the model what to leave out of the image doesn’t suppress the artifact. Often it summons it.

Say what you want, not what you don’t

We had a prompt block appended to every ad template that spelled out a safe-area rule: keep the important content in the center 80% of the frame, following Google’s ad image guidance so overlaid text survives being cropped for different placements. It sounded harmless. It made things worse.

Renders started coming back with the whole photo matted inside a border, like a Polaroid — not what anyone asked for. So we ran a controlled comparison, four renders per variant on two patterns. With no safe-area language at all, 0 of 4 renders were matted. Add the “keep content in the center 80%” sentence, and matting jumped to 2 of 4. Our first instinct was to fix that by naming the problem directly — “no border, no frame, no white margin” — and on a second pattern that took the matte rate from 1 of 2 renders to 4 of 4. Dropping the percentage but keeping the negation held at 4 of 4. The only change that actually fixed it was deleting every mention of border, frame, canvas, edge and margin from the prompt. That brought it back to 0 of 4.

Sample sizes here are small — a handful of renders per arm, and a repeat of the plain no-directive control did hit 1 of 4 on its own, so some matte risk is just baseline model variance. But the direction was consistent every time we tested it: describing the unwanted artifact, even to forbid it, raised the odds of getting it. The fix isn’t a stronger negation. It’s removing the concept from the prompt entirely and handling safe-area placement per pattern, as an instruction about where one element sits, never as a statement about the canvas.

An ad render of a person crossing a city street, with the entire photo matted inside a visible white border after the prompt explicitly said 'no border, no frame, no white margin'
Before. An ad render of a person crossing a city street, with the entire photo matted inside a visible white border after the prompt explicitly said 'no border, no frame, no white margin'
The same ad render filling the full square frame edge to edge, after every mention of border, frame, canvas, or margin was removed from the prompt
After. The same ad render filling the full square frame edge to edge, after every mention of border, frame, canvas, or margin was removed from the prompt

The prompt you write isn’t the prompt that gets rendered

Part of why this matters more than it would with a typical LLM call: our image model rewrites the prompt before it generates anything, and the version it actually renders from is often noticeably different from what we sent. Instructions buried in the middle of a long prompt are the first casualty of that rewrite — they get compressed or dropped. The model vendor’s own prompting guidance is blunt about this: put your highest-priority instructions near the end, since that’s what survives.

So every one of our 25 templates now ends with the same trailing block: exact-text rules for the headline, subtext, CTA and brand name, plus a legibility rule about contrast at thumbnail size. Deliberately, that block says nothing about frames or canvases — for the reason above.

Vague geometry gets reinterpreted; concrete setups don’t

A related trap showed up on a clothing-stack pattern. We needed to describe a seamless background with no visible table edge, without naming “edge” and triggering the same summoning effect. Our first attempt described an “infinity-curve backdrop” — accurate photography terminology, we thought. Across six renders, it produced a studio pedestal — a literal round table — in two of them. Abstract geometric language gave the model something to resolve into an object we never asked for.

The fix was to describe a real, concrete setup instead: a seamless paper backdrop roll running from tabletop to wall, the kind product photographers actually use. Three for three came back clean — no table edge, no pedestal, no visible seam. The lesson generalizes: the model does better with things a photographer could actually build than with geometric abstractions, even correct ones.

Reserve the space where the copy is going to land

The single change with the clearest visual payoff wasn’t a bug fix — it was deciding, for every pattern, exactly where the text would sit and writing the scene around that instead of overlaying text wherever a photo happened to have room.

On a fashion flat-lay pattern, the old prompt scattered products across the frame and let the headline land wherever it landed — in practice, straight across a leather handbag, dark text on dark leather, both harder to read. The new prompt explicitly pushes every object toward the perimeter and reserves the center as calm, open surface before the headline is ever mentioned.

A flat-lay fashion ad with the headline 'New arrivals. Timeless pieces.' overlapping a tan leather handbag, making both the text and the bag harder to read
Before. A flat-lay fashion ad with the headline 'New arrivals. Timeless pieces.' overlapping a tan leather handbag, making both the text and the bag harder to read
The same flat-lay ad with the products arranged toward the frame's edges, leaving the center open so the headline sits on clean surface
After. The same flat-lay ad with the products arranged toward the frame's edges, leaving the center open so the headline sits on clean surface

A SaaS pattern got the same treatment: the laptop is now placed deliberately low and to one side, so the opposite quadrant is reserved as dark, uninterrupted space before the headline copy is ever placed into it, instead of composing the scene first and hoping the text finds room.

A SaaS product ad with an open laptop positioned centrally, close to the headline text and leaving less dedicated clear space around it
Before. A SaaS product ad with an open laptop positioned centrally, close to the headline text and leaving less dedicated clear space around it
The same SaaS ad with the laptop moved low and to the left, leaving the opposite quadrant dark and clear for the headline
After. The same SaaS ad with the laptop moved low and to the left, leaving the opposite quadrant dark and clear for the headline

This is also just Google’s ad image guidance applied literally: keep what matters inside the frame’s central safe area, and don’t make legibility something the text has to fight for after the fact.

A fake screen is the loudest thing in the ad — and over-fixing it is its own failure mode

One of our early patterns put a monitor in frame, and the first version of the prompt just described a “coding interface” on it. The model rendered detailed, garbled, unmistakably fake code — sharp enough to draw the eye, wrong enough to look cheap. It was the most detailed thing in the shot, competing with the actual headline for attention.

The first fix over-corrected. We turned the monitor away from camera and told the model to clear the desk of other devices. The fake code disappeared, but so did the room: the result was a stark, empty-feeling space — a desk and a monitor against a bare wall, with none of the lived-in warmth the pattern was supposed to have. Technically clean, visually worse.

The version that actually worked keeps the room furnished — shelves, books, a plant, warm lamp light — and handles the screen by turning it three-quarters away so only a soft glow crescent shows, with the screen’s face never pointed at the camera. No code to render badly, and no empty room either.

A developer-lifestyle ad showing a monitor with detailed but obviously fake, garbled code filling the screen, competing with the headline for attention
Before. Fake code renders as the loudest thing in frame.
The same pattern after the fake code was suppressed by turning the monitor away and clearing the desk, leaving a bare, empty-feeling room with a blank wall
Over-corrected. Code gone, but so is the room.
The final version with the monitor turned away and the room furnished again with shelves, books, a plant, and warm lamp light, keeping the fake code off-screen without looking empty
Fixed. Screen still hidden, room back to lived-in.

We hit a version of the same trap on a skincare-bottle pattern. The brand name was rendering twice — once printed on the bottle, once again as overlay text — so we tried blanking the label entirely and putting the name only in the overlay. That fixed the duplication, but the product now read as an unbranded, generic bottle, which is its own problem for a brand ad. The fix that stuck was a real printed label with the name on it, and nowhere else. Suppressing an artifact by deleting the element it lives on tends to trade one defect for another; the better fix is usually to make the element behave correctly, not to remove it.

What we grounded this in

None of this was invented from scratch. The safe-area thinking follows Google’s published guidance for ad image assets — keep meaningful content inside the frame’s center so it survives cropping across placements. The emphasis on the product and brand name being unambiguous, rather than incidental, follows the direction of Kantar and System1’s ad-effectiveness research, which consistently treats clear branding and a clear product shot as foundational to whether an ad works at all. We used that research to decide what to prioritize in each scene, not as a source of numbers to quote back.

What we didn’t measure

To be direct about the limits of this work: everything above is about render quality — whether text is legible, whether the product reads as branded, whether an artifact shows up — not about ad performance. We have no click-through, no conversion, and no engagement data on any of these prompts, and we’re not claiming any. Sample sizes throughout were small, typically three to six renders per variant, which is enough to catch a prompt that’s clearly broken but not enough to call a difference statistically settled. Where we quote a rate above, treat it as directional — a reason to trust the direction of the change, not a benchmark.

What we can say is that the current 25 templates are the ones we’ve actually looked at, rendered, and re-rendered against real output, and every fix in this post replaced an earlier version that we watched fail first.

See the current templates in action

Paste your product URL and Kuriei will write matching copy and generate the image with these prompts.

Start creating