{
"harness_version": "1.0",
"master": {
"key": "copywriting",
"title": "master-copywriter — Conversion Copywriting",
"manual": "MANUAL.md",
"verify": "./init.sh"
},
"features": [
{
"id": "sales-page",
"name": "Sales page",
"description": "A full long-form sales page in Markdown: headline block (declared lead-type + awareness stage), lede, named mechanism, tagged proof block, offer (price/stack/guarantee), objection handling, single primary CTA, PS block.",
"status": "todo",
"dependencies": [],
"done_criteria": "Passes verify_copywriting.py sales-page rubric: all 8 sections present in order, valid lead-type+awareness tags, named mechanism, >=3 tagged proof elements with no untagged numeric claims, price+stack+guarantee present, >=3 objections, exactly one distinct CTA target, PS present, no hype/forbidden vocab, no paragraph >90 words, em-dash density <=1/200 words, Flesch Reading Ease >=50.",
"verify": "python3 verify_copywriting.py sales-page workspace/sales-page.md",
"evidence": ""
},
{
"id": "vsl-script",
"name": "VSL script",
"description": "A timestamped video-sales-letter beat sheet: hook (first 15s, <=40 words), tagged lead, named mechanism, tagged proof segments, transition-to-pitch, stack, price reveal with anchor, guarantee, single-action CTA, and an open-loop inventory (>=2 loops, all declared closed).",
"status": "todo",
"dependencies": [],
"done_criteria": "Passes verify_copywriting.py vsl-script rubric: all 9 beats present, hook timestamped and under word cap, lead tagged, mechanism named, >=3 tagged proof segments, transition marker present, stack present, price reveal has anchor+price, guarantee present, single CTA target, >=2 open loops with zero unclosed loops.",
"verify": "python3 verify_copywriting.py vsl-script workspace/vsl-script.md",
"evidence": ""
},
{
"id": "ad-set",
"name": "Ad set",
"description": ">=5 ad variants, each declaring awareness-stage target, a hook line (<=12 words), primary text, single CTA, and an angle tag — with angle diversity enforced (each angle used at most twice) and hook lines never duplicated.",
"status": "todo",
"dependencies": [],
"done_criteria": "Passes verify_copywriting.py ad-set rubric: >=5 variants, no duplicate hook lines, every variant has a valid awareness tag + hook <=12 words + single CTA + angle tag, no angle used more than twice, no undisclosed before/after income claims.",
"verify": "python3 verify_copywriting.py ad-set workspace/ad-set.md",
"evidence": ""
},
{
"id": "email-subject-bank",
"name": "Email subject-line bank",
"description": ">=20 subject lines grouped by named curiosity mechanism (open loop, specificity, contrast, self-interest, story-cue — >=4 mechanisms represented), each <=9 words, no ALL-CAPS, <=1 emoji, no spam-trigger hits, every group citing its mechanism.",
"status": "todo",
"dependencies": [],
"done_criteria": "Passes verify_copywriting.py email-subject-bank rubric: >=20 subjects, >=4 curiosity mechanisms represented, every group has a Mechanism: citation, no subject over 9 words / ALL-CAPS / >1 emoji / spam-trigger hit.",
"verify": "python3 verify_copywriting.py email-subject-bank workspace/email-subject-bank.md",
"evidence": ""
},
{
"id": "landing-hero-variants",
"name": "Landing-hero variants",
"description": ">=3 hero variants, each with a headline (<=14 words), subhead (<=25 words), verb-first CTA label (<=4 words), declared lead type + awareness stage, and a one-line 'Because:' rationale citing a MANUAL.md school by name. Lead-type diversity required across variants.",
"status": "todo",
"dependencies": [],
"done_criteria": "Passes verify_copywriting.py landing-hero-variants rubric: >=3 variants, headline/subhead/CTA within word caps, valid lead+awareness tags, Because: rationale present on every variant, not all variants sharing the same lead type.",
"verify": "python3 verify_copywriting.py landing-hero-variants workspace/landing-hero-variants.md",
"evidence": ""
}
]
}