Workflow

API-First Outbound Enrichment Workflow

Enrich new leads with search data before sales routing. Automate outbound lead enrichment with real-time web search signals.

Overview

Outbound sales teams waste time on unqualified leads because CRM data is stale. This workflow triggers on each new lead (via webhook or batch), searches for the company and contact on Google, extracts signals like company size, recent funding, tech stack mentions, and job postings, and appends enrichment data to the lead record before routing to a sales rep. Each enrichment costs 1-2 credits ($0.005-$0.01) depending on search depth. Replaces expensive enrichment tools that charge $0.10+ per record.

Trigger

New lead webhook or batch import

Schedule

On-demand

Workflow Steps

1

Receive Lead Data

Accept the lead record with company name, domain, and contact name from the webhook or batch file.

2

Search Company Profile

Call Scavio search on Google for the company name to find recent news, funding, and company size signals.

3

Extract Enrichment Signals

Parse search results for revenue indicators, employee count, recent press, tech stack, and hiring signals.

4

Score Lead Quality

Assign a lead score based on enrichment signals: funded companies with hiring activity score highest.

5

Route Enriched Lead

Append enrichment data to the lead record and route to the appropriate sales rep or sequence.

Python Implementation

Python
import requests, os, json, re

API_KEY = os.environ["SCAVIO_API_KEY"]
SH = {"x-api-key": API_KEY, "Content-Type": "application/json"}

SIGNAL_PATTERNS = {
    "funding": r"raised|funding|series [a-d]|seed round|venture",
    "hiring": r"hiring|job opening|careers|we.re growing",
    "enterprise": r"fortune 500|enterprise|large.scale",
    "recent_news": r"announced|launched|partnership|acquired",
}

def search_company(company: str) -> list:
    resp = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers=SH,
        json={"query": f"{company} company news 2026", "platform": "google"},
        timeout=15,
    )
    resp.raise_for_status()
    return resp.json().get("organic", [])

def extract_signals(results: list) -> dict:
    signals = {k: False for k in SIGNAL_PATTERNS}
    snippets = " ".join(r.get("snippet", "") for r in results).lower()
    for signal, pattern in SIGNAL_PATTERNS.items():
        if re.search(pattern, snippets, re.IGNORECASE):
            signals[signal] = True
    return signals

def score_lead(signals: dict) -> int:
    score = 50
    if signals.get("funding"):
        score += 25
    if signals.get("hiring"):
        score += 15
    if signals.get("enterprise"):
        score += 10
    if signals.get("recent_news"):
        score += 5
    return min(score, 100)

def enrich_lead(lead: dict) -> dict:
    results = search_company(lead["company"])
    signals = extract_signals(results)
    lead_score = score_lead(signals)
    return {
        **lead,
        "enrichment": {
            "signals": signals,
            "lead_score": lead_score,
            "top_results": [{"title": r.get("title", ""), "url": r.get("url", "")} for r in results[:3]],
        },
    }

# Example: process a batch of leads
leads = [
    {"company": "Vercel", "contact": "Jane Doe", "email": "jane@vercel.com"},
    {"company": "Supabase", "contact": "John Smith", "email": "john@supabase.com"},
]
for lead in leads:
    enriched = enrich_lead(lead)
    score = enriched["enrichment"]["lead_score"]
    signals = enriched["enrichment"]["signals"]
    active = [k for k, v in signals.items() if v]
    print(f"{lead['company']}: score={score}, signals={active}")

JavaScript Implementation

JavaScript
const SH = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};

const SIGNAL_PATTERNS = {
  funding: /raised|funding|series [a-d]|seed round|venture/i,
  hiring: /hiring|job opening|careers|we're growing/i,
  enterprise: /fortune 500|enterprise|large.scale/i,
  recentNews: /announced|launched|partnership|acquired/i,
};

async function searchCompany(company) {
  const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:SH, body:JSON.stringify({query:company+' company news 2026', platform:'google'})});
  return (await r.json()).organic || [];
}

function extractSignals(results) {
  const text = results.map(r=>r.snippet||'').join(' ');
  const signals = {};
  for (const [key, pattern] of Object.entries(SIGNAL_PATTERNS)) {
    signals[key] = pattern.test(text);
  }
  return signals;
}

function scoreLead(signals) {
  let score = 50;
  if (signals.funding) score += 25;
  if (signals.hiring) score += 15;
  if (signals.enterprise) score += 10;
  if (signals.recentNews) score += 5;
  return Math.min(score, 100);
}

const leads = [
  {company:'Vercel', contact:'Jane Doe', email:'jane@vercel.com'},
  {company:'Supabase', contact:'John Smith', email:'john@supabase.com'},
];

for (const lead of leads) {
  const results = await searchCompany(lead.company);
  const signals = extractSignals(results);
  const score = scoreLead(signals);
  const active = Object.entries(signals).filter(([k,v])=>v).map(([k])=>k);
  console.log(lead.company+': score='+score+', signals='+JSON.stringify(active));
}

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

Frequently Asked Questions

Outbound sales teams waste time on unqualified leads because CRM data is stale. This workflow triggers on each new lead (via webhook or batch), searches for the company and contact on Google, extracts signals like company size, recent funding, tech stack mentions, and job postings, and appends enrichment data to the lead record before routing to a sales rep. Each enrichment costs 1-2 credits ($0.005-$0.01) depending on search depth. Replaces expensive enrichment tools that charge $0.10+ per record.

This workflow uses a new lead webhook or batch import. On-demand.

This workflow uses the following Scavio platforms: google. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

API-First Outbound Enrichment Workflow

Enrich new leads with search data before sales routing. Automate outbound lead enrichment with real-time web search signals.