⛔ NOT FOR LAUNCH — INTERNAL TEST. Every ad carries an unqualified hair-growth claim written without compliance qualifiers. Not cleared for Meta, Shopify or any live placement.

Wonder v21 — no placed boxes

10 concepts × native 4:5 and 9:16. Rebuilt after v20 was rejected for using colour blocks and gradient scrims to place type.

What was wrong and what changed

v20 painted a solid colour block or a gradient behind the copy so it would read. That is a crutch, and it looked like one.

v21 contains no placed backing shapes at all. Zero colour blocks, zero bands, zero gradients, zero scrims. The only placed element in the entire set is the CTA button. Everything else — headline, proof — sits directly on the photograph.

That only works if the photograph itself carries the space, so the plates were regenerated bottom-weighted: subject and product in the lower half, the upper region nothing but clean evenly-lit backdrop. The type is then sized to each photograph's measured clean band rather than to a fixed grid.

Measured, not eyeballed

GateResult
Text overflow0 / 20
Element collisions0 / 20
Meta safe zone (9:16 band y270–1248, sides 65px)20 / 20 pass
Legibility vs the bare photograph (base-plate diff)60 / 60 pass

The legibility gate renders every frame a second time without any type, samples the actual pixels under each text box, and measures contrast against that element's own ink — WCAG 3:1 for display and bold text, 4.5:1 for body. That is the proof the copy reads without a backing shape. Tightest pass in the set is 3.45:1.

Still not right

The bottle still runs to the bottom edge on several (W01, W02, W06, W07, W08, W09, W10) and its base is clipped. I asked the generator for clear space beneath the base across three rounds; it plateaued at roughly 30% clean upper band and kept placing the bottle on the frame edge. Uncropped product is the standard and these do not fully meet it.

The structure still repeats. Two-line headline top-left, proof under it, CTA bottom-left — ten times. Weight, scale and colour vary; the arrangement does not.

The proof line is small and sits a bit lost under the headline.

Method

gpt-image-2.5-flare, quality=high, via /v1/images/edits with the real bottle reference attached on every call, so the product is the actual Wonder bottle and is generated into the scene with its own contact shadow and reflection — not composited as a cutout. Typography is deterministic Remotion. Ink colour per ad is chosen by measuring each plate's real backdrop, not picked by eye.

GROW HAIR FAST.

ink #ffffff · emphasis by colour · clean band 385px / 552px

Unqualified efficacy claim — not cleared to run

GOODBYE HAIR LOSS.

ink #140e16 · emphasis by colour · clean band 409px / 576px

Unqualified efficacy claim — not cleared to run

REGROW HAIR IN 2 WEEKS

ink #140e16 · emphasis by scale · clean band 385px / 552px

Unqualified efficacy claim — not cleared to run

STOP THE SHEDDING.

ink #140e16 · emphasis by colour · clean band 602px / 808px

Unqualified efficacy claim — not cleared to run

REPAIR DAMAGED HAIR

ink #ffffff · emphasis by colour · clean band 361px / 520px

Unqualified efficacy claim — not cleared to run

THICKER HAIR, FAST.

ink #140e16 · emphasis by scale · clean band 514px / 704px

Unqualified efficacy claim — not cleared to run

GROW IT LONG.

ink #140e16 · emphasis by colour · clean band 474px / 656px

Unqualified efficacy claim — not cleared to run

FIX THINNING EDGES

ink #140e16 · emphasis by scale · clean band 361px / 520px

Unqualified efficacy claim — not cleared to run

LONGER HAIR IN 30 DAYS

ink #140e16 · emphasis by colour · clean band 377px / 536px

Unqualified efficacy claim — not cleared to run

END BREAKAGE FOR GOOD

ink #ffffff · emphasis by scale · clean band 401px / 552px

Unqualified efficacy claim — not cleared to run