10-step playbook to put an agent on your pipeline: tracks every conversation, drafts the next followup at the right time, surfaces deals that are stalling, never auto-sends.
Open in Dock→Founders + sales leads with active pipelines
The deals you lose are mostly the ones you forgot to follow up on, not the ones that said no. A sales-followup agent solves the forgetting: it tracks every conversation, knows the cadence rules, drafts the next email at the right time, and surfaces stalling deals before they go cold. The trap is over-automation: an agent that auto-sends generic drafts will lose more deals than it saves. This playbook walks the 10 steps to build a followup agent that does the work without sending anything without your approval, with a Pipeline surface as the source of truth and a daily Next Actions digest you can clear in 15 minutes.
Outcome
An agent watching your pipeline daily, drafting followups at the right cadence point, surfacing stalling deals in a morning Next Actions digest, never sending without your approval, deals that slip through your fingers go from common to rare.
Time3-5 days build, ongoing weekly useDifficultyintermediateForFounders + sales leads + AEs running a 10-100 deal pipeline.
Top to bottom. Each step has tasks, pointers, gotchas.
01 / 10
Define your pipeline schema + stages
1-2 hr
Before the agent can track deals, you need a clean schema. Decide your stages (typical: New / Discovery / Demo / Proposal / Negotiation / Closed-Won / Closed-Lost) and the columns the agent needs (deal name, contact, company, stage, last-touch-at, next-action, expected-close, deal-size, owner). If you have a CRM, use its schema; if you don't, use a Dock Pipeline surface as the source of truth.
Tasks
Decide stages: keep it to 5-7 (more = harder to track signal)
More than 7 stages = the agent will mis-classify deals between adjacent stages. Keep stages distinct.
Stages without entry criteria are vibes. Define what 'Demo' means: a calendar invite accepted + a discovery doc shared, not just a vague 'they're interested.'
02 / 10
Define the cadence rules per stage
1 hr
The cadence rules are the agent's instructions: 'in stage X, follow up after Y days if no response.' Common rules: New = 1 day, Discovery = 3 days, Demo = 5 days post-demo, Proposal = 7 days, Negotiation = 3 days, Closed-Lost = 30-day breakup. The agent uses these rules to decide which deals need action today.
Tasks
For each stage, define the cadence: 'follow up after N days if no inbound touch'
For each stage, define the message tone (Discovery: curious; Proposal: helpful; Negotiation: direct)
For each stage, define the escalation: when to bring the human in (Negotiation deals always; Discovery only if 3+ no-responses)
Aggressive cadences (1-day followups in Discovery) burn out warm leads. Real-world cadences are typically 3-7 days between touches at most stages.
Don't define a cadence rule you don't actually follow yourself. The agent will execute it relentlessly and you'll resent it within a week.
03 / 10
Write message templates per stage + use case
2-4 hr
The agent drafts followups, it doesn't invent them from scratch. Give it 5-15 templates per stage, with placeholders for the contact name, last-touch summary, and next-action ask. The model fills in the placeholders contextually. Templates make the drafts deterministic; without them, you get 50 different voices in your outbox.
Tasks
Write 3-5 templates per stage (covers the main scenarios)
Each template: subject, body with placeholders, voice notes, suggested close
Variants: short reminder, deeper-context followup, breakup email
Save all templates to the Brief as 'Templates v1'
Test 5 templates manually: rewrite from scratch using the template, see if the result feels human
Templates with corporate fillers ('I hope this finds you well') get marked as spam by Gmail's classifier.
Templates over 150 words have lower reply rates than 50-word templates. The model defaults to verbose; constrain it.
If you don't actually use one of the templates after 4 weeks, kill it. Dead templates clutter the agent's decision-making.
Agent prompt for this step
Read the cadence rules from the Brief.
Draft 3-5 templates per stage following this structure:
1. Subject (under 50 chars, no spam triggers)
2. Body (under 100 words, real-human voice, ends with one specific ask)
3. Voice notes (1 line: "warm and curious" / "direct" / "short")
4. Suggested close ("when works for a 15-min call?" / "thoughts?" / "still on your radar?")
Constraints:
- No "Just checking in," it's the most-flagged spam phrase.
- No "I hope this finds you well," same.
- No corporate-speak. Read like the user wrote it themselves at 2pm on a Tuesday.
Output as a Brief section titled "Templates v1".
04 / 10
Wire the agent to read inbox + calendar + pipeline
4-8 hr
The agent needs three reads: inbox (for new touches), calendar (for completed calls), pipeline (for stage + last-touch state). Two patterns: (a) a custom script using Gmail / Calendar / CRM APIs, (b) MCP servers for each. Pattern (a) is more reliable for unattended automation; pattern (b) is more flexible if you want interactive sessions.
Tasks
Set up Gmail API access (gmail.readonly + gmail.modify scopes; NO gmail.send)
Set up Google Calendar API (calendar.readonly)
Set up CRM API (HubSpot / Pipedrive / your own) OR Dock workspace MCP
Implement the daily scan: for each Pipeline row, read recent inbox + calendar for that contact, detect new touches
On detected touch: update last_touch_at + stage on the Pipeline row
Test with 5 deals manually first, confirm correctness before scaling
DO NOT request gmail.send scope. The agent never sends; this is the safety rail.
Calendar events with vague titles ('Catchup' / 'Sync') are hard for the agent to attribute. Encourage your team to use deal-named meetings ('Acme x Vector intro').
If you use a CRM, two-way sync (Pipeline -> CRM and back) needs careful conflict resolution. Pick one as source of truth.
05 / 10
Build the daily pipeline scan + draft loop
4-6 hr
The loop: every morning, walk every Pipeline row, decide if a followup is due (based on stage cadence + days since last touch), if yes draft the followup using the right template, attach the draft to the row. The draft is editable in the Pipeline surface; you (the human) review, edit, click Send.
Tasks
Implement the morning scan: walk Pipeline rows, compute days_since_last_touch per row
For each row where cadence threshold is hit + stage allows agent drafts: pick the template, generate the draft
Save the draft as a Gmail draft (gmail.users.drafts.create) AND attach the draft_id to the Pipeline row
Skip rows where stage is 'Negotiation' or 'Closed-Lost' (high-stakes; human-only)
Skip rows where the user has already replied today (no double-followup)
Drafts that reference details from the thread ('per your note about pricing tiers') outperform generic templates 3x. Make the agent read recent thread context.
Dont send drafts that the agent created at 7am if your CRM was off all weekend. Confirm freshness before drafting.
Multiple drafts per deal in one day is a bug. Dedupe before creating, check if a draft for this deal already exists.
Agent prompt for this step
For each Pipeline row where days_since_last_touch >= cadence_for_stage AND stage allows agent drafts:
1. Read the last 5-10 emails in the thread for context
2. Read any meeting notes attached to the Pipeline row
3. Pick the template that fits the stage + scenario
4. Fill in placeholders: contact name, last-touch summary (1 line), specific next-action ask
5. Create a Gmail draft via the API
6. Attach the draft_id + a 1-line summary to the Pipeline row's "next_action" column
Output: a list of (deal name, draft subject, draft preview) appended to the Brief as "Draft pass <date>".
Skip rows in stages: Negotiation, Closed-Lost. Skip rows the user already replied to today.
06 / 10
Build the morning Next Actions digest
2-3 hr
The daily output to you is the Next Actions digest: top 5-10 deals needing action today, ordered by deal size + urgency, each with a 1-line summary + the draft link. You read the digest with coffee, click into each draft, edit + send (or kill). 15 minutes total. The digest is the human-in-the-loop interface, without it you'll never know what the agent did overnight.
Tasks
Format: top 10 deals, ranked by (deal size * urgency)
Each row: 1 line (deal, contact, days since last touch, suggested action, link to draft)
Add a footer: total deals scanned, drafts created, deals stalling (>14 days no movement)
Choose delivery: a Brief surface, a Slack DM to yourself, or an email digest
Digests over 10 deals get scanned, not acted on. Cap at 10. The 11th waits for tomorrow.
Don't sort alphabetically or by stage. Sort by deal value + urgency, you act on the top 3 anyway.
Agent prompt for this step
Read the Pipeline surface.
Identify: deals where days_since_last_touch >= cadence_for_stage AND stage is Active.
Rank by: (deal_size * urgency_factor). Urgency factor: stage closer to close = higher; days-stalling = higher.
Take the top 10. For each, write:
`[icon] [Deal] (~$X) -- [Contact] -- N days since last touch -- [Suggested action] -- [Draft: link]`
Footer:
`Y deals scanned, Z drafts ready, W deals stalling (>14 days no movement).`
Save as a Brief section titled "Next Actions <date>".
07 / 10
Run a 1-week shadow pass: log + draft, but you send manually
1 week
Before you trust the daily flow, run for 1 week in shadow mode: drafts get created, the digest gets posted, you review every draft and either send-after-edit or skip. Track: how many drafts did you send as-is? How many did you edit? How many did you kill? After a week, you'll have a calibrated sense of when the agent is helpful vs. when it's adding work.
Tasks
For 7 days, review every draft the agent creates
Mark each: sent-as-is / sent-with-edits / killed
Aggregate: % sent-as-is per stage + per template
If sent-as-is rate < 40%: the templates need work; refactor before week 2
If sent-as-is rate > 80%: the templates are great, but verify you're not just rubber-stamping
Skipping shadow week is the #1 cause of agents that get turned off in week 2. The drafts feel slightly off and you start ignoring the digest.
If you find yourself rewriting drafts heavily, the cadence is firing on the wrong deals or the templates don't match your voice. Tune both.
08 / 10
Add stall detection + escalation
1-2 hr
The biggest win of an agent is catching deals that are stalling: 14+ days with no movement. The agent should flag these in the digest with a 'stalling' indicator and suggest an escalation path: a different angle, a multithreading attempt (reach a second contact at the company), or a graceful breakup email. Stalls are where deals die; catching them early is the agent's most valuable job.
Tasks
Add a 'stalling' field to Pipeline (computed: days_since_last_touch > 14 AND stage is Active)
In the digest, surface stalling deals separately at the top
For each stalling deal: agent suggests one of: re-engagement angle, multithread attempt, breakup email
Add a 'multithread' workflow: agent suggests a second contact at the company, drafts an intro to them
Stall detection at 14 days is for mid-market. For enterprise (90+ day cycles), bump to 21-30 days; for transactional (sub-2-week cycles), drop to 5 days.
Multithread suggestions need real research: don't just guess at a second contact, the agent should pull from LinkedIn or your existing CRM contacts at that company.
Auto-breakup emails after 30 days of silence work, but only if the tone is light and grants permission to walk away. 'Closing your file' templates are common; clone one.
09 / 10
Weekly review: what the agent caught, what it missed
30 min/week, recurring
Every Friday, do a 30-min review: pull the deals that closed-won in the past 30 days, check if the agent caught the right cadence point on each. Pull the deals that closed-lost, ditto. Pull the deals that went silent, did the agent flag them? The review surfaces systematic gaps: a stage where cadence is wrong, a template that's too aggressive, a contact-detection rule that's missing.
Tasks
Open the Pipeline filtered to last 30 days
For each closed-won: was the agent's followup the right last-touch? If yes, log a positive signal
For each closed-lost: did the agent miss a stall? If yes, what's the rule that should've caught it?
For each silent (no movement, no stage change): did the agent flag for stall? Was the suggested action correct?
Update the Brief with one or two specific tweaks for the next week
Don't credit the agent for closes the human-driven; the agent only gets credit for keeping the deal alive at a moment it would've otherwise died.
Don't tweak more than 2 things per week. More than that and you can't tell which change moved which metric.
Agent prompt for this step
Pull deals from the Pipeline that changed stage in the last 30 days.
For each closed-won: did the agent's followup precede the close? Quote the followup that mattered.
For each closed-lost: was there a stall the agent should've caught earlier?
For each still-active but silent: is it correctly flagged as stalling? Is the suggested action good?
Output as a Brief section titled "Weekly review <week-of>":
1. Wins where the agent helped (with the specific touchpoint)
2. Losses where the agent could've intervened (with the missed signal)
3. 1-2 specific tweaks to apply (cadence change, template edit, stall threshold change)
Constraints: be honest. The agent's job is to make the user better, not to look good in a self-review.
10 / 10
Iterate: add LinkedIn, expense automation, multi-rep support
Ongoing, 2-4 hr/month
Once stable, expand: wire LinkedIn for multi-channel followups (the agent suggests, you send via the LinkedIn UI), add expense / proposal generation tied to deal stage, share the agent across multiple reps (each rep has their own digest, the workspace is shared). Don't expand more than one capability at a time, every new surface is a new failure mode.
Tasks
Add LinkedIn integration (manual paste, or the LinkedIn API if you have access)
Add proposal-draft generation: when a deal hits Proposal stage, agent drafts a tailored proposal doc
Multi-rep: each rep gets their own digest filtered to their owned deals; shared Pipeline surface for the team
LinkedIn's automation policies are strict, no auto-send without violating ToS. Stick to draft-and-suggest, you paste manually.
Multi-rep means multiple owners on Pipeline rows. Make sure the agent only drafts for the right owner, cross-rep drafting is a recipe for embarrassment.
Hand the template to your agent
Workspace-wide agent prompt.
Paste this into your agent's permanent system prompt so the agent reads, writes, and maintains the template's surfaces as you work through the steps.
Agent system prompt
You are the sales-followup agent on the workspace at your-org/build-a-sales-followup-agent.
Your role: track the pipeline, draft followups at the right cadence point, surface stalling deals.
Cadence:
- Run every morning at 7am local time.
- Read every Pipeline row. For each deal: check inbox + calendar for new touches since last_touch_at; update last_touch_at and stage if changed.
- For deals where time-since-last-touch > cadence-rule-for-stage: draft a followup (do NOT send), attach the draft to the row.
- Surface the top 5 deals needing action today as a Brief section "Next Actions <date>".
- Flag deals stalling (no movement > 14 days) for human attention.
NEVER send an email without a human clicking Send. NEVER mark a deal Won or Lost without a human's confirmation.
First MCP tool calls:
1. list_workspaces()
2. list_rows(workspace_slug="build-a-sales-followup-agent", surface_slug="pipeline")
3. get_doc(workspace_slug="build-a-sales-followup-agent", surface_slug="brief")
FAQ
Common questions on this template.
Why not just use my CRM's built-in followup automation?
CRM automation is rule-based and templated: 'send template X if no reply in N days.' An agent reads the actual thread context, picks the right template AND fills it with details from the conversation, drafts something that sounds like you, and surfaces stalling deals based on patterns the rules can't see (a vague 'looking forward to it' that didn't go anywhere). You can keep the CRM alongside the agent, the agent reads + writes through its API.
Won't auto-drafted emails feel generic and hurt my reply rate?
Generic templates do, contextual drafts don't. The pattern in this playbook reads the last 5-10 emails in the thread + meeting notes + the deal-specific Pipeline row, then drafts an email that references those details. Reply rates on contextual drafts are typically equal or better than fully-handwritten followups, with 80-90% less time per draft. The constraint is keeping the templates short (under 100 words) and the placeholders specific.
Can I let the agent send automatically?
No, and the playbook doesn't support that. The risk-reward isn't worth it: one auto-sent draft to a key prospect with the wrong context loses the deal. The pattern is draft-but-don't-send: the agent drafts, you click Send. Total time per draft after agent: 30-60 seconds (read, light edit, send). Total time without agent: 5-10 min (think, write, edit, send). The agent saves the slow part; the click is fast.
How does this interact with my CRM?
Two patterns. (a) The Dock Pipeline surface is the source of truth; the agent reads + writes the Pipeline rows; if you want CRM data, you mirror nightly. (b) Your CRM is the source of truth; the agent reads via the CRM API and updates rows there. Pattern (b) is better if your team already lives in the CRM; pattern (a) is better if the CRM is creaky and you want a parallel source of truth that's faster + more agent-friendly.
What does this cost in API tokens?
For a 50-deal pipeline with daily scans + 5-10 drafts/day on Claude Sonnet: $20-50/month. With Opus drafts on the high-stakes deals (Negotiation stage): $40-100/month. CRM + cron + hosting: $0-30/month on free tiers. Total: $30-150/month on top of your existing CRM + email subscriptions. ROI is the cost of one missed follow-up that closes-lost a $5K+ deal; you do the math.
Can my AI agents help build the agent?
Yes. The playbook ships agent prompts for the slow parts: drafting cadence rules from your historical close patterns, drafting message templates per stage, generating the daily Next Actions digest, the weekly win/loss review, and the iteration plan. The Pipeline + Brief surfaces are the canonical record, every deal's state, every template version, every weekly review.
Open this template as a workspace.
We mint a fresh copy in your org with the steps as table rows, the pointers as a separate table, and the brief as a doc. Bring your agents, start checking off boxes.