AD CAMPAIGNS, WITH THE REASONING SHOWN

It writes the ad.
Then it tries to prove you wrong.

AdPlaybook turns a product page into a complete, buildable ad campaign — strategy, audiences, exclusions, copy, test matrix, measurement plan — then attacks its own work before it shows you anything.

v0.2.53 · 134.7 MB · Apple Silicon · notarised by Apple

  1. 1Read 6 pages · 116 spans · quality 1.00
  2. 2Brief what is provably true about the product
  3. 3Generate 3 variants, one axis apart
  4. 4Claim gate 1 blocked — a price it could not trace
  5. 5Review REJECT — 2 blockers
  6. 6Guide 15,884 bytes, in build order
AdPlaybook — HoneyBook, Meta, Instagram Feed
× It won't run as written2 things will stop this running
× Some claims could not be traced 1 of 3 variants blocked — a price we could not trace. C — Price Axis: "Starting at $29/month" appears nowhere on your site. Remove it, or add the price to a page we can read.
× We checked it again — do not build this REJECT — 2 blockers, 1 serious.
! The landing page was not checked No destination was given, so nothing looked at where the click lands. That is not the same as it being fine.

VARIANT B — what it wrote

All-in-one client management.

Save up to 20 hours every week. Manage clients, projects, and payments in one place.

VARIANT C — blocked before anyone saw it

All-in-one client management.

Manage every client, project, and payment all in one place. Starting at $29/month.

blocked by the claim gate The price appears nowhere it could verify.

THE REVIEW PASS — verdict

REJECT — 2 blockers, 1 serious.

On Variant B: "Meta will reject the ad for unqualified performance claims… Rewrite the benefit to use unqualified language such as 'Save time every week'."

And a strategy error nobody asked it about: optimising for Purchase on a 7-day window for a $29/month product means 50 conversions is unreachable, so "the algorithm will never exit the learning phase and the test will yield no real results to judge the variants."

It also said what was good: "the exclusion strategy correctly identifies the need to exclude existing customers."

Two separate mechanisms caught the same fabricated claim without being told to agree — the claim gate blocked the price, and the review pass flagged it independently. That is the whole design working, on a site we do not control.

Every other tool in this category would have handed you all three variants.

Before you spend anything

It knows what will quietly fail

The expensive failures in paid media do not produce an error. These are checked by arithmetic against each platform's published limits, on every campaign, for free:

600Not 300 LinkedIn's minimum is per ad set. Split an audience two ways and you need 600 — below that both ad sets go live and neither delivers.
12sOr no funnel A YouTube video under 12 seconds builds no remarketing list, and under 10 records no views. Bumpers-then-retarget cannot work.
1,000Matched users A TikTok custom audience below this cannot be used at all. Most small customer lists do not survive matching.
257Not 280 X charges 23 characters for every link. Every ad has one, so copy written to 280 does not fit.

It separates the platform will refuse this from this will be cut off, because those need different reactions — and it tells you what it could not check, so an empty warning list never reads as a clean bill of health.

Strategy, not just words

Ten approaches, each with its failure mode stated first

Direct response burns your warmest audience first. Community-native gets read by people who will argue in the replies. Retargeting recovery pays you for sales you were going to make anyway unless you hold out a control group.

You are told all of that before you choose, because the expensive mistakes in advertising are strategic, not typographical. AdPlaybook reads your site, works out what you sell and to whom, and recommends the approach that fits your price, your sales cycle and your competition — then explains what it costs you.

8 platforms

Held as dated facts, not folklore

Google Ads, LinkedIn, Meta (Facebook and Instagram), Pinterest, Reddit, TikTok, X and YouTube. Every character limit, aspect ratio and hard floor quoted from the platform's own documentation, with the date it was read — and an explicit list of what could not be verified.

Get it

Mac, Apple Silicon. Signed, notarised and stapled — it opens without a Gatekeeper warning because Apple's notary service cleared it, not because you right-clicked past one.

Download free for Mac · 134.7 MB Buy a licence · $149 once

Paying for it

$37.25 × 4, then it stops, and it is yours

AdPlaybook is $149 once. If that is easier as four payments, Klarna and Afterpay split it into $37.25 every two weeks — the last one 6 weeks after the first, at no extra cost.

It is the opposite of how this category bills. Every other ad tool charges you monthly for as long as you use it, and the day you stop paying you stop having it. Here the payments end and the licence does not: unlimited commercial use, on every site you work on, with no renewal to forget and nothing to cancel.

Availability depends on where you are and is decided by the provider at checkout, not by us. Klarna covers the US and 19 European countries; Afterpay covers the US and UK.

30 days to change your mind. If it does not do what you need, email within 30 days of purchase and we refund in full — no reason required, back to the original payment method. One refund per customer, and the full policy is in the terms.

Free to download and use — the whole app, no credits, no watermark, no account. $149 once buys a licence for unlimited commercial use across every site you work on. No subscription and no renewal.

v0.2.53 · All releases · bring your own OpenAI or Anthropic key, or run every generation locally with Outlier

Ad preview drawn by AdPlaybook: primary text 61 of 90 characters,
            headline 27 of 30, description 54 of 90, for a Google Ads
            responsive search ad.
Drawn by the app, from this run. Variant A as it will run, with every field counted against Google's published limits and the page those limits were read from printed underneath. Downloaded from the result screen as a-control-preview.svg — this is the file, not a picture of it.
AdPlaybook's result screen: every claim traced to your site, all 2
            variants cleared the claim gate, 1 blocker and 2 serious findings
            from the review pass, and the landing page not checked.
The app, on the run above. Not a mockup and not a recording of a stub — AdPlaybook v0.2.48, the build shipping on 2026-08-18, pointed at HoneyBook, crawled and generated through a real model, photographed at the moment it finished. The verdicts in the window are the ones it produced that time, including the two it could not check.

A real run, not a mockup. Verbatim output from pointing AdPlaybook at HoneyBook's website. It wrote three ad variants, then a second model was asked to find the reason the campaign fails. Nothing here is illustrative.

Try the claim gate

Paste an ad claim. Watch it get checked.

This is the real gate — the same thirteen patterns the app runs, exported from the engine, not a reproduction. Nothing is sent anywhere; it runs in this page.

A claim it cannot trace to your own page is blocked before it reaches an ad account. That is the whole product; this is it running.

What it has actually done

Three of these four are failure rates

Measured across 61 real businesses — every one a live crawl through a real model, not a demo. Most tools publish the number that flatters them. These are the ones that do not.

14/61

campaigns its own review refused

It argues with itself before it argues with you.

17/61

sites it could not read — and said so

Bot protection is common. Inventing a business is not an option.

3/61

flagged as reading machine-written

Counted, not guessed. A model cannot judge its own register.

61/61

shipped with every claim traced

Each line of copy against the page it came from, or marked unproven.

Derived at build time from the run corpus. scripts/sweep_report.py reproduces every figure.

The part nobody else does

It refuses to write things it cannot back up

An ad that says "60-minute callouts" has to point at the page that says it. AdPlaybook harvests the exact words from your own site and blocks any figure that is not there. Recombine two true statements into a third one nobody actually made, and it flags that for your sign-off instead of quietly shipping it.

You get an evidence receipt: every claim beside the URL and verbatim quote behind it — plus the ones needing sign-off, the ones that were blocked, and the pages it could not read. It is built for whoever signs the ad off and carries the liability for it.

Run against ourselves

We pointed it at this website

Everything above describes what the gate does. This is it doing it — to an ad for AdPlaybook, checked against AdPlaybook’s own site, which you are reading and can go and check yourself.

AdPlaybook — adplaybook.app, LinkedIn — Feed: single image
Substantiated — and here is whereEight platformsFound on https://adplaybook.app/for/agencies/. A claim the gate can point at is a claim you can sign off.
×1 of 3 variants blocked1 of 3 variants are blocked: 4 claim(s) assert something the site does not.Cut your cost per click by 62% — Nothing on the crawled pages says this. Either add it to the site and re-run, or tell us where it comes from — it cannot go in a paid ad on the model's word alone.
×1 it caught that the campaign never declaredThe copy was scanned for claim-shaped language as well as checked against the list it declared, because a generator that under-reports its own claims would otherwise sail through.
!A — control body text195 characters. About 150 will show; the rest is cut off.LinkedIn calls this Introductory text: "Use up to 150 characters including spaces, emojis, and punctuation to avoid truncation (3,000 character maximum)."
Fix: Cut 45 characters to keep all of it visible.
!B — the specs axis body text209 characters. About 150 will show; the rest is cut off.LinkedIn calls this Introductory text: "Use up to 150 characters including spaces, emojis, and punctuation to avoid truncation (3,000 character maximum)."
Fix: Cut 59 characters to keep all of it visible.

A — CONTROL

Every claim, checked against your own site

AdPlaybook turns a product page into a complete ad campaign — strategy, audiences, exclusions, copy, a test matrix and a measurement plan — then attacks its own work before it shows you anything.

B — THE SPECS AXIS

Eight platforms, every number quoted

Ad specs go stale and the pages ranking for them are wrong. AdPlaybook reads each platform's own published limits and checks your copy against them by arithmetic, before you paste anything into an ads manager.

C — THE PERFORMANCE AXISblocked

Cut your cost per click by 62%

AdPlaybook writes 40 tested variants in 9 seconds and cuts cost per click by 62% on average. Start your free trial today and see results in the first week.

WHAT IT COULD NOT CHECK

  • Whether the audience clears LinkedIn's minimum of 300. This campaign splits into 3 cell(s), so the audience needs to be at least 900 for every cell to deliver. Check the forecast in LinkedIn Campaign Manager before launching.
  • Whether the ad complies with the platform's advertising policies. This checks sizes and limits only — it is arithmetic, not a policy review.

An empty warning list has to mean “checked and clean”, never “did not look”. This is the part every other tool leaves out, and it is the reason to believe the rest.

Who wrote what. The three variants were written by hand, here, so the specimen does not change between builds. Every verdict under them was not: they come from adkit.gate and adkit.feasibility, the same modules the app runs, against a live crawl of this site that read 65 spans. Produced on 2026-08-17 against AdPlaybook 0.2.45. _build/selfcheck.py reproduces it.

One page was held out, and here is why. The crawl behind this skips this page. It has to: the section you are reading quotes variant C word for word, so the next crawl read those sentences back off our own site and cleared all three variants — the invented claims had become true statements about the page that printed them. Every other page was read, which is why “Eight platforms” still resolves: it lives on /for/agencies/ and was there long before this existed. A check that reads what it just wrote is checking itself.

What it deliberately does not do

It does not make the image or the video. What it produces is a brief specific enough to hand to a designer or a creative generator — if the asset is what you need, buy one of those and feed it this.

It does not predict performance. A conversion score on an ad that has never run is a guess in the typography of a metric, and this tool does not publish numbers it did not measure. In a demo that looks like a missing feature. It is the reason to believe everything else it tells you.