Views
No views yet
Phase 1 (MVP) is implemented inbackend/. Phase 2 (LangGraph automation) and Phase 3 (multi-source + vision audits + dashboard) are planned — seememory/for the full roadmap.
Google Maps -> Lead Collector -> PostgreSQL
|
Website Analyzer (HTTP/HTML signals)
|
AI Audit Agent (LLM: opportunities + services)
|
Lead Scoring (rule engine, 0-100)
|
Message Generator (LLM: WhatsApp draft)docker compose up -d dbDATABASE_URL.)1cd backend
2python -m venv .venv
3.venv\Scripts\activate # Windows (PowerShell: .venv\Scripts\Activate.ps1)
4pip install -r requirements.txt
5python -m playwright install chromiumbackend/.env already exists (gitignored). Confirm LLM_PROVIDER, keys, and
DATABASE_URL. Copy from .env.example if you need a fresh one.1python run_dev.py
2# -> http://localhost:8000/docs (interactive Swagger UI)1curl -X POST http://localhost:8000/api/scrape \
2 -H "Content-Type: application/json" \
3 -d '{"city":"Jaipur","category":"restaurants","max_results":10,"run_pipeline":true}'curl "http://localhost:8000/api/leads?min_score=70&limit=20"| Method | Path | Purpose |
|---|---|---|
| POST | /api/scrape | Scrape Google Maps, persist, optionally run pipeline |
| GET | /api/leads | List/filter leads (city, category, status, min_score) |
| GET | /api/leads/{id} | Single lead |
| POST | /api/leads/{id}/process | Re-run audit/score/message for a lead |
| GET | /api/leads/{id}/audits | Audit history |
| GET | /api/leads/{id}/messages | Generated messages |
| GET | /api/stats | Dashboard counters |
| POST | /api/messages/{id}/send | Send one drafted WhatsApp message |
| POST | /api/send/batch | Send all drafts (best leads first, daily cap) |
9648531091):
1cd backend
2python wa_login.pyWHATSAPP_DRY_RUN=true (default) — simulates sends, marks DB.WHATSAPP_DRY_RUN=false in .env, then:
curl -X POST "http://localhost:8000/api/send/batch?min_score=70&limit=10".env. Default is an OpenRouter free model. Strong free options:deepseek/deepseek-chat-v3.1:freemeta-llama/llama-3.3-70b-instruct:freeqwen/qwen-2.5-72b-instruct:freeLLM_PROVIDER=zhipu to use it.
Free models on OpenRouter have rate limits; if you hit them, switch provider/model..env. It is gitignored. If a key was ever pasted in chat or
shared, rotate it in the provider dashboard.memory/project-compliance.md.