Zero-API-key lead generation platform — Discovers businesses, analyzes websites, and scores leads using local tools. No external API keys required.
Building this in the open — if it saves you time, a star helps others find it. Found a bug, or have an idea? Open an issue. New here? Start with a good first issue. New lead sources and scoring ideas welcome.
- Discovers businesses from Google Maps (name, phone, website)
- Analyzes websites for quality (PageSpeed, mobile-friendliness)
- Scores leads (HOT/Medium/Low) based on upgrade opportunity
- Outreach — generates personalized messages for each lead
- Dashboard — Clean, performant, and minimal UI to view, filter, export leads, and trigger WhatsApp outreach directly via local bridge (port
10086).
Everything runs locally. No API keys, no subscriptions.
# 1. Start the backend
cd backend
python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8000
# 2. Start the frontend
cd frontend
npm run dev
# 3. Discover leads
python3 ~/.hermes/scripts/orpaq-research.py full "Kochi" "gyms" --max 20Open http://localhost:3001 (frontend) or hit http://localhost:8000/api/v1 (API).
- Backend: FastAPI + SQLite
- Frontend: Next.js 16 + Tailwind CSS
- Discovery: Playwright (Google Maps scraping)
- Analysis: Playwright performance API
- Scoring: Local algorithm (no AI API needed)
Google Maps (Playwright) → SQLite DB → FastAPI → Next.js Dashboard
↓
Place page extraction (phone, website, rating)
↓
Website analysis (PageSpeed, mobile check)
↓
Lead scoring (HOT if no website)
- Database:
~/.orpaq/leads.db(SQLite, auto-created) - Suggestions auto-generated from your existing data
- No external API calls — everything runs on your machine
# Full pipeline: discover + analyze + score
python3 ~/.hermes/scripts/orpaq-research.py full "Kochi" "dentists" --max 20
# Discover only (just scrape Maps)
python3 ~/.hermes/scripts/orpaq-research.py discover "Kochi" "gyms" --max 10
# Check what needs enrichment
python3 ~/.hermes/scripts/orpaq-research.py needs-enrich
# Save a lead manually
python3 ~/.hermes/scripts/orpaq-write.py lead '{"business_id":"<id>","lead_score":95,"priority":"hot"}'No API keys needed. The .env file is optional — defaults work out of the box.
| Variable | Default | Purpose |
|---|---|---|
SQLITE_PATH |
~/.orpaq/leads.db |
Database location |