Before You Renew Another SaaS Subscription
you've got an Apollo seat for the list. Clay for the enrichment. ChatGPT or some prompt library for the copy. Instantly or Smartlead for the sending. another tool for the analysis after. five subscriptions, five logins, five places where the data has to be re-mapped between steps.
that was my stack until earlier this year.
then i ran the whole thing through Claude Code, end to end. ICP definition → list building with reference companies → parallel enrichment across every contact → sequence writing from the enrichment data → post-send analysis loop. i've sent millions of cold emails over the last couple of years and i was genuinely impressed with what Claude Code did for me. probably will do the same for you once you wire up the right prompts.
at Premium Inboxes we monitor 360,000 inboxes. i see the full SaaS stack on most onboarding calls. the gap between what these tools cost and what Claude Code can do for the same workflow keeps getting wider every month.
what's inside this guide:
- the 7-step workflow (ICP → reference companies → Apollo filters → parallel enrichment → sequence writing → pre-launch QC → post-send analysis)
- the exact 5 prompts i run at each stage, written so you can paste straight into Claude Code
- the tier 1 / tier 2 prospect bucketing logic that decides which contacts get hit first
- the parallel enrichment trick that turns 250 contacts into a 30-minute job instead of a 12-hour job
- a 1-page cheat sheet with all 5 prompts in one place
this is NOT a course. it's the actual workflow i'm running this month, written up so you can copy it. the version i'd build today if i was starting cold email from zero.
if you're paying for 5 SaaS tools to do what one Claude Code workflow can do, this is the rebuild.
The 5-Prompt Stack at a Glance
before you read the chapters, here's the whole thing on one page. 5 prompts, 7 steps, one workflow.
Prompt 1: ICP definition brief. seeds Claude with what you sell, who you sell to, and which sequencer your prospects are running. drives Step 1.
Prompt 2: Reference company unpack. points Claude at a handful of companies you already know convert. Claude pulls their sequencers, headcount, growth signals, and turns that profile into Apollo search filters. drives Step 2.
Prompt 3: Parallel enrichment brief. tells Claude what to enrich (website scrape, active job listings, recent news, tech_stack column), how to structure the output, and to run it in parallel across the list. drives Step 3.
Prompt 4: Sequence writing brief. hands Claude the enrichment columns and the offer, asks for a 3-email sequence with bracketed personalisation tokens that map to your CSV. drives Step 4.
Prompt 5: Post-send analysis brief. feeds Claude the stats out of your sequencer + the original enrichment CSV. Claude cross-references replies against enrichment columns and tells you which segment is converting. drives Step 7.
Steps 5 and 6 (campaign build in Instantly, pre-launch QC) sit between sequence writing and analysis. they don't need their own prompts: Step 5 is sequencer setup, Step 6 is a QC pass Claude runs on its own output.
the whole stack is conversational. you brief, Claude asks back, you answer, Claude builds. no swipe files, no generic templates, no copy-pasting between tools. every output feeds the next step.
60-second decision check before you start:
this workflow assumes you already know:
- what you sell (the offer)
- who you sell to (one ICP, not five)
- which sequencer your prospects already run (this is the highest-signal Apollo filter you have)
if you can't answer those three in one sentence each, the workflow won't save you. fix the offer / ICP / sequencer-signal answer first, then come back.
Why the 5-Tool SaaS Stack Is the Default and Why It's Wrong
the standard cold email stack in 2026 is: Apollo for list, Clay for enrichment, ChatGPT for copy, Instantly or Smartlead for sending, some dashboard tool for analysis. each one is a paid subscription. each one demands re-mapping fields between steps. each one is a separate login.
the reason the stack exists isn't because each tool is the best at its job. it's because nobody built one tool that does all 5 steps cleanly. so the market gave us 5 tools and called it a workflow.
Claude Code changes that for one specific reason: you can run the whole workflow as one conversation. the brief you used in Step 1 (ICP) feeds the filters in Step 2. the reference companies in Step 2 feed the enrichment queries in Step 3. the enrichment columns in Step 3 become the merge fields in Step 4. and the same CSV you uploaded to your sequencer gets handed back to Claude in Step 7 for analysis.
no copy-paste between tools. no field re-mapping. no "wait, what was the tech_stack column called again?"
the other thing this rebuild changes: parallel execution. when you tell Claude Code to enrich 250 contacts, it doesn't enrich them one at a time. multiple agents run in parallel. 250 contacts doesn't take 250 times as long. that's the single biggest workflow upgrade i've seen this year.
one more honest note up front: this is the version i'd build today if i was starting cold email from zero. i didn't build it 2 years ago because Claude Code wasn't a usable workflow tool yet. it is now. that's the only reason this guide exists.
the rest of the guide walks through the 7 steps in order, with the exact prompt for each one.
Define Your ICP Through a Conversation, Not a Doc
Step 1 is the only step where most of the value comes out of the conversation, not the output. Claude doesn't need a finished ICP doc to start. it needs the rough version, in your own words, so it can ask you the right follow-up questions.
the brief you paste into Claude has three things in it:
- what you sell (one sentence)
- what a good-fit buyer looks like (one sentence)
- that you want it to pull from Apollo
Claude reads that and comes back with targeted follow-ups. which sequencers your prospects are already running. what growth signals are searchable in Apollo. how you want the output structured. you answer those in the same chat. back and forth, like a conversation. the ICP is the byproduct that comes out the other side.
if the ICP is wrong at this stage, nothing later will fix it. the search filters, the enrichment queries, the email copy: all of them get built from these answers. so don't rush Step 1.
THE PROMPT (Step 1: ICP brief):
I need to build an outbound cold email campaign in Apollo.
What I sell: [one sentence: what's the offer]
My ideal customer looks like: [one sentence: role + company stage + the trigger]
I want you to:
1. Ask me targeted follow-ups about which sequencers my prospects are already running, what growth signals are searchable in Apollo, and how I want the output structured.
2. After I answer, produce a tight ICP one-pager (firmographic + behavioural + intent signals).
3. Then propose Apollo search filters based on the ICP, structured as tier 1 (active sequencer users) and tier 2 (broader signals).
Don't skip the follow-ups. Don't generate filters before I've answered them.
why this prompt works:
the "don't skip the follow-ups" line is doing the heavy lifting. without it, Claude tends to jump straight to a generic ICP doc. with it, Claude actually interrogates the brief and surfaces the questions you'd want a senior ops person to ask.
the "don't generate filters before i've answered them" line is the second protection. it stops Claude from outputting filters based on assumed answers, which is the single most common failure mode i've seen in workflow prompts.
exercise (10 minutes):
paste the prompt. fill in the two bracketed fields with one-sentence answers. do not enrich your answers ahead of time: the whole point is to let Claude pull the second-layer questions out of you.
key takeaway: Step 1 is a conversation, not a brief. the follow-up questions are the value. answer them honestly: the rest of the stack is built on top of these answers.
Build the List From Reference Companies, Not From Filter Guesses
most operators build Apollo filters by guessing what a good prospect looks like. role, headcount, industry, maybe a tech stack filter, then run the search.
that's reversed. you don't know what a good prospect looks like in Apollo's data model. you know what a good CUSTOMER looks like in real life. so feed Claude the customers you already have and let Claude reverse-engineer the Apollo profile.
in my case the reference companies are agencies running cold email infrastructure at scale: exactly who Premium Inboxes sells to. i hand Claude 5-10 of those. Claude pulls the sequencers they're running, their headcount, their growth signals, and uses that template to build the search filters.
the output gets bucketed into two tiers:
Tier 1 (priority): Contacts where Apollo data shows they're already running a cold email sequencer like Instantly or Smartlead. if they're already doing cold email, they need inboxes. the signal is the writing on the wall. start with Tier 1.
Tier 2: A wider pool built on broader company signals: right industry, right headcount, right growth indicators, but without confirmed sequencer data. still worth working, just on a later batch.
why this matters: when Claude builds the filters from real reference companies, it's not just guessing. it's replicating the profile of companies you already know convert.
THE PROMPT (Step 2: Reference company unpack):
Using the ICP we built in Step 1, I want to build the prospect list.
Here are 5-10 reference companies I already know convert for this offer:
[Company 1: domain.com]
[Company 2: domain.com]
[etc.]
For each one, I want you to:
1. Pull the sequencer they're running if it's identifiable in Apollo or via website signals.
2. Pull their headcount band.
3. Pull their growth signal (hiring, funding, recent product launch, etc.).
Then turn that profile into two sets of Apollo search filters:
Tier 1: contacts at companies confirmed to be running a cold email sequencer (Instantly, Smartlead, Reply, Lemlist, Apollo sequencer). These are the priority.
Tier 2: a wider pool built on the broader company signals (industry, headcount, growth indicators) but without confirmed sequencer data.
Output format: ready-to-run Apollo filter URLs or filter parameters, one for Tier 1 and one for Tier 2.
exercise (10 minutes):
list 5-10 companies you've sold to or know convert. paste them into the prompt with their domains. let Claude unpack the profile and output the two filter sets. don't accept a generic filter: if Claude returns something that looks like it ignored the reference companies, push back: "these filters don't reflect the reference companies. rebuild them from the actual reference profile."
key takeaway: Apollo filters built from reference companies converge on real prospects. filters built from imagined ICP attributes diverge into noise.
Enrich Every Contact in Parallel, Not One at a Time
Step 3 is where the workflow stops looking like SaaS and starts looking like a real upgrade.
you've got a prospect list out of Apollo. it has the basics: name, email, company, role, maybe headcount. nowhere near enough to write personalised copy from. so the standard move is to push the list through Clay or a similar enrichment tool, one contact at a time, paying per enriched row.
Claude Code runs enrichment in parallel. multiple agents at once. so 250 contacts doesn't take 250x as long. the same enrichment that would have been a 12-hour Clay job is a 30-minute Claude job.
what gets enriched:
- Website scrape. Claude pulls their homepage and a few key pages (about, services, pricing, careers).
- Active job listings. what they're hiring for tells you what they're building.
- Recent news. funding rounds, product launches, leadership changes.
- Tech stack signal. what sequencer / CRM / sending platform they're running (this is the highest-signal column for my ICP).
the output lands as new columns in the CSV: tech_stack, growth_signal, company_context. sitting ready to be referenced when the copy gets written.
the tech_stack column ends up doing the most work in my case. my ICP is cold email agencies, so a lot of them are running Instantly or Smartlead and that data is sitting right there in the spreadsheet. when that's in the CSV, the email can reference their specific setup rather than cold email infrastructure in general. that's the difference between something that reads like a broadcast and something that reads like it was written for one specific person.
that's just my ICP though. whatever yours is, identify the signal that's most specific to your buyer and let that column drive the personalisation.
THE PROMPT (Step 3: Parallel enrichment):
I'm uploading the prospect CSV from Step 2 (Tier 1 first).
For every contact in the CSV, I need you to run enrichment in parallel across multiple agents. Do NOT process one at a time.
Enrich each contact with the following new columns:
1. tech_stack: which sequencer / CRM / sending platform the company is running (check the website, check job listings for tool mentions, check public BuiltWith data if accessible)
2. growth_signal: recent funding, hiring, product launch, or leadership change in the last 90 days
3. company_context: 1-2 sentence summary of what the company actually does (not their tagline, the real version)
4. recent_news: most recent newsworthy event you can find (with date)
Output format: the original CSV with these 4 columns appended. Leave the cell blank if the data isn't findable: do NOT hallucinate to fill the cell.
When you're done, give me a count of how many rows have populated tech_stack data (this is my highest-signal column).
the "do NOT hallucinate to fill the cell" line matters more than it looks. if you don't lock that down, Claude will guess to make the columns look complete. blank cells are fine. fabricated cells will burn your sender reputation when the email references something the company doesn't actually use.
exercise (15 minutes):
run the prompt on your Tier 1 CSV. check the tech_stack column once it's back. for the first 10 rows, manually verify 3 of them. if any of the 3 are wrong, push back on Claude and ask it to re-enrich those rows with a confidence threshold ("only fill tech_stack if you can verify from a primary source").
key takeaway: parallel enrichment turns the slowest step in the legacy stack into the fastest step in this one. the tech_stack column (or whatever your highest-signal equivalent is) is the lever the personalisation hangs on.
Write the Sequence From the Enrichment Data, Not From a Template
Step 4 is where most operators reach for a swipe file. don't.
Claude already has tech_stack, growth_signal, and company_context sitting in the CSV from Step 3. that's enough context to write the sequence directly from the enrichment data. no generic template, no swipe file, no "hi [first name], i help companies like yours..."
the output is a 3-step sequence with bracketed personalisation tokens that map to the CSV columns. when you push it into Instantly or Smartlead, the merge fields pull through without manual work.
Email 1: Opener. Tech_stack variable drives the subject line. Subject: "{first_name}, we audited a few {tech_stack} setups recently." The merge field pulls the actual sequencer into the subject line. Body stays intentionally vague: doesn't overexplain the audit, just creates enough curiosity that the right person wants to know more.
Email 2: Specifics. Goes deeper, spells out exactly what the audit covers (SPF, DKIM, DMARC across sending domains, domain and IP reputation scoring, inbox licensing costs, warm-up and sending volume efficiency analysis). Specific enough that someone running cold email infrastructure at scale can see you actually understand what you're looking at.
Email 3: Breakup. Short, no pitch, simply closes off the loop. "If reducing inbox costs or tightening up infrastructure is on the radar, I'm happy to jump on a 15-minute call." No urgency play, no pressure framing, just a clean exit that leaves the door open.
that structure is mine. yours will be different. the prompt below tells Claude to build the structure from your offer and your enrichment data, so the bones stay yours.
THE PROMPT (Step 4: Sequence writing):
Using the enriched CSV from Step 3 and the offer below, write me a 3-email sequence.
My offer: [one sentence: what's the offer and the result]
My soft CTA: [one sentence: the low-pressure way you want to close email 3]
Sequence structure I want:
Email 1 (opener):
- Subject line MUST include {first_name} and {tech_stack} as merge fields.
- Body 80 words max. Intentionally vague on specifics. Creates curiosity, not closure.
- Soft hook tied to the tech_stack column.
Email 2 (specifics):
- Subject line tied to a specific failure mode the tech_stack typically has.
- Body 100-150 words. Specific enough to demonstrate you understand the setup at depth.
- No CTA except a question.
Email 3 (breakup):
- Subject line: simple, no merge field needed.
- Body 50 words max.
- Soft CTA using my offer line above. No urgency play. No pressure.
Merge fields available from the CSV: {first_name}, {company_name}, {tech_stack}, {growth_signal}, {company_context}, {recent_news}.
Use merge fields where they make the copy better. Don't force merge fields where they don't fit. Don't write personalisation that depends on data you don't have in the CSV.
why this prompt works:
the last two lines are doing the heavy lifting. "don't write personalisation that depends on data you don't have" stops Claude from outputting copy like "i saw you mentioned X in your last earnings call" when the recent_news column for that row is blank.
exercise (15 minutes):
run the prompt. read all 3 emails. open the CSV and pick 3 rows at random. mentally fill in the merge fields and read what the prospect would actually receive. if any of the 3 fully-filled versions reads stiff or generic, push back on Claude with the specific row that broke and ask for a rewrite.
key takeaway: the sequence is built from the enrichment data, not from a swipe file. the bracketed merge fields are what hold it together. delete any merge field that requires data you don't actually have.
Build the Campaign in Instantly, Run Pre-Launch QC, Then Analyse Post-Send
Steps 5, 6, and 7 are the back half of the workflow. campaign build, QC, post-send analysis.
Step 5: Build the campaign in Instantly.
this is the fastest part of the entire process. create the campaign, name it by segment so it's easy to track, then map fields.
building the sequence in Instantly is taking the copy and connecting the merge fields to the columns in your CSV. Subject line uses {first_name} and {tech_stack}. Body copy pulls in {company_name} and {growth_signal}. Any column in your enriched CSV can become a personalisation variable.
Settings i use:
- Daily limit: 15 per inbox
- Open rate tracking: OFF (the tracking pixel triggers spam filters more often than people realise. reply rate is a better signal anyway)
- Stop sending as soon as someone replies
- Schedule: Monday-Friday, US East business hours
Step 6: Pre-launch QC.
before uploading the CSV and launching, Claude runs a full QC pass through every variant in the sequence:
- checks that every merge field has a matching column in the CSV
- reads through every single email variant to catch anything that doesn't make sense with the personalisation data
this is more important than most of the steps. once the QC is clean, upload the list, attach the sending accounts, launch.
THE PROMPT (Step 6: Pre-launch QC):
Before I launch this campaign, I need a QC pass.
For every email in the sequence:
1. List every merge field used.
2. Confirm each merge field has a matching column in the CSV. Flag any that don't.
3. Generate 5 fully-filled examples by inserting real data from 5 rows of the CSV.
4. Read those 5 examples. Flag any sentence that reads broken, stiff, or generic once the merge fields are filled.
If you find issues, propose the fix. Don't fix silently: show me the before/after and let me approve.
Step 7: Post-send performance analysis.
once the campaign has been running long enough to have meaningful data (rule of thumb: at least 200 sends per segment), pull the stats out of Instantly and hand them back to Claude.
not using Claude to triage replies. using it to figure out which combinations of prospect, hook, and offer are actually converting so you know where to double down.
THE PROMPT (Step 7: Post-send analysis):
Attached: stats export from Instantly + the original enriched CSV from Step 3.
Run two passes:
First pass: reply rate and positive reply rate broken down by segment.
Cross-reference campaign performance against the enrichment columns in the CSV. I want to see things like:
- reply rate by tech_stack (Instantly users vs Smartlead users vs no sequencer)
- reply rate by company headcount band
- reply rate by growth_signal type
- positive reply rate by all of the above
Second pass: which hooks and offers are pulling the most positive replies.
If any specific subject line variant or opener angle is pulling 2x+ the rate of others against the same segment, flag it. This becomes a dedicated variant in the next batch.
Output: a short summary (one paragraph), then a table of segments ranked by positive reply rate, then a list of recommended next moves (scale up which segments, cut which segments, build dedicated variants for which segments).
why this prompt works:
the sequencer doesn't know anything about the enrichment data sitting behind your list. you can see Instantly users replying at a higher rate than Smartlead users, or companies in a specific headcount band converting better than others. the kind of insight you'd never spot scrolling through the Instantly dashboard on its own.
exercise (20 minutes):
after your first 200 sends per segment, run the analysis prompt. write down the top-ranked segment by positive reply rate. that's where the next batch's volume goes.
key takeaway: campaign build is the fastest step. QC is the most important. post-send analysis is what makes the next batch sharper than this one. every round of sending feeds the next round with tighter targeting and tighter copy.
The 5 Prompts on One Page
this is the page you screenshot. the 5 prompts that run the whole stack, in order.
PROMPT 1: ICP brief (Step 1):
I need to build an outbound cold email campaign in Apollo.
What I sell: [one sentence]
My ideal customer looks like: [one sentence]
I want you to:
1. Ask me targeted follow-ups about which sequencers my prospects run, what growth signals are searchable in Apollo, and how I want the output structured.
2. After I answer, produce a tight ICP one-pager (firmographic + behavioural + intent signals).
3. Then propose Apollo search filters, structured as tier 1 (active sequencer users) and tier 2 (broader signals).
Don't skip the follow-ups. Don't generate filters before I've answered them.
PROMPT 2: Reference company unpack (Step 2):
Using the ICP from Step 1, build the prospect list.
Reference companies I know convert:
[Company 1: domain.com]
[Company 2: domain.com]
[etc.]
For each:
1. Pull the sequencer they run (from Apollo or website signals).
2. Pull headcount band.
3. Pull growth signal (hiring, funding, recent launch).
Then build Apollo filters as:
- Tier 1: companies confirmed to run a cold email sequencer.
- Tier 2: broader signals, no confirmed sequencer.
Output: ready-to-run Apollo filter URLs or parameters.
PROMPT 3: Parallel enrichment (Step 3):
Uploading the prospect CSV from Step 2.
Run enrichment in parallel across multiple agents. Do NOT process one at a time.
New columns:
1. tech_stack: sequencer / CRM / sending platform the company runs
2. growth_signal: funding / hiring / launch / leadership change in last 90 days
3. company_context: 1-2 sentence summary of what the company does
4. recent_news: most recent event with date
Leave cells blank if data isn't findable. Do NOT hallucinate to fill cells.
Return the CSV with the 4 new columns + a count of how many rows have populated tech_stack data.
PROMPT 4: Sequence writing (Step 4):
Using the enriched CSV and the offer below, write a 3-email sequence.
My offer: [one sentence]
My soft CTA: [one sentence]
Structure:
Email 1: opener. Subject must include {first_name} and {tech_stack}. Body 80 words max. Vague on specifics, creates curiosity.
Email 2: specifics. 100-150 words. Demonstrates depth on a tech_stack-specific failure mode. Closes with a question.
Email 3: breakup. 50 words max. Soft CTA from above. No urgency play.
Merge fields available: {first_name}, {company_name}, {tech_stack}, {growth_signal}, {company_context}, {recent_news}.
Don't force merge fields where they don't fit. Don't write personalisation that depends on data you don't have.
PROMPT 5: Post-send analysis (Step 7):
Attached: stats export from Instantly + the original enriched CSV.
First pass: reply rate and positive reply rate by segment:
- by tech_stack
- by headcount band
- by growth_signal type
Second pass: hook / offer variants pulling 2x+ the rate of others against the same segment. Flag these for dedicated variants in the next batch.
Output:
1. one-paragraph summary
2. segments ranked by positive reply rate
3. recommended next moves (scale up, cut, build dedicated variants)
BONUS: Pre-launch QC (Step 6):
Before launch, run a QC pass:
1. List every merge field used in the sequence.
2. Confirm each has a matching column in the CSV.
3. Generate 5 fully-filled examples from real rows.
4. Flag any sentence that reads broken once filled.
Show me before/after fixes for approval.
SETTINGS REFERENCE (Step 5: Instantly):
- Daily limit: 15 per inbox
- Open rate tracking: OFF
- Stop sending on reply: ON
- Schedule: Mon-Fri, US East business hours
RULE OF THUMB FOR ANALYSIS:
at least 200 sends per segment before running the analysis prompt. below that you're looking at noise.
From Workflow to Infrastructure
this guide gives you the workflow. it doesn't give you the inboxes to send from.
the sequence Claude built is only as good as the infrastructure underneath it. if your sending accounts are on rented IPs, on a registrar with bulk DNS bugs, or warmed badly, even a perfect sequence lands in spam.
Premium Inboxes is where the infrastructure layer goes. compliant Google Workspace and Microsoft 365 inboxes on lookalike domains, DNS configured properly across SPF, DKIM, DMARC, ready to upload to Instantly or Smartlead in under 6 hours. 2,000+ customers, 150+ five-star reviews, founder-led onboarding on every account.
head to premiuminboxes.com if you want the inboxes Claude can send from. every new customer gets a founder-led onboarding call and a 30-day audit call as standard.
use code STACK for 15% off your first order.