Everything for running LinkedIn as a recruitment agency, in one place. 18 skills, 40 agents, the MCP, and the modules.
Recruitment is the only agency model where you sell twice: to the client who pays and to the candidate who has no reason to reply. Both motions run on the same account against the same daily ceiling, which is where most setups break.
Inside: the two-motion architecture, nine client-side skills for winning briefs, nine candidate-side skills for filling them, forty agents, the profile and content modules, the DM approaches, and the MCP that runs the sending.
Plus the 90-day build, because installing all of it at once is a fortnight of debugging rather than a system.
AI Driven, Personalized Outreach on LinkedIn: Prosp 💜
Section 1Setup: Two Motions, One Ceiling, Three Files
You sell twice. To the client who pays, and to the candidate who has no reason to reply.
Both motions run on the same LinkedIn account, against the same daily ceiling. That is the constraint most recruiting setups ignore until an account gets restricted.
The two motions
| Client side | Candidate side | |
|---|---|---|
| Who you message | Hiring managers, heads of talent, founders | Passive candidates in role |
| The signal | They posted a job, or they are hiring badly | Their work, visible and specific |
| What kills it | They have a PSL and you are not on it | They are not looking, and you sound like every recruiter |
| Cycle | 2 to 8 weeks to a first brief | Days, if the message is right |
| Volume needed | Low. Tens of accounts. | High. Hundreds per role. |
The asymmetry is the whole problem. The candidate side needs volume and the client side needs precision, and they compete for the same 20 connection requests a day.
The split that works: 5 client side, 15 candidate side, on a single account. If you are running both at 20 each, the account is attempting 40 a day and that is how it gets restricted.
Better: separate accounts. One for business development, one for sourcing. Different profiles, different positioning, different ceilings. That is the single biggest structural improvement available to a recruitment agency on LinkedIn, and almost nobody does it.
Install the MCP
The Prosp MCP is what lets Claude run both motions without driving a browser at your account.
claude mcp add prosp -- uvx prosp-mcp-server@latest
export PROSP_API_KEY=your_key_here
uvx prosp-mcp-server@latest --check
The check verifies the key and prints your connected accounts. It sends nothing.
Set the budget to reflect the split:
PROSP_DAILY_CONNECTION_BUDGET=20
PROSP_READ_ONLY=true # for the first session
The server refuses any volume above the budget and explains that the ceiling is account-wide rather than per campaign. For a two-sided agency running four roles at once, that refusal is the thing standing between you and a restricted account.
Repo: github.com/JackJProsp/prosp-mcp-server
The three context files
One set per agency, plus one brief per live role.
context/
├── agency.md what we place, where, and our actual fill data
├── voice.md three of our real messages that got replies
└── proof.md placements we can reference, with permission
roles/
└── [client]-[role]/brief.md
agency.md
## What we place
Functions, seniority bands, and the sectors we actually fill:
Functions we take briefs for but fill badly:
Geography:
## Our fill data, last 12 months
Roles taken:
Roles filled:
Average days to first shortlist:
Average days to offer:
Fill rate by function:
## Fee structure
Contingent, retained, or both:
Percentage, and what triggers it:
## Who we do not work with
## Banned
<never_use_these>
Claims about speed or fill rate we cannot evidence:
Candidate names, ever, in client outreach:
</never_use_these>
The fill rate by function line is the one that matters. It is the number that decides which briefs to take and the one most agencies do not track honestly. A 30% fill rate on a function you keep pitching is a function you should stop pitching.
proof.md needs two permission columns, not one: permission to name the client, and permission to name the candidate. They are different conversations and conflating them is how a placement story becomes a problem.
The role brief
One per live role. Every candidate-side skill reads it.
# [Client] [Role]
## Status
intake / active / paused / offer / closed-filled / closed-cancelled
## The role
Title, as it will appear:
Title as candidates actually search for it:
Salary band, and whether it is disclosed:
Location and working pattern:
Why this role exists. New headcount or a replacement:
## The hiring manager
Name, title, and how decisive they are:
Who else interviews:
How fast can they move:
## The candidate
Where the good ones currently work:
What they are doing now that this improves on:
What would make them ignore us:
## The honest pitch
Why someone good would leave a decent job for this:
What is genuinely weak about it:
## Sourcing
Search terms that work:
Companies to target:
Companies we cannot approach:
"What is genuinely weak about it" is not optional. Every role has something. A recruiter who names it early gets trusted; one who lets a candidate discover it at offer stage loses the placement and the candidate.
"Companies we cannot approach" prevents the expensive mistake. Off-limits agreements with existing clients are the kind of thing that ends a relationship when breached by an automated sequence.
Section 2The Client Side: 9 Skills for Winning Briefs
Nine skills for the side that pays. Winning briefs, not filling them.
This is the half most recruiting repos ignore entirely.
01. job-post-scanner
The strongest signal in recruitment BD, and it is sitting in public.
---
name: job-post-scanner
description: Find companies hiring roles you fill well. The core
client-side list source. Run daily.
---
SEARCH job boards and LinkedIn for roles matching the functions in
agency.md where our fill rate is above 50%. Not every role we take.
CAPTURE per row:
- The exact role title, verbatim
- Posting date
- How long it has been live
- Whether it has been reposted
- The hiring manager, where visible
- Company size and whether it fits our fee band
- Whether an agency is already credited
SCORE by age:
Under 14 days too early. They are still running it internally.
14 to 45 days the window. Internal sourcing has stalled.
Over 60 days either filled or the spec is broken.
REPOSTED the strongest signal available.
A REPOST means the first attempt failed. That company has a live
need, an allocated budget, and recent evidence that their own
process is not working. Nothing else on LinkedIn combines those
three.
DROP anything where our fill rate for that function is under 40%.
Winning a brief you cannot fill costs more than not winning it.
02. hiring-pain-reader
---
name: hiring-pain-reader
description: Read a job posting for what is wrong with it. This is
the opener.
---
FROM THE POSTING ALONE, identify:
SALARY
Is a band disclosed? An undisclosed band on a competitive role
loses roughly half the applicants before they read anything.
TITLE
Does the title match what candidates actually search for?
"Growth Ninja" returns nobody.
SPEC
Count the required years, the must-have tools, and the
qualifications. If the combination describes fewer than 50
people in the market, say so and estimate the number.
SENIORITY MISMATCH
Is the salary band consistent with the experience demanded?
PROCESS
Does it mention how many stages? Six stages named up front is
honest. Six stages unnamed is a drop-off problem.
OUTPUT the three most costly problems, each with one line on what
it is doing to their applicant flow.
BE SPECIFIC AND BE RIGHT. "Your job spec could be stronger" is
nothing. "Asking for 8 years of a tool that has existed for 5"
is a message they cannot ignore.
NEVER send this as a lecture. It is a finding, offered once.
The eight-years-of-a-five-year-old-tool finding is the single best opener in recruitment BD. It is checkable, it is their mistake, and it proves you read the posting rather than scraped it.
03. client-opener
---
name: client-opener
description: The first message to a hiring manager.
---
STRUCTURE
Line 1 The specific finding from the posting. Quote it.
Line 2 What that is costing them, in candidates or weeks.
Line 3 One question.
RULES
- Under 300 characters.
- QUOTE the posting in quotation marks. Paraphrasing loses the
entire effect, because the point is that you read it.
- Never mention your fee, your database, or your process.
- Never say "I have candidates for this" unless you do, named,
and can produce them the same day.
- No compliments. No "I hope this finds you well".
- No em dashes.
BANNED, burnt beyond use in recruitment:
"I have a fantastic candidate"
"I specialise in [function] recruitment"
"Are you open to a quick chat about your hiring"
"I noticed you're hiring"
"Just checking if you still need help with this role"
The last one is the most-sent recruitment message on LinkedIn and
it has a reply rate near zero.
"I have a fantastic candidate" is the one to retire permanently. Every hiring manager has received it from someone who did not, and the phrase now signals the opposite of what it claims.
04. market-map
The deliverable that wins retained work.
---
name: market-map
description: Build a market map for a role, as a free deliverable
before any fee conversation. High effort.
---
FOR A GIVEN ROLE AND GEOGRAPHY:
1 THE POPULATION
How many people plausibly do this job, in this market, at this
level. Show the arithmetic.
2 WHERE THEY SIT
The 10 to 15 companies holding most of them.
3 THE COMPENSATION PICTURE
The band, from published postings only. Cite each source.
4 THE MOVEMENT PICTURE
Which of those companies have had recent layoffs, a
restructure, or a leadership change. Dated, with sources.
5 THE HONEST VERDICT
Is this role fillable at this salary in this market? If no,
say no and state what would have to change.
POINT 5 IS THE DELIVERABLE. Telling a client their role is not
fillable at the salary they set is the most valuable thing you can
say to them, and almost no agency says it before taking the brief.
NEVER name individual candidates in a market map. That is the
product, not the sample.
FAIL CLOSED if you cannot source the compensation data. An
invented band in a market map is a credibility problem you cannot
recover from.
This is the play that moves an agency from contingent to retained. A map delivered free, with an honest verdict, does more than any pitch deck.
05 to 09: the rest of the client side
---
name: 05 psl-navigator
description: Work out whether a target has a preferred supplier
list, and what to do about it.
---
CHECK for: procurement language in postings, a named agency in the
footer, whether they advertise through one channel consistently.
IF A PSL EXISTS, the direct pitch is wasted. Three routes instead:
The role they cannot fill through the PSL
The function the PSL does not cover
The hiring manager frustrated enough to raise an exception
NEVER pretend not to know. "I know you work with [agency], which
is why I am only writing about [specific hard role]" outperforms
a pitch that ignores it.
---
name: 06 brief-taker
description: The questions that decide whether a role is fillable,
asked before you accept it.
---
TWELVE QUESTIONS. The last four are the ones nobody asks:
9 Who else is working this role?
10 What happened to the last person in it?
11 How many candidates have you already rejected, and why?
12 If we send someone perfect on Friday, who says yes and when?
QUESTION 12 IS THE QUALIFIER. A hiring manager who cannot answer
it does not have a live role, they have an intention.
OUTPUT a fillability verdict: TAKE, TAKE WITH CONDITIONS, or
DECLINE, with the reason.
DECLINE is a valid and underused output.
---
name: 07 client-objection-handler
description: The five objections every recruitment agency hears.
---
"We use a PSL" -> route via 05, do not argue
"Your fee is too high" -> ask what they compare it against,
and what a vacancy costs them monthly
"We're hiring in-house" -> ask what their time to first shortlist
looks like currently
"We tried an agency" -> ask what the shortlist looked like.
It is almost always that.
"Send us CVs first" -> the speculative CV trap. Decline it
politely and offer the market map.
Never answer a fee objection with your process. Work the cost of
the vacancy with them, using their numbers.
---
name: 08 placement-proof-writer
description: Turn a filled role into a referenceable story.
---
STRUCTURE: the brief, the constraint, what we did differently, the
time to shortlist, the outcome, and one line from the client.
TWO PERMISSION FIELDS, checked separately:
Client named: YES / ANONYMISED / NO
Candidate named: YES / ANONYMISED / NO
NEVER name a candidate without written permission, even in an
anonymised client story. Their current employer reads LinkedIn.
---
name: 09 client-diagnostic
description: Weekly. Which stage of the BD motion is broken.
---
1 Acceptance below 15% the note, or you are messaging the
wrong seniority
2 Replies below 10% the finding was generic. Was it quoted?
3 Replies fine,
no briefs you are reaching people who cannot
award work
4 Briefs fine,
no fills the qualifier at intake. Run 06 harder.
STAGE 4 IS THE EXPENSIVE ONE. Taking briefs you cannot fill feels
like winning for about six weeks.
Section 3The Candidate Side: 9 Skills, and the Repos
Nine skills for the side that has no reason to reply.
A passive candidate is not job hunting. The message has to be interesting on its own terms, because there is no need being met.
10. talent-mapper
---
name: talent-mapper
description: Build the sourcing list from observable work, not from
job titles. Run per role.
---
Read roles/[client]-[role]/brief.md.
SOURCE FROM OBSERVABLE WORK, strongest first:
1 People posting substantively about this exact problem
2 Commenters on posts in the discipline
3 Speakers and attendees at relevant events
4 People at the named target companies in the brief
5 Title search, last
SOURCE 1 BEATS SOURCE 5 BY A DISTANCE. Someone writing about
distributed systems has demonstrated they think about distributed
systems. Someone whose title says Senior Engineer has demonstrated
that a company gave them a title.
CAPTURE per candidate:
The specific work you can see, WITH THE URL
Current company and tenure
Whether they have moved in the last 12 months
Anything suggesting they might move
TENURE IS THE STRONGEST TIMING SIGNAL. Eighteen months to three
years in role is the window. Under twelve months they just moved.
Over five years they are probably staying.
CHECK against "companies we cannot approach" in agency.md before
anything leaves this skill.
11. agency-operator-finder
The most reachable candidate group in the market and the one nobody works.
---
name: agency-operator-finder
description: Find agency-side people ready to move client-side.
---
TARGET people three or more years into an agency, consultancy or
service business, whose client work is visible.
WHY THIS GROUP:
They have seen many companies, so they ramp fast.
They are frequently ready to move in-house and nobody asks.
Everyone assumes they are happy because their agency posts
about how great it is to work there.
SIGNALS:
Three plus years at one agency
Posting about client work rather than agency life
Commenting on in-house roles
An agency that has recently lost accounts or restructured
THE OPENER references the specific client work you can see, and
names what an in-house version of that job would let them do
differently. Never "are you open to opportunities".
12. candidate-opener
---
name: candidate-opener
description: The first message to someone who is not looking.
---
STRUCTURE
Line 1 The specific work of theirs you saw, and what was good
about it. Not "your profile". Not "your experience".
Line 2 What you are recruiting for and why it needs that exact
thing.
Line 3 One question.
RULES
- Under 300 characters.
- NAME THE COMPANY, or say plainly that you cannot yet and why.
Anonymous roles read as a fishing expedition.
- STATE THE SALARY BAND if the brief allows. Withholding it is
the single most common reason a good candidate does not reply.
- Never paste the job description.
- Never say "I think you'd be a great fit" without saying why,
specifically.
- No em dashes.
BANNED, burnt:
"I have an exciting opportunity"
"Are you open to new opportunities"
"I came across your profile and was impressed"
"Your background caught my eye"
"Quick question about your career"
IF THEY SAY NO, ask who they would recommend. That question
produces more placements than the original message does, and
almost nobody asks it.
The salary band rule is the one with the most behind it. A passive candidate who has to reply to find out the money frequently does not reply. Withholding it costs more candidates than it protects negotiating room.
13 to 18: the rest of the candidate side
---
name: 13 boolean-builder
description: Build search strings that return the right people.
---
BUILD three strings per role, widening:
TIGHT exact title plus two must-have signals
MEDIUM title variants plus one signal
WIDE the skill, not the title
INCLUDE the title variants candidates actually use, which are
frequently not the client's internal title.
REPORT the count each string returns. A tight string returning
four people is not a search, it is a shortlist.
---
name: 14 candidate-screener
description: Screen against the brief, and against the honest
weaknesses in it.
---
PER CANDIDATE: match, gaps, and one flag.
THE FLAG is the thing that would make this placement fail at six
months. Commute, seniority mismatch, a step backwards in scope, a
culture mismatch visible from their posts.
NEVER screen on anything not in the brief and not job-relevant.
Age, name, photograph, university, career gaps, and anything
inferred from them are out of scope. If a criterion cannot be
stated to the candidate, it is not a criterion.
---
name: 15 candidate-reply-router
description: Classify every candidate reply.
---
INTERESTED / CURIOUS BUT HAPPY / TIMING / WRONG FIT /
NOT INTERESTED / REFERRAL OFFERED / ESCALATE
CURIOUS BUT HAPPY is the category recruiters bin and it is the
most valuable one. They are not moving today. They will move in
fourteen months, and the recruiter they remember is the one who
sent something useful rather than chasing.
REFERRAL OFFERED gets answered within the hour, always.
---
name: 16 shortlist-writer
description: The client-facing shortlist.
---
PER CANDIDATE: why them in two lines, the evidence, the gap
stated openly, and their motivation in their own words.
THE GAP LINE IS MANDATORY. A shortlist where every candidate is
perfect reads as a sales document and gets discounted entirely.
THREE TO FIVE CANDIDATES. A shortlist of twelve is a search
result, and sending one says you did not screen.
---
name: 17 ats-handoff
description: Push candidates into the ATS without losing the
context that got them there.
---
CARRY ACROSS: the source, the specific work that prompted the
approach with its URL, the first message sent, their reply
verbatim, the stated motivation, and the flag from 14.
MOST ATS HANDOFFS LOSE THE MOTIVATION FIELD. Six weeks later
nobody remembers why this person was interested, which is the
exact thing you need at offer stage.
Set the source to the CAMPAIGN and the signal type, never the
channel.
---
name: 18 pipeline-diagnostic
description: Weekly, per live role. Stop at the first failure.
---
1 Acceptance below 15% the note, or the list is off-brief
2 Replies below 10% the message. Did it name the company
and the band?
3 Replies fine,
few screens the role is not compelling, or the
pitch oversells it
4 Screens fine,
no shortlist the brief is wrong. Go back to 06.
5 Shortlist fine,
no offers not a sourcing problem. The client's
process, or their expectations.
ONE change per week per role.
The open-source repos worth installing
Four that are real. All handle the candidate side; none handle the client side, which is why the nine skills before this exist.
carlopezzuto/recruiting, MIT. Eleven specialised agents and sixteen skills covering the full candidate pipeline: job descriptions, personas, Boolean strings, outreach sequences, interview scorecards, offer strategies and post-close retrospectives. Output is markdown or self-contained HTML, no build tools, no dependencies.
The pattern worth stealing: each role's status lives in its brief's YAML frontmatter, and agents check it before starting work, moving through intake, active, paused, offer and closed. That is how you stop an agent sourcing for a role filled last Tuesday.
yc-software/recruiting. YC's own. Sourcing, outreach, scheduling, interviewing and pipeline management, with native integration for Work at a Startup, Gmail, Google Calendar and Slack, plus Ashby.
zubair-trabzada/ai-recruiter-claude. Fourteen skills and five parallel agents. Job description analysis with ATS keywords and inclusivity flags, pipeline summaries, interview frameworks, salary benchmarks with percentile bands and geographic adjustments, offer packages with decline risk, and 30/60/90 onboarding plans.
ATS MCP servers, if yours is supported. Crelate publishes one for their CRM and ATS API. Manatal was the first recruitment platform with MCP integration, which makes candidates, jobs, notes and organisations queryable against a live database rather than pasted CVs.
One cost worth knowing before planning around it: Manatal's MCP server requires the Enterprise Plus plan at roughly $55 per user per month billed annually, not the entry plan their pricing page leads with. Check the current figure before committing.
The weekly loop
MON 09 client-diagnostic and 18 per live role. One change each.
MON 01 job-post-scanner. Reposts first.
TUE 10 talent-mapper on the newest role.
TUE 13 boolean-builder, three strings, report the counts.
WED 02 and 03 on the client side. Five sends, no more.
WED Candidate sends, fifteen, within the split.
THU 15 across every reply. Referrals answered within the hour.
THU 16 shortlist-writer on anything ready.
FRI 17 ats-handoff on everyone screened this week.
FRI 04 market-map on one target account.
Friday's market map is the compounding one. One a week, delivered free, is fifty retained-work conversations a year that nobody else is starting.
18 skills decide who to contact. Prosp reaches them 💜
Section 4The 40 Recruitment Agents
40 agents for the two-sided problem. You sell twice, on the same account, against the same ceiling.
Twenty for winning briefs, twenty for filling them.
Business development, 10 agents
---
name: job-post-scanner
description: Find companies hiring roles you fill well. The core
client-side list source. Daily.
---
READS: agency.md, specifically the fill rate by function.
OUTPUT: role title verbatim, posting date, days live, whether
reposted, hiring manager, company size, agency credited.
SCORE BY AGE: under 14 days too early, 14 to 45 the window,
over 60 filled or broken. REPOSTED is the strongest signal
available: live need, allocated budget, and recent evidence
their own process failed.
RULES: Drop anything where your fill rate for that function is
under 40%.
NOT YOUR CALL: taking a brief you cannot fill.
---
name: hiring-pain-reader
description: Read a posting for what is wrong with it. This is
the opener.
---
CHECKS: salary disclosed, title searchability, spec
deliverability, seniority mismatch, process transparency.
OUTPUT: the three costliest problems, each with what it is
doing to their applicant flow.
RULES: Be specific and be right. "Asking for 8 years of a tool
that has existed for 5" is a message they cannot ignore.
"Your spec could be stronger" is nothing.
NOT YOUR CALL: sending it as a lecture.
---
name: spec-sizer
description: Estimate how many people match a spec.
---
OUTPUT: the number, with the arithmetic shown.
RULES: If the combination describes fewer than 50 people in the
market, say so with the estimate. That single number wins more
briefs than any pitch.
NOT YOUR CALL: inventing a figure you cannot source.
---
name: client-opener
description: The first message to a hiring manager.
---
OUTPUT: the quoted finding, what it costs them, one question.
RULES: QUOTE the posting. Under 300 characters. Never mention
your fee, database or process. Never claim candidates you
cannot produce the same day.
Banned: "I have a fantastic candidate", "just checking if you
still need help with this role".
NOT YOUR CALL: pitching the fee.
---
name: market-mapper
description: The free deliverable that wins retained work.
---
OUTPUT: the population with arithmetic, the 10 to 15 companies
holding them, the compensation band from published postings
with sources, the movement picture dated, and THE HONEST
VERDICT on whether it is fillable at this salary.
RULES: Never name individual candidates. That is the product.
Fail closed without sourced compensation data.
NOT YOUR CALL: softening the verdict to win the brief.
---
name: psl-navigator
description: Work out whether a target has a preferred supplier
list.
---
OUTPUT: PSL likely or not, and the route in: the role they
cannot fill through it, the function it does not cover, or the
manager frustrated enough to raise an exception.
RULES: Never pretend not to know. Naming it outperforms
ignoring it.
NOT YOUR CALL: arguing with procurement.
---
name: brief-taker
description: The twelve questions, asked before accepting.
---
THE LAST FOUR nobody asks: who else is working this, what
happened to the last person, how many have you rejected and
why, and if we send someone perfect on Friday who says yes.
OUTPUT: TAKE, TAKE WITH CONDITIONS, or DECLINE.
RULES: A manager who cannot answer the last one has an
intention, not a role.
NOT YOUR CALL: taking it anyway.
---
name: fee-defender
description: Handle the fee conversation.
---
RULES: Never answer a fee objection with your process. Work the
monthly cost of the vacancy with them, using their numbers.
Never discount to win a contingent brief.
NOT YOUR CALL: moving the percentage.
---
name: placement-proof-writer
description: Turn a filled role into a referenceable story.
---
TWO PERMISSION FIELDS: client named, and candidate named.
RULES: Never name a candidate without written permission, even
in an anonymised client story. Their employer reads LinkedIn.
NOT YOUR CALL: assuming one permission covers the other.
---
name: bd-diagnostician
description: Weekly. Stop at the first failure.
---
1 Acceptance low the note, or wrong seniority
2 Replies low the finding was generic. Was it quoted?
3 Replies fine,
no briefs reaching people who cannot award work
4 Briefs fine,
no fills the intake qualifier. Run brief-taker.
STAGE 4 is the expensive one. Taking unfillable briefs feels
like winning for six weeks.
NOT YOUR CALL: more than one change.
Sourcing, 10 agents
---
name: talent-mapper
description: Build the sourcing list from observable work, not
titles.
---
SOURCES: people posting about the problem, commenters in the
discipline, event speakers, target companies, title search
LAST.
RULES: Someone writing about distributed systems has
demonstrated they think about them. A title demonstrates a
company gave them one.
TENURE is the strongest timing signal: 18 months to 3 years is
the window.
CHECK "companies we cannot approach" before anything leaves.
NOT YOUR CALL: approaching an off-limits client.
---
name: boolean-builder
description: Three search strings per role, widening.
---
OUTPUT: tight, medium, wide, with the count each returns.
RULES: Include the title variants candidates use, not the
client's internal one. A tight string returning four people is
a shortlist, not a search.
NOT YOUR CALL: presenting a four-person search as a market.
---
name: agency-side-finder
description: Find agency people ready to move client-side. The
most reachable group nobody works.
---
SIGNALS: three plus years at one agency, posting about client
work rather than agency life, commenting on in-house roles,
an agency that recently lost accounts.
RULES: Everyone assumes they are happy because their agency
posts that they are.
NOT YOUR CALL: approaching a current client's staff.
---
name: candidate-opener
description: The first message to someone not looking.
---
OUTPUT: their specific work and what was good about it, the
role and why it needs that, one question.
RULES: NAME THE COMPANY or say why you cannot. STATE THE BAND
if the brief allows: withholding it is the most common reason
a good candidate does not reply. Never paste the JD.
Banned: "exciting opportunity", "open to new opportunities".
If they say no, ask who they would recommend.
NOT YOUR CALL: an anonymous role with no explanation.
---
name: candidate-screener
description: Screen against the brief and its honest weaknesses.
---
OUTPUT: match, gaps, and ONE FLAG: the thing that would make
this fail at six months.
RULES: Never screen on anything not in the brief and not
job-relevant. Age, name, photo, university, career gaps and
anything inferred from them are out of scope. If a criterion
cannot be stated to the candidate, it is not a criterion.
NOT YOUR CALL: adding a criterion the client did not set.
---
name: candidate-reply-router
description: Classify every candidate reply.
---
CATEGORIES: interested, curious but happy, timing, wrong fit,
not interested, referral offered, escalate.
RULES: CURIOUS BUT HAPPY is binned by most recruiters and is the
most valuable. They move in fourteen months and remember who
sent something useful. REFERRAL OFFERED gets answered within
the hour.
NOT YOUR CALL: discarding curious-but-happy.
---
name: shortlist-writer
description: The client-facing shortlist.
---
OUTPUT: per candidate, why them in two lines, the evidence, the
gap stated openly, motivation in their own words.
RULES: THE GAP LINE IS MANDATORY. A shortlist where everyone is
perfect reads as sales and gets discounted. Three to five
candidates.
NOT YOUR CALL: a shortlist of twelve.
---
name: interview-prepper
description: Brief the candidate honestly.
---
OUTPUT: who they meet, what each cares about, the likely
questions, and WHAT IS GENUINELY WEAK about the role.
RULES: A recruiter who names the weakness early gets trusted.
One who lets them find it at offer stage loses both.
NOT YOUR CALL: hiding a known problem.
---
name: ats-handoff
description: Push to the ATS without losing the context.
---
CARRIES: source, the specific work with URL, the first message,
their reply verbatim, stated motivation, the flag.
RULES: Most handoffs lose the motivation field, which is the
exact thing you need at offer stage. Source names the CAMPAIGN
and signal type, never the channel.
NOT YOUR CALL: dropping fields to fit the schema.
---
name: sourcing-diagnostician
description: Weekly per live role. Stop at the first failure.
---
1 Acceptance low the note, or the list is off-brief
2 Replies low did it name the company and the band?
3 Replies fine,
few screens the role is not compelling, or oversold
4 Screens fine,
no shortlist the brief is wrong. Back to brief-taker.
5 Shortlist fine,
no offers the client's process, not sourcing.
NOT YOUR CALL: blaming sourcing for a stage 5 failure.
Content and reach, 10 agents
---
name: market-insight-poster
description: Post what you can see that nobody else can.
---
OUTPUT: one observation a week from live briefs, anonymised.
Salary movement, time-to-hire shifts, which specs are failing.
RULES: This is the single strongest content a recruiter has.
Never identify a client or candidate.
NOT YOUR CALL: naming anyone.
---
name: salary-transparency-poster
description: Publish band data from public postings.
---
RULES: Published postings only, cited. Never client-confidential
bands.
NOT YOUR CALL: using a brief's band.
---
name: role-spotlight-writer
description: Post a live role, properly.
---
RULES: Name the band. Name the company or say why not. Name one
honest weakness. A spotlight with none of the three is an
advert nobody reads.
NOT YOUR CALL: posting a role the client has not approved.
---
name: candidate-advice-writer
description: Content for the candidate audience.
---
RULES: Useful whether or not they ever work with you. Interview
prep, CV structure, negotiation. Never gated.
NOT YOUR CALL: making it a lead magnet.
---
name: hiring-manager-educator
description: Content for the client audience.
---
TOPICS: why a spec is not converting, what a realistic
time-to-hire looks like, what an undisclosed band costs.
RULES: Never subtweet a live client.
NOT YOUR CALL: naming a company.
---
name: engagement-session-runner
description: 25 minutes daily, six rules, every comment scored.
---
RULES: Two accounts means two sessions. The BD account comments
on hiring manager content; the sourcing account comments in
the discipline. Never cross them.
NOT YOUR CALL: one session for both.
---
name: borrowed-reach-finder
description: Large posts worth commenting on, by velocity.
---
RULES: 200 reactions after an hour beats 600 after two days.
NOT YOUR CALL: the comment itself.
---
name: placement-announcer
description: Announce a placement without making it about you.
---
RULES: Candidate permission first, always. Lead with what they
are going to do, not with the fee or the speed.
NOT YOUR CALL: announcing without permission.
---
name: talent-pool-nurturer
description: Keep curious-but-happy candidates warm.
---
OUTPUT: one useful thing a quarter. Salary data, a market
observation, a relevant role.
RULES: Never a check-in with nothing in it.
NOT YOUR CALL: contacting them monthly.
---
name: content-diagnostician
description: Which content produced briefs or candidates.
---
OUTPUT: the posts that produced conversations, split by
audience. Market insight almost always wins.
NOT YOUR CALL: reporting reach as the headline.
Operations, 10 agents
---
name: account-splitter
description: Decide the BD versus sourcing split across accounts.
---
OUTPUT: the daily allocation per account.
RULES: ONE ACCOUNT: 5 BD, 15 sourcing. TWO ACCOUNTS is the
single biggest structural improvement available and almost
nobody does it. Never aggregate ceilings.
NOT YOUR CALL: exceeding 20 a day on any account.
---
name: role-status-keeper
description: Track every live role's stage.
---
STATES: intake, active, paused, on-hold, offer, closed-filled,
closed-cancelled.
RULES: Every sourcing agent checks this before starting. It is
what stops an agent sourcing for a role filled last Tuesday.
NOT YOUR CALL: changing a status without the client saying so.
---
name: off-limits-keeper
description: Maintain the companies you cannot approach.
---
RULES: Read by every sourcing agent before it runs. An
off-limits breach by an automated sequence ends client
relationships.
NOT YOUR CALL: removing a company without the contract saying
it expired.
---
name: fill-rate-tracker
description: Fill rate by function, honestly.
---
RULES: This is the number that decides which briefs to take and
the one most agencies do not track. A 30% fill rate on a
function you keep pitching is a function to stop pitching.
NOT YOUR CALL: rounding up.
---
name: duplicate-checker
description: Check a candidate against every active role.
---
RULES: The same person approached for two roles by two
consultants in one week is the most common own goal in agency
recruitment.
NOT YOUR CALL: proceeding on a match.
---
name: compliance-checker
description: Check outreach and screening against the rules that
apply in your market.
---
RULES: Screening criteria must be job-relevant and stateable to
the candidate. Data held needs a lawful basis and a retention
period. This agent flags, it does not advise.
NOT YOUR CALL: giving a legal opinion. Escalate to someone
qualified.
---
name: candidate-data-keeper
description: Retention and deletion.
---
RULES: Know the retention period. Delete on request, fully.
Never keep a CV indefinitely because it might be useful.
NOT YOUR CALL: extending retention for convenience.
---
name: client-reporter
description: The weekly client update on a live role.
---
OUTPUT: approached, replied, screened, shortlisted, with the
absolute beside every percentage, and one line on what is
blocking.
RULES: Never report activity as progress.
NOT YOUR CALL: hiding a stalled role.
---
name: margin-tracker
description: Gross margin per placement and per client.
---
OUTPUT: fee, consultant hours, sourcing cost, tool cost, margin
percent. Ranked worst first.
RULES: The ranking is never the same as the ranking by fee size,
and agencies manage attention by fee size.
NOT YOUR CALL: which clients to drop.
---
name: account-health-checker
description: Weekly check on every sending account.
---
CHECKS: connection status, capped, restricted, 2FA, combined
daily volume across campaigns, duplicates.
RULES: The combined volume field is the one nobody checks.
NOT YOUR CALL: raising a limit to catch up.
Section 5The Prosp MCP: 22 Tools
22 tools across six areas. Read tools are safe to run at any time. Write tools that reach a real person need an explicit confirm.
Accounts, 3 tools
| Tool | What it does |
|---|---|
list_accounts |
Every connected LinkedIn account, with status |
get_account_budget |
Daily send budget left, across all campaigns |
get_account_health |
Connection status, caps, and combined campaign volume |
Run get_account_budget before proposing any volume. It is the number that governs every sending decision, and it is per account rather than per campaign.
get_account_health reports one field most people never check: the combined daily volume every active campaign on that account is configured to send. An account with three campaigns at 20 each is set up to attempt 60 a day, even though each campaign looks reasonable on its own.
Lists, 7 tools
| Tool | What it does |
|---|---|
list_lead_lists |
Lists in the workspace |
get_lead_list |
One list, with the breakdown by lead state |
create_lead_list |
Create an empty list |
import_from_post |
Commenters and likers from any post URL |
import_from_search |
Leads from a search or Sales Navigator URL |
import_leads |
Structured import, with custom variables |
set_lead_state |
Blacklist, duplicate, or reset to not contacted |
import_from_post is the one to use first. Someone who commented on a post about the exact problem you solve has done something. Someone matching a search filter has not.
It takes include_future_reactions, which keeps the import open so engagement arriving days later is pulled in without anyone touching it. Leave it on for a post that is still travelling.
import_leads accepts custom variables. Any key beyond linkedin_url becomes a variable usable in message prompts, so a signal recorded during research travels with the lead into the copy:
{
"linkedin_url": "...",
"first_name": "Sarah",
"signal": "hiring a RevOps lead, posted 14 Mar",
"signal_url": "...",
"tier": "1"
}
get_lead_list returns the state breakdown, which is the diagnostic most people skip. A large Not Accepted count relative to Contacted points at the connection note or the list quality, not the sequence.
Leads, 3 tools
| Tool | What it does |
|---|---|
get_lead |
One lead, with custom variables and campaign membership |
search_leads |
Filter a list by state or tag |
add_tag |
Tag by signal type and campaign |
search_leads with state="replied" is the fastest way to find everyone worth a human reply today.
search_leads with state="not_accepted" after 14 days tells you whether the connection note is working, because that state only fills up when requests expire.
add_tag is what makes attribution possible. Tag by signal type rather than channel. The question worth being able to answer at month end is which trigger produced the booked meetings, and that is unanswerable without this field.
Campaigns, 6 tools
| Tool | What it does |
|---|---|
list_campaigns |
Campaigns, filterable by account or status |
get_campaign |
One campaign, with its node sequence |
get_campaign_stats |
Sent, accepted, messaged, replied |
create_campaign |
Build from a node list. Starts paused. |
set_campaign_status |
Start, pause, archive |
set_daily_limits |
Change the per-campaign caps |
create_campaign never starts anything. It builds the campaign paused, so you review the sequence before a single request goes out. Starting is a separate call that needs confirmation.
The node shape:
Actions connection_request, message, voice_note, inmail,
open_profile_message, comment_last_post,
reply_comment, like_last_post, visit_profile,
wait, add_tag
Conditions has_linkedin_url, is_first_level, opened_message,
is_open_profile, check_column
The standard five-node shape:
1 Condition: is_first_level
2 YES branch: message
3 NO branch: connection_request, then message on acceptance
4 Wait 3 days, follow-up on a different angle
5 add_tag
get_campaign_stats returns figures no CRM holds: requests sent and accepted, messages sent, replies received. Those are the inputs to the diagnostic.
Replies, 4 tools
| Tool | What it does |
|---|---|
get_inbox |
Unified inbox across every connected account |
get_conversation |
One full thread with lead and campaign context |
send_reply |
Send. Requires confirm=true. |
mark_read |
Clear from the queue without replying |
Leave account_id empty on get_inbox and you get every account in one queue. That is what makes a daily reply pass one task for an agency running eight client accounts rather than eight logins.
send_reply lints the draft and returns warnings for anything over 300 characters, more than one question, a burnt opener, or an em dash. The send still goes through; the warnings come back with it so you see what you shipped.
Reporting, 3 tools
| Tool | What it does |
|---|---|
get_workspace_stats |
Figures across every account, for a date range |
diagnose_campaign |
The chain, stopped at the first failure |
signal_attribution |
Which signal type produced the booked meetings |
diagnose_campaign is the one to run weekly. It works the chain in order and stops at the first failure, rather than returning five stages of numbers when the first is broken.
1 Acceptance below 15% the note, or the list. NOT the sequence.
2 Acceptance fine,
replies below 10% the first message.
3 Replies fine, meetings low the ask is mistimed, or the offer is wrong.
4 Meetings fine,
nothing closing not outreach. Price or fit.
5 All fine, volume low the daily cap split across campaigns.
If meeting data is missing it says so rather than guessing, because a diagnosis on partial data points at the wrong stage.
signal_attribution produces one line and it is the most useful line in any monthly report. It only works if leads were tagged at import. If the output is empty, that is the finding.
Section 6Optimise 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.
Section 7Viral 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.
Section 8Recruiters: 2 DM Approaches
Two approaches. A leads with a hard-to-fill role. B leads with placement volume.
Recruiters are pitched constantly by people who do not understand their market. Showing that you do is the whole game here.
mkdir -p .claude/skills/recruiter-{icp,list,signal,filter,opener-a,opener-b,sequence,objection,proof,closer,diagnostic}
01. recruiter-icp
---
name: recruiter-icp
description: Define which recruiters to target.
---
OUTPUT: agency or in-house, specialism, headcount, roles they fill,
fee model, and whether they are currently placing.
AGENCY recruiters buy tools that win them placements.
IN-HOUSE recruiters buy tools that reduce time-to-hire.
Completely different message. Pick ONE and build the list for it.
Mixing them produces copy that lands on neither.
EXCLUDE: generalists at scale, anyone not currently posting roles,
anyone whose specialism you cannot speak about credibly.
02. recruiter-list
---
name: recruiter-list
description: Build from live hiring activity.
---
SOURCES:
1. Recruiters posting roles in the last 14 days
2. Agencies whose job board shows volume
3. Recruiters commenting about sourcing difficulty
4. In-house talent leads at companies hiring heavily
Capture: roles currently open, posting frequency, specialism, and
any role that has been reposted.
The reposted-role column is the strongest field in this list. Build
it at source rather than deriving it later.
Write to output/prospects.csv with a linkedin_url column.
03. recruiter-signal
---
name: recruiter-signal
description: The recruiter-specific signal.
---
TIER 1 Posted the same role twice / role open 45+ days / publicly
said a role is hard to fill / new talent lead in post
TIER 2 High posting volume / expanding specialism / hiring their
own recruiters
TIER 3 Active, nothing specific
TIER 1's first item is the strongest in this niche. A REPOSTED ROLE
is a public admission of difficulty, and everyone in recruitment
knows what it means.
Record the role title, the days open, and the repost date.
04. recruiter-filter
---
name: recruiter-filter
description: Filter before enriching.
---
Per row: KEEP, DROP or UNSURE with a 12-word reason.
DROP: not currently posting, competitor, specialism you cannot
serve, in-house when you target agency or the reverse.
The last one is the most common error. An in-house talent lead
receiving agency-recruiter copy replies to tell you that you did
not check.
KEEP and UNSURE to filtered.csv, DROP to dropped.csv.
05. recruiter-opener-a
Approach A, the hard-to-fill role.
---
name: recruiter-opener-a
description: The hard-to-fill-role opener.
---
Line 1 Name the specific role and how long it has been open.
Line 2 Why that role type is currently hard, one line, showing you
know the market.
Line 3 One question about their current sourcing approach.
LINE 2 IS THE WHOLE MESSAGE. Showing you understand their market
matters more here than in any other niche, because recruiters are
pitched daily by people who clearly do not.
If you cannot write line 2 credibly for that specialism, do not
contact them. Pick a specialism you can.
Under 300 characters.
06. recruiter-opener-b
Approach B, the volume angle. For agencies placing at scale.
---
name: recruiter-opener-b
description: The volume opener.
---
Line 1 Their placement or posting volume, observed and stated.
Line 2 The bottleneck that volume creates, named specifically.
Line 3 One question about where the time actually goes.
NEVER assume the bottleneck is sourcing. For high-volume agencies
it is usually screening or client communication, and guessing
sourcing marks you as another sourcing-tool pitch.
Ask rather than assert if you are not sure. The question version
converts nearly as well and cannot be wrong.
07. recruiter-sequence
---
name: recruiter-sequence
description: Four touches, shorter delays than any other niche.
---
1 Opener A or B
2 Wait 3 days. A candidate source or approach for that role type,
given free.
3 Wait 4 days. How it works, two lines.
4 Wait 7 days. Close-out.
RECRUITERS RESPOND TO SPEED. Keep delays shorter here than
anywhere else in the library. They live in their inbox.
Touch 2 giving away an actual sourcing approach is what proves you
understand the market rather than claiming to.
Reply stops it. No wait node after a connection request.
08. recruiter-objection
---
name: recruiter-objection
description: The weekly four.
---
"We have our own database"
-> Ask how fresh it is. The answer is the opening, because every
recruiter database decays and they know it.
"Candidates are the problem, not tools"
-> Agree. Ask what makes a candidate hard to reach in their
specialism specifically. That conversation is the sale.
"We are commission-only, no budget"
-> A real constraint. Ask what a placement is worth and whether the
maths works at that level. If it does not, say so and leave.
"We already use [tool]"
-> Ask what it does not do.
09. recruiter-proof
---
name: recruiter-proof
description: Proof for recruiters.
---
TIME TO PLACEMENT and response rate. Never volume of contacts.
A recruiter measures placements. A contact-volume claim reads as
irrelevant at best and as a spam tool at worst.
Match the specialism where possible. Tech recruiting proof does
not land on healthcare recruiting, and using it signals you do not
know the difference.
State the timeframe with every figure.
Check the permission column before naming any agency.
10. recruiter-closer
---
name: recruiter-closer
description: The ask.
---
OFFER to run it on ONE live role before any commitment.
Recruiters buy on demonstrated results faster than any other
audience in this library. A call is a worse ask than a trial.
"One role, this week, and you keep whatever it finds."
Name which role you mean, from the signal. A generic trial offer
is easy to defer; a specific one is not.
Tag the lead so the sequence stops.
11. recruiter-diagnostic
---
name: recruiter-diagnostic
description: Weekly.
---
Stop at the first failure.
1 ACCEPTANCE LOW
Recruiters accept broadly, so this is an off-ICP list rather than
the note. Check the agency versus in-house split.
2 REPLIES LOW
The opener did not show market knowledge. Rewrite line 2.
3 REPLIES FINE, NO TRIALS
The trial ask was too large or not tied to a named role.
4 TRIALS HAPPENING, NO CONVERSION
The results were not attributable. Fix how the trial is measured
before running more of them.
ONE change per week.
Section 9Sell-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.
Section 10Harvest Candidates 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.
Section 11The 90 Day Build, and the Weekly Loop
The order to build it in. Ninety days, because installing 18 skills and 40 agents at once is a fortnight of debugging rather than a system.
Everything in this playbook is referenced by name, so you can follow this page and open the others as you need them.
Days 1 to 7: the foundation
Nothing sends this week.
DAY 1 Install the Prosp MCP. Run --check.
Set PROSP_READ_ONLY=true and leave it on all week.
DAY 2 Write context/agency.md. The hard part is the fill rate
by function, and it is the field that decides which
briefs to take.
DAY 3 Write context/voice.md. Three of your real messages that
got replies, pasted in full.
DAY 4 Write context/proof.md. TWO permission columns: client
named, and candidate named. They are different
conversations.
DAY 5 Run 02 profile-optimiser on the BD profile.
Record current acceptance first, so the before-and-after
is measurable.
DAY 6 Decide the account split. One account at 5 BD and 15
sourcing, or two accounts.
DAY 7 Install ten agents only:
client-icp-deriver equivalent, proof-librarian,
profile-optimiser, job-post-scanner, talent-mapper,
fit-filter, client-opener, candidate-opener,
reply-classifier, bd-diagnostician.
The account split on day 6 is the biggest structural decision here. Two accounts, one for business development and one for sourcing, is the single largest improvement available to a recruitment agency on LinkedIn, and almost nobody does it. Different profiles, different positioning, two separate ceilings instead of one shared between competing motions.
Days 8 to 30: one motion at a time
WEEK 2, BD ONLY
01 job-post-scanner daily. Reposts first.
02 hiring-pain-reader on the top ten.
03 client-opener. FIVE sends a day, not twenty.
No sourcing yet.
WEEK 3, ADD SOURCING
10 talent-mapper on your best live role.
13 boolean-builder, three strings, report the counts.
12 candidate-opener. Ten sends a day.
BD holds at five.
WEEK 4, THE FIRST DIAGNOSTIC
09 client-diagnostic and 18 pipeline-diagnostic.
ONE change each. Not three.
Raise to full volume only if acceptance is above 25%.
Why BD first. It is the lower-volume motion, so it teaches you whether the copy works before you spend the candidate-side budget finding out.
Why five sends rather than twenty. A new sending pattern on a profile with no history is the clearest possible flag. Build to full volume over the fortnight rather than starting there.
Days 31 to 60: content and compounding
WEEK 5 Content starts. Three posts a week, one a day maximum.
The strongest recruitment content is market insight:
salary movement, time-to-hire shifts, which specs are
failing. Anonymised, from live briefs.
WEEK 6 04 market-map on one target account, delivered free.
One a week from here. Fifty retained-work conversations
a year that nobody else is starting.
WEEK 7 Harvest candidates from comments. Capture the post topic
per lead, not just the lead.
WEEK 8 Add the remaining agents as gaps appear, not in advance.
The market insight post is the single strongest content a recruiter has and almost nobody publishes it. You can see salary movement and time-to-hire shifts across live briefs that nobody else in the market can see. One observation a week, anonymised, outperforms any amount of job advertising.
Days 61 to 90: the loop
MON 09 and 18 per live role. One change each.
MON 01 job-post-scanner. Reposts first.
TUE 10 talent-mapper on the newest role.
TUE 13 boolean-builder, three strings, counts reported.
WED 02 and 03 on the client side. Five sends.
WED Candidate sends, fifteen, within the split.
THU 15 across every reply. Referrals answered within the hour.
THU 16 shortlist-writer on anything ready.
FRI 17 ats-handoff on everyone screened this week.
FRI 04 market-map on one target account.
MONTHLY Fill rate by function, honestly.
Which signal type produced the briefs.
The monthly fill rate by function is the number that decides the business. A 30% fill rate on a function you keep pitching is a function to stop pitching, and most agencies never calculate it.
The four rules that govern everything
1. The ceiling is account-wide, not per campaign. Twenty connection requests a day, whatever else is running. A BD campaign at 20 and a sourcing campaign at 20 means the account attempts 40.
2. Never approach a company on the off-limits list. An automated sequence breaching an off-limits agreement is the kind of thing that ends a client relationship, and the sequence will not know unless the file exists.
3. Never name a candidate without written permission, even in an anonymised client story. Their current employer reads LinkedIn.
4. Decline briefs you cannot fill. Taking one feels like winning for about six weeks and then costs you the relationship you were building.
What is in this playbook
| Page | What it holds |
|---|---|
| Setup | The two motions, the ceiling, the three context files and the role brief |
| The Client Side | 9 skills for winning briefs, in full |
| The Candidate Side | 9 skills for filling them, plus the four open-source repos |
| The 40 Recruitment Agents | BD, sourcing, content and operations, ten each |
| The Prosp MCP | 22 tools, and the safety rails |
| Optimise Your Profile | The nine checks and the rewrite |
| Viral Post Templates | The six structures and the humanising pass |
| Recruiters: 2 DM Approaches | The two message shapes that work in this vertical |
| Harvest Candidates from Comments | The highest-intent cold source there is |
| Sell-By-Chat | Turning replies into calls |
The skills decide. Prosp reaches both sides 💜