Localhost demo of an AI-powered SDR that handles email outreach, lead qualification, chatbot negotiation, and meeting booking.
- Frontend: Next.js 16 (App Router), React 19, TypeScript, Tailwind v4, Shadcn UI
- Backend: FastAPI, Python 3.12+, Uvicorn
- LLM: Groq (
llama-3.1-8b-instant+llama-3.3-70b-versatile) - RAG: ChromaDB (embedded)
- DB: PostgreSQL 16 + SQLAlchemy 2.0 (async)
- Mail/Calendar: Gmail API + Google Calendar API
- Leads: Apollo People Search API
- Python 3.12+
- Node.js 22+
- PostgreSQL 16 running locally
- Groq API key (
gsk_...) - Google Cloud project with OAuth 2.0 client (Gmail + Calendar scopes)
- Apollo API key (optional — uses bundled sample data if absent)
cp .env.example .env # fill in secrets
docker compose up -d # starts postgres + seed + backend + frontendFrontend → http://localhost:3000, Backend → http://localhost:8000
The seed runs automatically on first up. The Gmail poller starts inside the backend container.
cp .env.example backend/.env # fill in secrets
cp frontend/.env.local.example frontend/.env.local # NEXT_PUBLIC_API_BASE=http://localhost:8000cd backend
python -m venv .venv
.venv\Scripts\pip install -r requirements.txtcd frontend
npm installEnsure PostgreSQL is running with a database asdr_demo and user asdr:
CREATE USER asdr WITH PASSWORD 'asdr';
CREATE DATABASE asdr_demo OWNER asdr;make auth-start # opens http://localhost:8000/auth/start# Terminal 1 — Seed
ENV=dev make seed
# Terminal 2 — Backend + poller
make backend-dev
# Terminal 3 — Frontend
make frontend-devSee DEMO_PLAN.md §9 for the complete .env template.
See DEMO_PLAN.md §11 for the full validation checklist.