ReachFlow is a full-stack outreach automation platform that discovers target companies, finds decision-maker contacts, enriches lead data, and executes email outreach campaigns through Brevo.
The platform consists of a FastAPI backend that orchestrates the outreach pipeline and a React frontend that provides real-time monitoring, run history, and campaign controls.
git clone https://github.com/madhan175/outreach-github.git
cd outreach-github
cd backend
cd frontend
┌─────────────┐
│ React UI │
│ (Vite) │
└──────┬──────┘
│ REST + SSE
▼
┌─────────────┐
│ FastAPI │
│ Backend │
└──────┬──────┘
│
┌─────┼─────────────────────┐
▼ ▼ ▼
Apollo Prospeo Brevo
Company Contact Email
Search Enrichment Delivery
- Search companies using Apollo
- Generate lookalike companies
- Domain-based prospecting
- Find decision-makers
- Enrich contact information
- Validate email addresses
- Brevo campaign creation
- Transactional email fallback
- Sender verification support
- Marketing list integration
- Live pipeline logs
- Server-Sent Events (SSE)
- Run history tracking
- Status monitoring
- Dry-run mode
- Manual send confirmation
- Campaign validation
- Error recovery and fallbacks
reachflow/
│
├── backend/
│ ├── api.py
│ ├── requirements.txt
│ └── .env
│
├── frontend/
│ ├── src/
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── package.json
│ └── vite.config.js
│
├── stages/
│ ├── stage1_apollo.py
│ ├── stage2_prospeo.py
│ └── stage4_brevo.py
│
├── utils/
│
└── README.md
- Python 3.10+
- FastAPI
- Uvicorn
- Requests
- SSE Streaming
- React
- Vite
- JavaScript
- CSS
- Apollo API
- Prospeo API
- Brevo API
Create a .env file:
APOLLO_API_KEY=your_apollo_api_key
PROSPEO_API_KEY=your_prospeo_api_key
BREVO_API_KEY=your_brevo_api_key
BREVO_SENDER_EMAIL=your_sender_email
BREVO_SENDER_NAME=your_sender_name
BREVO_CAMPAIGN_LIST_IDS=5python -m venv .venv
. .venv/Scripts/Activate.ps1cd backend
pip install -r requirements.txtuvicorn api:app --reload --port 8000Backend URL:
http://localhost:8000
Swagger Documentation:
http://localhost:8000/docs
Install dependencies:
cd frontend
npm installRun development server:
npm run devFrontend URL:
http://localhost:5173
GET /api/healthPOST /api/runRequest:
{
"domain": "stripe.com",
"limit": 5,
"dry_run": false
}GET /api/run/{id}GET /api/runsGET /api/stream/{id}POST /api/send/{id}POST /api/cancel/{id}Input:
stripe.com
Output:
Lookalike companies
Input:
Company domains
Output:
Decision-maker contacts
Verified emails
Input:
Contacts
Output:
Campaign creation
Email delivery
Tracking
The project has been tested end-to-end.
Completed validation:
- API integrations verified
- Contact enrichment tested
- Campaign creation tested
- Sender verification tested
- SSE log streaming tested
- Frontend-backend communication verified
All test cases passed successfully.
- Environment variables stored locally
- API keys excluded from Git
- Dry-run safety mode enabled
- Manual send confirmation required
- Brevo sender validation supported
Before deployment:
- Replace in-memory storage with PostgreSQL
- Add JWT authentication
- Add rate limiting
- Configure HTTPS
- Add monitoring and logging
- Deploy with Docker
- Use Gunicorn + Uvicorn workers
Example:
gunicorn -k uvicorn.workers.UvicornWorker api:app- CRM integration
- Multi-user support
- Campaign analytics dashboard
- Scheduled outreach
- AI-generated email personalization
- PostgreSQL persistence
- Docker deployment
Madhan D
GitHub: https://github.com/madhan175
This project is provided for educational and evaluation purposes.