Reference file

Quality check

quality-check.md

Quality Check

How to score and pressure-test an outbound message — a cold email or a LinkedIn message — against copywriting standards. This is the absolute, best-practice check (is the copy good?). The comparative check — how the copy stacks up against the user's own past campaigns — is a separate concern.

Used in two places:

  • multichannel-campaign-builder — a light self-check on every message it generates.
  • campaign-challenger — the best-practice baseline, especially when the user has no past campaigns to compare against.

Step 1 — Detect the campaign type

The benchmark targets depend on the campaign type. Detect it before scoring.

Type Characteristics Target reply Target booking
Warm trigger-based Engagement, post like, profile view, recent hire, funding, tool switch 40–50% 5%
Warm intent Demo request, content download, webinar attendee 30–40% 5%
Cold targeted ICP + persona match, no signal 8–15% 1–2%
Cold pure List-based, no personalization signal 5–8% 0.5–1%
Re-engagement Old / no-reply 60+ days 10–15% 1–2%

If the user states the type, use it. Otherwise infer from the message: a trigger referenced in the opening → warm trigger-based; an obvious intent → warm intent; ICP match but no signal → cold targeted; otherwise → cold pure (conservative fallback).

Step 2 — Score the 12 dimensions (1–10 each)

Score each with a cited excerpt as evidence.

# Dimension What to assess
1 Authenticity & human voice Sounds human, natural contractions, confident, passes the 15-second read-aloud
2 Pattern breaking & opening 10–20 word opener, trigger / tension / insight, no flattery, "why now" relevance
3 Optimal length & structure 50–100 words email / 40–70 LinkedIn, no sentence over 20 words, body max 3 sentences
4 Concrete value & impact Specific pain, concrete outcome, active phrasing, prospect's language
5 Loss-aversion framing Risks avoided, cost of inaction — not gain-only framing
6 CTA structure Low-friction, value-framed, follows the PVP framework (see cta-framework.md)
7 Persona fit Right altitude and language for the target buyer persona the user is going after
8 Value proposition relevance Trigger → capability alignment, differentiated, business outcome
9 Safe social proof "Companies like..." phrasing, no fabricated metrics, sector-relevant
10 Factual accuracy Every claim traceable, no hallucinations (see Step 4)
11 Strategic question / insight Non-generic, reply-driving, curiosity-driving
12 Positioning alignment Consistent with the user's positioning: no positioning-banned words, claims on-message

Dimension 12 is the only one that depends on the user's own context. If the user has shared their positioning and a banned-word list, check the copy against them. If not, check only that claims are coherent and not off-brand, and skip the banned-word part.

Step 3 — Performance killers (penalties)

Apply before computing the overall score.

Red flags (−3 each): the word "click"; an exclamation count of 2+ in one message; ALL CAPS words; an em-dash (—) anywhere in the body; an emoji in a professional email; a vanity metric stated as the headline result; a ROI or % claim with no traceable source (also a Critical Error — see Step 4); "checking in / following up / circling back".

Moderate issues (−1 to −2 each): over the word limit without justification; tone too formal / corporate; generic opening with no business relevance; missing CTA components; weak challenge-to-value link; generic "I saw on LinkedIn..." opener; "I hope this finds you well" / "I came across" / "Quick question"; filler verbs (leverage, utilize, optimize, streamline).

User-configurable: if the user has named positioning-banned words, treat each occurrence as a −3 red flag too.

Step 4 — Accuracy assessment

Classify every key claim in the message:

  • Verified Fact — cites a source the user provided
  • 🔵 Reasonable Inference — logical, generic, makes no claim of certainty
  • ⚠️ Unsupported Claim — not traceable, assumes internal context
  • 🚨 Critical Error — fabricated metric, false claim, risky assertion

Any 🚨 must be rewritten before the message ships.

Step 5 — Output

Produce: the campaign type + targets; the 12 dimension scores with excerpts; the penalties applied; the accuracy breakdown; the overall score (1–10); and the top 3–5 transformation priorities — the changes that will most improve replies and credibility.

When used as a self-check inside multichannel-campaign-builder, keep it lightweight: flag only messages scoring below 7/10, and rewrite those before output. When used inside campaign-challenger, produce the full breakdown.