AutoProspect
Draw a radius. Pick a category. A 4-phase Celery pipeline discovers, enriches 26 signals, and Claude-scores every lead. ~$0.02/business.
Full-stack B2B SaaS for selling automation services to local businesses. Draw a radius on a Mapbox map, pick a category, and a 4-phase Celery pipeline fires: Google Places discovery → parallel website enrichment (26+ signals: CMS detection, CRM fingerprinting, booking tools, social scraping, review NLP) → Tier 1 Claude scoring → scan finalization. Celery chord orchestration fans out 50+ enrichment tasks in parallel then collapses into a nested scoring chord. Tier 1 scores every business automatically on four configurable dimensions (CRM, scheduling, marketing, invoicing) and returns structured JSON: 0–100 score, key signals, pitch angle, deal value estimate. Tier 2 triggers a deep-dive dossier on promoted leads — ROI argument, competitor analysis, implementation roadmap, objection rebuttals. Multi-tenant workspace isolation (8 Django apps), approval queues for AI-generated outreach, change detection that diffs enrichment snapshots across recurring scans, and per-call cost tracking that accumulates atomically on the parent scan.
- — Celery chord orchestration fans 50+ enrichment tasks in parallel then collapses into a nested scoring chord; self-healing in score_business_tier1 detects dropped chord callbacks and finalizes the scan directly
- — Dynamic Claude prompts: scoring dimensions (4 weights summing to 1.0) and disqualification signals stored as JSON in AgentConfig, injected into the system prompt at runtime — zero code changes to customize scoring per workspace
- — 3-day enrichment/scoring cache via enriched_at__gte cutoff — skips unchanged businesses on recurring scans, cutting Claude API spend ~2-3x; freshly enriched businesses always get a new score regardless
- — Atomic F() expressions on Scan.businesses_enriched prevent race conditions when 50+ concurrent tasks increment the progress counter simultaneously; circuit breaker auto-pauses SavedScans after 3 consecutive failures
- — Per-call cost tracking (prompt_tokens × model input rate + completion_tokens × output rate) saved to AutomationScore, then accumulated atomically on the parent Scan — budget enforcement before every new scan trigger