| name | account-copy |
| description | Emits reader-specific account copy — outreach sequences, follow-ups, one-pagers, case-study atoms, QBR narratives, renewal and expansion notes — by selecting a typed sequence blueprint and filling its slots only with facts the account already holds, so every piece reads like it was written for one named reader and never like mail-merge. Use when the user says "outreach for [prospect]", "follow-up email", "nurture sequence", "one-pager", "case study", "QBR narrative", "renewal note", "win-back", "expansion copy", or when a factory contract includes 07-copy. Runs one reader or batches a whole list with per-reader verification. Every claim cites SYNTHESIS or is cut; refuses unpersonalizable sends and "just checking in" revivals. |
Account-copy — typed sequence blueprints that emit reader-specific pieces
Copy here is not writing — it is evidence arranged to move one named reader one step. The unit of production is a typed sequence blueprint (a meta-prompt: ../forge/references/meta-meta-map.md Level 2). A blueprint carries {{slots}}; each slot is filled only with a fact this account demonstrably holds — a tell from SYNTHESIS, a proof atom, a verbatim prior-thread line. Blueprints are shared across all clients; the fills are per-reader. This is what lets us run copy at scale without producing template-smelling mail-merge: the skeleton is reused, the load-bearing sentences are unique to the reader.
Binding law: ../forge/references/evidence-rules.md outranks persuasion. A claim without a SYNTHESIS citation gets cut or reworded as an honest question — never smoothed over. Plain language: no adjective may do a number's job.
H1 · Typed contract
Fill at intake; UNKNOWN is legal, never invented.
PIECE_TYPE: {net-new-outreach|post-meeting-advance|dormant-revival|renewal-winback|expansion|one-pager|case-atoms|qbr-narrative}
READER_PERSONA: str # named human when known, else role archetype
READER_ROLE: {champion|economic-buyer|technical-evaluator|procurement|end-user|gatekeeper} # drives what evidence lands
RELATIONSHIP_WARMTH: {cold|warm|hot} # inherited factory slot — tunes voice matrix + CTA-ladder start
CHANGE_APPETITE: {augment|transform|explore}|UNKNOWN # what we may propose; mismatching it makes us the risk
SYNTHESIS_REF: path # 01-research/SYNTHESIS.md — the ONLY source of tells + numbers (never the raw dossier)
PROOF_ATOMS_REF: path|UNKNOWN # FACTORY/atoms.md proof units usable as {{our_proof_atom}}
PRIOR_THREAD: str|UNKNOWN # verbatim last exchange (warm/hot only); UNKNOWN forces cold treatment
CHANNEL: {email|linkedin|sms} # gates length, formatting, and compliance surface
COMPLIANCE_CTX: str # jurisdiction + list type (e.g. cold B2B email → CAN-SPAM: physical address + opt-out required)
SUPPRESSION_REF: path|UNKNOWN # do-not-contact / already-in-sequence list to dedupe against
Typed outputs (write to 07-copy/):
PIECE: md file per PIECE_TYPE (schema in H2)
SLOT_LEDGER: 07-copy/_slot-ledger.md # every {{slot}} → the held fact + its SYNTHESIS/atom citation (per reader)
PREDICATE_REPORT: a passed/failed line per H6 predicate, appended to the piece footer
ATOMS: phrase/objection/conversion atoms → FACTORY/atoms.md (H3 Capture)
H2 · Artifact specs + acceptance checklists
Every piece is measurable. Word budgets are ceilings, CTA count is exact, personalization slots are verified against the ledger.
net-new-outreach.md — 3–5 touches. Full per-touch grammar (purpose, 2 subject-line patterns, body skeleton, CTA-ladder position, spacing, stop conditions) in references/sequence-blueprints.md. Body budget: ≤120 words cold, ≤160 warm. Exactly one CTA per touch. First line is the reader's tell, never our name (cold). Personalization slots {{their_tell}} {{our_proof_atom}} {{cta}} — every one filled from the ledger or the touch does not ship.
post-meeting-advance.md — recap (decisions · owners · dates) + one advance up the CTA ladder (look → call → pilot → sign). References the meeting verbatim; zero re-introduction.
dormant-revival.md — keyed to a NEW tell surfaced since the thread died. Opens on that tell, not on the silence. "Just checking in" is a refusal condition (H9).
renewal-winback.md — period value delivered (dashboard-sourced, cited) → what changed → the renewal/return step with honest expiry.
expansion.md — champion-momentum pattern: individual win → organizational standard; fragmentation named as the counter-risk (references/voice-matrices.md).
one-pager.md — the sign-here bijection in prose: situation (their numbers) → what we do → proof → pricing shape → next step. Printable; sourced footnotes.
case-atoms.md — reusable proof units (grammar below). Mint once, reuse across decks/proposals/outreach.
qbr-narrative.md — numbers vs. commitments (dashboard-sourced), underperformance stated plainly and first, the fix, expansion path traced to fresh tells.
Case-atom grammar (every atom): situation · action · measured cited result · 1-sentence rendering · 1-paragraph rendering. The result carries [source · yyyy-mm-dd]. The 1-sentence rendering is the {{our_proof_atom}} slot fill for outreach.
Acceptance checklist (all must pass before a piece ships):
H3 · Loop — Frame → Do → Review → Capture
- Frame. Read SYNTHESIS_REF (never the raw dossier — one-directional flow). Select the blueprint for PIECE_TYPE. Select the voice matrix cell = WARMTH × CHANGE_APPETITE. Confirm PRIOR_THREAD is verbatim (warm/hot) or downgrade to cold. Check SUPPRESSION_REF.
- Do. For each slot in the blueprint, find the held fact and record it in
_slot-ledger.md with its citation before writing the sentence. Fill the skeleton. If a slot has no held fact, either cut the sentence or convert it to an honest question — never invent to complete it.
- Review. Run the H6 predicate battery; write the PREDICATE_REPORT. Route objections through
references/objection-protocol.md. Hand off to Stage-3b.
- Capture. Mint atoms to
FACTORY/atoms.md (via mint-atoms): phrase atoms (a line that moved or that fell flat, with which reader-role), objection patterns (objection → what it meant → the evidence route that answered it), sequence-conversion notes (which touch/subject variant replied, per warmth). A run that mints no atom did not complete.
H4 · Scale — copy for N readers
- Blueprints are shared, fills are private. The blueprint file is identical across clients; each reader gets its own
_slot-ledger.md block. One reader's tells never bleed into another's copy.
- Batch generation, per-reader verification. Generate the batch from one blueprint, then run H6 predicates per reader — the name-swap test especially catches slots that silently fell back to generic filler across the batch.
- Suppression + dedupe discipline. Before generating, diff the target list against SUPPRESSION_REF and against every other live sequence; a reader appears in at most one active sequence. Log removals.
- Fan-out. One subagent per reader (or per small batch), context-complete prompt = blueprint + that reader's SYNTHESIS slice + matrix cell. Subagents return the piece + ledger + predicate report; they never invent facts to fill a slot — an unfillable slot comes back flagged.
H5 · Encoded judgment (references)
Depth lives in three dense references — read the one you need:
references/sequence-blueprints.md — typed blueprints (meta-prompts) for cold/warm/hot × the standard arcs: per-touch purpose, subject-line grammar, body skeleton + slot map, CTA-ladder position, send-spacing, stop conditions, channel adaptations.
references/voice-matrices.md — warmth × appetite as concrete linguistic rules: sentence-length bounds, verb classes, forbidden lexicon, first-line rules, the ~3:1 their-company : self pronoun ratio (cold), the champion-momentum templates.
references/objection-protocol.md — objection taxonomy → what each means beneath → evidence route → response skeleton → honest-unknown branch → disqualifier/stop rules.
H6 · Checkable predicates
Run every one; record pass/fail in the PREDICATE_REPORT. Any fail blocks the send.
- Name-swap test: substitute another company's name/facts. If the piece still reads fine, it is generic — rewrite around the reader's tells. Automated as a batch check in H4.
- Citation check: every factual claim traces to SYNTHESIS_REF via the ledger, or it is cut.
- CTA count: exactly one. Zero = no ask; two = diluted — both fail.
- Lexicon scan: zero forbidden terms (
references/voice-matrices.md): cutting-edge, seamless, synergy, revolutionize, "just checking in", manufactured urgency.
- Slot-fill audit: no unresolved
{{}} and no slot filled from anything but a held fact.
- Expiry honesty: any deadline stated is real.
H7 · Structure
This SKILL.md is the index and generation procedure; the three references/ files carry the depth. Generation procedure: select blueprint → verify held facts for every slot (write the ledger) → fill → run H6 predicates (name-swap, citation, CTA count, lexicon scan, slot-fill, expiry) → Stage-3b → ship to 07-copy/.
H8 · Core invariants
Evidence-or-cut (never invent to fill a slot). Stage-3b before any send. Plain language, no internal machinery client-facing. No fake familiarity — PRIOR_THREAD verbatim or treat as cold. Honest expiry. One-directional flow: SYNTHESIS → copy, never dossier → copy, never number copied piece-to-piece. Refined input ⇒ regenerate the piece, never hand-patch a sent draft (../forge/references/factory-schema.md §5).
H9 · DONE + refusals
DONE when: piece(s) exist in 07-copy/ within budget; _slot-ledger.md resolves every slot to a cited held fact; all H6 predicates pass; acceptance checklist passes; COMPLIANCE_CTX satisfied; suppression/dedupe applied; Stage-3b block present; ≥1 atom minted.
Refuse to: send anything that cannot be personalized from held facts (an unfillable {{their_tell}} is a refusal, not a blank); make any claim without SYNTHESIS backing; revive a dormant thread with "just checking in" or any non-tell pretext; fabricate urgency or a false expiry; contact a reader on SUPPRESSION_REF or already in a live sequence; fake prior familiarity when PRIOR_THREAD is UNKNOWN.
H10 · Self-improvement hooks
Each run records: which subject variant + first line replied vs. died (per warmth/role) → sequence-conversion atoms tune subject-line grammar; which objection recurred and which evidence route answered it → objection-protocol atoms; which phrase moved or fell flat → phrase atoms. Feed corrections through mint-atoms; trace each human edit to the slot/rule/matrix cell that allowed it and bump the blueprint. Generalization check: a new phrase/objection pattern must hold for ≥2 readers of the same role before it becomes a shared prior.