Case Study · Sales
Case Study: Sales Team Replaces $18k/yr Enrichment with an AI Pipeline
How a 6-person outbound team enriched 2,000 leads/month with search + LLM — matching Apollo quality on hooks, at 1/10th the cost.
Results
Leads enriched / month
2,000
Personalization hook usable rate
71%
Monthly enrichment cost
$140
Reply rate lift vs generic outreach
+2.4pp
Background
PipelineHQ sells workflow software to mid-market ops teams. Their 6-person SDR team ran 2,000 outbound touches/month. Apollo enriched the list — titles, industries, headcount — but personalization hooks were boilerplate: "I saw you're growing fast."
Reply rates plateaued at 4.1%. Leadership asked whether a custom pipeline could beat generic enrichment without hiring a data team.
The problem
| Gap | Cost |
|---|---|
| Apollo seats | $1,500/mo |
| Generic hooks | Low reply rates |
| Manual research per lead | 8 min × top 50 accounts |
| No recent-news signal | Outreach felt templated |
The AI Lead Enricher workflow was the starting point.
Architecture
CSV in (name, email or company)
→ Per row (parallel, capped at 10):
Tavily: "{name} {company}" + "{company} news last 30 days"
Claude: extract title, role, industry, headcount, hook + source URL
→ Rows without source URL → NEEDS_REVIEW flag
→ CSV out → Google Sheets for reps
Implementation phases
Phase 1 — Parity check (1 week)
They ran 200 leads through both Apollo and the custom pipeline. Title match rate: 88% (Apollo) vs 82% (custom). Hook usability (blind rep review): 43% (Apollo) vs 67% (custom). The hooks won.
Phase 2 — Production pipeline (2 weeks)
Python script with:
- Structured output schema (Pydantic + Instructor)
- Company-level news cache (7-day TTL in SQLite)
NEEDS_REVIEWgate for missing sources- Nightly cron via GitHub Actions
Cost per lead: ~$0.07 (search + extraction). 2,000 leads/month ≈ $140.
Phase 3 — Rep workflow integration (week 4)
Output landed in Google Sheets with columns: hook, hook_source, recent_news, confidence. Reps filtered confidence >= 0.8 for same-day sends; lower confidence went to manual research queue.
Results
| Metric | Apollo era | Custom pipeline |
|---|---|---|
| Monthly tool cost | $1,500 | $140 (API) |
| Hook usable rate (rep survey) | 43% | 71% |
| Reply rate (cold outbound) | 4.1% | 6.5% |
| Time to enrich 100 leads | Instant (cached) | 18 min |
The +2.4pp reply rate translated to ~12 extra conversations/month — worth far more than the $1,360/mo saved.
Quality controls
- Source URL required — no URL, no hook shipped.
- 10% weekly audit — rev ops sampled rows and scored accuracy.
- Hallucination playbook — if news predated 30 days, row auto-flagged.
- Rep feedback column — bad hooks fed back into prompt changelog.
What they'd do differently
- Cache company news from day one — duplicate searches were 40% of early API spend.
- Train reps on the confidence column — some sent low-confidence hooks anyway and blamed the tool.
- Keep Apollo for phone numbers — custom pipeline didn't solve mobile enrichment; they kept a lighter data vendor for that one field.
Takeaway
Enrichment SaaS sells convenience. Custom pipelines sell specificity. For outbound teams where the opening line is the product, search + structured extraction often beats a $1,500/mo seat — if you enforce source citations and human review gates. Start with the workflow guide.
Lessons learned
- 01
The hook field mattered more than title accuracy — reps ignored rows with generic hooks even when job title was perfect.
- 02
Parallelizing 10 rows at a time hit Tavily rate limits; batching with 2s delays was the sweet spot.
- 03
Human review of 10% sample weekly caught hallucinated 'recent news' before it reached prospects.
- 04
Caching company-level news for 7 days cut duplicate searches by 40% when multiple leads shared an employer.
- 05
Reps trusted the CSV more when it included source URLs per hook — transparency beat black-box enrichment.
Frequently asked questions
Related on AIKnowHub
Workflow
Build an AI Lead Enricher
Take a raw lead list (name + email or company), enrich it with title, company, industry, signals, and personalization hooks — at scale.
Concept
Function Calling Explained
Function calling is how LLMs trigger your code. Here's how it actually works under the hood, and how to design tools that the model uses correctly.
Concept
When NOT to Use AI
The honest guide to tasks where AI makes things worse, not better. Know when to skip the LLM and use a spreadsheet, a SQL query, or a human instead.
Comparison
Cheapest AI APIs
Per-million-token cost comparison across providers, with notes on where the cheap models are actually good enough.
Prompt
Outbound Sales Email
Draft a personalized outbound email that earns a reply without sounding like a template.
Tool Guide
Make Guide
The definitive guide to Make (Integromat) for AI automations — routers, iterators, Claude modules, pricing, and when to pick it over Zapier or n8n.