← All craftbooks

A/B Ad Copy Variations

Content and writingevalv1.0.0released 2026-06-05workflow: build-loop

Generate a set of distinct, testable ad-copy variations for one offer across the angles worth A/B testing: it first locks the platform and its constraints (headline/description character limits), the offer, audience, and the distinct messaging angles to test (benefit, pain, social proof, urgency, curiosity), then drafts multiple complete variants per angle so each is a genuine test of a hypothesis rather than a trivial reword. Covers ad copy, A/B testing, Google/Facebook/LinkedIn ads, PPC copy, ad variations, and marketing experiments. Locking the angles and limits before writing is the point: a small model that commits to distinct hypotheses produces variants that actually test something, not ten near-duplicates that teach the advertiser nothing.

Steps

Entry step: brief. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Ad briefplannerentry

    lock platform limits, offer, audience, and test angles

    Show working prompt
    1) Pick the platform and its hard limits (e.g. Google RSA headlines <=30 chars and descriptions <=90 chars; Meta primary text, headline, description fields). 2) State the offer and the single primary audience. 3) Define the distinct ANGLES to test as named hypotheses (e.g. benefit-led, pain/problem-led, social-proof, urgency/scarcity, curiosity) — each a different reason the user clicks. 4) Decide how many variants per angle (e.g. 2) and the required fields per ad. 5) Note the CTA options. Write an acceptance-criteria checklist (e.g. 'every variant respects the platform char limits'; 'each angle is genuinely distinct, not a reword'; 'N variants per angle delivered'; 'every field populated'; 'one offer, consistent across variants'; 'CTA present'). Use write_task_note for the brief + angle list + checklist, and write the same to the produces path. No ad copy yet.
  2. Draft the variationscopywriter

    write distinct, limit-respecting variants per angle

    Show working prompt
    Write the ad variations per the brief. 1) For each named angle, write the specified number of complete variants, each filling every required platform field (e.g. headline, description, primary text, CTA). 2) Make each angle genuinely distinct — a curiosity ad and a social-proof ad should read differently, not swap a synonym. 3) Strictly respect every character limit; count characters and stay under. 4) Keep the offer identical across all variants (only the angle/message changes). 5) Use punchy, concrete, scannable copy. 6) Output a single valid JSON array of objects: {"angle", "variant", "headline", "description", "primaryText" (if applicable), "cta", "charCounts"}. Save to the produces path and note total variant count.
  3. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    Parse ad-variations.json (must be valid JSON) and grade against the checklist. Check EACH criterion and write PASS/FAIL: (a) every field of every variant respects the platform's character limits (verify charCounts against the limits); (b) each angle is genuinely distinct from the others, not a reword; (c) the specified number of variants per angle is present; (d) every required field is populated; (e) the offer is consistent across all variants; (f) each has a CTA. A set of near-duplicate variants or any that exceeds a limit FAILS — loop back to draft and name the offenders.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "draft" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  4. Finishdeveloper

    All acceptance criteria met. Stamp a short summary and report DONE.

    Show working prompt
    Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license