Skip to main content
All projects
Sales AIlive

LeadRevive

AI lead reactivation at scale

Multi-agent system that identifies, scores, and re-engages dormant leads with personalised AI-generated outreach campaigns.

1 November 20243 min read

Tech stack

CrewAIFastAPIAnthropic ClaudeChromaDBLangChainSendGridPythonRailway

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.