Sales Agent
The Sales Agent is an autonomous LinkedIn SDR that lives inside Outpilot. You drop a URL (your product page, a customer page, a sales brief), and the agent:
- Reads the URL and extracts who you sell to (ICP), what hooks resonate, and how you talk about your product.
- Builds a sales brief — ICP definition, message variants, sequence steps, and LinkedIn search filters — all editable.
- Bootstraps a campaign in Outpilot using the brief.
- Searches for prospects daily that match your filters, scores them, and (if you let it) auto-enrolls top scorers into the campaign.
- Classifies inbound replies as
interested / objection / not now / negativeso you can triage your inbox without reading every thread.
The result: Outpilot can keep itself fed — finding new leads, sending messages, and routing replies — without you babysitting it.
Setting up the Sales Agent
1. Open the agent
Outpilot → Agents → Sales Agent. The first time you open it, you’ll see an empty brief and a single input asking for a URL.
2. Paste a source URL
Best inputs, in order of how well they work:
- Your product/landing page — most reliable. Pulls ICP, value props, and tone in one go.
- A detailed customer-success or case-study page — second best.
- A sales-brief Notion / Google Doc (must be public) — works but the agent has less context.
Click Analyze. The agent reads the page and fills in:
- ICP — titles, industries, company size, geography
- Message variants — 3–5 alternate openers + follow-ups in your voice
- Sequence — connection request → message 1 → wait → message 2 → …
- Search filters — LinkedIn search query that matches the ICP
3. Edit the brief
Every section is editable. Click any field to refine it. Common edits:
- Tighten the ICP titles (the agent tends to be too broad on first pass).
- Replace generic message openers with one or two of your favorites.
- Adjust the sequence’s wait times to match your cadence.
You can re-generate any single section without re-reading the URL — click the ↻ button next to the section header.
4. Bootstrap the campaign
Click Activate. Behind the scenes, Outpilot:
- Creates a new campaign with your sequence steps.
- Saves your message variants as A/B copy on each step.
- Stores the search filters for the daily-search loop.
You’ll be redirected to the campaign so you can review everything before turning it on.
The daily prospect-search loop
Once the agent is active, it runs once every 24 hours:
- Search LinkedIn using your saved filters, capped by
daily_search_limit(default 20). - Score each candidate against your ICP using Claude (0–100).
- Auto-enroll scorers ≥
auto_enroll_threshold(default 70) into the campaign — but only if Auto-enroll is on.
Results are visible on the agent’s Leads tab — every scored prospect
with score, scoring rationale, and pending / enrolled / skipped
status. You can manually enroll any pending lead, or set
auto_enroll_enabled = false and review them yourself.
The loop also respects:
- Daily search limit — the cap on candidates scored per day.
- Already enrolled today — if you manually enrolled 15 leads earlier,
the loop only auto-enrolls another
daily_limit - 15. - Mode = OFF — turning the agent off pauses the loop entirely.
Reply classification
When a prospect replies on LinkedIn, the agent classifies the reply into one of:
| Label | Meaning |
|---|---|
interested | Positive intent — wants to learn more, asks for a call, etc. |
objection | Pushback that’s worth answering — pricing, timing, competitor |
not_now | Neutral defer — “circle back next quarter” |
negative | Hard no, unsubscribe, complaint |
unclassified | Reply doesn’t fit any of the above |
Each classification has a confidence score and a one-line rationale,
visible on the conversation in your Inbox. You can use the labels to
filter the inbox — e.g. show only interested for outreach, only
objection for the founder.
Variants & A/B testing
The brief includes 3–5 message variants for each outbound step. The agent rotates through them on a per-lead basis, so different prospects see different copy. After ~50 sends per variant, you’ll see acceptance rate and reply rate per variant on the Variants tab — useful for retiring weak performers.
Mark variants as retired (the variant stops being used for new leads) or unretire to revive.
Settings
Open the Settings tab on the agent for these knobs:
| Setting | Default | Range | What it controls |
|---|---|---|---|
mode | off | off / suggest / auto_send | Is the agent active? |
daily_search_limit | 20 | 1–200 | Candidates scored per day |
auto_enroll_enabled | false | – | Auto-enroll high scorers |
auto_enroll_threshold | 70 | 0–100 | Min score to auto-enroll |
system_prompt | – | free text | Agent persona / tone notes |
mode = suggest runs the loop and scores leads, but doesn’t auto-enroll
even if auto_enroll_enabled = true. Use this while you’re getting
comfortable with what the agent surfaces.
Frequently asked questions
How is the Sales Agent different from a regular Outpilot campaign?
A regular campaign needs you to define ICP, write messages, build the sequence, and import leads manually. The Sales Agent does all four automatically from a URL — and keeps doing the lead-import part daily. You can absolutely have both: agent-driven campaigns for new product launches, hand-built campaigns for high-touch enterprise.
Can I have more than one Sales Agent?
Currently one per user. Re-running Analyze with a different URL overwrites the brief — handy when pivoting positioning, but it’ll disconnect any in-flight campaign from the brief.
What does “Auto-send” mode do that “Suggest” doesn’t?
auto_send lets the agent send drafted replies to inbound messages
without you approving each one. suggest queues drafts for your review.
Both modes can run the daily search loop — the difference is purely
what happens to outbound replies, not inbound prospect search.
How do I see what the agent did today?
Outpilot → Agents → Sales Agent → Activity. Shows every event: search runs, scoring decisions, enrolls, classifications, errors. Each event has the full payload so you can audit exactly what happened.
What happens if the agent fails to search?
The loop’s failure mode is fail-soft — the run is logged with the
error, nextRunAt advances 24 hours, and tomorrow’s run tries again.
Common causes are a LinkedIn rate-limit (auto-recovers within an hour)
or a malformed search filter (edit the filters in the brief).
Can the agent reply on my behalf?
Reply suggestions yes, automatic sending only if you flip mode to
auto_send. We default to suggest on every new agent — auto-send is
a deliberate choice you opt into per agent.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Analyze returns “couldn’t read page” | URL behind auth wall, or JS-only page | Try a public version, or paste raw text into the brief |
| 0 candidates per daily run | Search filters too narrow | Loosen filters in the brief — start with title only |
| Every score is 50 | Brief ICP is too vague for Claude to score against | Tighten ICP — name specific titles, industries, company sizes |
| Variants tab is empty | < 50 sends on each variant yet | Performance numbers appear after the 50-send threshold |
Reply classification is always unclassified | Replies are very short (“ok”, “thanks”) | Expected — short replies don’t carry enough signal |