One person, five phases, the whole sales motion:
The short version you saw stops at the send, because that is where the interesting part ends on camera. Phase 5 is the one that actually turns replies into revenue, so it is here in full.
voice.md with three to five emails you actually wrote, so Claude can learn how you soundYou can run this whole guide with manual exports: run the search in Apollo yourself, download the CSV, hand it to Claude. That works, and it is the right way to start. But Apollo publishes an official MCP server, which is the piece that turns "Claude wrote me a search" into "Claude ran the search", so it is worth ten minutes once you know the system works for your offer.
https://mcp.apollo.io/mcp. In Claude Code, run claude mcp add --transport http apollo https://mcp.apollo.io/mcp instead./mcp in Claude Code to finish it there. Apollo MCP uses OAuth 2.0, so there is no API key to paste anywhere, and access is scoped to the Apollo user who authorises the connection.What happens: you describe your dream customer the way you would to a friend, and Claude turns that into a precise, runnable search: exact Apollo filters, plus Exa queries for the companies a database misses. No manual list building.
The prompt:
I am building an outbound list. Here is my dream customer, described like I would to a friend:
[2 or 3 sentences. Who they are, what size company, what industry, what pain makes them buy, and who the actual buyer is. Example: "B2B SaaS companies, 10 to 50 people, recently funded, no dedicated sales team. The buyer is the founder or the head of growth."]
Turn that into:
1. Exact Apollo People search filters: job titles, industry keywords, headcount range, location, and any technology or funding filters that sharpen it. Give me the exact values to set, and one line on any filter you added that I did not mention.
2. Five Exa search queries to catch companies Apollo will miss: news, launch posts, hiring pages, niche directories.
3. A not-a-fit definition: one line describing who to exclude at the list stage, so I am not unsubscribing them later.
Save all of it to targeting.md. If my description is too vague to filter on, ask me up to three questions first.
targeting.md. Run those filters in Apollo, export the results, and save them as leads.csv. That file is what phase 2 cleans up. With the Apollo connector wired up, add one line to the end of the prompt instead: "then run the People search yourself through Apollo and save the results to leads.csv."What happens: every contact gets verified before you ever hit send. Apollo found the person, Hunter checks the email actually exists, and Claude merges, dedupes, and standardises everything into one clean database (a CSV is fine to start). This is the quiet hero step: bad emails bounce, and bounces wreck your sender reputation before the campaign even starts.
leads.csv to Hunter's bulk verifier and download the results fileThe prompt:
My raw Apollo export is leads.csv. Hunter's bulk verification results are hunter-results.csv. Build my clean database:
1. Merge the two files on email address so every lead carries its Hunter status: deliverable, risky, or invalid. Treat accept-all and unknown as risky.
2. Deduplicate: the same person at the same company is one lead. Keep the most complete row.
3. Standardise: first names properly cased, company names without legal suffixes, one clean LinkedIn URL column, one column for source.
4. Split into three files: verified.csv (deliverable only), risky.csv, dead.csv (invalid). Only verified.csv is allowed into outreach.
5. Report in five lines: leads in, duplicates removed, verified count, risky count, and the bounce rate I just avoided by not emailing the raw list.
verified.csv is the only file that moves forward. Emailing risky.csv is a deliberate judgment call for later, and dead.csv never goes anywhere.What happens: the phase that makes the whole system work. For every verified contact, Exa pulls what is actually happening to them right now: funding rounds, product launches, new hires, their own posts. Claude compresses that into a one-person brief with a single opener detail. This is personalisation researched per person, not mail-merged per segment.
The prompt:
Work through verified.csv one contact at a time. For each person, search Exa for anything from the last 90 days: funding, product launches, new hires, podcast or conference appearances, their own posts.
Write a research brief per contact, saved to briefs/[company]-[name].md:
1. What is new: the two or three most recent, most specific things happening to them.
2. Why it matters now: one line connecting that news to the problem I solve.
3. The opener detail: the single most specific fact, something a lazy competitor would never find.
Skip rule: if everything you found is older than 90 days or too generic to write a real opener from, do not force it. Add that contact to skip.csv with one line on why. A thin brief becomes a fake-personal email, and those burn the whole list.
skip.csv listing who not to email and why. No brief, no email: that rule protects your list.What happens: Claude turns each brief into a short sequence in your voice, every message opening with that person's specific detail. Instantly sends the email side, with inbox warm-up built in. HeyReach runs the LinkedIn touches if you want a second channel. Written for one reader at a time, not a segment: that is the unlock.
The prompt:
My voice samples are in voice.md. Using each research brief in briefs/, write the outreach for every contact:
1. A three-email sequence:
Email 1: open with the opener detail from their brief, one sentence on the problem I solve for companies like theirs, one soft question. Under 90 words.
Email 2, three days later: one useful idea they could act on even if they never reply. Under 70 words.
Email 3, four days after that: the warm breakup. No guilt trips. Under 50 words.
2. Two short LinkedIn touches to run alongside: a connection note under 250 characters, and a follow-up message that uses the same opener detail without repeating email 1.
3. Voice rules: sound like voice.md, never like a sales team. Banned: "I hope this finds you well", "quick question", fake urgency, feature lists, and any line that could be pasted onto a different person unchanged.
4. Every email ends with my booking link as the only call to action: [your Cal.com link].
5. Output: sequences.csv formatted for Instantly custom variables ({{firstName}}, {{company}}, {{email1}}, {{email2}}, {{email3}}), and linkedin.csv for HeyReach. Show me the first three contacts for approval before generating the rest.
sequences.csv gets uploaded to Instantly, linkedin.csv to HeyReach, and every call to action is your booking link. The moment a reply turns into a booking, phase 5 wakes up.What happens: Cal.com books the call. Fireflies joins, records, and transcribes it. Claude reads the transcript through the Fireflies MCP server, logs every commitment as a Notion task, drafts the follow-up in Gmail, and builds the proposal in Google Docs, all the same day, while the call is still warm. MCP in one line: it is the open standard that lets Claude connect to other tools directly, so nobody is copy-pasting transcripts between apps.
api.fireflies.ai/mcp (setup docs): connect it once with OAuth or your API key, and connect Notion, Gmail and Google Docs through their own connectors the same wayThe prompt:
A call just ended. Through the Fireflies MCP server, pull the transcript of my most recent meeting, then:
1. Summarise it in six lines: their problem in their own words, current stack, budget signals, objections, timeline, and anyone else in the decision.
2. Create a Notion task for every commitment I made on the call, each with a due date, quoting my exact words.
3. Draft the follow-up in Gmail: two short paragraphs, mirror their phrasing, confirm the next step and its date. Leave it in drafts for my review.
4. Build the proposal in Google Docs from proposal-template.md: scope, two price options, timeline, and their own quotes in the problem section. Where the transcript left a gap, mark it [TO CONFIRM] instead of inventing an answer.
All four before the end of the day, while the call is still warm.
The salary card first, and these are the dev's own numbers about his own team, not a promise about yours: SDR $70k, researcher $40k, copywriter $50k, sales ops $60k. That is $220k a year in base salaries, and once you add hiring on-costs (payroll tax or super, tools, management time) you can see where the $300k headline comes from.
The stack, with every price linked to the vendor's own pricing page so you can confirm it before you commit:
The dev's "about $175 a month" checks out today: Apollo $49 plus Instantly $37.60 plus HeyReach $79 plus Fireflies $10 is $175.60 on his billing mix. Take everything month-to-month and it is about $203. Take everything on annual billing and it is about $160. Your Claude plan sits on top, and if you skip LinkedIn automation entirely, the stack drops under $100 a month.
You do not need eight tools to find out whether this works for your offer. Phases 1 and 3 are the engine, and they run close to free:
targeting.mdrisky.csv just because it is sitting there