Your agent hunts prospects, researches each one, and fills your Gmail drafts with personalized outreach. You skim and hit send.
The architecture every serious team converged on: the agent researches and drafts, the human sends. Draft-only isn’t a limitation — it’s the design. It catches hallucinated “personalization” before a prospect sees it, keeps you compliant (CAN-SPAM, GDPR), and protects your domain reputation. This guide wires prospecting, verification, research, and a drafts-only Gmail connection into one morning routine.
Outreach quality compounds: Hermes tracks which hooks earn replies and patches its own outreach skill week over week — a learning loop no static template has. Its subagents parallelize per-prospect research, and drafts-only Gmail access keeps you the sender.
Copy this prompt and send it to the agent on your Pocketcorp. It sets up everything in this guide and reports back when it’s done. The steps below explain what your agent is doing — and how to check its work.
Set up my outreach pipeline. Ground rule: you research and draft,
you NEVER send. Gmail drafts only.
1. Interview me for the ICP: who I sell to, the buyer, and the one
signal that makes a prospect a fit. Write an outreach skill with
these hard rules: one verified personalization hook per email,
every claim with a source URL; Hook → Problem → CTA, under 85
words, plain text; no links in the first mail; my voice — banned:
“I hope this finds you well”, “synergy”, “solution”, “circle
back”.
2. Wire Gmail via workspace-mcp with the gmail:drafts permission
tier ONLY. I’ll give you the OAuth client — remind me to run the
first consent on my laptop and to publish the OAuth app so
refresh tokens don’t die every 7 days.
3. Add the funnel MCPs and ask me for their keys: Apollo (find),
Hunter (verify — skip catch-alls and role addresses), Exa
(research).
4. Create the CRM sheet: prospect, hook, source, status; dedupe on
email address.
5. Cron weekdays 7:00: 15 new ICP matches, verify, research, draft
the qualified ones, log everything, then send me a digest —
count, 3 best hooks, what you skipped and why.
6. Cron weekly: compare hooks and subject lines against actual
replies in the CRM and patch the outreach skill with what works.Paste the prompt and the agent starts with questions, not code: who do you sell to, who is the buyer, and what single signal marks a prospect as a fit? Answer like you’d brief a new hire — “companies that could use software” produces spam; a sharp answer produces replies. What you say becomes the agent’s outreach rulebook:
---
name: outreach
description: Research prospects and draft cold outreach in my voice
---
## ICP
- Boutique hotels & guesthouses, 10–80 rooms, DACH region
- Buyer: owner or GM. Signal: still taking bookings by phone/email
## Non-negotiable rules
- ONE verified personalization hook per email. Every factual claim
must cite a source URL in the research notes — no source, no claim.
- Structure: Hook → Problem → CTA. Under 85 words. Plain text.
- No links in the first email. One CTA: a specific question.
- Write in my voice: direct, warm, zero buzzwords. Never say
"I hope this finds you well", "synergy", "solution", "circle back".
- NEVER send. Create Gmail drafts only.
## Per prospect
1. Verify the email (Hunter) — skip catch-alls and role addresses.
2. Research: website, news, job posts. Find the ONE hook.
3. Draft. 4. Log to the CRM sheet (dedupe on email address).The banned-phrases list is the highest-leverage section — it is measurably what makes the output not sound like AI.
The agent connects to Gmail through a permission tier that can create drafts but structurally cannot send — the safety rail this whole build stands on. The one thing it needs from you is a free Google Cloud “OAuth client”, the credential that lets it write into your drafts folder. The agent gives you click-by-click directions; you paste back two values, and it does the rest:
mcp_servers:
gmail:
command: "uvx"
args: ["workspace-mcp", "--permissions", "gmail:drafts"]
env:
GOOGLE_OAUTH_CLIENT_ID: "${GOOGLE_OAUTH_CLIENT_ID}"
GOOGLE_OAUTH_CLIENT_SECRET: "${GOOGLE_OAUTH_CLIENT_SECRET}"Two gotchas the agent will warn you about: Google’s first consent screen has to be opened on your laptop (your server has no browser) — the agent then copies the resulting token over; and the OAuth app must be published or set to Internal, because apps left in “Testing” get logged out every 7 days, which looks like a random mid-week breakage.
Finding, verifying and researching prospects run on three services — Apollo finds, Hunter verifies, Exa researches — and all three have workable free tiers. Your part: create the accounts and paste each key when the agent asks for it. Its part: wire them in:
mcp_servers:
apollo: # lead search by ICP — free plan includes MCP
url: "https://mcp.apollo.io"
auth: oauth
hunter: # email verification — 50 free/mo
command: "npx"
args: ["-y", "hunter-mcp"]
env: { HUNTER_API_KEY: "${HUNTER_API_KEY}" }
exa: # company research / news
command: "npx"
args: ["-y", "exa-mcp-server"]
env: { EXA_API_KEY: "${EXA_API_KEY}" }Verification before drafting is not optional: B2B contact data decays ~22% per year, and a bounce rate above 2% starts hurting your domain. Skipping unverifiable addresses is cheaper than sending to them.
One cron job runs the whole funnel every weekday morning, in a batch small enough to review over coffee:
/cron add "0 7 * * 1-5" "Run the outreach skill: find 15 new
prospects matching the ICP (dedupe against the CRM sheet),
verify emails, research each one, draft outreach for the
qualified ones, log everything, then message me a digest:
count, 3 best hooks, anything skipped and why."☕ 12 drafts ready. Best hooks: (1) Hotel Alpenblick just posted a front-desk job mentioning “phone bookings” — drafted around desk workload. (2) Gasthof Sonne got a renovation writeup in the local paper. (3) Pension Edelweiss still has a fax number on their contact page. Skipped 3: two catch-all domains, one already in the CRM.
Drop the fax one — too snarky. Rest look good.
Deleted that draft and noted the feedback: no hooks that could read as mocking. 11 drafts waiting in Gmail.
Stay the sender. Manual sending from your normal Gmail at 10–25/day keeps you under every bulk-sender threshold and every automation trigger. If you ever scale past ~100/day, that is a different game: separate sending domain, warm-up weeks, SPF/DKIM/DMARC, sub-0.3% complaint rate.
Once replies exist, make them teach the agent. A weekly cron reviews the CRM sheet — which hooks got replies, which subject lines died — and Hermes patches its own outreach skill via skill_manage. This is the learning loop doing sales ops: your reply rate in week six should embarrass week one.
A drafts folder that fills itself every morning with researched, verified, genuinely personalized outreach — logged in a CRM sheet, improving weekly from real reply data. You remain the human who hits send.