Kuriei

Pattern validation

We Audited Our Entire Ad Template Library Against What Actually Runs on Meta

· 8 min read · Kuriei team

Kuriei generates ad creatives from a product URL. You paste a link, it writes copy, picks a layout pattern, and renders the image. We maintain a library of layout templates for that last step, and until recently, every one of them was designed from instinct, not evidence. They looked like ads we’d want to run. We had no idea whether they looked like ads that actually run.

So we ran an audit. We sampled over 400 ads across 12 product niches from Meta’s Ad Library, classified every one of them blind against a frozen rubric, and graded our entire catalog against what we found. The result: we cut 10 templates, rewrote 3 from scratch, adjusted 4, and consolidated the catalog from 25 patterns down to 15. This is what we learned.

The method: sample before you know what you’re defending

The most important design decision in this audit was the sequencing. If you take your 25 templates and go searching for ads that resemble each one, you will succeed 25 times. “Person at desk” and “big type on dark” describe a huge share of all static ads, and you’ll find confirming examples for anything. The count is manufactured by the search.

Instead, we fixed the probe keyword and rubric in writing before touching any template, took the full census in the order Meta returned it, classified every ad blind against rubric dimensions with our pattern names out of scope, and graded the catalog only after the sample was frozen. A pattern had to be able to come out unsupported. Several did.

The finding that matters most: we were over-composing everything

The single most consistent finding across all 12 niches was this: what actually survives on Meta is simpler and more product-forward than what we were generating. Our patterns read like art direction. What survives reads like merchandising.

Every failure and nearly every drift pointed the same way. Where we arranged seven accessories in a styled flat-lay, all 12 survivors in that niche showed a single hero product, alone or worn. Where we staged a package on rustic wood with scattered ingredients, 6 of 9 survivors showed the food being plated and eaten. Where we rendered an empty pine forest with text on it, both forest survivors had a person actually using the gear.

A seven-object accessories flat-lay with a handbag, sunglasses, gloves, scarf, sweater, umbrella and a banana, the old fashion-editorial pattern that scored 0/12 against real Meta ad survivors
Cut (0/12). A seven-object accessories flat-lay with a handbag, sunglasses, gloves, scarf, sweater, umbrella and a banana, the old fashion-editorial pattern that scored 0/12 against real Meta ad survivors
A single leather wallet held close to camera, product dominant in the frame, the kind of product-forward composition that every accessory advertiser in our census actually ran
What survives. A single leather wallet held close to camera, product dominant in the frame, the kind of product-forward composition that every accessory advertiser in our census actually ran

The rule every failure obeys: if the product is not the dominant subject, the ad does not survive. Five of our templates broke this rule. Three were empty landscapes or furniture scenes advertising products that never appeared in the frame. Two scattered multiple objects where every survivor in the niche focused on one.

A packaging hero nobody runs

Our food template staged a kraft-paper bag on a rustic wooden surface, surrounded by dried herbs, star anise, apple slices and cinnamon sticks. It looked like a stock photo for a recipe blog. Getting usable data for this niche was hard: 7 of 8 keyword probes came back as health-supplement affiliate spam. But when we finally reached real food advertisers, not one of the 9 on-vertical survivors showed a styled studio packaging hero.

What they showed instead was the food being eaten: plated granola with yogurt and berries, a burrito bowl on a white plate, French toast with chocolate drizzle. Six of 9 survivors were plated or served food photography. The template had explicitly forbidden “cooking in progress” and “kitchen clutter,” which is precisely the register that dominates.

The old food-packaging-hero template: a kraft paper bag on rustic wood with scattered dried ingredients, a composition that appeared in 0 of 9 real food-advertiser survivors
Cut (0/9). The old food-packaging-hero template: a kraft paper bag on rustic wood with scattered dried ingredients, a composition that appeared in 0 of 9 real food-advertiser survivors
The rewritten plated-food-hero template: granola served in a bowl with the brand's package beside it, matching the plated/served food archetype that 6 of 9 survivors ran
Rewritten. The rewritten plated-food-hero template: granola served in a bowl with the brand's package beside it, matching the plated/served food archetype that 6 of 9 survivors ran

An empty landscape is not an ad

One of our outdoor-gear templates rendered an empty Scandinavian pine forest (foggy, overcast, moody) with a headline dropped into the sky. No person, no product, nothing but atmosphere and text. The setting does survive in the market: two of eight outdoor-gear survivors actually used a pine forest. But both of them had a person actively doing something. Running through the trees, pitching a tent. Zero of eight showed an empty, human-free landscape run as the entire ad.

The old pine-forest template: a foggy, empty trail through dense pine trees with no product and no person, a composition that appeared in 0 of 8 outdoor-gear survivors
Cut (0/8). The old pine-forest template: a foggy, empty trail through dense pine trees with no product and no person, a composition that appeared in 0 of 8 outdoor-gear survivors
The rewritten gear-in-use template: a person mid-hike wearing a backpack on a mountain trail, matching the product-in-use archetype where the gear is worn and visible
Rewritten. The rewritten gear-in-use template: a person mid-hike wearing a backpack on a mountain trail, matching the product-in-use archetype where the gear is worn and visible

This became a general rule: grade the composition, not the motif. A pattern’s claim is its whole recipe (subject count, who is in frame, what carries the message), not the one noun in its name. The forest setting surviving is not the pattern surviving.

What survived also had no text

The second most consistent finding, and arguably the more important one: across every niche we sampled, the surviving creatives on Meta carry almost no rendered text at all. Jewelry: 8 of 8, no text. Apparel basics: 8 of 8. Bedding: 8 of 8. Textiles: 9 of 9. Accessories: 12 of 12. Even packaged food, the one partial exception, was 7 of 9.

Our templates, meanwhile, burn four text elements into every image: headline, subtext, CTA, and brand name. The mechanism is probably placement. Meta renders the advertiser’s post copy above the image, so burning a headline into the creative duplicates it and eats the frame. This is consistent with the delivery penalty that outlived Meta’s old 20%-text rule.

We shipped a copy-on/off toggle in response. With copy off, the generated image is a clean product shot and the AI-written copy is returned separately as pasteable text for the platform’s own caption fields. The ad copy still exists. It just lives where Meta expects it, not duplicated inside the image.

What we didn’t find, honestly

Not every niche cooperated. B2B SaaS returned zero classifiable ads across 13 keyword probes. It simply does not advertise meaningfully on Meta’s consumer image-ad surface. Testimonial-style pull-quote cards were structurally undiscoverable: the Ad Library searches ad caption text, not what’s rendered inside the image, so a format defined by its pixels can’t be found by keyword. Both stay in the catalog as honestly untested rather than dishonestly validated.

One batch’s verdicts were voided entirely when we realized all 17 classified ads came from exactly two advertisers. Two brands’ house styles are not a market. The survival gate held, the image-content gate held, and the advertiser-count rule still caught the problem, just late enough to void the batch.

The probe method itself was the hardest part

The actual classification and grading were straightforward compared to getting usable samples. Roughly one keyword probe in four produced gradeable evidence. Health-supplement affiliates dominate Meta’s ad copy search surface: a probe for “small batch jam” returned 68 ads, 100% health and wellness spam, zero jam. “Small batch pickles” was the same story: 104 ads, near-total affiliate content. Personal-name advertiser accounts recur across unrelated niches as the same affiliate ring running identical stock photos under different names.

What worked was switching from keyword search to page search with a single generic category word, and then pulling each real advertiser’s full history rather than relying on keyword results. Finding real brand names from Faire or Kickstarter, then looking them up individually in the Ad Library, was more reliable than any keyword.

What changed

The audit ran across four batches covering 12 niches, roughly 18 keyword probes, and about 400 classified ads.

The catalog went from 25 patterns to 15. Of those 15, two carry direct census evidence with specific ad citations, four were drift-corrected based on census findings, three were rewritten from scratch to match observed archetypes, and the rest are honestly labeled as untested by this method. Every pattern that survived puts the product dominant in frame, because that is the one rule every failure agreed on.

The larger takeaway is a bias to watch for: we over-compose. Our instinct as builders is to art-direct. Arrange seven objects, stage a moody landscape, design a tableau. What real advertisers run, and what survives past the first week, is consistently one product, plainly shown, with nothing competing for attention. The market’s creative is merchandising, not mood boards.

What we didn’t measure

Everything above is about what runs and survives on Meta, not about what performs. The Ad Library reports start dates and active status but no spend or impressions for commercial ads. Survival past 90 days is a proxy for “the advertiser chose to keep paying for this,” which is evidence worth having, but it is not click-through or conversion data and we are not claiming any. Sample sizes were small (typically 8 to 12 on-vertical survivors per niche), and the advertiser-count rule, which voided one batch, exists precisely because small samples are easy to over-read.

The honest framing: every template in the current catalog has either been validated against what real advertisers actually run, or is labeled as untested. None of them is claimed as high-performing, because that claim needs first-party outcome data we do not have yet.

See the validated templates in action

Paste your product URL and Kuriei will match it to a pattern from the audited catalog and generate the image.

Start creating