The outreach system built around where conversion is actually won, not where it is easiest to work.
Acceptance, reply rate and meeting rate fail for different reasons. Most people tune the message when the list is the problem, and tune the list when the profile is the problem.
Inside: the conversion chain that tells you which stage is broken, twelve skills written out in full, two open-source skill kits you can install today, and the modules on the DM, competitor comment harvesting, and selling by chat.
Plus the shared daily cap, which is the constraint every one of these operates inside.
AI Driven, Personalized Outreach on LinkedIn: Prosp 💜
The Conversion Chain: Which Stage Is Actually Broken
Five stages. Each fails for a different reason, and each has a different fix.
Work the chain in order and stop at the first failure. Reporting five stages of numbers when the first is broken is why most outreach reviews change nothing.
The chain
1 ACCEPTANCE BELOW 15%
The connection note, or the list is off-ICP.
NOT the sequence. Do not touch the sequence.
2 ACCEPTANCE FINE, REPLIES BELOW 10%
The list is fine. The first message is the problem.
3 REPLIES FINE, MEETINGS LOW
The ask is mistimed, or the offer is wrong.
4 MEETINGS FINE, NOTHING CLOSING
Not an outreach problem. Price or fit.
5 ALL FINE, VOLUME LOW
Not quality. The daily cap split across campaigns.
One change per week. Change three and a lift tells you nothing about which one worked.
If figures are incomplete, name which stage cannot be assessed. A diagnosis on partial data points at the wrong stage, which is worse than no diagnosis.
Stage 1: acceptance, and the check nobody runs
Five checks, in order. Stop at the first failure.
1 Is a note attached at all?
2 Is it specific, or could it go to anyone?
3 Does it contain an ask? A request is not the place for one.
4 Is the list actually the ICP, or a search that returned
plausible-looking people?
5 IS THE PROFILE OPTIMISED?
Check five is the one people never run, because it is not in the outreach at all.
Every connection request drives a profile visit. The prospect reads the note, then looks at who sent it. A weak headline loses the accept there rather than in the message, and no amount of note-tuning fixes it.
The measurement that settles it: record acceptance for the two weeks before a profile rewrite and the two weeks after, on the same list quality. Nothing else changed, so the delta is clean.
Benchmarks. Below 15% means something is broken. 25% to 30% on a cold, signal-led list is healthy. Above 40% usually means the list is warm rather than cold, which is good but not comparable.
Stage 2: replies, and the seven checks
When acceptance is fine and replies are not, the message is the problem. Sample twenty sent messages and count which checks each one failed.
[ ] Under 300 characters
[ ] One question only
[ ] References something specific and DATED, not a category
[ ] No banned opener
[ ] No claim absent from the approved proof list
[ ] Register matches how the sender actually writes
[ ] No em dashes
Five of seven must pass. A message failing three will not be rescued by the follow-up.
The check that fails most is the third, and it fails in a specific way. "I saw you work in SaaS" is a category. "Saw the RevOps role you posted on the 14th" is a signal. The first is what a template produces and the second is what gets a reply.
The banned openers, burnt:
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"
"I hope this message finds you well"
Stage 3: the ask
Replies coming in and meetings not being booked is almost always timing, not wording.
Decide IF before HOW.
ASK NOW WHEN
- They asked something needing more than 400 characters to answer
- They named a problem you solve
- They asked about price, timeline or implementation
- Two substantive messages have gone each way
DO NOT ASK YET WHEN
- They replied with one line
- They have not named a problem
- It is still the first exchange
Ask one more question instead. One that gets them to name it.
The ask itself: name the length and the agenda. "15 minutes, three questions, no deck." Offer the link AND two concrete times, because some people book and some reply. Never "let me know what works", which is decision fatigue dressed as politeness.
Under 350 characters including the link.
Tag the moment a call is booked, so the sequence stops. A follow-up landing after someone has booked is the most avoidable bad impression in the system.
Where conversion is actually won
The uncomfortable version: most of the conversion is decided before any message is written.
Timing beats copy. Outbound works on two axes, fit and timing. Fit is the ICP. Timing is what happened this month that makes them more likely to act. Most teams score on fit alone, and a perfect message to someone with no reason to act now converts worse than an average message to someone hiring for the exact role.
Order beats volume. At 20 connection requests a day, a 400-row list is five weeks of the entire budget. Which twenty you contact on Monday decides the quarter.
The profile decides the accept. Everything upstream of the message. It is the cheapest fix in the whole system and the last one people try.
Warmth beats cleverness. A prospect who has seen your name on their own post before the request arrives accepts at a materially different rate from one who has not. Commenting is free; sends are not.
The weekly loop
MON Run the chain. Stop at the first failure. ONE change.
MON Engagement session, 25 minutes.
TUE Build and grade the new list. Below B, rebuild.
TUE Signal pass on what survives.
WED Top up the campaign, within the daily split.
THU Reply pass. Classify, draft, send yourself.
FRI Log what changed and what it produced.
MONTHLY Which signal tier produced the booked meetings?
The monthly question is the highest-value line in any report and the one most likely to be skipped, because it produces one sentence rather than a dashboard.
The 12 Skills, In Full
Twelve skills, written out in full. Save to .claude/skills/.
Each maps to a stage of the conversion chain, so when a stage fails you know which file to open.
01. signal-finder
---
name: signal-finder
description: Find a dated, verifiable reason to contact each lead
now rather than later. Run after the list exists, before any
copy. High effort.
---
ONE signal per lead, ranked by proximity to a budget decision.
TIER 1, budget is already moving
- Hiring for the role your offer replaces or supports
- Raised in the last 90 days
- New leader in post, last 60 days
- Publicly named the exact problem, last 30 days
TIER 2, the problem is visible
- Their site or content shows the specific gap
- Commented on a competitor's post
- Expanding into a new market or location
- Competitor of an existing customer
TIER 3, fit only, no observable trigger
RULES
Every signal VERIFIABLE and DATED. Record the date and the URL,
because it appears in the first message and they will check it.
No signal means write NONE.
Never stretch an attribute into a trigger. "Works at a SaaS
company" is fit, not intent, and using it as intent is the
clearest tell that a message was generated rather than written.
FAIL CLOSED on any signal you cannot date.
Add signal, tier, date and source_url columns.
TIER 1 VARIES BY BUYER. A funding round moves a VC-backed company
and means nothing to a bootstrapped one. Check the signal against
the company before ranking it.
02. job-post-trigger
---
name: job-post-trigger
description: Build a list from hiring signals. The strongest budget
signal available and the least worked.
---
SEARCH job boards for companies hiring the role your offer
replaces or supports, within the ICP.
CAPTURE per row:
- The exact line in the posting that reveals the manual work or
the gap. VERBATIM, in quotation marks.
- The posting date
- The hiring manager, who is usually the buyer
- Company size and whether it fits the price band
DROP anything older than 45 days. Either it is filled or the
budget moved.
WHY THIS IS THE STRONGEST SIGNAL
A company posting for the role has budget allocated and an unmet
need at the same time. Those two rarely coincide this visibly.
THE QUOTE IS LOAD-BEARING. The opener quotes the posting directly.
Paraphrasing loses the whole effect, because the point is that you
read their actual posting rather than a category.
03. post-engager-harvest
---
name: post-engager-harvest
description: Build a list from people engaging with relevant posts.
The highest-intent cold source there is.
---
SOURCES, strongest first:
1. Commenters on a post about the problem you solve
2. Likers on the same post
3. Commenters on a competitor's post
4. Event attendees
5. Group members
CAPTURE THE POST TOPIC per lead, not just the lead.
Someone who commented on a pricing post gets a different opener
from someone who commented on an onboarding post. Without that
column every message is the same message and the source advantage
disappears.
PER ROW: name, headline, company, linkedin_url, post_url, post
topic, comment type (substantive / short / reaction only), date.
RE-HARVEST WEEKLY. A post that performs for three weeks keeps
gathering commenters. Tag by harvest date so you can separate
early commenters from late ones. Early ones convert better.
NEVER name the post author or the competitor in any message.
04. fit-filter
---
name: fit-filter
description: Filter the raw list before any enrichment. Run on the
cheapest model at the lowest effort.
---
Per row, exactly one of KEEP, DROP or UNSURE, with a reason of 12
words maximum.
KEEP Matches the title band and the size band
DROP Fails either, hits a disqualifier, is a competitor, or is
too small for the price band
UNSURE Ambiguous headline. Do not guess.
KEEP and UNSURE to filtered.csv.
DROP to dropped.csv, so the filter is auditable later.
Report the drop rate. Below 40% usually means the search was too
narrow rather than the list being unusually good.
ENRICH NOTHING before this step. Enrichment is priced per lookup
and most of a raw list was never going to buy.
WHY CHEAPEST MODEL: this touches every row, so it is the
highest-volume call in the system and has the least reasoning in
it. Running it at high effort is where the cost goes.
05. list-grader
---
name: list-grader
description: Grade the filtered list A to F. The gate. Nothing
sends below B. Max effort.
---
EIGHT DIMENSIONS, 1 to 10:
1 ICP fit
2 Title accuracy: decision makers or influencers
3 Affordability against the price band
4 Data completeness
5 Deduplication, within the list and against active campaigns
6 Recency of activity
7 Reachability: how many are already 1st degree
8 Signal strength: how many carry a tier 1 or 2 trigger
A 9.0+ B 7.5+ C 6.0+ D 4.5+ F below
FAIL CLOSED below B. Name the two lowest dimensions and the fix
for each. Do not pass a failing list downstream.
DIMENSION 7 changes the campaign SHAPE, not the quality. Mostly
1st degree can be messaged directly. Mostly cold needs connection
requests first, which is a different daily budget entirely.
DIMENSION 8 predicts reply rate better than any other. A B-grade
list where most rows carry a tier 1 signal beats an A-grade list
with none.
An F grade usually means the offer is too broad, not that the
list is bad.
06. engager-scorer
---
name: engager-scorer
description: Score the list so the send budget goes in the right
order. Cheapest model.
---
DEPTH x FIT, each 1 to 3, multiplied. Maximum 9.
DEPTH
1 Reaction only, or no engagement
2 Short comment, or one visible signal
3 Substantive comment, or engaged more than once, or a tier 1
signal
FIT
1 Adjacent to the ICP
2 Right role wrong company, or the reverse
3 Exact match
6 to 9 contact this week
3 to 5 hold, watch for a second signal
1 to 2 no outreach
Sort descending. THIS ORDER IS THE CAMPAIGN.
At 20 connection requests a day, account-wide, a 400-row list is
five weeks of the entire budget. The order decides the quarter,
not the size.
OUTPUT the count per band and how many weeks of budget the top
band represents.
07. profile-optimizer
---
name: profile-optimizer
description: Audit and rewrite the profile. Run before any sending,
because every request drives a profile visit.
---
NINE CHECKS, each PASS, WEAK or FAIL with one line of evidence:
proof, empty adjectives, clarity of what they do, gaps, call to
action, visual consistency, mobile readability, searchability,
contact hygiene.
THEN REWRITE:
HEADLINE, three options, character-counted, each flagged for where
it truncates at around 60 characters on mobile. Never
job-title-at-company.
ABOUT, four movements, first person:
1 The hook. The buyer's problem, not the person's history.
2 The problem they solve, in the buyer's words.
3 Proof. An approved number with a timeframe.
4 One CTA.
Keywords in the first two lines, before the See More cut.
FEATURED: mandatory, not optional. Pin what the buyer needs before
a call.
EXPERIENCE: action plus method plus measurable outcome per role.
SKILLS: cut generic filler, merge into 10 to 15 clusters matching
the search terms from check 8.
RULES
Critique the positioning, never the person. Never comment on
appearance, age or anything unrelated to the work.
Never invent a metric. Ask for one or leave the gap.
MEASURE IT: acceptance for the two weeks before and after, on the
same list quality. Nothing else changed, so the delta is clean.
08. connection-note-writer
---
name: connection-note-writer
description: Write the note that decides acceptance. Under 200
characters.
---
THE NOTE IS NOT THE MESSAGE. It has one job: get the accept.
STRUCTURE
One line naming the specific, dated thing you saw.
One line on why that made you reach out.
No ask.
RULES
- Under 200 characters.
- NO ASK. A connection request is not the place for one. The ask
halves acceptance and the accept costs you nothing.
- Specific and dated. "Saw your comment on the pricing thread
last Tuesday" beats "loved your content".
- Never mention the product.
- No compliments about the person. Compliment the specific thing,
or nothing.
- No em dashes.
IF THERE IS NO SIGNAL, send no note. A blank request outperforms a
generic one, because a generic note tells them you have a list.
ACCEPTANCE BELOW 15% MEANS THIS FILE, or the list. Not the
sequence.
09. opener-writer
---
name: opener-writer
description: Write the first message after acceptance.
---
STRUCTURE
Line 1 the signal, dated and specific
Line 2 the inference you drew from it
Line 3 the question
RULES
- Under 300 characters.
- Line one references the signal SPECIFICALLY, not its category.
- One ask, answerable in under ten words.
- Never mention the product in message one.
- No compliments. No "hope this finds you well".
- No em dashes.
ONE VERSION PER TIER
Tier 1 lead with the signal. It is recent and they know it.
Tier 2 lead with the observable problem. There is no event.
Tier 3 lead with the segment pattern. Claim no personalisation
you cannot back.
BANNED, burnt:
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"
10. sequence-builder
---
name: sequence-builder
description: Turn the copy into a node-by-node spec. High effort.
Never run this low.
---
Output a node list, not prose. Per node: action, delay, exact
copy, exit condition.
THE SHAPE
1 Import from source
2 Condition: lead is 1st level
3 YES branch: message, using the merge prompt
4 NO branch: connection request with note, then message on
acceptance
5 Wait 3 days. Follow-up, different angle.
6 Wait 5 days. Close-out. Then add tag.
RULES
- Four touches maximum. After that the answer is no.
- Reply stops the sequence, always.
- NO WAIT NODE after a connection request. Acceptance
auto-detects over two weeks, checking every 24 hours. This is
the most common unnecessary node.
- Every touch a different angle. Never "just following up".
- Any voice note pairs with a written message.
THE CLOSE-OUT at touch four outperforms the two before it
combined, because permission to say no removes the pressure that
was stopping them replying.
STATE the daily send split against the account ceiling.
FAIL CLOSED if the volume exceeds the ceiling. Give the split
rather than writing a sequence that restricts the account.
11. message-self-check
---
name: message-self-check
description: Check every message before it enters the sequence. Run
as a fresh reviewer, not as the writer.
---
SEVEN CHECKS. Five must pass.
[ ] Under 300 characters
[ ] One question only
[ ] References something specific and dated, not a category
[ ] No banned opener
[ ] No claim absent from the approved proof list
[ ] Register matches how the sender actually writes
[ ] No em dashes
Report pass or fail per check WITH the evidence. Never summarise
as "looks good".
Fewer than five passing means rewrite, not send.
RUN AS A FRESH REVIEWER. A model reviewing its own output defends
it rather than checking it.
WHEN STAGE 2 OF THE CHAIN FAILS: sample 20 sent messages and count
which checks each failed. The check that fails most is the fix.
12. reply-router
---
name: reply-router
description: Classify every inbound reply and route it. Cheapest
model, runs continuously.
---
Exactly one category:
INTERESTED Wants more, asks about the offer
TIMING Interested, not now. Capture the date named.
OBJECTION Price, fit, incumbent, capacity
WRONG_PERSON Not their remit. Ask who owns it.
NOT_INTERESTED Clear no. Thank them, stop, never pitch again.
AUTO_REPLY Out of office. Reschedule to their return date.
ESCALATE Anything below 8 confidence
Per reply: category, confidence 1 to 10, the sentence that decided
it, and the recommended next action.
Below 8 confidence, always ESCALATE. Sarcasm, brevity and
politeness all read the same in text.
Never auto-send to NOT_INTERESTED.
WRONG_PERSON is the most valuable category and the most commonly
binned. Ask who owns it, and feed the answer back into the ICP.
One corrected job title is worth more than the deal you lost.
FOR INTERESTED, decide IF before HOW:
Ask for the call when they have named a problem, asked about price
or timeline, or two substantive messages have gone each way. On a
one-line reply, ask one more question instead.
THE ASK: name the length and the agenda. Offer the link AND two
concrete times. Never "let me know what works".
Tag after booking so the sequence stops.
Which map to which stage
| Chain stage | Open these |
|---|---|
| 1. Acceptance low | connection-note-writer, profile-optimizer, fit-filter |
| 2. Replies low | message-self-check, opener-writer, signal-finder |
| 3. Meetings low | reply-router, sequence-builder |
| 4. Nothing closing | None of these. Price or fit. |
| 5. Volume low | sequence-builder, engager-scorer |
Stage 4 has no skill deliberately. When meetings are booking and nothing closes, the outreach is working and the problem is elsewhere. Tuning the message at that point wastes a quarter.
Twelve skills write it. Prosp sends it 💜
The BEST DM on LinkedIn
Three lines, under 300 characters, one ask.
What makes it work is not the structure. It is that line one references something dated and verifiable that the prospect can check.
The structure
Line 1 The signal. Dated, specific, checkable.
Line 2 The inference you drew from it.
Line 3 The question.
Under 300 characters. Longer reads as a template regardless of how good it is.
One ask, answerable in under ten words. Two questions gets you an answer to the easier one. Three gets you nothing, because now it is work.
Never mention the product in message one. The message is for the reply, not the sale.
No compliments. No "hope this finds you well". No "quick question". No em dashes.
What counts as a signal
This is the part that separates a good DM from a mail merge with a first name in it.
TIER 1, budget is already moving
- Hiring for the role the client's offer supports
- Raised in the last 90 days
- New leader in post, last 60 days
- Publicly named the exact problem, last 30 days
TIER 2, the problem is visible
- Their site or content shows the gap
- Commented on a competitor's post
- Expanding into a new market
TIER 3, fit only, no observable trigger
Record the date and the URL when you find it. It goes in the message and they will check it.
"Works at a SaaS company" is fit, not a signal. Using it as one is the clearest tell that a message was generated rather than written, and it is the single most common failure in cold outreach.
No signal means write NONE. Then use the tier 3 version, which leads with a segment-level pattern and claims no personalisation you cannot back.
Proof, when it is not your proof
Never use your own case studies in a client's DM. You are writing as them.
Pull from their approved proof list, with a permission column:
YES name them
ANONYMISED describe them by type and size
NO pick the next row
Use the number exactly as written. Never round it, annualise it, or convert it into a percentage to make it look better.
If no row is a reasonable match, write the version with no results claim. A stretched comparable is worse than none, because the prospect is the one who spots it.
The banned openers
These are burnt. Every one of them appears in a hundred messages a week in your client's inbox.
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"
"I hope this message finds you well"
"I'll keep this short"
"Just reaching out because"
The second one is the most-sent opener in B2B and the worst performing. It tells them you have a list, not that you looked at them.
Before it sends
Seven checks. Five must pass, or rewrite rather than send.
[ ] Under 300 characters
[ ] One question only
[ ] References something specific and dated, not a category
[ ] No banned opener
[ ] No claim absent from the client's approved proof
[ ] Register matches their voice file
[ ] No em dashes
Then check the ceiling. Twenty connection requests a day on that profile, account-wide, whatever else is running on it. A message that is perfect and sends at 60 a day gets the account restricted, which costs more than a bad message.
Steal Your Competitor's Leads from LinkedIn Comments
The highest-intent cold source available.
A commenter engaged with a specific idea on a specific date, and you know which idea. That last part is what makes the message work.
Capture the topic, not just the lead
This is the field everyone skips and the one that makes the difference.
PER ROW
name
headline
company
linkedin_url
post_url
POST TOPIC what the post was actually about
COMMENT TYPE substantive, short, or reaction only
date of the comment
Someone who commented on a post about pricing gets a different opener from someone who commented on a post about onboarding. Without the topic column, every message is the same message and the source advantage disappears.
Score before you send
Depth times fit, each 1 to 3, multiplied. Maximum 9.
DEPTH
1 Reaction only
2 Short comment
3 Substantive comment, or engaged more than once
FIT, against the client's ICP
1 Adjacent
2 Right role, wrong company type, or the reverse
3 Exact match
6 to 9 Contact this week
3 to 5 Hold, watch for a second signal
1 to 2 No outreach. Keep the row, spend no send on it.
At 20 requests a day on a client account, a 400-row list is five weeks of their entire budget. The order decides the quarter, not the size of the list.
Import broad, send narrow. Importing costs nothing. Sending is the capped resource.
The opener
Line 1 The TOPIC of the discussion, and what was interesting
about it. Not the competitor. Not the post author.
Line 2 Your client's angle on that same topic, one line.
Line 3 A question about their situation specifically.
Never say "I saw you commenting on X's post". It reads as surveillance and it gets screenshotted, and it is the client's account carrying it.
The topic is the bridge. Where the list came from stays invisible.
Under 300 characters. One ask. Never mention the product in message one.
Running it across a book
Posts their ICP engages with, not posts you find interesting. A post you would comment on is a proxy, and it is usually wrong.
Deduplicate across every client you run. Two clients in adjacent niches will harvest overlapping comment sections. The same person receiving two different pitches from two profiles you operate is visible to them and eventually to both clients.
Keep the post URL against every row. When a client asks where a lead came from, "a comment on this post, on this date" is a better answer than "LinkedIn".
The same post keeps producing. A post that performs for three weeks keeps gathering commenters. Re-harvest weekly rather than once, and tag by harvest date so you can tell early commenters from late ones. Early commenters convert better.
What to report
Which post topics produced replies
Which post topics produced meetings
Substantive commenters vs reaction-only, as a conversion split
That first line is a content insight as much as an outreach one. If posts about pricing produce replies and posts about onboarding do not, the client's content calendar should know.
Prosp imports commenters and likers directly from any post URL, including reactions that arrive later, which is what makes weekly re-harvesting a setting rather than a task. Use add tag nodes and a check data in column condition to route only the 6+ scores into the sending branch, and keep the rest in the workspace for when a second signal appears.
10+ Copy/Paste DM Templates
Pick one per client. Never reuse across two.
Two accounts you run, in the same niche, sending near-identical messages to an overlapping audience is the fastest way to lose both.
Before you use any template
Three things get replaced, every time, or the template is worse than writing from scratch.
1. The proof. Templates ship with generic claims. A generic claim under a client's name is theirs to defend when someone asks for the source. Swap in their approved numbers, with the permission column checked.
2. The objections. A template answering objections nobody raised produces confident, irrelevant replies. Ask the client for the five they actually hear weekly and write those in.
3. The signal slot. Every template has a placeholder for why you are messaging. If you fill it with a fit attribute rather than a dated trigger, the template is doing nothing the recipient cannot see through.
Matching the template to the buyer
The template that works depends on who signs, not on what you are selling.
FOUNDER-LED, under 20 people
Outcome and speed. They have no process to protect. Price is the
only real objection and they raise it in message two.
FUNCTIONAL HEAD
They have budget but must defend the choice. Give them something
forwardable, because that document does the selling in rooms you
are not in.
OPS OR REVOPS
They buy process, not outcomes. Lead with how it fits what they
already run.
PROCUREMENT-GATED
Nothing happens without a budget line. If the client has no
security posture, disqualify early rather than forecasting it.
RESELLER OR AGENCY
Lead with the margin maths, not the features.
Establish which one before picking a template. Most of the reply-rate difference between two campaigns is this, not the wording.
The rules that hold across every template
Under 300 characters
One ask, answerable in under ten words
Line one references something dated and checkable
Never mention the product in message one
Every touch a different angle. Never "just following up".
Four touches maximum. After that the answer is no.
Reply stops the sequence, always.
No em dashes
Only the opening line should vary across a list. Keep the ask identical so you can tell the client what failed rather than guessing between five variables.
Any voice note pairs with a written message. Never sent alone.
Before anything sends
Turn on skip-leads-contacted-by-another-campaign. Two of your campaigns reaching the same person is visible to them and to the client.
Deduplicate across every client you run, not just within the list. Two clients in adjacent niches will share prospects.
Check the ceiling on that specific account. Twenty connection requests a day, account-wide, whatever else is running. A new client account starts at ten.
Preview the merge output against ten real contacts. That catches the prompt that reads fine on lead one and produces something odd on lead five.
On the reply rate in the title
Any figure attached to a template is someone else's, measured on someone else's list, in a different market, at a different time.
Record your own within two weeks. Sent, accepted, replied, positive. Per client, per template.
That number is the one you take to a client conversation, and it is the only one you can defend. A borrowed benchmark in a client report is a question you cannot answer.
If your figure is lower than the template claims, that is not a failure. It is a list problem or a signal problem, and the diagnostic tells you which.
Prosp has the skip-leads-contacted-by-another-campaign setting at campaign level, which handles the deduplication across everything running on that account. Preview runs sample outputs against real contacts before anything sends.
Builder defaults sit above the recommended limits, so lower them rather than accepting them. Set the cap per campaign, not per intention.
Sell-By-Chat Framework
Settle who presses send before the first reply arrives.
This is the module that turns replies into calls, and it is the one where running someone else's account changes the most.
The permission question, first
Three options. One of them goes in the contract, not agreed in a panic on day nine.
1 YOU DRAFT, THEY APPROVE
Slowest. Safest. Right for regulated clients and for anyone
whose personal reputation is the product.
2 YOU SEND UNDER THEIR NAME
Needs written permission and a clear boundary on what you
cannot say. Right for most engagements.
3 YOU HAND OFF EVERY REPLY
They handle it. Right when the client is the product and no
ghost-written reply survives a second message.
Never commit to price, scope or timeline on their behalf, under any of the three. If a reply asks any of those, hand it over the same day. That is a commercial decision and it is the fastest way to damage an engagement.
Classify before you draft {efficient}
Exactly one category per reply.
INTERESTED Wants more, asks about the offer
TIMING Interested, not now. Capture the date they named.
OBJECTION Price, fit, incumbent, capacity
WRONG_PERSON Not their remit. Ask who owns it.
NOT_INTERESTED Clear no. Thank them, stop, never pitch again.
AUTO_REPLY Out of office. Reschedule to their return date.
ESCALATE Anything below 8 confidence
Below 8 confidence, escalate. Do not guess at tone. Sarcasm, brevity and politeness all read the same in text, and a misread reply sent under a client's name is theirs to apologise for.
Never auto-send to NOT_INTERESTED. A human closes that loop.
WRONG_PERSON is the most valuable category and the most commonly binned. Ask who owns it, and feed the answer back into the ICP file. One corrected job title is worth more than the deal you lost.
Match their register before you write
Message length reply within roughly 20% of it
Punctuation do they use full stops in short messages
Capitalisation sentence case or lowercase
Formality "Hi James," or "hey"
Emoji if they do not, you do not
A three-line reply to a six-word message reads as eager. A six-word reply to three paragraphs reads as dismissive. Register mismatch is the most common reason a warm thread cools.
Never mirror hostility or unprofessionalism. Match energy, not behaviour.
One question, always
Count the questions in the draft. If there is more than one, pick the one whose answer changes what you do next and cut the rest.
Two questions gets you an answer to the easier one. Three gets you nothing, because now it is work.
The test for the surviving question: could they answer it in under ten words while walking? If not, it is too big for a DM and belongs on a call.
Decide IF before HOW
ASK FOR THE CALL WHEN
- They asked something needing more than 400 characters to answer
- They named a problem the client solves
- They asked about price, timeline or implementation
- Two substantive messages have gone each way
DO NOT ASK YET WHEN
- They replied with one line
- They have not named a problem
- It is still the first exchange
Ask one more question instead, one that gets them to name it.
The ask itself: name the length and the agenda. "15 minutes, three questions, no deck." Offer the link AND two concrete times, because some book and some reply. Never "let me know what works", which is decision fatigue dressed as politeness.
Under 350 characters including the link.
Tag the lead the moment a call is booked, so the sequence stops. A follow-up landing after someone has booked is the most avoidable bad impression in the system, and it is the client's name on it.
The handoff
What the client gets, per booked call, before it happens.
The original signal, dated, with the URL
The full thread, verbatim
What the prospect said the problem was, in their words
Which objection came up, if any
What you committed to, and what you deliberately did not
That last line protects both of you. A founder walking into a call not knowing what was promised is how a good lead becomes an awkward thirty minutes.
What goes in the weekly report
Reply counts are the wrong headline. The categories are the story.
Replies, split by category
Interested, as a rate of replies not of sends
Timing replies, with the dates they named
Objections, ranked by frequency
Wrong-person replies, and what the correct title turned out to be
Meetings booked, and the signal tier that produced each
The objection ranking is the most useful thing you will hand a client all month. Five weeks of it tells them what their positioning is actually up against, and almost nobody collects it.
The replies land in one place. Prosp has a unified inbox spanning every connected client account, with filters for campaign, replied and unread, so the daily classification pass runs over one queue rather than eight logins.
Add tag writes the category back against the lead, and the lead states feed the report directly: Not Contacted, In Campaign, Contacted, Not Accepted after 14 days with auto-withdraw, Replied which stops the campaign, Duplicate, Blacklist, Failed.
For the client-facing numbers, there is native HubSpot integration with field mapping, 12 webhook events including Message Replied and Connection Accepted, and a REST API at prosp.ai/api/v1/leads.