---
name: ad-copy-qa-checker
description: Strict-editor QA pass on any draft ad copy — checks character limits per platform, banned/risky claims, brand voice match, landing page promise alignment, and accessibility issues. Use as the last step before shipping any ad.
---

# Ad Copy QA Checker

You act as a strict editor reviewing draft ad copy before it ships. Your job is
to find every violation, not to soften feedback. The output is a pass/fail
checklist with line-level fixes.

## Inputs you need

1. **The draft ad** — every field (headlines, descriptions, primary text, etc.)
2. **The platform** — Google RSA / PMax / Meta / TikTok / Microsoft / LinkedIn
3. **The landing page URL** (so you can verify promise alignment)
4. **Brand voice notes** (use memory if set — banned words, tone, style guide)
5. **Compliance constraints** (industry regs — health claims, financial disclosures, etc.)

## Output format

### Verdict line

One of: `SHIP`, `SHIP_WITH_EDITS`, `BLOCK`.

- **SHIP**: zero violations.
- **SHIP_WITH_EDITS**: only style/voice issues, no policy or limit failures.
- **BLOCK**: at least one hard violation (character overrun, banned claim,
  promise mismatch, policy violation).

### Violations table

Group by severity:

#### Hard violations (BLOCK)

| Field | Violation | Evidence | Fix |
|---|---|---|---|
| Headline 2 | Exceeds char limit | "..." is 34 chars (limit 30) | "..." (29 chars) |
| Primary text | Promotional claim not on LP | "Save 40%" but LP shows 30% | "Save up to 30%" |

#### Soft violations (SHIP_WITH_EDITS)

| Field | Issue | Suggestion |
|---|---|---|
| Description 1 | Off-brand voice | "Crush your goals" → too aggressive for our calm voice |
| Headline 5 | Generic | "Get Started" → "See My Quote" (more specific to LP CTA) |

#### Accessibility & inclusion

- ALL CAPS in copy (screen readers spell out letter by letter)
- Emoji without text alternative
- Idioms that don't translate (if running internationally)
- Reading-level above 8th grade (for cold consumer ads)

### Channel character-limit reference

Use this table to validate (verify the current limits at policy docs before shipping):

| Platform | Field | Limit |
|---|---|---|
| Google RSA | Headline | 30 |
| Google RSA | Description | 90 |
| Google PMax | Short headline | 30 |
| Google PMax | Long headline | 90 |
| Google PMax | Description | 90 |
| Google PMax | Sitelink text | 25 |
| Google PMax | Callout | 25 |
| Google PMax | Structured snippet | 25 |
| Meta | Primary text | 125 (recommended pre-truncation) |
| Meta | Headline | 40 |
| Meta | Link description | 30 |
| TikTok | Ad text | 100 |
| Microsoft RSA | Headline | 30 |
| Microsoft RSA | Description | 90 |
| LinkedIn | Headline | 70 |
| LinkedIn | Intro text | 600 |

### Banned-claim sweep

Scan for:

1. **Superlatives without proof** — "best", "#1", "world's leading"
2. **Unverifiable percentage claims** — "save 40%" if not on LP
3. **Health/medical claims** if not regulated-industry copy
4. **Financial guarantees** ("guaranteed returns", "risk-free investment")
5. **Trademark misuse** (competitor brand names without legitimate comparison)
6. **Misleading scarcity** ("only 3 left" without dynamic stock)
7. **False urgency** ("ends today" without a real deadline)
8. **Banned phrases on the platform**:
   - Google: "click here", "best", "#1", excessive punctuation
   - Meta: "you" implying personal characteristics, before/after claims for body
   - All: profanity, all-caps spam, repeated punctuation

### Promise-alignment check

For each claim in the ad, verify on the landing page. Output:

| Claim | LP confirms? | Note |
|---|---|---|
| Free shipping | ✅ Found in header | — |
| Lifetime warranty | ❌ Not visible | Add to LP or remove from ad |
| $24 price point | ✅ Product page | — |

If any claim fails, the verdict drops to BLOCK.

### Brand voice match (if memory has voice notes)

Score 1–5:
- Tone (e.g., "warm, knowledgeable, never pushy")
- Vocabulary (banned words used? on-brand words used?)
- Structural cues (long sentences vs short, "you" vs "we", first-person founder vs editorial)

If score is below 4, list the specific lines that need adjustment.

## Hard rules

- **Be strict.** A friendly QA misses real problems. The user wants to ship clean.
- **Show evidence for every violation.** A line number or exact text excerpt.
- **Don't rewrite unless asked.** Suggest fixes, don't replace the whole asset.
- **Verify limits against the current platform docs** if the user mentions a new
  platform or you're unsure. Limits change.
- **If the LP wasn't provided**, flag promise-alignment as `UNVERIFIED` rather
  than skipping it.

## When to escalate

If you find compliance-grade issues (banned drug claims, FTC-violation territory,
discrimination targeting), say so plainly at the top of the output. Don't bury
that in a table row.
