Ad Tech · Creative AI · v2

Ad Copy
Critic

"Eight dimensions. One score. Rewrites included. Close the loop with real CTR data, competitor gap analysis, brand voice compliance, and localisation readiness."

$ docker-compose run cli critique \
  --file examples/sample_fintech_ad.json \
  --format markdown

# Validating character limits… ok
# Scoring 8 dimensions…

## Ad Copy Critique Report
Platform: LinkedIn · Audience: CFOs (B2B)
Overall score: 28 / 100 — needs_work

CTA  score: 3
Issue: 'Learn More' signals passive intent
Fix:   Replace with 'See How Much You're
       Overspending'

Rewrite variant 1
"Cut Finance Team Reporting Time by 47%"

Copywriters spend hours revising headlines that feel wrong but nobody can articulate why. Marketing managers approve ads they're unsure about because there's no objective rubric. The result: wasted spend on ads that fail for entirely fixable reasons — bad CTAs, wrong tone, audience mismatch.

Ad Copy Critic gives every ad a structured critique using eight weighted dimensions — each scored with evidence and a specific fix. The same calibrated feedback a senior creative director would give, available on demand, for every ad in your library. Includes 2–3 rewrite variants with rationale for every change made.


From copy to
actionable score.

Pre-validation before the LLM call. Evidence-backed scoring. Rewrites every time.

01
Input
Ad copy, platform type, target audience, campaign goal — structured JSON or interactive CLI
02
Validate
Pre-LLM character limit check against platform rules — catches formatting failures before scoring
03
Score
Claude scores all 8 dimensions with evidence quotes and specific fixes, weighted by business impact
04
Output
Composite 1–100 score, per-dimension breakdown, and 2–3 rewrite variants with change rationale

Calibrated.
Not generic.

Every capability was designed around the gap between "this ad feels off" and knowing exactly what to fix.

8-Dimension Critique
Weighted composite score from 1–100 across Clarity, Audience Fit, CTA Strength, Value Proposition, Emotional Hook, Platform Fit, Credibility, and Brevity. Each dimension has evidence and a specific fix.
Performance Feedback Loop
Record real CTR, ROAS, and conversion rate against past critiques. Identifies which dimensions actually predict performance for your product category — closes the scoring model feedback loop.
Competitor Gap Analysis
Pass 1–4 competitor ads. Get a per-dimension gap table (ahead / behind / parity), a differentiation score, category clichés everyone is using, and unique angles nobody owns yet.
Brand Voice Compliance
Upload a voice profile — prohibited words, required tone, persona, example copy. Rule-based scan catches prohibited terms instantly. LLM checks tone and persona compliance with specific violations and rewrites.
Localisation Readiness
Check copy before translating. Flags idioms, cultural references, CTA norms by market, currency mismatches, and regulatory risks. Returns a readiness score, translation difficulty, and locale-specific rewrites.
Slack Summary
Every critique includes a pre-formatted slack_summary field ready to post to your #ad-review channel — score, verdict, top issue, top strength, and best variant headline in one message block.

Running in
three minutes.

Setup
git clone https://github.com/swapnanil/ad-copy-critic
cd ad-copy-critic
cp .env.example .env   # add your ANTHROPIC_API_KEY
docker-compose up api
CLI — critique a single ad
docker-compose run cli critique \
  --file examples/sample_fintech_ad.json \
  --format markdown
CLI — batch critique a folder
docker-compose run cli batch \
  --dir examples/ads/ \
  --platform linkedin \
  --format html --output reports/

Vague copy in.
Exact fixes out.

Input — LinkedIn ad JSON
{
  "headline":
    "Manage Your Business
     Expenses Better",
  "cta": "Learn More",
  "platform": "linkedin",
  "target_audience":
    "CFOs at mid-size B2B",
  "campaign_goal":
    "lead_generation"
}
Output — critique excerpt
overall_score: 28
verdict:        needs_work

CTA dimension
score:  3 / 10
issue:  "'Learn More' signals passive
         intent — wrong for CFO
         lead-gen"
fix:    "Replace with 'See How Much
         You're Overspending'"

Rewrite variant 1
"Cut Finance Team Reporting
 Time by 47%"
specificity + urgency added

Five more tools.
Same standard.

Each tool is a standalone CLI + REST API solving a real enterprise problem with Claude.