No mystery and no black box. This is exactly how a set gets made, why it's built this way, and where a human decides.
Every client has a running thread. You ask for a set the way you'd ask a designer — "six angles for the $89 offer, two price-led, two social proof, two seasonal" — and refine in the same thread: make the third one warmer, phone number bigger, try it at 9:16.
Because a revision needs the previous version in context. The engine still has the set it just built and the actual files in front of it, so "warmer" edits that file instead of starting over and losing what was already right.
Finished assets, inline, at the exact dimensions each placement needs — plus a note on which angles were chosen and why, and a flag on anything we couldn't verify.
This is the rule that separates creative you can run from creative that looks generated.
Generated (or, better, the client's real photography) at the ratio we're shipping, composed with deliberate negative space where the copy will sit. We never ask an image model for a headline, a price or a phone number — image models mangle small text in a way that looks acceptable as a thumbnail and is obviously broken at full size.
Headline, offer, badges, CTA and contact details are set as actual text with a gradient scrim underneath so they stay legible on busy photography. Every number is one you gave us.
Screenshotted at 1080×1350, 1080×1920 or whatever the placement
wants — and the dimensions are verified rather than assumed.
Plan the beats, generate clean footage with nothing written on it, then burn captions, the offer reveal and the end card ourselves. A shot can be seeded from a still so the video and the static set look like the same campaign.
Left is the plate as it comes out of generation — photoreal, and deliberately empty where the copy is going. Right is the finished creative after the type layer is composed over it and rendered to exact pixels. Nothing on the right was drawn by an image model.
Both images above were produced by the same renderer that makes our client work — this is the pipeline, not a mockup of it.
The same composition is re-rendered at each size rather than cropped, so nothing important falls outside the frame and the type never ends up half off the edge.
Creative opinions are cheap. Delivery isn't.

Winners carry a green rail and their real numbers. Filters cut the library to winners, losers, ratio or location.

One search across every client, chat, creative and setting.
Creatives are graded on what they actually bought — purchases, then leads, then bookings — because a library optimised for clicks becomes engaging ads that sell nothing.
The last week is compared against a 30-day baseline. One window shows what's winning; two show what's decaying — the creative at $30 a lead that quietly drifted to $55.
Nothing gets called a loser on $6 of delivery. Below the floor it reads "not enough data", because a wrong verdict poisons every brief that follows it.
Fatigue is measured per ad account, so locations are judged separately — pooling them hides the truth in both. But a winning argument transfers. When financing beats price in Miami, Tampa tests it localised instead of paying to rediscover it.
Locations inherit the brand's logo, palette and rules automatically. Only what actually differs — city, phone, service area, offer — is set per location.
The refresh can run on a schedule, but nothing reaches an ad account on its own.
New creative lands in the gallery for review. Approving is a person's click, and pushing to Meta creates paused drafts you enable yourself in Ads Manager.
No invented review counts, licence numbers, awards or fake scarcity. If proof is missing we use an honest alternative and tell you what we couldn't verify.
Send the offer and what's gone stale. We'll tell you what we'd test first.