GUIDE
Automate Cold Outreach with Claude Code
Build a pipeline that takes a CSV of leads, enriches them with public data, and generates 100 personalized cold emails in under an hour. No expensive sales tools required.
Personalized outreach works. Everyone knows this. The problem is that personalizing 100 emails takes 100 sessions of browsing LinkedIn, scanning a company's homepage, writing a custom opening line, and trying to sound like you actually know something about this person's world. That's 3 to 5 minutes per lead. For 100 leads, that's an entire workday of copying and pasting.
I've taught over 100 people to build real tools with Claude Code, and the outreach pipeline is one of the first things solo founders ask for. You can build it in under an hour, run it every week, and go from a raw CSV of leads to 100 personalized email drafts ready for review.
What You're Building
A pipeline that takes a CSV of leads, enriches each one with publicly available context (LinkedIn headline, company description scraped from their website), generates a personalized email draft for each lead based on their specific situation, and outputs all drafts into a folder you can review and fire off.
No API keys for expensive enrichment tools. No $500/month sales platforms. Just Claude Code, a CSV, and your positioning.
Your Input: The Lead CSV
Start with a simple CSV. You can export this from LinkedIn Sales Navigator, Apollo, or even build it by hand. Here's the format:
name,email,company,title,linkedin_url,company_website
Sarah Chen,sarah@acmesaas.com,Acme SaaS,VP of Engineering,https://linkedin.com/in/sarachen,https://acmesaas.com
Marcus Johnson,marcus@growthloop.io,GrowthLoop,Founder & CEO,https://linkedin.com/in/marcusjohnson,https://growthloop.io
Preeti Sharma,preeti@datastackhq.com,DataStack,Head of Product,https://linkedin.com/in/preetisharma,https://datastackhq.comThe key columns: name, email, company, and title are mandatory. linkedin_url and company_website are optional but make the personalization dramatically better. If you don't have them, Claude Code will still generate solid drafts using just the name, company, and title.
The Enrichment Approach
Paid enrichment tools like Clearbit or Apollo charge per lookup. You don't need them for a first pass. Claude Code can pull publicly available context two ways:
- Company website scraping. Claude Code fetches the homepage and about page of each lead's company, extracts what they do, who they serve, and any recent news or product launches mentioned on the site.
- LinkedIn context. If you've already gathered headline and summary info from LinkedIn (manually or via an export), include it in your CSV as extra columns. Claude Code uses that context to tailor the email angle.
The goal is to know enough to write a relevant opening line and tie your offer to something specific about their company. You don't need a 50-field enrichment profile. You need one or two facts that prove you did your homework.
Building the Pipeline with Claude Code
If you haven't installed Claude Code yet, follow the setup guide first. Then create your project folder and fire up Claude Code:
mkdir outreach-pipeline && cd outreach-pipeline
# Drop your leads.csv file here
claudeHere's the exact prompt to get started:
I have a CSV file called leads.csv with columns: name, email, company,
title, linkedin_url, company_website.
Build a TypeScript script that:
1. Reads leads.csv
2. For each lead, fetches their company_website and extracts:
- What the company does (one sentence)
- Who their target customer is
- Any recent product launches or news on the homepage
3. Uses that context plus the lead's name, title, and company to
generate a personalized cold email draft
4. The email should:
- Be under 120 words
- Open with something specific about their company (not generic flattery)
- Connect my offer to a problem they likely have based on their role
- End with a soft CTA (quick call, not a hard sell)
5. Save each draft as a text file in an "output" folder, named by email address
My offer: I run a training program that teaches non-engineers to build
internal tools with AI coding assistants. My target buyer is founders
and ops leaders at companies with 10-100 employees who waste time on
manual processes.
Tone: Direct, peer-to-peer, zero corporate speak. Like a founder
emailing another founder.Claude Code will write the script, handle the web fetching, build the prompt chain for generating each email, and create the output folder. The whole build takes about 15 minutes.
What the Output Looks Like
Here are three example drafts the pipeline produces, each personalized to a different lead:
Draft 1: VP of Engineering at a SaaS company
Subject: Acme's new API platform + a question
Sarah,
Saw that Acme just shipped the API platform for mid-market teams.
That kind of launch usually means your eng team is stretched thin
and everyone else is filing Jira tickets for internal tools they
need yesterday.
I teach non-engineers to build their own dashboards, automations,
and data tools using AI coding assistants. Three of my recent
students were ops leads at Series B SaaS companies in a similar
spot: engineering backlog was 6 months deep, and they needed tools
last week.
Worth a 15-minute call to see if this fits your team?
TravisseDraft 2: Founder & CEO of a growth-stage startup
Subject: Quick question about GrowthLoop's ops stack
Marcus,
GrowthLoop's positioning around retention analytics is sharp. At
your stage (post-seed, scaling fast) I'm guessing you're the one
still building half the internal workflows yourself because hiring
a full-time engineer for ops tooling doesn't make sense yet.
I run a training that teaches founders to build internal tools,
automations, and dashboards with AI coding assistants. Most people
finish the first session with a working tool they actually use.
Open to a quick chat this week?
TravisseDraft 3: Head of Product at a data company
Subject: DataStack + internal tooling question
Preeti,
Your team's building data infrastructure for other companies, which
means your own internal processes probably get the cobbler's-children
treatment. Product leads at data companies always have a backlog of
internal dashboards and workflow tools that never get prioritized
over customer features.
I teach non-engineers (PMs, ops, founders) to build those tools
themselves using AI coding assistants. No engineering tickets.
No 3-month wait.
15 minutes to see if it's relevant?
TravisseNotice the pattern. Each email opens with something specific about the lead's company or role, connects it to a likely pain point, and lands the offer in under 120 words. No generic "I came across your profile and was impressed" garbage.
Iterating on Tone and Content
The first batch won't be perfect. That's expected. Read 10 drafts and you'll spot patterns you want to adjust. Tell Claude Code:
The emails are too polite. Make the opening lines more direct and
cut any sentence that starts with "I'm guessing" or "I noticed".
Also, swap the CTA from "open to a quick chat" to asking a specific
question about their current process. Something they'd want to
respond to even if they're not interested in buying.Claude Code rewrites the generation logic and regenerates all 100 drafts. Each iteration takes about 30 seconds. Keep going until the tone matches how you'd actually write to a friend who runs a company.
Other common adjustments:
- Shorten emails that crept past 120 words
- Make subject lines more specific (company name + topic beats generic hooks)
- Add a P.S. line with social proof for leads who are likely skeptical
- Split output into folders by persona (founders vs. ops leads vs. PMs) so you can review each batch separately
Running It Every Week
Once the pipeline is built, your weekly workflow looks like this:
- Export fresh leads into
leads.csv(from LinkedIn, Apollo, a referral list, wherever) - Run the script:
npx tsx generate-outreach.ts - Review the output folder, make any manual tweaks to the top 10 highest-value leads
- Load them into your email tool (GMass, Instantly, or just Gmail) and send
Total time per week: 30 to 45 minutes for 100 personalized emails. Compare that to the 8 hours it took before.
Making It Smarter Over Time
After the first few weeks, you'll know which emails get replies. Feed that back into the pipeline:
Here are 5 emails that got replies and 5 that got ignored.
Analyze the differences in tone, structure, and opening lines.
Adjust the email generation to match the patterns from the ones
that worked.Claude Code reads the winners and losers, identifies what worked (specific opening lines, question-based CTAs, shorter emails), and adjusts the generation prompts. Your pipeline gets better every week without you rewriting anything from scratch.
You can also bolt on MCP servers to connect directly to your CRM or email tool, so replies get tracked automatically and feed the improvement loop.
Why This Beats the Alternatives
Tools like Instantly, Smartlead, and Apollo have built-in AI personalization. I've used them. The personalization is shallow: "I saw you work at [Company]. Congratulations on your recent funding round." Everyone gets the same template with a mad-lib variable swapped in.
The pipeline you build with Claude Code actually reads the company's website and generates a unique angle for each lead. That's the difference between an email that gets deleted and one that gets a reply. If you want to understand more about how Claude Code structures these kinds of multi-step workflows, check the best practices guide.
Build It This Week
You already have a list of leads. You already know your positioning. The only thing standing between you and 100 personalized emails is about 45 minutes of building this pipeline with Claude Code.
Start with the first automation guide if you've never used Claude Code before. Then come build this in a live session at ClaudeFluent, where we walk through the entire outreach pipeline from CSV to sent emails.