The ten-module LinkedIn system, rewritten for people running it on someone else's account.
Same modules. What changes is that the ICP comes from their closed-won rather than yours, the voice comes from three of their real posts, and every client account carries its own send ceiling that cannot be aggregated with anyone else's.
Inside: how to define an ICP from deal data, the profile rewrite that has to happen before any sending, viral post templates, the best DM on LinkedIn, Sales Navigator, two competitor scraping plays, the 500+ comment lead magnet strategy, 10+ copy-paste DM templates, and the sell-by-chat framework.
Plus the 24 Claude skills that run the modules, as a public repo you clone in three commands, and the page most of these guides skip: what breaks when you run it across eight accounts instead of one.
AI Driven, Personalized Outreach on LinkedIn: Prosp 💜
10+ Copy/Paste DM Templates (15%+ reply rate)
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.
Running This Across Clients: What Changes, and the Ceiling
The ten modules that follow are the system as it runs on one account.
This page is what changes when you run it across a book of clients.
Read it first. Four of the ten behave differently at that scale.
What actually changes
| Module | Solo | Across a book of clients |
|---|---|---|
| ICP | Once | Per client, from THEIR closed-won. Never yours. |
| Profile | Yours | Theirs. Rewrite before any sending on that account. |
| Post templates | Your voice | Their voice, from three of their real posts |
| The DM | Your signal | Same rules, different proof per client |
| Sales Nav | One search | One saved search per client, never merged |
| Competitor scraping | Your competitors | Theirs. Yours are irrelevant to their buyers. |
| Comment scraping | Any relevant post | Posts their ICP engages with |
| Lead magnet | Your resource | Built for their audience, sent from their account |
| DM templates | Pick one | Pick per client. Never reuse across two. |
| Sell-by-chat | You reply | You draft, they approve, or you send under their name with written permission |
The two rows that catch people out are competitor scraping and DM templates.
Running your own competitor list against a client's ICP produces a list of people who buy what you sell, not what they sell.
And a template reused across two client accounts in the same niche means two profiles sending near-identical messages to an overlapping audience.
The ceiling, per account
| Action | Free | Premium / Sales Nav |
|---|---|---|
| Connection requests | 20/day, 100/week | 30 to 50/day |
| Direct messages | ~100/week | ~150/week |
| Profile views | 80/day | 150/day |
| Comments | 60/day | 60/day |
| InMail | n/a | 50/month |
Account-wide, not per campaign. Three campaigns at 20 each means one account attempting 60 a day. That is how accounts get restricted.
Every client account has its own ceiling. Do not aggregate. Eight clients is eight separate budgets that each need splitting, not 160 sends from one place.
A brand new client account starts at 10 a day, not 20. A profile with no history suddenly sending at full rate is the clearest possible pattern. Build to 20 over the first fortnight.
Request limits and message limits are separate buckets, so both run at full allocation at once. When capped, only connection requests pause, and it resets in 2 to 3 days.
The file structure
clients/
├── acme/
│ ├── client-context.md the engagement, ICP, proof, ceiling
│ ├── voice.md three of THEIR posts, pasted in full
│ ├── icp.md derived from their closed-won
│ ├── prospects.csv
│ ├── dropped.csv so the filter is auditable
│ └── posts/
└── globex/
└── ...
Never share a voice.md between clients. Two accounts that sound like the same person is the fastest way to lose both, and it is obvious to anyone who follows both.
Keep dropped.csv. When a client asks why you never contacted a company they like, that file is the answer.
The field people leave blank is "other campaigns running on this account". Leave it empty and you will propose a volume that restricts their account.
The order to run the modules in
Per client, not all at once.
Week 1, day 1. Module 1, the ICP, from their closed-won deals rather than a kickoff workshop. Then module 2, the profile, because every connection request and every comment drives a profile visit and a weak headline loses the accept there rather than in the message.
Week 1 to 2. Commenting only. No posting, no outreach. A post published into a feed where nobody recognises the client's name reaches only the followers you are trying to grow. Two weeks of substantive comments on large posts in their space changes that, and it costs nothing but time.
Week 3. Module 3, the post templates. Three a week maximum, one a day maximum.
Week 3 onward. Modules 4 to 9. The DM, Sales Navigator, the two scraping plays, the lead magnet, the templates.
Continuously from the first reply. Module 10, sell-by-chat.
Running outreach in week one works. It just works worse, and the difference is two weeks of free commenting you did not do.
The weekly loop, per client
MON Diagnostic. One change, not three.
MON Commenting session, 25 minutes.
TUE Post goes out. Commenting session.
WED New list built, filtered, graded.
WED Below B, rebuild. Above B, find the signals.
THU Second post. Top up the campaign inside the split.
FRI Reply pass across the inbox.
FRI Third post if the week has earned it.
DAILY Five minutes on high-intent signals, before anything else.
One change per week per client. Change three things and a lift tells you nothing about which one worked, which is the difference between a retainer you can defend and one you cannot.
Running eight accounts without eight logins
The modules produce lists, copy and sequences. None of them sends anything, and that is deliberate. A browser session driving a client's account from your machine produces activity from an unusual environment at machine pace, and the account is not yours to risk.
Prosp is the send layer. One account per client profile, each created in its own browser session because cookies conflict, all managed from one workspace. A free dedicated residential proxy per connected account, so the activity looks like it comes from them.
White-label with your own domain plus a sub-workspace per client, so they log into your brand rather than someone else's.
The unified inbox spans every connected account with filters for campaign, replied and unread, which is what makes the Friday reply pass one task rather than eight.
Pricing scales with the book: $79.99 per account at 1 to 5, $59.99 at 6 to 30, $39.99 at 31 plus, with roughly 23% off annually.
How to Define Your ICP (important)
Build it from their closed-won deals, not from the kickoff call.
The output that earns the engagement is the gap between who they say they sell to and who actually signed.
The pull
Ask for a CRM export of closed-won, last 12 months. If they cannot produce one, that is itself the finding, and the first month of the engagement is building the tracking rather than the pipeline.
Per deal, you need seven fields:
company size
industry
buyer job title, as written on the contract
deal size
days from first touch to signature
the trigger that started it
how they found you
Field six is the one nobody records and the one that decides your targeting. Ask them to reconstruct it deal by deal on a call rather than sending a form.
The derivation
Read the closed-won export.
OUTPUT to clients/[name]/icp.md:
1. Three attributes correlating with fast closes
2. Three correlating with long or lost deals
3. The exact job titles that actually signed, verbatim
4. The size band with the highest win rate
5. A searchable filter string built from point 3
6. The gap between the stated ICP and the actual one
7. Who this is explicitly NOT for
FAIL CLOSED with fewer than 10 closed-won deals. Report the count
and say the answer is not in the data yet. Do not derive a pattern
from three customers and present it as strategy.
FAIL CLOSED if the export has no job titles. Name the missing field
rather than inferring it from company size.
Point 6 is the deliverable. Telling a client in week one that their real buyer is a different job title from the one on their website changes the whole engagement, and it is the thing they cannot get from a workshop.
Running it across a book
One ICP file per client, in clients/[name]/icp.md. Never a shared one, and never yours.
The mistake that costs a quarter: using your own ICP as a starting point because it is faster. Your buyers and their buyers are different populations, and the overlap is usually smaller than it looks.
Re-derive quarterly. Run it again against the last quarter's closed-won. If the winning job title has moved, everything downstream needs rebuilding, and finding that out in month six is cheaper than month twelve.
Record who signed, not who you first contacted. The two are different in most deals with more than one person involved, and targeting the first-contact title is how a pipeline fills with people who cannot buy.
The check nobody runs
Before building any list, do the send maths.
How many companies match the filter string?
At 20 connection requests a day, how many weeks to work the list?
Under four weeks of sending = the ICP is too narrow for a campaign.
It is a list of people to contact by hand.
Over six months of sending = the ICP is too broad. You will never
reach the bottom, so the ordering matters more than the size.
Tell the client the number. A defined ICP that produces sixty prospects is a positioning conversation, not a targeting one, and it is better had in week one.
Optimise your profile
Day one, before any sending on that account.
Every connection request and every comment drives a profile visit. A weak headline loses the accept there rather than in the message, and no amount of sequence tuning fixes it afterwards.
The audit, nine checks
Each marked PASS, WEAK or FAIL with one line of evidence. Send the audit before the rewrite. The audit is what justifies the rewrite.
1 PROOF
Is there a number anywhere above the fold?
2 EMPTY ADJECTIVES
Count the words that could describe anyone. "Passionate",
"results-driven", "strategic". Each one is a wasted line.
3 CLARITY
Could a stranger say what this person does in one sentence
after five seconds?
4 GAPS
Unexplained employment gaps, or a current role with no
description.
5 CALL TO ACTION
Is there one? Is it in the About, the Featured, or nowhere?
6 VISUAL CONSISTENCY
Does the banner say the same thing as the headline?
7 MOBILE READABILITY
The headline truncates around 60 characters on mobile, which is
where most profile visits happen. What survives the cut?
8 SEARCHABILITY
Are the terms their buyer searches actually on the page?
9 CONTACT HYGIENE
Dead links, an old company, a personal email nobody monitors.
The rewrite
Headline. Three options, each character-counted, each flagged for where it truncates on mobile. Never job-title-at-company. The format that works: who they help, what changes, one specific.
About. Four movements, first person.
1 The hook. One line, the buyer's problem not the person's history.
2 The problem they solve, in the buyer's words.
3 Proof. A number the client approved, with a timeframe.
4 The CTA. One action.
Keywords in the first two lines, because that is what shows before
the See More cut.
Featured. Mandatory, not optional. Pin the thing the buyer needs before a call: a case study, a resource, a booking link.
Experience. Action plus method plus measurable outcome, per role. Not responsibilities.
Skills. Cut generic filler, merge into 10 to 15 clusters matching the search terms from check 8.
Running it on someone else's profile
Critique the positioning, never the person. Never comment on appearance, age, or anything unrelated to the work. You are auditing a business asset they own, and the line matters.
Never invent a metric to fill a gap. Ask them for one or leave it out. A fabricated number in a client's About section is theirs to defend when someone asks for the source.
Get the rewrite approved in writing before it goes live. A profile is the most personal asset in the engagement, and a founder who finds their About rewritten without sign-off remembers it.
Do it before the campaign, not alongside it. A week of sending against an unoptimised profile is a week of acceptance rate you cannot get back.
What to measure
Record the acceptance rate for the two weeks before the rewrite and the two weeks after, on the same list quality.
That figure is the cleanest attribution available in the whole engagement, because nothing else changed. It is also the number that justifies the audit line on the next invoice.
If acceptance sits below 15% after the rewrite, the problem is the list or the connection note, not the profile. Stop optimising it further.
Viral Post Templates
Templates give you the structure. The voice has to come from them.
The only reliable source is three of their own posts that performed, pasted in full. Three real posts demonstrate a voice. Three adjectives describe one, and you cannot write from a description.
Before any template
Build clients/[name]/voice.md on the kickoff call. It takes twenty minutes and it decides whether every draft afterwards sounds like them or like software.
# Voice: [CLIENT]
## Three adjectives
## Two phrases they would never say
## Three posts that performed, pasted IN FULL
Not links. Not summaries. The full text.
## What annoys them
The strongest content comes from here. Ask on the call and write
down the actual words they use.
## Approved proof
Numbers they can stand behind publicly, each with a timeframe.
## Banned
Claims they cannot evidence.
Numbers nobody approved.
The "what annoys them" field is the one people skip. A founder complaining about something in their industry for ninety seconds has just given you four posts.
The six post structures
Rotate. Never two of the same shape in a week.
1 THE CONTRADICTION
"Everyone says X. We stopped and it improved."
2 THE NUMBER
A specific figure, with no context until line three.
3 THE ADMISSION
Something that costs them to say. Highest reply rate of the six.
4 THE NARROW CLAIM
So specific it is checkable.
5 THE OPEN QUESTION
No obvious answer. Never rhetorical.
6 THE MID-SCENE OPEN
Start three sentences in.
Hook test. Delete the body. If the hook still feels complete, it is a summary, not a hook.
Write the hook last. A hook written first constrains the body to fit it, which is why so many posts have a great line one and nothing underneath.
The humanising pass
Run this on every draft before the client sees it. A client who spots AI phrasing stops trusting the whole deliverable, and you do not get that back.
[ ] Numbers not all round. 85 to 11, not 85 to 9.
[ ] No perfect parallelism in lists. One element differs in length
or form.
[ ] One genuine break in the flow of thought, not an inserted
"anyway".
[ ] Case studies carry one vague detail beside one hyper-specific
one. Real memory is uneven.
[ ] Not every post resolves. One a week ends open.
[ ] No em dashes anywhere.
[ ] One idea per line, three lines maximum per paragraph.
Final test: could a competent person have written this in five minutes? If it reads like it took a committee, that is what it reads as.
The cadence, and why it is lower than they want
Three a week maximum. One a day maximum. Same-day multiples suppress each other, so the second post costs you the first.
Three pillars, not five. A pillar is a repeatable topic, not a theme. "Cold email" is a topic. "Growth" is a theme and produces nothing. If the client cannot talk about a pillar for twenty minutes without notes, it is not theirs.
A missed day beats a thin post. Publishing to hit a number trains the audience to skim.
Set this expectation in week one. Clients ask for daily because they have been told volume wins, and walking it back in month two reads as you under-delivering rather than as the right call.
What goes in the report
Not impressions. Never impressions as a headline number.
Which pillar produced conversations, not reach
Which post shape pulled, by structure number
Comments from ICP-matching profiles, as a count not a percentage
Profile visits in the 48 hours after each post
Which post preceded each inbound enquiry
The last line is the one clients actually care about and the one nobody tracks. Log the date of every inbound and match it against the calendar.
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.
Scrape Competitor Company Followers and Send Personalized DMs
Their competitors, not yours.
Running your own competitor list against a client's ICP produces a list of people who buy what you sell, which is a different population entirely.
Picking the competitor
Ask the client to name three, then check the overlap yourself.
Founders name the competitor they dislike, not the one they lose to. Those are rarely the same company, and the one they lose to is the one whose followers are worth harvesting.
Score each candidate before harvesting:
AUDIENCE OVERLAP Would their follower plausibly buy from our client?
SIZE PARITY A competitor ten times the size has followers who
mostly do not fit our client's price band.
RECENCY Are they still posting? A dormant page has a
dormant follower list.
HONEST DIFFERENCE Where is the competitor genuinely better? Write
it down. It comes up in a reply within a week.
Harvest the top two only. A follower count is not an addressable market.
The harvest
Company page followers are the weakest of the available sources, and worth knowing that before you start.
STRONGEST TO WEAKEST
1 Commenters on their posts, substantive comments
2 Likers on posts about the problem both solve
3 Attendees of their events or webinars
4 Company page followers
A follower expressed interest once, possibly years ago. A commenter engaged with a specific idea on a specific date, and you know which idea.
If you are harvesting followers anyway, treat every row as tier 3 fit-only until a second signal appears.
The filter, which runs harder here
DROP
- Their employees. Check the company field on every row.
- Their existing customers, where visible from posts or comments
- Other competitors
- Anyone outside the client's ICP bands
Expect 60% to drop. Under 50% means the filter is too loose for this source.
The employee check is easy to miss and embarrassing to get wrong. A message from your client's account to someone who works at the competitor gets screenshotted, and it is your client's name on it.
The rule that is not optional
Never name the competitor in any message. Not in the connection note, not in the DM, not in a follow-up.
Not "I saw you following X". Not "if you're looking at X". Not anywhere.
It reads as surveillance, it gets screenshotted, and it is the client's account and reputation carrying it rather than yours.
The bridge is the topic, not the competitor. Lead with the problem both companies solve, and the competitor stays invisible.
If a prospect asks how you found them, answer honestly and briefly. Evasion at that point is worse than the original question.
The one objection this generates
"We already use [competitor]."
That is information, not rejection. Ask what it does not do, and listen properly, because the answer is worth more to the client than the deal is.
Feed it back. A list of what the competitor does not do, gathered from twenty replies, is a genuine deliverable and most agencies throw it away.
Never characterise the competitor's team, pricing motive or roadmap in a reply. Name where they are genuinely better, unprompted. It is the fastest way to be believed on everything else.
Company page followers can be imported directly in Prosp, alongside post engagers, event attendees, group members, search URLs and CSV. The seven sources rank by intent, and followers sit at the bottom of that list for the reason above.
Import broad and filter at the send step. Importing costs nothing; the twenty a day on the client's account is the resource you are spending.
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.
500+ Comment Lead Magnet Strategy (using AI to respond)
A post that lands produces hundreds of comments, and every one is a person expecting a link from a client account with a twenty a day ceiling.
Plan the delivery before you post, not after.
The resource
Built for their audience, delivered from their account. A magnet that is really about your service, posted under their name, converts badly and reads as borrowed.
Define it by contents, never benefits.
GOOD 43 prompts, 6 sequences, 1 tracker
BAD unlock your potential
If you cannot list objects, it is not finished, and the post will underperform regardless of how good the hook is.
One thing inside should be useful on its own. That single item is what the follow-up message names four days later, and "did the tracker help?" beats "did you get a chance to look?".
Three variants, three keywords
Each a different angle, not a rewording. A synonym swap is not a variant.
A ANNOYANCE
Opens on what is irritating about the current answer.
Best when the majority position is lazy.
B PAIN
Opens on what it costs to keep doing it the current way.
Specific, in hours or money.
C RESULT
Opens on the outcome, then the mechanism.
Requires real approved proof. If the client has none, do not
write variant C. Write a second angle on A or B instead.
Each gets its own keyword, same semantic family. OUTBOUND, PIPELINE, SEQUENCE. Never OUTBOUND, OUTBOUND2, OUTBOUND3, which reads as a reposted campaign.
Rotating keywords is the only free attribution you get. You can tell the client which angle pulled rather than guessing.
The CTA
Depends on the client's connection state, which you check before writing.
MOSTLY CONNECTED
Comment "[WORD]" and I'll DM it over.
MOSTLY NOT CONNECTED
Comment "[WORD]" and connect with me so I can send it.
PS. If we're already connected, just drop the comment.
One action. Never like AND comment AND share AND follow. Each additional ask halves the response.
Hook is lines one to two and must earn the See More click alone. No hashtags in the body.
The delivery, which is where this breaks
Five hundred comments against a twenty a day ceiling is five weeks of the client's entire send budget.
1 Import commenters AND likers from the post URL.
Enable future reactions so it keeps pulling as the post runs.
2 Score: depth x fit. Deliver to 6+ first.
3 Condition: is the lead already 1st degree?
4 YES message with the link
NO connection request, then message on acceptance
5 Reply publicly to every comment
No wait node after the connection request. Acceptance auto-detects over two weeks, checking every 24 hours.
Everyone who asked gets the resource. The score decides what happens afterwards, not whether they get what they asked for.
Node 5 is the one people skip. Public replies keep the post alive, which extends the window the list keeps growing in.
If the post outruns capacity, queue the rest. Do not raise the daily limit on a client account to catch up.
The delivery message
Three lines. Thanks, the link, one question.
The question is what turns a delivery into a conversation. Answerable in under ten words, about their situation.
Never pitch here. They asked for a resource and they get a resource. Anything else comes later, and putting it here costs the client credibility rather than you.
Handle the empty first-name case. Nobody receives "Hi ,".
What to report
Comments, by variant and keyword
Delivered, as a rate of comments
Replies to the delivery message
Meetings from the magnet cohort, tracked separately
The second line is the one that catches a broken branch. If comments are high and delivery is low, the 1st-degree condition or the daily cap is the problem, not the post.
The delivery half is the part that cannot run by hand. Prosp imports commenters and likers straight from the post URL, including future reactions as they keep arriving, then runs the five nodes above. The Reply Comment node answers every public comment, which is what keeps the post alive and the list growing.
Connection requests auto-detect acceptance, checking every 24 hours for two weeks, so no wait card is needed after that step.
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.
The Repo: Install the 24 Skills, Add Your First Client
Three commands to install. Two files per client after that.
Nothing else to configure.
Install
git clone https://github.com/JackJProsp/agency-linkedin-skills
cd agency-linkedin-skills
./install.sh
For every project rather than just this one:
./install.sh --global
That drops 24 skills into .claude/skills/ and creates a clients/ folder.
Add a client
mkdir -p clients/acme
cp templates/client-context.md clients/acme/
cp templates/voice.md clients/acme/
Two files per client. Every skill reads them before doing anything, which is what makes one install serve eight accounts without the outputs blurring into each other.
client-context.md carries the engagement, the ICP, the proof with permission, and the send budget.
voice.md needs three of their real posts pasted IN FULL. Not links, not summaries.
Three real posts demonstrate a voice. Three adjectives describe one, and a skill can only match what it can read. This is the single field that decides whether the drafts sound like the client or like software.
The field people leave blank is "other campaigns running on the same account". Limits are account-wide, so a skill that does not know what else is running will propose a volume that restricts the client's account.
Running it across eight clients
agency-linkedin-skills/
├── skills/ installed once, shared by every client
└── clients/
├── acme/
│ ├── client-context.md
│ ├── voice.md
│ ├── icp.md written by icp-from-closed-won
│ ├── prospects.csv
│ └── posts/
└── globex/
└── ...
Never share a voice.md between clients. Two accounts that sound like the same person is the fastest way to lose both.
Each client account has its own ceiling. Do not aggregate them, and do not assume a client's account has the same headroom as yours. A brand new account should start at 10 requests a day, not 20.
Fork it
The skills ship written for a generic B2B agency. Two things to replace before using them on a real client:
1. The objections. A forked skill full of generic objections is worse than no skill, because it produces confident answers to objections nobody raised.
2. The proof rules. Every skill pulls proof from the client context file. Make sure yours has a permission column, with YES, ANONYMISED and NO as the only values.
MIT licensed. Change what you like and ship your own version.
The 24 Claude Skills That Run These Modules
How these map onto the ten modules
The modules are the method. The skills are the execution, and they run against the two files in each client folder.
Module 1, ICP icp-from-closed-won
Module 2, Profile profile-optimizer
Module 3, Post templates content-pillars, hook-writer, post-writer,
humanizer, carousel-builder, pov-extractor
Module 4, The DM signal-finder, opener-writer
Module 5, Sales Nav list-builder, fit-filter, list-grader
Module 6, Competitor page competitor-engagers
Module 7, Comment scraping competitor-engagers, engagement-session,
comment-scorer, borrowed-reach
Module 8, Lead magnet lead-magnet-post, sequence-builder,
merge-prompt-writer
Module 9, DM templates opener-writer, merge-prompt-writer,
voice-note-scripter
Module 10, Sell-by-chat reply-router, campaign-diagnostic,
growth-diagnostic
Two skills have no module because they are agency-only: campaign-diagnostic and growth-diagnostic. Both exist for the weekly client conversation rather than the work itself.
12 outreach, 12 content. Every one reads the two client files before doing anything.
The 12 outreach skills
| Skill | What it does |
|---|---|
icp-from-closed-won |
Derives the ICP from their deals, not a kickoff workshop |
list-builder |
Sources by intent, highest first |
competitor-engagers |
The highest-intent cold source there is |
signal-finder |
A dated, verifiable reason to contact them now |
fit-filter |
Keep, drop, unsure. Cheapest model. |
list-grader |
A to F. Below B, nothing sends. |
opener-writer |
Under 300 characters, one ask |
sequence-builder |
Four touches, node by node, inside the ceiling |
merge-prompt-writer |
Per-lead personalisation at send time |
voice-note-scripter |
Under 20 seconds, never sent alone |
reply-router |
Seven categories, escalates when unsure |
campaign-diagnostic |
Stops at the first failing stage |
The one that saves the most money: fit-filter, run on the cheapest model. It touches every row, so it is the highest-volume call in the library and has the least reasoning in it.
The one that prevents the most waste: list-grader. Below B it stops, which costs an afternoon. Sending against a C-grade list costs a month of a client's send budget.
The 12 content skills
| Skill | What it does |
|---|---|
profile-optimizer |
Nine checks, then the rewrite |
content-pillars |
Three topics, never themes |
hook-writer |
Five hooks per post, pick the true one |
post-writer |
Matches their real posts, not adjectives |
humanizer |
Strips the tells before the client sees it |
lead-magnet-post |
Three variants, three keywords, CTA built in |
carousel-builder |
One idea per slide, saves compound |
pov-extractor |
The contrarian position inside a transcript |
engagement-session |
25 minutes, six rules, scored |
comment-scorer |
Below 7 gets rewritten, not posted |
borrowed-reach |
Large posts, ranked by velocity not total |
growth-diagnostic |
Why the content is not growing |
Run humanizer on everything before the client sees it. A client who spots AI phrasing in a draft stops trusting the whole deliverable, and you do not get that back.
pov-extractor on call recordings is the underused one. Founders say things in conversation they would never write down, and the transcript is where the actual opinions are.