Cold Email Copywriter // Version Lab

Iterative copy improvement with traceability. Each version tracks inputs, outputs, QA, and feedback.
v1 BASE
v1.1
v1.2 NEW
v2
v3
Date: 2026-06-02
Skill: v1 (base import)
Target: B2B SaaS founder, Series B, 30-80 HC
Trigger: Just raised, still doing sales

Input Traceability

  • SKILL
    cold-email-copywriter/SKILL.md
    .claude/skills/cold-email-copywriter/SKILL.md
  • REF
    Framework definitions (3 variants + worked examples)
    .claude/skills/cold-email-copywriter/references/frameworks.md
  • REF
    Rules, constraints, tone philosophy, quality gates
    .claude/skills/cold-email-copywriter/references/rules-and-constraints.md
  • ICP
    LeadGrow self-campaign ICP profile (Series B SaaS founders)
    clients/gtm-client-leadgrow/icp-profile.yaml
  • RULE
    No em-dashes in copy (workspace rule from MEMORY.md)
    MEMORY.md content rule

Email Sequence

QA Checklist

No em dashesPASS 4 lines max per emailPASS (4/4/3) 60-100 words per emailPASS (87/82/78) No links in bodyPASS No signaturePASS No "I wanted to reach out" etcPASS Signal not named directly (E1)PASS Subject line 4 words max (E1)PASS (3/3/3) Emails 2+3 threaded (no subject)PASS Bar test -- say this out loud?REVIEW Permissionless value usable today?WEAK Cialdini subtle?PASS

Self-Critique

  • 1. E3 permissionless value is weak. "2.3x more pipeline" is a stat, not something they can use in a meeting today. Should be named accounts with signals or a specific diagnostic.
  • 2. E1 might be too long. 4 lines but dense. Could trim the middle paragraph.
  • 3. E2 "2,000+ qualified meetings" is a flex, not proof. Would land better as a specific founder story or timeframe.
  • 4. All 3 emails lean on the same "founder doing sales" pain. Could diversify E2 or E3 to hit a different angle.
  • 5. "Worth a quick look" CTA in E1 might be too close to asking for a meeting. "Comparing notes" is softer.
Date: 2026-06-03
Skill: v1.1 (QA loop + spacing + variables)
Target: B2B SaaS founder, Series B, 30-80 HC
Trigger: Just raised, still doing sales
Runner: Isolated subagent

Input Traceability

  • SKILL
    cold-email-copywriter/SKILL.md (v1.1 with QA validation section)
    .claude/skills/cold-email-copywriter/SKILL.md
  • REF
    Framework definitions (3 variants + worked examples, {FIRST_NAME} format)
    .claude/skills/cold-email-copywriter/references/frameworks.md
  • REF
    Rules v1.1: tone, constraints + spacing rules + variable format rules
    .claude/skills/cold-email-copywriter/references/rules-and-constraints.md
  • ICP
    LeadGrow self-campaign ICP profile (Series B SaaS founders)
    clients/gtm-client-leadgrow/icp-profile.yaml
  • RULE
    No em-dashes in copy (workspace rule from MEMORY.md)
    MEMORY.md content rule
  • NEW
    QA validator script (post-write validation loop)
    .claude/skills/cold-email-copywriter/scripts/qa_validate.py

Email Sequence

QA Results (automated)

qa_validate.py output: 31 checks, 0 failures, 0 warnings. PASS

No em dashesPASS 4 lines max per emailPASS (4/4/3) 60-100 words per emailPASS (79/86/81) No links in bodyPASS No signaturePASS No banned phrasesPASS Subject line 4 words max (E1)PASS Subject spintax 3 variants (E1)PASS Emails 2+3 threaded (no subject)PASS Variable format ({FIRST_NAME} only)PASS Line spacing between idea blocksPASS

Skill Changes (v1 -> v1.1)

  • 1. QA Validation Loop — New Python script (scripts/qa_validate.py) runs automated checks against copy before output. 11 check categories. Sub-agent spawns it during skill invocation.
  • 2. Spacing Rules — Every idea block gets blank line separator. Visual rhythm = breathing, not wall of text.
  • 3. Variable Format — Strict {FIRST_NAME} format only. [First Name] and {{name}} banned. Allowed: {FIRST_NAME}, {LAST_NAME}, {COMPANY}, {TITLE}.

v1 Retroactive Validation

Ran v1.1 validator against v1 copy. 30 checks, 1 failure.

Variable format (E1 subject lines)FAIL — used [First Name] not {FIRST_NAME} All other checks (29)PASS

Feedback

Date: 2026-06-04
Skill: v1.2 (skill-creator architecture)
Commit: cf0c587
Eval: iteration-1 — 100% vs 15% baseline

Skill Changes (v1.1 → v1.2)

  • 1. SKILL.md restructure — Applied skill-creator progressive disclosure. Aggressive description with natural-language trigger phrases. Out of Scope section added (LinkedIn, warm nurture, deliverability, proposals, strategy). Lean body — detail pushed to reference files.
  • 2. references/taste.md (new) — Synthesized preference rules for recurring judgment calls: permissionless value bar, authority specificity, signal subtlety, subject line register, pain angle rotation.
  • 3. Sequence diversity constraint — Name E1's pain axis, pick different for E2. Name both, pick third for E3. Axis table: pipeline credibility / team performance / forecast accuracy / speed to first win / motion maturity.
  • 4. Subject line voice test — Colleague-forward test added. Observation/fragment, not CTA or question. If a colleague wouldn't forward it with that subject, rewrite it.
  • 5. Permissionless value bar sharpened — Stat ≠ value. Must pass "can they share this in a meeting tomorrow without any additional work?" Vague benchmark warning added with failing/passing examples.
  • 6. Authority specificity — One specific anonymous story beats "a few revenue leaders." Anonymous is fine. Vague is not.

Eval Iteration-1 Results

3 evals: CRO 3-email sequence, VP Sales signal observation, permissionless value benchmarks. Full review →

with_skill pass rate100% (25/25) without_skill pass rate15% (4/25) Delta+0.85 E1 — CRO 3-email sequence11/11 PASS E2 — VP Sales signal observation7/7 PASS E3 — Permissionless benchmarks7/7 PASS

Copy Outputs — Eval Iteration-1 (with skill)

3 evals × with_skill. Eval inputs shown in label.
Eval 1 — CRO 3-Email Sequence
Newly hired CRO, Series B SaaS, announced on LinkedIn 2 weeks ago. Signal Observation → Poke the Bear → Permissionless Value.
Eval 2 — VP Sales Signal Observation
VP Sales, mid-market SaaS. 4 SDR job postings in 45 days, no AE hires. Single email, Signal Observation framework.
Eval 3 — Permissionless Value (Benchmarks Variant)
Newly promoted internal CRO (from VP Sales). No named accounts available — benchmarks variant.

Top Baseline Failure Modes

Signal named directlyFAIL baseline Wrong variable format ({{name}})FAIL baseline No spintax on subjectFAIL baseline Word count blown (150+ words)FAIL baseline Em-dashes in subject linesFAIL baseline Meeting ask in permissionless valueFAIL baseline Generic non-quotable benchmarksFAIL baseline

Feedback

v2 pending

Waiting for feedback on v1.2 eval results to generate next iteration.

v3 pending

Waiting for v2 feedback cycle.