Skip to content
English
all Sales playbooks

playbook

The personalized outreach engine

Feed a CSV of leads and your value prop; get one specific, researched opening line and a short follow-up sequence per row — grounded in each account's real context, not mail-merge flattery.

medium ~45 min

when to reach for this

"Personalized at scale" usually means a first-name token and the same line for everyone — and prospects can smell it. The fix is to give Claude the raw material it needs to say something true about each account, one row at a time. Feed a CSV of leads plus a crisp value prop, and get one specific opening line per lead plus a short follow-up sequence — each grounded in that account's real situation, so it reads like you actually looked, because it did.

gather this first

  • A leads.csv with columns you can ground a line in — company, role, industry, and any context column (recent news, tech stack, a trigger event).
  • A value-prop.md: who you help, the problem you kill, and 2–3 proof points. This is what every opener has to earn its way back to.
  • 1–2 opening lines that have actually worked for you — paste them in so Claude matches your real register, not a generic "sales" tone.

the workflow

  1. Prime the value prop and the angle, not the lines

    Before any outreach, make Claude state who this is for and the angles worth opening on. A fuzzy value prop produces fuzzy, samey lines — catch it here.

    you ask
    Read value-prop.md and the two opening lines I pasted. In 3 bullets: who we're a strong fit for, the one problem we should lead with, and the 3 distinct angles a good opener could take. Match the register of my example lines. Don't write any outreach yet.

    what you get back A short read-back — your best-fit profile, the lead problem ("onboarding takes them weeks"), and three angles (a trigger event, a role-specific pain, a proof point). If the fit profile is off, fix the doc before it taints 50 rows.

    This "read it back first" check is what keeps the whole batch on-message — it's the difference between 50 sharp lines and 50 plausible-but-generic ones.

  2. Generate one grounded opener per lead

    Now go row by row. The rule that prevents mail-merge: every line must cite something specific from that row, and skip rows where there's nothing real to say.

    you ask
    For each row in leads.csv, write ONE opening line (max 2 sentences) that references something specific from that row — their role, industry, or context column — and ties it to the problem in value-prop.md. No generic flattery like "impressed by your work." If a row has nothing specific to ground on, write SKIP and tell me what data I'd need. Output a table: company, opener.

    what you get back A table with one tailored line per lead — e.g. "Saw you just opened a second region — most teams that scale that fast hit an onboarding wall around then; that's exactly what we shorten." Plus a few honest SKIP rows where the data was too thin to personalize.

  3. Build the follow-up sequence

    One touch rarely lands. Ask for a short sequence that adds a new reason each time instead of "just bumping this" — and keep it in the same conversation so it stays consistent with the opener.

    you ask
    For the same leads, design a 3-touch follow-up sequence spaced over 10 days: touch 2 adds a proof point or short case, touch 3 is a soft breakup. Keep each under 60 words and in my register. Give me a reusable template with [opener] and [proof-point] slots, not 50 copies.

    what you get back A reusable 3-step template — value-add follow-up, then a short proof touch, then a graceful breakup — with slots you drop each lead's opener and proof point into.

  4. Pressure-test the batch before it sends

    Have Claude critique its own output as a skeptical prospect. This catches the lines that are technically personalized but still feel like a template.

    you ask
    Read your openers as a busy, skeptical prospect. Flag any that still feel generic, would read as creepy/over-researched, or make a claim we can't back. List the row numbers and why, and rewrite the 5 weakest.

    what you get back A flagged list — "row 12 mentions revenue we shouldn't know; row 19 is just flattery" — plus five rewrites, so the batch that actually sends is the strong version.

make it your own

  • **Warm not cold:** for accounts you already know, prep each with *The pre-call account brief* first, then run this engine so the opener references real history, not just CSV columns.
  • **Keep a winners file:** save lines that booked meetings into winners.md and paste it alongside value-prop.md next time, so each batch sounds more like your best self over time.
  • **Automate the recurring run:** once the prompts are stable, save them as a /outreach custom command, and a scheduled agent can prep next week's list off a fresh export (see the *Features* tab).

watch out for

  • "Grounded" must mean grounded in the CSV — don't let Claude invent a funding round, a headcount, or a quote to personalize a line. A confident fabrication about a prospect is worse than a generic line. Spot-check the specifics it cites against the row.
  • leads.csv is contact data — names, companies, sometimes private context. Keep it in your approved workspace, strip anything you wouldn't want in a draft, and use [lead context] placeholders if you share a prompt. Don't paste a purchased list of personal details into a tool you don't control.
  • Claude drafts the lines; you own who you contact and what you claim. Read every opener before it sends — the cost of a tone-deaf or false line is a burned account, and that's on you, not the model.

you'll end up with A table of one specific, researched opener per lead plus a reusable 3-touch follow-up sequence — personalization that scales because it's grounded in real context, not mail-merge tokens.