AI Sales Prospecting Pipeline: Complete Stack
Discovery, enrichment, AI qualification, and personalized outreach for $0.58 per batch of 50 leads. Replaces $700+/mo in SaaS tools.
A complete AI sales prospecting pipeline in 2026 combines search API for lead discovery, LLM for qualification and personalization, and automation for outreach sequencing. The full stack costs $100-300/month and replaces $1,000+/month in fragmented SaaS tools (Apollo + Lusha + Semrush + Outreach.io) while delivering more personalized outreach at higher conversion rates.
The four-stage pipeline
- Discovery: find companies matching your ICP via search
- Enrichment: gather company context, tech stack, recent news
- Qualification: AI scores and filters leads
- Personalization: AI generates custom outreach per lead
Stage 1: Discovery via Google Maps
import os, requests, json
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
HEADERS = {"x-api-key": SCAVIO_KEY}
BASE = "https://api.scavio.dev/api/v1/search"
def discover_leads(icp_queries: list) -> list:
"""Find businesses matching ICP. Cost: 1 credit per query."""
leads = []
for query in icp_queries:
resp = requests.post(BASE, headers=HEADERS, json={
"query": query, "search_type": "maps", "num_results": 20
})
for biz in resp.json().get("local_results", []):
if biz.get("website"):
leads.append({
"company": biz["title"],
"website": biz["website"],
"phone": biz.get("phone", ""),
"address": biz.get("address", ""),
"rating": biz.get("rating", 0),
"reviews": biz.get("reviews", 0),
})
return leads
# 10 ICP queries = 10 credits = $0.05
leads = discover_leads([
"marketing agency Austin TX",
"marketing agency Denver CO",
"web design agency Portland OR",
"digital marketing company Nashville TN",
])Stage 2: Enrichment
def enrich_lead(lead: dict) -> dict:
"""Add context for qualification. Cost: 2 credits per lead."""
# Company info search
info_resp = requests.post(BASE, headers=HEADERS, json={
"query": f"{lead['company']} {lead['website']}", "num_results": 5
})
info = info_resp.json().get("organic_results", [])
# Tech/tools search
tech_resp = requests.post(BASE, headers=HEADERS, json={
"query": f"site:{lead['website']} OR {lead['company']} tools technology",
"num_results": 5
})
tech = tech_resp.json().get("organic_results", [])
lead["context"] = " ".join(r.get("snippet", "") for r in info[:3])
lead["tech_signals"] = " ".join(r.get("snippet", "") for r in tech[:3])
lead["enriched"] = True
return lead
# Enrich top 50 leads = 100 credits = $0.50
enriched = [enrich_lead(l) for l in leads[:50]]Stage 3: AI qualification
from anthropic import Anthropic
client = Anthropic()
def qualify_lead(lead: dict) -> dict:
"""AI scores lead based on enrichment data."""
prompt = f"""Score this lead 1-10 for a search API product.
Company: {lead['company']}
Website: {lead['website']}
Context: {lead['context'][:300]}
Tech signals: {lead['tech_signals'][:300]}
Rating: {lead['rating']}, Reviews: {lead['reviews']}
Return JSON: {{"score": N, "reason": "one sentence", "personalization_hook": "specific detail"}}"""
response = client.messages.create(
model="claude-haiku-4-20250414",
max_tokens=200,
messages=[{"role": "user", "content": prompt}],
)
try:
result = json.loads(response.content[0].text)
lead["score"] = result.get("score", 0)
lead["reason"] = result.get("reason", "")
lead["hook"] = result.get("personalization_hook", "")
except (json.JSONDecodeError, IndexError):
lead["score"] = 0
return lead
# Qualify 50 leads with Haiku (~$0.02 total)
qualified = [qualify_lead(l) for l in enriched]
hot_leads = [l for l in qualified if l.get("score", 0) >= 7]
print(f"Hot leads: {len(hot_leads)} / {len(qualified)}")Stage 4: Personalized outreach
def generate_outreach(lead: dict) -> str:
"""Generate personalized cold email using lead context."""
prompt = f"""Write a 3-sentence cold email for a search API product.
Use this specific detail as the hook: {lead.get('hook', '')}
Company: {lead['company']}
Keep it under 75 words. No fake compliments. Be direct about value."""
response = client.messages.create(
model="claude-haiku-4-20250414",
max_tokens=150,
messages=[{"role": "user", "content": prompt}],
)
return response.content[0].text
for lead in hot_leads[:3]:
email = generate_outreach(lead)
print(f"To: {lead['company']}")
print(email)
print("---")Full pipeline cost
- Discovery: 10 queries = $0.05
- Enrichment: 100 queries (50 leads x 2) = $0.50
- LLM qualification: 50 Haiku calls = ~$0.02
- LLM outreach generation: 15 Haiku calls = ~$0.01
- Total per batch: ~$0.58 for 50 enriched, qualified, personalized leads
- Monthly (4 batches/week): ~$10 in API costs for 800 leads
What this replaces
- Apollo ($49-99/user/mo): contact discovery and enrichment
- Lusha ($39/user/mo): phone and email lookup
- Semrush ($499.95/mo): competitor and tech stack research
- Outreach.io ($100+/user/mo): sequence management
- Total replaced: $700-800/mo minimum
Key takeaway
The complete AI sales prospecting stack is search API + LLM + a simple script. Discovery, enrichment, qualification, and personalization run as a single pipeline for under $10 per batch of 50 leads. The expensive part was never the data -- it was the dashboards sitting between you and the data.