Skip to content

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:

SettingDefaultWhat it controls
auto_send_delay_seconds90In auto-send mode, how long the draft sits before firing. Gives you a window to cancel.
business_hours09:00–18:00, account TZAgent only acts inside this window
daily_cap30Max replies per account per day
skip_if_in_campaigntrueDon’t draft if the thread is part of an active outbound campaign (avoid double-handling)
min_inbound_length3 charsSkip ultra-short messages (“ok”, “thx”) — no signal
max_consecutive_agent_messages1Stop the agent if you’d be the second consecutive agent reply (escalates to a human)
escalation_phrasespricing, demo, call, schedule, lawyer, complaint, refund, unsubscribeIf 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. Avoid
filler. Sign off with just "John". Never offer pricing in DMs — always
deflect 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:

  1. Eligibility check — agent allow-listed for this account? Inside business hours? Under daily cap? Pass min_inbound_length?
  2. Escalation check — does the inbound contain any escalation_phrase? If so, no draft; flagged in the Inbox for you.
  3. 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)
  4. Generate draft — calls Claude with the above, returns a draft reply in your tone.
  5. Quality gate — the draft is checked for: minimum length, no placeholders left in ({{firstName}}), no off-brand phrases. Failures don’t surface the draft.
  6. Queue or send:
    • suggest — draft appears in the Inbox composer; you click Use draft to send.
    • auto_send — draft is queued for auto_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.