DEV Community

Daniel Ainoko
Daniel Ainoko

Posted on

I Got Tired of Cold Outreach. So I Made Claude Do It.

Notion MCP Challenge Submission 🧠

I Built an MCP That Turns Claude Into a Cold Outreach Machine — and It Actually Works

Submitted for the Notion MCP Challenge 2026


Let me be honest with you.

Cold outreach is broken.

Not because the idea is bad — cold emails work. People get hired, land clients, and build relationships through cold outreach every single day. It's broken because of how long it actually takes to do it right.

Think about it. To send one good cold email, you have to:

  1. Find a company that's actually a fit for your skills
  2. Go to their website and actually read it
  3. Figure out what they're working on, what problems they might have
  4. Find a contact email somewhere on the site
  5. Write something that doesn't sound like everyone else's template
  6. Send it
  7. Log it somewhere so you don't forget who you've reached out to

That's 20–40 minutes. Per company.

If you do 10 companies — which is barely enough to move the needle — you've just burned a full workday on outreach alone.

So most people don't do it. Or they send lazy, generic emails that get deleted in two seconds. Both outcomes are bad.

I got tired of it. So I built something.


Demo


What I Built: Cold Outreach MCP

Cold Outreach MCP is a custom MCP server that turns Claude into a fully automated cold email agent. You paste your CV once. Claude does everything else.

Here's the exact flow:

You: "Here is my CV. Find 10 companies that match my background,
      research each one, and show me your recommendations."

Claude: [researches 10 companies]

      1. stripe.com → opportunity_pitch
         "Their checkout onboarding has friction — matches your UX background"

      2. linear.app → role_inquiry
         "Fast-growing team, strong eng culture, no obvious gap spotted"

      ... 8 more

You: "Looks good. Send as recommended."

Claude: [generates 10 tailored emails, sends them, logs everything to Notion]
Enter fullscreen mode Exit fullscreen mode

That's it. What used to take a full day now takes 3 minutes.


The Part That Actually Makes It Different

Most "automation" tools skip the part that matters most — the email itself.

They send templated garbage like:

"Hi [First Name], I came across [Company] and I was really impressed by your work in [Industry]. I think my background in [Skill] could add value to your team..."

Nobody replies to that. Everybody knows it's a template. It goes straight to the bin.

Cold Outreach MCP does something different. Before generating the email, Claude actually reads the company's website, identifies specific things about their product or team, and writes something that references what it found:

"Saw you're building a design system at scale — I've done exactly this at [Company] and ran into the same versioning problems you're probably hitting. Worth a quick chat?"

That's an email someone opens. That's an email someone replies to.

And the tone rules are hard-coded into the prompts:

  • Under 120 words
  • No buzzwords ("synergy", "leverage", "circle back" — all banned)
  • Short sentences. Casual but not sloppy.
  • One specific observation from their site
  • One clear ask at the end

It sounds like a person wrote it. Because an extremely good AI was told to write like a person.


Where Notion Fits In

Every outreach — sent, failed, or pending — gets logged to a Notion database automatically.

The schema looks like this:

Company Website Email Type Status Date Sent Notes
Stripe stripe.com hello@stripe.com opportunity_pitch sent 2026-03-26 full email body
Linear linear.app team@linear.app role_inquiry sent 2026-03-26 full email body

No manual logging. No "I think I emailed them last week?". No spreadsheet.

And the Notion integration is set up like a proper database migration — you create an empty database on Notion, paste its ID in your config, run setup_notion_db once, and all the columns are provisioned automatically. It's exactly how backend migrations work.


The 10 Tools Under the Hood

Tool What it does
setup_notion_db Migrates your Notion database — adds all required columns
parse_profile Extracts structured profile from your CV text
discover_companies Finds real companies that match your skills using Claude
find_company_email Scrapes a company site to find a contact email
research_company Analyzes a company — summary, pain points, recommended email type
generate_email Writes a human-sounding outreach email
send_email Sends via SMTP (Gmail, Outlook, anything)
log_to_notion Logs a record to your Notion tracker
retry_failed Re-attempts any failed sends automatically
bulk_outreach Full pipeline for up to 15 companies at once

It's Human-in-the-Loop by Design

This is important. The tool doesn't just fire off emails without asking you.

bulk_outreach runs in two phases:

Phase 1 — Claude researches all companies and returns its recommendations. You see everything before a single email is sent.

Phase 2 — You confirm (or override) each recommendation. Then and only then does Claude generate and send.

You're always in control. The AI is doing the tedious work, not making the decisions for you.

There's also a hard limit of 15 companies per run — enough to be productive, not enough to accidentally spam half the internet if something goes wrong.


Tech Stack

  • MCP SDK@modelcontextprotocol/sdk (official Anthropic SDK)
  • AI — Claude via @anthropic-ai/sdk with adaptive thinking for research and email generation
  • Scrapingaxios + cheerio for website analysis and email extraction
  • Emailnodemailer with lazy SMTP validation (server doesn't crash if SMTP isn't configured yet)
  • Notion — raw Notion REST API (fetch directly to https://api.notion.com/v1/...) for reliability
  • Language — TypeScript, Node.js 18+, ES modules

What the Setup Looks Like

git clone https://github.com/thecodedaniel/cold-outreach-mcp
cd cold-outreach-mcp
npm install && npm run build
Enter fullscreen mode Exit fullscreen mode

Fill in your .env:

ANTHROPIC_API_KEY=sk-ant-...
NOTION_API_KEY=ntn_...
NOTION_DATABASE_ID=your_database_id
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=you@gmail.com
SMTP_PASS=your_app_password
SENDER_EMAIL=you@gmail.com
SENDER_NAME=Your Name
Enter fullscreen mode Exit fullscreen mode

Add to Claude Desktop config. Restart. Done.

The full setup takes about 10 minutes if you already have the API keys.


The One Thing I'm Most Proud Of

It's not the scraping. It's not the Notion integration. It's not even the email generation.

It's the fact that you don't have to know which companies to target.

Every other tool in this space assumes you already know who you want to reach out to. You still have to do the research, compile the list, find the websites.

This one starts from your CV and figures out the rest. You describe what you do. Claude figures out who needs someone like you.

That's the part that changes things.


What's Next

  • Web search integration for real-time company discovery (Brave Search API)
  • Follow-up email scheduling ("no response in 7 days → send a nudge")
  • Notion status tracking — mark a reply directly in Notion, trigger a follow-up draft
  • LinkedIn integration for finding decision-maker contacts

Links


Built for the Notion MCP Challenge 2026 by Daniel Ainoko (THECODEDANIEL)

If you're a developer actively job hunting or trying to land clients — this is for you. The grind is real. Automate the boring parts.

Top comments (0)