Luka Mrkić
Head of BD
Insights, strategies, and real-world playbooks on AI-powered marketing.
MAY 21, 2026
Stack three tools. LinkedIn Sales Navigator finds the right accounts and people, Clay enriches them with verified emails and buying signals, and ChatGPT 5.5 (via the OpenAI API or a Clay AI column) writes a personalized opener for every lead. Push the output into Instantly or HubSpot. Run weekly, this gives you a steady flow of personalized outbound at the volume you choose to target.
Setup takes a focused afternoon. Steady state takes about 90 minutes of operator time per week. Tool cost lands at roughly $379 per month on list prices. Yield depends on your ICP, signals, and prompt discipline.
TL;DR
- LinkedIn Sales Navigator is the ICP filter, Clay is the data layer and signal engine, ChatGPT 5.5 is the writer.
- The single largest determinant of reply rate is who you message, then what signal you feed the model, then the prompt.
- 100 leads per week is the volume this guide is sized for. Pick the number that fits your team capacity.
If you are evaluating who should build this for your team, this guide gives you both the technical blueprint and the standards to evaluate the work.
Each tool has one job. Sales Navigator is the ICP filter. Clay is the data layer and signal engine. ChatGPT 5.5 is the writer. Putting them together gives you a pipeline that turns a saved search into personalized outbound at the end of every week.
The flow runs in five steps:
ai_first_line and ai_subject for each row based on the signal data.
100 leads per week is the volume this guide is sized for. It is enough to read reply patterns each week and small enough to keep quality high. Pick the number that fits your team capacity.
The single largest determinant of reply rate is who you message. Sales Navigator filtering has more leverage than any prompt you will write later. Most teams set their filter too broad, which dilutes everything downstream. Sales Navigator filtering has more leverage than any prompt you will write later.

Use these filter dimensions in combination:
Save the search. Sales Navigator will surface new matches every week, which is the engine of your weekly cadence.
Target list size for one week: about 200 to 300 leads coming out of the saved search. After Clay enrichment drops the unverified and the role mismatches, you will land at roughly 100 to 140 qualified leads ready for personalization.
Sales Navigator does not have a public API. There are two reliable paths.
Phantombuster has prebuilt LinkedIn Sales Navigator Search Export and Profile Scraper agents. Connect your LinkedIn account once, paste the saved-search URL, and schedule it weekly. Output is a CSV with LinkedIn profile URL, name, title, company, and company URL.
From Phantombuster, send the CSV to a Clay table via webhook or a scheduled CSV import. Clay’s “From Phantombuster” source is the fastest path.
Clay has a built-in Sales Navigator integration that calls the search directly. It is faster to set up but has tighter rate limits on free-tier LinkedIn accounts. For one operator on a paid Sales Nav seat, this is the cleanest path.
Either way, your Clay table should end up with one row per lead with these starter columns: linkedin_url, first_name, last_name, title, company, company_domain.
Clay’s strength is the waterfall: stack multiple providers per data point so the row finds an email even if one provider misses. Add these columns to the table in order:
Filter the table after enrichment. Drop rows with no verified email, drop rows where company size fell outside your filter, drop rows where the role no longer matches. This is where 200 to 300 raw leads typically become about 100 to 140 cleaned ones.
Two ways to run ChatGPT 5.5 against the cleaned table. Both work; pick based on volume and prompt-iteration speed.
Clay has a native AI column powered by ChatGPT 5.5. Add a new column, pick “AI > Use AI to write a message,” and write the prompt inline. The column reads from any other column in the table by referencing it like {{title}} or {{recent_post}}.
Use this system prompt as a starting point. Tune it after you read 10 outputs.
You write one-sentence cold email openers that reference a specific
recent fact about the prospect.
Rules:
- Maximum 22 words.
- Reference the fact directly. Do not say "I noticed" or "I came across".
- Lowercase, casual, no flattery, no questions.
- Start with the fact itself.
Prospect: {{first_name}}, {{title}} at {{company}}.
Recent signal: {{signal}}.
Recent LinkedIn post (if any): {{recent_post}}.
Generate ai_first_line as one column. Generate ai_subject as a second column with a separate prompt that returns a 3 to 5 word lowercase subject line.
When you want full control over retries, logging, model versioning, or batching, run a short Python job over the cleaned Clay CSV export. This is what shipping teams do at 1,000+ leads per week.
import openai, csv, time
openai.api_key = "sk-..."
SYSTEM = """You write one-sentence cold email openers referencing a specific
recent fact about the prospect. Max 22 words. Avoid 'I noticed', no flattery.
Lowercase casual tone. Start with the fact itself."""
rows_out = []
with open("clay_export.csv") as f:
for row in csv.DictReader(f):
resp = openai.chat.completions.create(
model="chatgpt-5.5",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content":
f"Prospect: {row['first_name']}, {row['title']} at {row['company']}. "
f"Signal: {row['signal']}. Recent post: {row.get('recent_post','')}"}
],
temperature=0.7,
)
row["ai_first_line"] = resp.choices[0].message.content.strip()
rows_out.append(row)
time.sleep(0.3)
with open("personalized.csv","w") as f:
w = csv.DictWriter(f, fieldnames=rows_out[0].keys())
w.writeheader(); w.writerows(rows_out)
If you want this set up cleanly inside your stack with logging, retries, and a feedback loop into a CRM, that is the kind of work we ship at Espressio.
Where the leads go depends on the motion. Cold email sequences go to Instantly. SDR-driven outreach (calls, LinkedIn DMs, manual emails) goes to HubSpot. Many teams run both.
From Clay, sync the cleaned table to Instantly using the native Instantly integration. Map ai_first_line and ai_subject to custom variables. In your Instantly campaign body, reference them like this:
subject: {{ai_subject}}
hey {{firstName}},
{{ai_first_line}}
quick one. we help {{role}}-style teams ship {{value_prop}} in weeks not quarters.
worth a 15 min look next week?
[you]
Run on 3 to 5 warmed-up sending mailboxes. Cap at about 30 to 40 sends per mailbox per day. That puts you between 100 and 200 first touches per day, which is the right range for a 100-leads-per-week pipeline including follow-ups.
From Clay, sync the cleaned table to HubSpot contacts and companies using the native HubSpot integration. Map ai_first_line and ai_subject to custom contact properties. Build a HubSpot sequence that pulls those properties into the email template. SDRs can review and edit before sending, which is the right pattern for higher-ACV motions.

The pipeline is a weekly operating rhythm. Block these slots on your calendar and protect them.
About 90 minutes of operator time per week, plus replies handled by sales as they come in. Anything less than this cadence and the pipeline goes stale: signals decay quickly, and a Tuesday opener referencing a Monday funding round lands harder than the same line sent two weeks later.
Wiring the integration is the easy part. Reply rate is a function of three things: the sharpness of the Sales Nav filter, the quality of the Clay signal, and the prompt that turns that signal into an opener.
Three rules that consistently work:
Read the first 20 outputs from every new prompt version before scaling. If 4 out of 20 feel generic, fix the prompt or the input data before increasing volume.

Total tool cost on list prices is roughly $379 per month. A manual VA doing the same enrichment work typically costs more per lead and produces less consistent data because no one provider covers every prospect; Clay’s waterfalls handle that gap.
Two ways to lower the bill once the pipeline is steady. Move Clay enrichments to cheaper providers per data point where coverage allows (Findymail before Datagma, for example). And drop Phantombuster if Clay’s native scraping covers your search reliably.
Track these in Instantly’s analytics or HubSpot sequence reports:
Apollo bundles search, enrichment, and sending in one tool, which is convenient but flattens the stack. Sales Navigator surfaces more accurate role and engagement data than Apollo’s database. Clay outperforms Apollo as an enrichment layer because of waterfalls. The three-tool stack costs more but produces meaningfully better leads.
You can. Clay has its own People Search backed by multiple databases. The result is broader and less reliable than a Sales Nav saved search because LinkedIn data is more current than aggregator databases. For a 100-leads-per-week motion focused on quality, Sales Navigator is worth the seat.
First sends should go out within 7 to 10 days of starting the build. Booked meetings typically begin in week 2 to week 3, because cold sequences take 2 to 4 touches before most positive replies arrive. Treat the first 30 days as the calibration window.
ChatGPT 5.5 for the cost and quality balance. Claude 4.5 Sonnet writes slightly more natural prose at higher cost. A smaller OpenAI tier is fine for openers on a tight budget but produces worse subject lines. Avoid older 3.5-tier models for anything customer-facing.
Sales Nav has per-account daily search limits. A single operator running one saved search weekly stays well inside the limit. Phantombuster scraping a saved-search URL also stays inside the limit if scheduled once per week. Aggressive scraping (multiple searches per day from one account) is what triggers warnings.
Cold email to a business contact at a business email is generally compliant under CAN-SPAM (US) and PECR (UK) provided the message includes a clear identity, business purpose, and an opt-out. GDPR (EU) is stricter: you need a documented legitimate-interest assessment and a low-friction opt-out. Always check your jurisdiction with counsel before scaling EU sends.
Yes. Replace Instantly with a LinkedIn outreach tool such as HeyReach or Expandi. Use ai_first_line as the first DM. Keep daily volumes lower for LinkedIn (about 15 to 25 connections plus DMs per day per account) because LinkedIn restrictions are tighter than email.
The integration work is the easy part. Pipeline quality is a function of filter sharpness, signal quality, and prompt discipline. Those are the right places to spend your time.
If you’re curious how AI fits into your cold outreach systems, let’s talk.