Skip to content

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:

  1. Reads the URL and extracts who you sell to (ICP), what hooks resonate, and how you talk about your product.
  2. Builds a sales brief — ICP definition, message variants, sequence steps, and LinkedIn search filters — all editable.
  3. Bootstraps a campaign in Outpilot using the brief.
  4. Searches for prospects daily that match your filters, scores them, and (if you let it) auto-enrolls top scorers into the campaign.
  5. Classifies inbound replies as interested / objection / not now / negative so 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:

  1. Search LinkedIn using your saved filters, capped by daily_search_limit (default 20).
  2. Score each candidate against your ICP using Claude (0–100).
  3. 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:

LabelMeaning
interestedPositive intent — wants to learn more, asks for a call, etc.
objectionPushback that’s worth answering — pricing, timing, competitor
not_nowNeutral defer — “circle back next quarter”
negativeHard no, unsubscribe, complaint
unclassifiedReply 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:

SettingDefaultRangeWhat it controls
modeoffoff / suggest / auto_sendIs the agent active?
daily_search_limit201–200Candidates scored per day
auto_enroll_enabledfalseAuto-enroll high scorers
auto_enroll_threshold700–100Min score to auto-enroll
system_promptfree textAgent 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.

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

SymptomLikely causeFix
Analyze returns “couldn’t read page”URL behind auth wall, or JS-only pageTry a public version, or paste raw text into the brief
0 candidates per daily runSearch filters too narrowLoosen filters in the brief — start with title only
Every score is 50Brief ICP is too vague for Claude to score againstTighten ICP — name specific titles, industries, company sizes
Variants tab is empty< 50 sends on each variant yetPerformance numbers appear after the 50-send threshold
Reply classification is always unclassifiedReplies are very short (“ok”, “thanks”)Expected — short replies don’t carry enough signal