system-prompts-and-models-o.../dealix/docs/ops/LEAD_MACHINE_TOOLING.md
2026-05-01 14:03:52 +03:00

83 lines
2.9 KiB
Markdown

# Dealix Lead Machine — Tooling Stack
The lead machine has 4 layers. Each layer activates by adding the env var to Railway.
## Layer 1 — Required for production
| Env var | Purpose | Fallback if missing |
|---|---|---|
| `DATABASE_URL` | Postgres for lead graph + queue | endpoints return `skipped_db_unreachable` |
| `GOOGLE_SEARCH_API_KEY` + `GOOGLE_SEARCH_CX` | Web discovery + ICP discovery | static (empty) results |
| `GROQ_API_KEY` | LLM for prospector + reply classifier | rules-only mode |
| `SENTRY_DSN` | Error monitoring | no observability |
## Layer 2 — Lead discovery power
| Env var | Unlocks | Chain priority |
|---|---|---|
| `GOOGLE_MAPS_API_KEY` | Google Places — local Saudi sectors (clinics, real-estate, training, agencies) | 1st in MapsProvider |
| `TAVILY_API_KEY` | Agent-grade search with summaries | 2nd in SearchProvider |
| `FIRECRAWL_API_KEY` | Markdown crawler with dynamic content | 1st in CrawlerProvider |
| `HUNTER_API_KEY` | Domain → public B2B emails + verification | 1st in EmailIntelProvider |
| `ABSTRACT_API_KEY` | Email verification (no domain search) | 2nd in EmailIntelProvider |
## Layer 3 — Channels
| Env var | Channel |
|---|---|
| `SENDGRID_API_KEY` + `SENDGRID_INBOUND_SECRET` | Inbound email parser |
| `WHATSAPP_PROVIDER`, `WHATSAPP_*` | WhatsApp BSP for inbound |
| `META_APP_SECRET` + `META_PAGE_ACCESS_TOKEN` | Meta Lead Forms |
| `GOOGLE_LEAD_FORM_WEBHOOK_KEY` | Google Lead Forms webhook |
## Layer 4 — Later (after first revenue)
| Env var | Purpose |
|---|---|
| `WAPPALYZER_API_KEY` | Tech detection breadth |
| `SERPAPI_API_KEY` | Backup search/maps |
| `APIFY_TOKEN` | Backup local discovery |
## Activation order
1. Fix `DATABASE_URL` — without it nothing persists.
2. Add `GOOGLE_SEARCH_API_KEY` + `GOOGLE_SEARCH_CX` — unlocks ICP discovery.
3. Add `GROQ_API_KEY` — unlocks LLM-quality messages.
4. Add `SENTRY_DSN` — catch errors before customers do.
5. Add `GOOGLE_MAPS_API_KEY` — unlocks the local Saudi engine (highest ROI sectors).
6. After first paying pilot: `FIRECRAWL_API_KEY` or `HUNTER_API_KEY`.
7. After 3 customers: channel APIs (SendGrid + WhatsApp BSP).
## Endpoints touching each layer
```
Layer 1 (DB + LLM + CSE + Sentry)
/api/v1/data/import (+ normalize / dedupe / enrich / report)
/api/v1/leads/discover/web
/api/v1/prospect/discover (LLM)
/api/v1/leads (intake pipeline)
Layer 2 (Maps + Crawler + EmailIntel)
/api/v1/leads/discover/local
/api/v1/leads/enrich/full
/api/v1/leads/enrich/batch
/api/v1/data/import/{id}/enrich
Layer 3 (Channels)
/api/v1/integrations/google-lead-form
/api/v1/integrations/meta-lead-form
/api/v1/inbound/email
/api/v1/inbound/whatsapp
/api/v1/outreach/queue
/api/v1/outreach/prepare-from-data
```
## Verifying the chain
```
GET /api/v1/prospect/search-diag
```
Returns `tier1_ready` and `tier2_ready` booleans plus per-key set/unset state.
Treat it as the canonical pre-flight check before claiming a deploy is live.