OpenOutreach is a self-hosted open-source AI sales agent that discovers and emails leads from a licensed data source, using your mailbox for outreach. It operates via Docker or local setup and provides a Django-based CRM and an autonomous pipeline for lead scoring and email sending.
Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (1 so far).
What it is
OpenOutreach is a self-hosted, open-source, email-first AI sales agent for B2B lead generation. It discovers leads from a licensed data provider, qualifies them locally, and runs agentic email outreach from a mailbox you own. It is browserless and does not require scraping or social-network accounts.
How it works
An LLM turns a product description and campaign objective into an ICP filter and pages matching profiles from a licensed discovery source. A model scores profiles and selects candidates for paid email lookups. Qualified leads are emailed using an AI-written opener from your mailbox, and replies are read with follow-ups scheduled. A confidence gate determines paid lookups; each verified hit consumes a credit. The system maintains a local pipeline and a Django Admin-based CRM.
Getting started
Quick Start (Docker — Recommended)
docker run --pull always -it -v ~/.openoutreach/data:/app/data ghcr.io/eracle/openoutreach:latest
The interactive onboarding prompts for LLM key, mailbox, BetterContact key, and campaign details on first run. Data persists in ~/.openoutreach/data on the host. The image has no browser or VNC.
For Docker Compose and other options, see the Docker Guide at ./docs/docker.md.
Local Installation (Development)
Prerequisites: Git, Python 3.12+
- Clone:
git clone https://github.com/eracle/OpenOutreach.git
cd OpenOutreach
- Setup:
make setup
- Run the Daemon:
make run
- View Data (CRM Admin):
# Create an admin account (first time only)
python manage.py createsuperuser
# Start the web server
make admin
Open in browser: Django Admin at http://localhost:8000/admin/
Documentation and configuration
- Architecture, Configuration, Docker Installation, Follow-up Messaging, Template Variables, and Testing are documented in the docs directory.
Features
- Autonomous Lead Discovery: turns product + objective into an ICP filter using a licensed discovery source.
- Pay Only For What Resolves: free search against the licensed source; paid lookups are gated by confidence.
- Licensed Discovery: firmographic profiles from BetterContact Lead Finder; no scraping.
- Agentic Email Outreach: finds work emails, sends opener from your mailbox over SMTP, and manages follow-ups.
- Stateful Pipeline: local DB tracks Lead/Deal states and is fully resumable.
- Send-Gated Spend: per-mailbox daily cap limits how many leads enter the pipeline.
- Built-in CRM: Django Admin-based data ownership for Leads, Deals, and conversations.
- One-Command Deployment: Dockerized with interactive onboarding; runtime lacks a browser/VNC.
- AI-Powered Messaging: multi-turn follow-ups with AI-generated replies.
How the Pipeline Works
The daemon uses a task queue with four task types: find_email, collect_email, follow_up, and email. It discovers, qualifies, gates paid lookups, finds emails, and sends them, with feedback looping into the model for improved selection over time.
Project Structure
Top-level components include openoutreach/ Django apps for core, emails, crm, chat; manage.py; local.yml; and Makefile for common tasks.






