Everything ALE touches, how the signal flows, and the runbook for bringing each piece online. Snapshot: September 2026.
Edit the gitignored .env at the repo root. Gmail entries are already there; add whichever of these you have (only Anthropic is required to run):
cd ~/gmaddaloni-projects-public/agency-lead-enrichment nano .env
Tests every configured key against its provider (free/cheapest call each) and reports alive, DEAD, or out of credits:
./.venv/bin/python -m ale probe
Pushes everything present in .env to /ale/* — values never touch shell history:
AWS_PROFILE=corbietech ./deploy/push_secrets.sh
Expect {"ok": true, ..., "dry_run": true}; alert bodies appear in CloudWatch Logs, nothing is sent:
AWS_PROFILE=corbietech aws lambda invoke --function-name ale-poller /dev/stdout
Enable the 1-minute schedule (still dry-run until ALE_DRY_RUN=false is set on the function):
AWS_PROFILE=corbietech aws events enable-rule --name ale-poller-schedule
| Key | Role | Need | Get it / free tier |
|---|---|---|---|
| ANTHROPIC_API_KEY | The scorer — no key, no verdicts. ~half a cent per lead on Haiku. | REQUIRED | console.anthropic.com reuse the n8n key or mint "ale-lambda" |
| TAVILY_API_KEY | Main web discovery — the layer that actually finds consumer leads. | high value | app.tavily.com free tier ~1,000 credits/mo |
| EXA_API_KEY | Neural search — second discovery angle, surfaces profiles by name. | high value | dashboard.exa.ai free starter credit |
| ZEROBOUNCE_API_KEY | Email validity / disposable check — cheap discard signal. | medium | zerobounce.net 100 free validations/mo |
| PDL_API_KEY | Person enrich — only fires for corporate emails (rare in this business). | low — skip if dead | peopledatalabs.com rotate: old key leaked in repo history |
| ENRICHLAYER_API_KEY | Email → LinkedIn — corporate emails only, same caveat as PDL. | low — skip if dead | enrichlayer.com paid; Proxycurl successor |
| WHATSAPP_TOKEN + PHONE_NUMBER_ID, TO | Alert channel at go-live; needs approved template ale_lead_alert. | at go-live | developers.facebook.com Meta Cloud API, business-initiated |
A missing optional key never breaks a run — that provider is skipped and the scorer is told about the data gap. Minimum useful set: ANTHROPIC + TAVILY + EXA.