The Problem
Most businesses have a graveyard of dormant leads — contacts who engaged once, then went cold. Re-engaging them manually is expensive, inconsistent, and rarely done well. Generic bulk emails get ignored. Personalised outreach doesn't scale.
LeadRevive solves this with a crew of specialised AI agents that handle the entire reactivation workflow — from scoring to sending — without human intervention.
How It Works
The system is built around four specialised CrewAI agents:
Lead Analyst — Scores dormant leads against configurable criteria: time since last engagement, original interest signals, company size, and industry vertical. Produces a prioritised reactivation queue.
Research Agent — Enriches each lead with current context: recent news about their company, LinkedIn signals, industry trends. Ensures every outreach is relevant to now, not when they first engaged.
Copywriter Agent — Generates personalised outreach for each lead using a BRIDGE-framework prompt architecture. The message acknowledges the gap, references something specific to the lead's context, and proposes a clear next step.
Delivery Manager — Handles sequencing, A/B testing subject lines, scheduling optimal send times, and logging all activity to the CRM.
Architecture
Lead Database (PostgreSQL)
↓
Lead Analyst Agent — scoring + priority queue
↓
Research Agent — enrichment via web + LinkedIn
↓
Copywriter Agent — personalised message generation
↓
Delivery Manager — SendGrid + CRM sync + analytics
↓
RAG Context Layer (ChromaDB) — informs all agents
The RAG layer holds the client's previous conversations, product documentation, and win/loss patterns. Every agent can query it to ensure generated content is grounded in actual company context.
Technical Decisions
Why CrewAI over a single LLM call? A single prompt trying to do all four jobs produces mediocre output at every step. Specialised agents with focused tasks produce significantly better results — the Research Agent can iteratively search and verify before handing off, rather than hallucinating context.
Why Anthropic Claude over GPT-4? Claude's longer context window handles the enrichment payloads without chunking issues. The instruction-following is more consistent for structured output schemas.
Why FastAPI + Railway? The crew runs as an async background job. FastAPI handles the webhook triggers from the CRM, Railway handles the long-running crew execution. Simple, scalable, cheap.
Results
- Average campaign response rate: 3–5× higher than previous bulk email approach
- Time from trigger to sent email: under 4 minutes per lead
- Agent cost per lead: ~$0.08 at current Claude Sonnet pricing
What I'd Change
The Research Agent is the bottleneck — web search calls add latency. A pre-enrichment pipeline that runs continuously in the background (rather than on-demand) would cut the per-lead time to under 90 seconds.