ع
Start Topics Teams Reference What's new Saved
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

    In Claude Desktop, open the folder with your leads CSV and value-prop doc and ask in the chat — no terminal needed. 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.
  • Arabic outreach, adapted not translated: for Arabic-speaking accounts, write the opener from an Arabic value-prop and register — don't machine-translate the English line. A translated cold email reads translated, and in this region that's the difference between a credible approach and an ignored one.
  • Automate the recurring run (Power Track): 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 Capabilities 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.
  • One approval gate before a batch goes out. Personalized-at-scale also means you can send a hundred off-tone or non-compliant lines at once. Route a new sequence past whoever owns messaging — and, in regulated markets, compliance — and make sure the outreach honors consent, opt-out, and anti-spam rules (the law, not just etiquette). The engine fills the queue; a person approves the send.
  • 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.

Questions people ask

How is this different from a mail-merge with a first-name token?
Every line has to cite something specific and true from that lead's row — their role, industry, or a trigger event — and tie it to your value prop. If a row has nothing real to ground on, Claude writes SKIP rather than faking flattery, so it reads like you actually looked.
What do I need to gather before running it?
A `leads.csv` with columns you can ground a line in (company, role, industry, a context column), a `value-prop.md` covering who you help and 2–3 proof points, and one or two opening lines that have actually worked for you so Claude matches your real register.
How do I stop Claude inventing details to personalize a line?
Insist that "grounded" means grounded in the CSV, and spot-check the specifics each opener cites against the row. A confident fabrication about a prospect — an invented funding round or headcount — is worse than a generic line.
Is it safe to upload my leads list?
Keep `leads.csv` in your approved workspace and strip anything you wouldn't want in a draft, using `[lead context]` placeholders if you share a prompt. Don't paste a purchased list of personal details into a tool you don't control.