How We Personalize LinkedIn Outbound — and Hit 30% Reply Rates on HeyReach
A look inside the SayIntel personalization engine: the signals we mine per ICP, why we refuse to personalize for the sake of personalization, and why 70% of our AI compute goes to quality assurance — not drafting.
The number we care about
Most LinkedIn outbound tools quietly accept 5–8% reply rates as the ceiling. We don't. Across the campaigns we run through HeyReach, our sequences land between 22% and 31% reply rates — measured the honest way: positive + neutral + negative human replies divided by leads contacted, not divided by "connected."
That number isn't a prompt trick. It's the output of two disciplines stacked on top of each other: signal-first personalization, and a brutal QA gate that throws away the majority of what the model drafts before a human ever sees it.
Rule #1 — We never personalize for the sake of personalization
The default AI-SDR pattern is to grab any fact about a person and wedge it into sentence one. "Saw you went to Stanford" / "Noticed you live in Austin" / "Loved your recent post." Buyers can smell this in under two seconds. It actively hurts reply rate because it signals automation without signalling relevance.
Our rule is the opposite. A message either references a specific, recent, business-relevant signal — one that connects directly to what we sell — or it drops the personalization line entirely and goes with an honest role + industry opener. Two patterns. No third pattern. No vague "saw the recent news" filler when the picker couldn't find a real anchor.
The signals we mine (and why they're chosen per ICP)
The signals worth mining are not universal. They depend entirely on what the client sells and who they sell to. Before we draft a single message for a new account, we sit down and define the signal map for their ICP — the 4–7 signal types that, when present, genuinely predict that this person is in-market right now.
Examples from real client signal maps:
- AI initiative or AI strategy mentions in earnings reports. Public company CFOs and CEOs telegraph budget on these calls. If the transcript says "we are accelerating our generative AI investments in FY25," a vendor selling AI infra has a 90-day window.
- Job postings. A company hiring three MLOps engineers and a Platform Lead is building a platform. A company posting for a Head of Data Governance is about to spend on governance. Job boards are the most honest roadmap a company publishes.
- Last LinkedIn posts from the buyer themselves. Not "congrats on the work anniversary" — actual substantive posts where they describe a problem they're working on, a launch they shipped, or a take they're defending in public.
- Public explanation of AI products. Blog posts, podcast appearances, conference talks where a leader walks through how their AI product is architected. That's a goldmine of insertion points for anyone selling into that stack.
- Cloud strategy analysis. Which hyperscaler they're migrating to, which workloads they're repatriating, whether they're standardizing on Databricks or Snowflake. This is published more often than people realize, in case studies and re:Invent / Summit talks.
- Funding rounds, named investors, M&A. Specifics only — "raised $40M Series B led by Insight" is a signal; "recently raised" is filler.
- Executive hires & org changes. A new CISO in week three is buying tools. A new VP of Data is rewriting the stack.
- Product launches and partnership announcements. Named product, named partner. If we can't name it, we don't use it.
Every client gets a different subset. A dev-tools company cares about GitHub activity and engineering job posts. A FinOps company cares about cloud bills and hyperscaler keynote mentions. A compliance vendor cares about new regulation, breach disclosures, and CISO hires. The point isn't the signal list — it's that the list is deliberately chosen before a single message gets drafted.
Specificity, or honest generality — never anything in between
Once the signal pipeline runs, every prospect ends up in one of two buckets. Either we extracted a concrete anchor — a dollar amount, a named product, a dated event, a real metric — or we didn't. There is no third state.
If we have an anchor, the opener uses it specifically and ties it to what the buyer actually owns and is measured on. If we don't, the opener says what's genuinely true: their role, their company, an industry-shaped consequence drawn from a per-campaign challenge map. Honest generality beats fake specificity every single time. The model is forbidden from referencing "the recent news" or "your latest announcement" without naming what it is.
Why 70% of our AI time goes to QA, not drafting
Here's the part most teams get wrong. Drafting with an LLM is the easy 30%. Catching the model when it confabulates, flatters, name-drops a company it hallucinated, slips a banned phrase past the prompt, or invents a metric — that's the 70%. We spend roughly seven of every ten AI dollars on the QA gate, not the drafter.
The gate runs a hard-fail catalog before any message is queueable: hallucinated proper nouns, vague-opener detection, banned phrase library ("hope this finds you well," "quick question," "circling back," "synergy," "leverage," the whole graveyard), flattery detection, speculation detection ("you're probably dealing with"), proof-point reuse across M1/M2, M3 opener-rotation across the batch, sentence-length checks, Capitalized-token allowlist enforcement, and persona-pitch alignment.
A message that fails gets one retry. If it fails the retry, it falls through to an honest Pattern B opener instead of getting shipped. The drafter is never trusted to be the last word on quality — that's why the reply rate compounds instead of regressing as we scale.
Why this works on HeyReach specifically
HeyReach is the cleanest LinkedIn sending layer we've used — multi-sender rotation, real inbox detection, per-account daily caps that protect the account, webhook events that let an external system actually know what happened. That's the substrate that lets us focus entirely on message quality and signal relevance instead of fighting the channel.
We push the full 3-touch sequence — M1, M2, M3 — into a HeyReach campaign as custom fields per lead. HeyReach handles connection requests, daily caps, sender health, and reply detection. SayIntel handles the part that's actually hard: deciding which 200 leads to put into the campaign this week, what signal each one is anchored to, and whether the draft is good enough to leave the queue.
Stacked together, the math gets fun. A 250-lead weekly batch at 25% reply rate is ~62 conversations. That's a fully-loaded SDR's monthly output, run by one operator tapping "Sì" in an approvals queue.
What we won't do
- Scrape LinkedIn behind anyone's back. Sender accounts are the client's; sending rules are HeyReach's; we don't touch the channel boundaries.
- Personalize with facts that aren't business-relevant.
- Send anything that hasn't been approved one-by-one by the operator.
- Optimize for opens or connects. Reply rate and meetings booked are the only numbers worth chasing.
- Pretend the LLM is the moat. The moat is the signal map, the QA gate, and the approval loop.
If you run HeyReach campaigns
If you're an agency or in-house team running HeyReach and want to see what your reply rates look like when the inputs are this clean, we'd love to compare notes. We're actively looking for HeyReach-native operators to co-build with.