Autonomous Business
Development Agent

Discovery — matching companies against the ICP
DRY_RUN — safe by default

Manual prospecting doesn't scale with one person's hours.

Finding companies worth pitching, reading every one of their websites, writing a personal email instead of a template, and remembering to follow up — every single day — is five jobs for one person. The moment it gets rushed, outreach turns into the generic email everyone already ignores.

An AI employee, not a mail blaster.

A daily pipeline discovers candidate companies, researches each one's real website, decides whether it's a genuine fit and for which service, finds a named decision maker, and drafts one personalized email — all logged to a Google Sheet CRM, with DRY_RUN safety on by default and Manual Action able to pull any company out of automation at any time.

Seven stages, one accountable pipeline.

Discovery

ICP-matched candidates

Website Research

Cheerio + structured summary

Business Analysis

Qualify + service match

Decision Maker Discovery

Verified contact only

Email Generation

One email, one CTA

Gmail Integration

Sequential, DRY_RUN-safe

Follow-up + Telegram

Reply check, daily summary

One composition root, real clients underneath.

Scheduler / n8n

POST /run-pipeline

Pipeline Orchestrator

7 stages, unconditional order

Claude + Gemini

AI provider interface

Gmail · Sheets · Telegram

Real, working integrations

Why, briefly.

  • AI provider abstractionClaude and Gemini sit behind one interface — switching providers is a config change, never a code change.
  • Manual Action overrides everythingPause, Contact Personally, or Do Not Contact fully holds automation for a company across every module that can act on it.
  • DRY_RUN defaults to truethe entire pipeline runs, validates, and updates the CRM exactly as a real send would — until DRY_RUN is explicitly turned off.
  • Sequential Gmail sendinga plain loop, never Promise.all — no parallel sends, by explicit design.
  • Never invents a facta malformed or under-evidenced AI response is rejected and the company is marked Needs Review, not guessed at.

Recorded results.

0

Tests passing

12/12

Phases shipped

0

Documented decisions

What's next.

Now

Live end-to-end in DRY_RUN mode: Discovery through Telegram, one real Google Sheet CRM, no real email sent until explicitly enabled.

Next

Connecting the remaining discovery sources (Clutch, Wellfound, LinkedIn) and CRM sync into HubSpot or Salesforce once a team, not just one operator, needs to see the pipeline.

01Documentation

README

Complete project documentation.

02Source

Production Repository

Private source code.

Available during technical discussions.

Tech Stack

Runtime

TypeScript · Node.js

AI Providers

Claude · Gemini

Research

Cheerio · tldts

Communication & CRM

Gmail API · Google Sheets · Telegram Bot API

Deployment

n8n · OS Scheduler

Interested in this project?

Let's discuss it — schedule a live walkthrough.