5/5 on Capterra · 800+ agencies and sales teams

The Demo Booker Co-Pilot

One connection, and Claude runs the appointment-setting process end to end.

14 days free · Set up in 5 minutes · Cancel anytime
This playbook is from Prosp, which runs LinkedIn outreach for you so you book more meetings.Try it free →

One connection, and Claude runs the appointment-setting process end to end.

Find high-intent prospects, research the context, find the angle, write the outreach, handle the follow-ups, manage the replies, qualify, and book the meeting. Without jumping between ten tools.

Inside: the one-line install, the nine stages with the exact tool or skill that runs each, what the setup genuinely cannot do yet, and the weekly loop a sales team actually runs.

Every stage says plainly whether it is handled, partly handled, or still manual.

AI Driven, Personalized Outreach on LinkedIn: Prosp 💜

Section 1

Setup: One Connection, One File, Nine Stages

One line to install. One file to write. Then you tell Claude what you want.

The connection

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.

Get a key in Prosp under Settings, then API. Free to get started.

Repo: github.com/JackJProsp/prosp-mcp-server

Run the first session read-only.

PROSP_READ_ONLY=true

Every write refuses, every read works. You get the full picture of lists, campaigns and figures with no possibility of anything going out. Turn it off once you have seen what the agent proposes.

The one file

Everything downstream reads this. Ten minutes, and it does more than any prompt.

# .agents/outreach-context.md

## What we sell
One line, in the words a customer would use:
What a meeting is actually for:
Price band:

## Who we sell to
Exact job title:
Company type and size band:
What they are trying to do:
What they have already tried that failed:
Who this is NOT for:

## Proof, with permission
Numbers we can stand behind publicly:
Named clients we may reference:

## Voice
Three adjectives:
Two phrases we would never say:

## Objections we hear weekly
The five to ten real ones, with our best current response:

## Send budget
Connected accounts:
Daily connection requests available, ACCOUNT-WIDE:
Other campaigns already running on these accounts:

## Banned
<never_use_these>
Claims we cannot evidence:
Numbers nobody approved:
</never_use_these>

The last line of the send budget section is the one people leave blank. Recommended limits are account-wide rather than per campaign, so an agent that does not know what else is running will propose a volume that restricts the account.

The objections section pays back fastest. Every team hears the same five to ten weekly. Encoding the best answer once means the reply drafts answer consistently rather than improvising.

The nine stages, and what runs each

Stage What runs it Status
1. Find high-intent prospects import_from_post, import_from_search Handled
2. Research company and context Web search plus the account brief skill Handled
3. Enrich contact details See below Partly
4. Find the right angle signal-finder skill Handled
5. Write personalised outreach opener-writer plus Prosp variables Handled
6. Handle follow-ups Sequence branching in the builder Handled
7. Manage replies get_inbox, reply-router skill Handled, drafts only
8. Qualify prospects qualification-engine skill Handled
9. Book the meeting next-step-closer skill Drafts the ask, human sends

Stage 3 is the honest gap. A LinkedIn post import returns name, headline and profile link. Nothing else. Email extraction works only for first-degree connections who list an email on their profile.

So if your motion needs verified work emails at volume, that is a separate enrichment tool and this setup does not replace it. If your motion is LinkedIn-native, the gap does not matter, because you message them on the platform where you found them.

Stages 7 and 9 draft rather than send. That is deliberate. Anything reaching a person needs confirm=true, so the decision to send is visible in the tool call rather than buried in reasoning.

What this does not do

Worth being straight about, because the limits shape the plan.

It does not bypass a rate limit. The server refuses volumes above the configured budget rather than finding a way around them. Recommended limits sit at roughly 20 connection requests a day and 100 messages a week, account-wide.

It does not score or tier leads natively. There is no built-in lead scoring in the platform, so the scoring in stage 4 is a skill Claude runs over the list rather than a feature.

It does not book the meeting without a human. It drafts the ask, names the length and the agenda, and offers two times. A person presses send and a person takes the call.

It does not send from Claude. Claude decides and drafts; the sending runs on infrastructure built for it, with a dedicated residential proxy per connected account.

The one brief that runs the whole thing

Once the file exists and the MCP is connected, this is the whole instruction.

Take ownership of this from start to finish.

Read .agents/outreach-context.md.

GOAL: a launch-ready campaign on account [ID], built from the
engagers on this post: [URL]

1  Check the account budget first. Tell me the headroom.
2  Create the list and import commenters and likers.
3  Research each company and find one dated signal per lead.
4  Score them. Sort descending.
5  STOP. Show me the list, the score spread, and how many weeks
   of send budget it represents. Wait for me.
6  Write the connection note and the opener. Under 200 and under
   300 characters. Line one references the signal specifically
   and it must be dated.
7  Build the sequence at 10 a day.
8  STOP. Show me every message before anything is created.

Hard rules:
- Never propose a volume above the account budget.
- Never invent a number or a client name.
- Nothing starts. I press the button.

Two stops, not eight. The list and the copy are the only two decisions worth interrupting for. Everything between them is reversible by editing a file.

Section 2

The Nine Stages, In Full

Nine stages, in order. Each one says what to ask for and what comes back.

The skills are written out in full. Save to .claude/skills/.

1. Find high-intent prospects

Create a lead list called "q1-revops-pricing-post".

Import the people who commented and liked this post:
[PASTE POST URL]

Then show me: how many leads, and how many are already first
degree. That changes the campaign shape rather than the quality.

The live lead sources are your lead database, basic LinkedIn search, Sales Navigator search, CSV upload, LinkedIn post likers and commenters, and your first-level connections.

Event members, group members and pasted profile URLs are marked coming soon, so plan around the six that are live.

Why the post import is first. Someone who commented on a post about the exact problem you solve has done something. Someone matching a search filter has done nothing.

Importing costs nothing. The capped resource is sending, so import broad and filter at the send step.

Name the list after the campaign and the signal, never the channel. "q1-revops-pricing-post" is answerable in three months. "LinkedIn leads" is not.

2. Research the company and context

---
name: account-brief
description: Research a target account before anyone writes to it.
---
FAN OUT across their site, their content, their hiring, and any
reviews. Then SYNTHESISE ONCE, at the end.

OUTPUT per account:
- What they actually sell, in their words
- Size band and whether it fits the price band
- Who appears to own the problem we solve
- What they have tried already, if visible
- Anything that changed in the last 90 days

EVERY FINDING NEEDS A SOURCE AND A DATE. A claim with neither is
not a finding, it is a memory.

FAIL CLOSED on anything you cannot source. Write UNKNOWN rather
than filling it plausibly.

Run this on the accounts that matter, not every row. Research is the expensive stage and most of a raw list gets discarded at the next one.

3. Enrich contact details

The honest stage.

A post import returns name, headline and profile link. That is what comes back.

Email extraction works only for first-degree connections who list an email on their LinkedIn profile. For anyone else, there is no email in the import.

What this means for your motion:

If you are running LinkedIn-native outreach, the gap does not matter. You found them on LinkedIn and you message them on LinkedIn, and the profile link is the only identifier you need.

If you need verified work emails at volume for a multi-channel sequence, that is a separate enrichment step with a separate tool. This setup does not replace it and saying otherwise would waste your time.

What you can enrich without a tool: the CSV import accepts any extra column and turns it into a custom variable. So a signal recorded during stage 4 travels with the lead into the copy at stage 5, which is the enrichment that actually changes reply rates.

4. Find the right angle

---
name: signal-finder
description: Find a dated, verifiable reason to contact each lead
  now rather than later. High effort.
---
ONE signal per lead, ranked by proximity to a budget decision.

TIER 1, budget is already moving
- Hiring for the role our offer replaces or supports
- Raised in the last 90 days
- New leader in post, last 60 days
- Publicly named the exact problem, last 30 days

TIER 2, the problem is visible
- Their site or content shows the specific gap
- Commented on a competitor's post
- Expanding into a new market

TIER 3, fit only, no observable trigger

RULES
Every signal VERIFIABLE and DATED. Record the date and the URL,
because it appears in the first message and they will check it.

No signal means write NONE.

Never stretch an attribute into a trigger. "Works at a SaaS
company" is fit, not intent, and using it as intent is the
clearest tell that a message was generated rather than written.

FAIL CLOSED on any signal you cannot date.

Then score, so the send budget goes in the right order:

DEPTH x FIT, each 1 to 3, multiplied. Maximum 9.

DEPTH  1 reaction only
       2 short comment
       3 substantive comment, or engaged more than once

FIT    1 adjacent  2 close  3 exact match

6 to 9  contact this week
3 to 5  hold, watch for a second signal
1 to 2  no outreach

There is no native scoring in the platform, so this is a skill Claude runs over the list. At 20 a day, a 400-row list is five weeks of the entire budget, and the order decides the quarter.

5. Write personalised outreach

---
name: opener-writer
description: Write the first message from a dated signal.
---
STRUCTURE
Line 1  the signal, dated and specific
Line 2  the inference drawn from it
Line 3  the question

RULES
- Under 300 characters.
- Line one references the signal SPECIFICALLY, not its category.
- One ask, answerable in under ten words.
- Never mention the product in message one.
- No compliments. No "hope this finds you well".
- No em dashes.

BANNED, burnt:
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"

The variables available in the message editor:

{{first_name}}   {{last_name}}    {{full_name}}
{{headline}}     {{company_name}} {{job_title}}
{{industry}}     {{location_raw}}

Plus any custom variable from a CSV import, which is how the signal from stage 4 gets into the copy.

Set the fallback. The editor has a "fallback if a variable is missing" field for a version with no variables. Fill it in. Nobody should receive "Hi ,".

The in-app guidance is right: keep it under three sentences and end with a soft ask.

Preview before anything sends. The launch step renders what your first messages will say against each lead's real details. That catches the prompt that reads fine on lead one and produces something odd on lead five.

6. Handle follow-ups

The sequence is a canvas. Steps branch natively on outcome.

THE TEN ACTIONS
visit profile, connection request, send message, voice note,
InMail, follow, like last post, comment on last post, reply to
comment, endorse skills

THE FOUR CONDITIONS
if connected, if opened message, open-profile check,
has data in column

Delay is a property of each step card, not a separate action. The header reads "No delay" with an edit pencil. Setting a delay of zero runs the step as soon as the previous one finishes.

Branching is native. A send message step splits into a no-reply path and a replied path, each continuing or ending independently. That is what handles follow-ups without you building a condition for it.

No wait card after a connection request. Acceptance auto-detects, checking every 24 hours for two weeks with a random delay. Adding a wait there only delays the sequence.

Four touches maximum. After that the answer is no.

Add a voice note on touch two. Lead magnet sequences that include one get a 3.5x higher reply rate than those without. Keep it under 20 seconds and pair it with a written message, never alone.

Two starter templates fill the canvas if you want a base: "Connect and follow up" and "Profile warm-up".

7. Manage replies

---
name: reply-router
description: Classify every inbound reply and route it. Cheapest
  model, runs continuously.
---
Exactly one category:

INTERESTED       Wants more, asks about the offer
TIMING           Interested, not now. Capture the date named.
OBJECTION        Price, fit, incumbent, capacity
WRONG_PERSON     Not their remit. Ask who owns it.
NOT_INTERESTED   Clear no. Thank them, stop, never pitch again.
AUTO_REPLY       Out of office. Reschedule to their return date.
ESCALATE         Anything below 8 confidence

Per reply: category, confidence 1 to 10, the sentence that
decided it, and the recommended next action.

Below 8 confidence, always ESCALATE. Sarcasm, brevity and
politeness all read the same in text.

DRAFT for INTERESTED and OBJECTION. Never auto-send.

MATCH THEIR REGISTER. Reply within roughly 20% of their message
length. A three-line reply to a six-word message reads as eager.

ONE QUESTION ONLY. Two gets you an answer to the easier one.

WRONG_PERSON is the most valuable category and the most commonly
binned. Ask who owns it, and feed the answer back into the ICP.

The inbox has a Prosp and All toggle, conversation search, and an All accounts dropdown. Each conversation shows which sender it came via, so a team running several accounts works one queue rather than several logins.

A reply stops that lead's campaign automatically. You do not need to build that.

8. Qualify prospects

---
name: qualification-engine
description: Apply the framework AND actively look for reasons to
  kill the deal. Max effort.
---
PART ONE. Apply the framework. Per element: what we know, the
evidence, confidence 1 to 10. Below 6 is a gap, not a fact.
Never fill an element by inference.

A deal with four UNKNOWNs is not late-stage regardless of how
long it has been open.

PART TWO. Look for reasons to disqualify:
- Do they hit any disqualifier
- Economic buyer identified, or only a champion
- A compelling event with a date, or only interest
- Can they afford the entry price
- An incumbent contract nobody has checked
- Anything moved in the last 14 days

RETURN exactly one:
QUALIFIED    All checks pass. State the compelling event.
AT RISK      Named gaps, with the question that resolves each.
DISQUALIFY   The specific reason and the honest message to send.

A clean DISQUALIFY is a SUCCESS. It returns send capacity,
calendar time and forecast accuracy.

NEVER soften a DISQUALIFY to AT RISK because pipeline looks thin.
That is how a quarter gets missed twice.

Part two exists because nobody else in the process is incentivised to run it.

9. Book the meeting

---
name: next-step-closer
description: Decide whether to ask for the meeting, then draft it.
---
DECIDE IF BEFORE HOW.

ASK NOW WHEN
- They asked something needing more than 400 characters to
  answer
- They named a problem we solve
- They asked about price, timeline or implementation
- Two substantive messages have gone each way

DO NOT ASK YET WHEN
- They replied with one line
- They have not named a problem
- It is still the first exchange
Ask one more question that gets them to name the problem.

HOW
- Name the length and the agenda. "15 minutes, three questions,
  no deck."
- Offer the link AND two concrete times. Some book, some reply.
- Never "let me know what works". Decision fatigue kills
  bookings.

Under 350 characters including the link.

AFTER SENDING, mark the lead so the sequence stops. A follow-up
landing after someone has booked is the most avoidable bad
impression in the system.

This drafts. A human sends. Anything reaching a person needs confirm=true in the MCP, so the decision is visible in the tool call.

Section 3

The Weekly Loop, and What A Seat Is Worth

What a sales team actually runs once it is built.

Less time building lists. Less time writing messages. The time goes to the conversations instead.

The weekly loop

MON  Run the diagnostic. One change, not three.
MON  Import from last week's best post. Score, sort.

TUE  Research the top 20. One dated signal each.
TUE  Write the opener. Preview against ten real contacts.

WED  Top up the campaign, within the daily split.

DAILY  Reply pass over the inbox. Classify, draft, send
       yourself.
DAILY  Book what is bookable.

FRI  Log what changed and what it produced.

MONTHLY  Which signal tier produced the booked meetings?

The monthly question is the highest-value line in any report and the one most likely to be skipped, because it produces one sentence rather than a dashboard.

The diagnostic

Work the chain in order. Stop at the first failure.

1 ACCEPTANCE BELOW 15%
  The connection note, or the list is off-ICP. NOT the sequence.
  Check in order: is a note attached, is it specific and dated,
  does it contain an ask, is the list the ICP, is the profile
  optimised. The profile is the one nobody checks.

2 ACCEPTANCE FINE, REPLIES BELOW 10%
  The list is fine. The first message is the problem.
  Sample 20 sent messages and count which checks failed.

3 REPLIES FINE, MEETINGS LOW
  The ask is mistimed, or the offer is wrong.

4 MEETINGS FINE, NOTHING CLOSING
  Not an outreach problem. Price or fit.

5 ALL FINE, VOLUME LOW
  The daily cap split across campaigns.

One change per week. Change three and a lift tells you nothing about which one worked.

The campaign analytics give you the inputs: invites sent, accepted with the acceptance percentage, replied with the reply rate, and interested. Plus a funnel across those four and step performance per card.

The ceiling, and the split

The constraint that governs the whole thing.

RECOMMENDED, ACCOUNT-WIDE not per campaign
  Connection requests   20/day, or 100/week
  Direct messages       ~100/week free, ~150 premium
  Profile views         80/day free, 150 premium
  Comments              60/day
  InMail                50/month with Sales Navigator

Safe sending limits come set out of the box, applied per sender, with a safe-defaults badge. They can be changed, and the interface warns that higher limits increase account risk.

One campaign can be split across several sending accounts. The launch step lets you pick multiple, and the work spreads to keep each account safe.

The skip-people filters handle the overlap problem. Checkboxes for people you already reached out to and your do-not-contact list, with a "look across" toggle for any campaign, any of your accounts, or this account only.

The note in that section is worth knowing: leads can be reused, and the same account waits about three weeks before sending another connection request.

What a seat is worth

The arithmetic a sales lead will want before adding one.

$79 per seat per month monthly, or $49 per seat per month annual.

One LinkedIn profile running properly books up to 15 calls a week. Close one deal from that and the seat is ROI positive, which is the whole case.

Free to get started.

For context on scale: over 1,700,000 LinkedIn DMs sent through the platform to date.

The five ways this goes wrong

1. Three campaigns at 20 each. Limits are account-wide. That is 60 attempts a day. Split it so the total stays inside the ceiling.

2. Adding a wait after the connection request. Acceptance auto-detects over two weeks. The wait only slows the sequence.

3. Launching on an unscored list. At 20 a day the order decides the quarter, and working a 400-row list in the wrong order means the best prospects get contacted in week five.

4. Changing three things after a bad week. Then you know nothing. One change, always.

5. Letting the sequence run on someone who booked. Mark them so it stops. Most avoidable bad impression available.

Claude decides and drafts. Prosp reaches people 💜

↳ Start a 14 Day Free Trial 💜 ↳ Watch Full Tutorial ▶️

Book more meetings from your LinkedIn

Prosp finds the right prospects, writes to each one in your voice, and runs your outreach safely from the cloud. You take the calls.

Set up in 5 minutes · Your LinkedIn stays safe · Cancel anytime