Reply Agent
The Reply Agent (also called the Message Reply Agent) drafts a response to every inbound LinkedIn DM. You either review and send the draft, or let the agent send autonomously after a configurable delay.
The agent runs on the LinkedIn accounts you allow-list — never on accounts you haven’t opted in. Output is calibrated to your existing DM history (style, sentence length, common phrases).
Setup
Outpilot → Agents → Reply Agent.
1. Allow-list accounts
By default the agent runs on no accounts. Tick the LinkedIn accounts you want it to draft replies for. Most users start with one account before expanding.
2. Pick a mode
off— dormant. (Default.)suggest— drafts queue at the top of the conversation in the Inbox; you approve before sending. Recommended for the first 1–2 weeks.auto_send— drafts send autonomously after the configured delay (see below). Use only when the suggest-mode drafts are consistently good.
3. Tune settings
Open Settings:
| Setting | Default | What it controls |
|---|---|---|
auto_send_delay_seconds | 90 | In auto-send mode, how long the draft sits before firing. Gives you a window to cancel. |
business_hours | 09:00–18:00, account TZ | Agent only acts inside this window |
daily_cap | 30 | Max replies per account per day |
skip_if_in_campaign | true | Don’t draft if the thread is part of an active outbound campaign (avoid double-handling) |
min_inbound_length | 3 chars | Skip ultra-short messages (“ok”, “thx”) — no signal |
max_consecutive_agent_messages | 1 | Stop the agent if you’d be the second consecutive agent reply (escalates to a human) |
escalation_phrases | pricing, demo, call, schedule, lawyer, complaint, refund, unsubscribe | If the inbound contains one of these, the agent escalates instead of replying |
4. Set the system prompt
The System prompt is the persona the agent uses when drafting. Free-text — typical content:
You are John (Founder at Acme). You write LinkedIn DMs in a casual,direct tone. Short paragraphs, never more than 3 sentences. Avoidfiller. Sign off with just "John". Never offer pricing in DMs — alwaysdeflect to a Cal.com link.Be specific. Vague prompts produce generic replies; specific prompts produce on-brand replies.
How it works
When a new inbound DM arrives:
- Eligibility check — agent allow-listed for this account?
Inside business hours? Under daily cap? Pass
min_inbound_length? - Escalation check — does the inbound contain any
escalation_phrase? If so, no draft; flagged in the Inbox for you. - Context build — the agent reads:
- The full thread history (your prior messages + theirs)
- The lead’s profile data (headline, company, title)
- Your system prompt
- Optional knowledge-base sources (see below)
- Generate draft — calls Claude with the above, returns a draft reply in your tone.
- Quality gate — the draft is checked for: minimum length, no
placeholders left in (
{{firstName}}), no off-brand phrases. Failures don’t surface the draft. - Queue or send:
suggest— draft appears in the Inbox composer; you click Use draft to send.auto_send— draft is queued forauto_send_delay_seconds. You can cancel from the Inbox during this window. After the delay, the agent sends.
Knowledge base (optional)
Add a knowledge base to the agent so its replies can reference your real product / pricing / case studies.
Reply Agent → Knowledge → Add source:
- Pasted text — drop a doc, FAQ, or pricing page.
- URL — Outpilot scrapes the page.
Sources are chunked, embedded (OpenAI text-embedding-3-small), and stored. At draft time, the agent retrieves the top-K most relevant chunks for the inbound message and includes them as context.
This is what makes “what’s your pricing?” produce a real pricing answer instead of a deflection — only if you’ve added pricing as a KB source.
Activity tab
Every draft, every send, every escalation is logged in Reply Agent → Activity:
- Timestamp, account, conversation, inbound text
- Agent’s draft (the full text)
- Outcome (
drafted,sent,cancelled,escalated,skipped) - Edit distance vs. final sent text (when you edited a draft before sending)
Use it to spot patterns: industries where the agent struggles, phrases that always trigger escalation, edits you keep making (which might mean updating the system prompt).
Frequently asked questions
Will the agent invent product features that don’t exist?
Without a KB, yes — Claude will fall back to plausible-sounding generics. Adding a KB with your actual product docs is the fix. Specific system-prompt instructions like “If asked about features not listed in the KB, say you’ll check internally” help too.
What if I edit the draft before sending?
Edits are tracked. The agent’s Activity row shows both the original draft and your edit, plus the edit distance. Patterns of edits inform what to tweak in the system prompt.
Can I have a different system prompt per account?
Currently no — one prompt per agent, applied across every allow-listed account. Most teams find that a single voice across all their LinkedIn accounts is what they want anyway.
What happens during the auto-send delay?
The draft is queued with a scheduled_for timestamp
(now + auto_send_delay_seconds). It appears in the Inbox composer.
Clicking Cancel removes the queue entry. Editing the draft also
cancels the auto-send and reverts to manual — you finish and send
yourself.
After the delay expires, a worker picks up the draft and sends it.
What does “max consecutive agent messages” actually do?
If the agent has just sent a reply, and the lead replies, and now the
agent wants to reply again — should it? max_consecutive_agent_messages
caps the chain at N (default 1). Above that, the conversation
escalates to you for a human turn before the agent can speak again.
This stops thread-level loops where the agent and a busy lead exchange auto-replies forever.
Are my conversations ever read by humans?
Only by you. The agent’s drafts go through the model API; we don’t log the content beyond what’s required for the Activity tab. We don’t train models on your conversations.