salesprospectingpipeline

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.

9 min

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

Python
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

Python
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

Python
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

Python
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.