Build notesAI agent2026

Outreach Agent

Finds local businesses, drafts a pitch and sends only what passes its checks.

Won’tNever sends without two confirmations and a daily cap.

Role
Personal project
When
Jan – Sep 2026
Built with
PythonSQLiteOpenAIOpenStreetMapGmail
Links
outreach agent · review-first pipeline
  1. DiscoverLocal businesses from OpenStreetMap
  2. EnrichFind contact emails and record the source
  3. StoreSQLite with deduplication and do-not-contact suppression
  4. Score and gateOnly contacts with ≥ 70% confidence from approved sources
  5. PreviewDry run by default, nothing is sent
  6. SendNeeds --send and --confirm-send, under a daily cap
  7. LearnCampaign analytics, follow-ups, CSV export

From the project README. Highlighted steps are the two safety gates.

Why it exists

Cold outreach tools blast unverified emails at scale. This agent is built to be deliberate instead: it shows its work, previews by default, and needs an explicit confirmation to send anything.

What it does

  • Finds local businesses on OpenStreetMap and enriches them with contact emails.
  • Stores leads in SQLite with deduplication, do-not-contact suppression and retry handling.
  • Scores leads, drafts short pitches with an LLM and previews the campaign.
  • Tracks outcomes and follow-ups in a dashboard, with CSV export.

What it won’t do

  • It never sends on a dry run. Live delivery needs two flags, --send and --confirm-send, plus a daily cap.
  • Only contacts with at least 70% confidence from an approved source (website, OSM, Hunter, Clearbit or manual) are eligible.
  • Pattern-guessed addresses are excluded until a person verifies them.

How it works

A Python pipeline with a SQLite lead store. Each stage writes to the database, so every campaign leaves an audit trail.

By the numbers

70%Confidence floor
5Approved email sources
2Flags needed to send
Next build notesTokenCap

Maps every file and import in a repo, locally, then packs only what an AI coding task needs.

TokenCap website