Self-hosted outreach · Open source · MIT

Every email earns its send.

OutreachIQ is an outreach workspace that runs on your own machine. It finds prospects, enriches each lead, scores fit, drafts three short email variants, audits tone, and puts a human review queue and a hard send gate in front of throttled Gmail delivery.

The full pipeline in 72 secondsReal UI captures · Captions included

1,623leads processed
1,042leads enriched
816drafts written
320sent through the gate

Totals counted from the maker's own live pipeline data on 17 July 2026. Not projections.

How it works

One controlled pipeline, ten honest steps.

Everything runs locally: a single Flask server, flat JSON files as the database, and no external SaaS beyond the APIs you choose to plug in.

01Search

Google Places finds businesses with industry, service, and market presets, or your own custom query.

02Enrich

Firecrawl reads each website for summaries and brand signals. Apollo adds size, founding year, revenue band, and LinkedIn context.

03Score

AI scoring from 0 to 100, hot to skip, by lane: direct prospects and agency partners are judged differently.

04Draft

Three short variants per qualified lead: Observation, Peer, and Opportunity, each under 80 words.

05Audit

A local tone audit flags generic greetings, tired phrases, hard sells, and risky lines in every draft.

06Repair

Weak drafts are rewritten deterministically, on your machine, with no extra AI calls and no API cost.

07Review

Flagged leads wait in a review queue. Nothing sends until a human approves it, word by word.

08Gate

Pre-send checks with hard blockers: duplicate contact, do-not-contact list, unresolved audit flags.

09Send

Throttled Gmail delivery: 20 seconds apart, 30 a day, a kill switch, and never-send-twice protection.

10Track

Replies and bounces are detected automatically. Follow-ups thread into the same conversation, never pushy.

Inside the workspace

Built like a field instrument, not a spray tool.

Search & enrich

Leads arrive ready to judge.

Set a service priority, a market, and a niche or custom query, then run it. Companies come back ranked into your pipeline, and enrichment runs automatically: website summaries, brand signals, contact emails, company size, and revenue context, all stored as snapshots you can re-run per lead.

Google PlacesFirecrawlApollo
OutreachIQ search screen with service priority, market presets, niche selection, and a run search button
Score by lane

The hottest leads rise to the top.

Every enriched lead gets a 0 to 100 score using its search context and enrichment fields, not a guess from a company name. Direct client prospects and agency partners are scored in separate lanes, so a good collaboration fit is never mistaken for a cold sell.

Hot / Warm / ColdClaude or Codex handoff
OutreachIQ pipeline table with scored leads sorted hot first
Three variants

Not one generic email. Three angles.

For each qualified lead the system drafts an Observation that opens with something specific, a Peer note that speaks studio to studio, and an Opportunity that leads with a clear offer. Each is short, on brand, and editable inline before anything moves.

A · ObservationB · PeerC · Opportunity
OutreachIQ lead detail with three email variants side by side
Tone audit & repair

Risky copy gets caught locally.

A local audit reads every draft and flags generic greetings, tired phrases, self-promotion links, and hard sells. Weak drafts repair themselves deterministically in one click, with no extra AI calls, so fixing copy costs nothing and stays predictable.

Local rulesZero-cost repair
OutreachIQ tone audit panel with flagged phrases in a draft email
Review & send gate

You decide what goes out.

Flagged leads wait in a review queue where subject, recipient, and body are editable inline. Then a send gate checks every blocker before Gmail is allowed to deliver: slowly, capped, and with a kill switch always within reach.

Human approvalGmail API
Results

One honest funnel. No vanity metrics.

Companies searched, leads enriched, drafts written, emails actually sent through the gate: every number is a real total counted from your own data. Replies and bounces update themselves from Gmail while the server runs, and every lead is tracked from unscored to converted.

Reply detectionCSV exportEmail archive
OutreachIQ stats screen with the funnel from searched to sent
Field guide

Learn the whole workflow in under four minutes.

Five short lessons, one per stage. Videos stay unloaded until you choose to play them, and every lesson has captions and a transcript.

Lesson 01 Search and enrich 0:58
Read transcript

How OutreachIQ finds and enriches your leads. Open Search, set your service priority and market, choose an industry niche or a custom query, then run it. Companies come back ranked into your pipeline, and enrichment runs automatically: Firecrawl reads each company website and Apollo adds size, revenue, and context, so every lead arrives ready to score.

Lesson 02 Score and draft variants 0:48
Read transcript

How OutreachIQ scores and drafts. Every enriched lead gets a score from zero to one hundred by lane, so the hottest leads rise to the top. For each one, Claude drafts three short variants, not one generic email: Observation opens with something specific, Peer speaks studio to studio, and Opportunity leads with a clear offer. Each draft is short, on brand, and ready to edit or refine in one click.

Lesson 03 Audit, review and send 0:44
Read transcript

How OutreachIQ protects every send. A local tone audit reads each draft and flags generic greetings, tired phrases, and risky lines. Weak drafts repair themselves in one click, with no extra AI calls. Flagged leads wait in a review queue, and nothing sends until you approve it. Then the send gate checks every blocker before Gmail delivers, twenty seconds apart, thirty a day, with a kill switch. The system drafts and checks. You decide what goes out.

Lesson 04 Replies and follow-ups 0:39
Read transcript

How OutreachIQ handles what happens after the send. Every message is tracked straight from Gmail: sent, replied, or bounced, the status updates itself. Replies rise to the top of your pipeline so a warm lead never gets buried. Leads that stay quiet get a follow-up, spaced on your schedule and never pushy. A reply pauses the sequence, and you can stop any thread at any time.

Lesson 05 Read your results 0:33
Read transcript

How to read your results. Every step adds up to one honest funnel: companies searched, leads enriched, drafts written, and the emails actually sent through the gate. Every number is a real total counted from your own data, with no vanity metrics, so you always know the system is working and where to tune it next. Search, enrich, score, draft, audit, and send, all in one calm dashboard.

Interactive demo

Walk through it yourself.

A guided tour of the real interface: search and enrichment, lane scoring, three variants, the tone audit, the review queue, and a simulated gated send. Then explore freely.

Sample data only. The demo contains no real prospects and no private contact details.

Open source

Yours to run, read, and change.

OutreachIQ is MIT licensed and runs entirely on your machine. Bring your own API keys, keep your own data, and read every rule the tone audit applies. The AI scoring step works through a file handoff to Claude Code or Codex, so it needs no API key at all.

  • Python 3.11+ and a single Flask server, no build step
  • Google Places API key required for lead search
  • Firecrawl and Apollo keys optional, for enrichment
  • Gmail OAuth optional, only if you send from the dashboard
  • Flat JSON files as the database, CSV exports, per-email markdown archive
# quick start
git clone https://github.com/jqaisystems/outreachiq
cd outreachiq
pip install -r requirements.txt
cp .env.example .env   # add your keys
python server.py
# open http://localhost:5001

Curious how it was built, and why the review queue exists at all? Read the OutreachIQ case study.