Overview
Inbound leads arrive with just a name and email. Sales teams waste time calling unqualified leads because there is no enrichment data to score them. This workflow searches for the lead's company, extracts signals (hiring, funding, tech stack), and assigns a score. Cost: $0.015 per lead (3 searches) vs $0.50-2.00 per lead from enrichment vendors.
Trigger
Real-time via webhook when new lead is created, or batch daily at 6 AM UTC.
Schedule
Real-time webhook or daily batch at 6 AM UTC
Workflow Steps
Receive New Lead Data
Capture lead data from form submission or CRM webhook. Extract company name from email domain.
Search for Company Information
Run 3 searches: company name, company + hiring, company + funding/news. Extract Knowledge Graph data, organic snippets, and PAA.
Extract Scoring Signals
Parse search results for signals: company size (from KG), hiring activity (job posting snippets), funding (news snippets), tech stack (from website descriptions).
Calculate Lead Score
Assign points based on signals: hiring = +20, recent funding = +30, tech match = +25, company size match = +15. Tier as hot/warm/cold.
Update CRM and Notify Sales
Write the enrichment data and score back to the CRM. Notify the sales team about hot leads via Slack.
Python Implementation
import requests, os
API_KEY = os.environ["SCAVIO_API_KEY"]
def score_lead(company: str) -> dict:
"""Score a lead via search enrichment. Cost: $0.015 (3 searches)."""
queries = [company, f"{company} hiring 2026", f"{company} funding news 2026"]
signals = {"company": company, "hiring": False, "funding": False, "tech_match": False, "score": 0}
for i, q in enumerate(queries):
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": q, "country_code": "us"},
timeout=10,
)
data = resp.json()
snippets = " ".join(r.get("snippet", "") for r in data.get("organic_results", [])[:5]).lower()
if i == 0 and data.get("knowledge_graph"):
signals["description"] = data["knowledge_graph"].get("description", "")
signals["score"] += 15
if i == 1 and any(w in snippets for w in ["hiring", "job opening", "we're growing"]):
signals["hiring"] = True
signals["score"] += 20
if i == 2 and any(w in snippets for w in ["raised", "funding", "series"]):
signals["funding"] = True
signals["score"] += 30
signals["tier"] = "hot" if signals["score"] >= 45 else "warm" if signals["score"] >= 20 else "cold"
return signals
lead = score_lead("Vercel")
print(f"{lead['company']}: {lead['tier']} (score: {lead['score']}) hiring={lead['hiring']} funding={lead['funding']}")JavaScript Implementation
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function scoreLead(company) {
const queries = [company, company+' hiring 2026', company+' funding news 2026'];
const signals = {company, hiring:false, funding:false, score:0};
for (let i=0; i<queries.length; i++) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:queries[i], country_code:'us'})});
const d = await r.json();
const snippets = (d.organic_results||[]).slice(0,5).map(r=>r.snippet||'').join(' ').toLowerCase();
if (i===0 && d.knowledge_graph) { signals.description = d.knowledge_graph.description||''; signals.score += 15; }
if (i===1 && /hiring|job opening/.test(snippets)) { signals.hiring = true; signals.score += 20; }
if (i===2 && /raised|funding|series/.test(snippets)) { signals.funding = true; signals.score += 30; }
}
signals.tier = signals.score >= 45 ? 'hot' : signals.score >= 20 ? 'warm' : 'cold';
return signals;
}
const lead = await scoreLead('Vercel');
console.log(lead.company+': '+lead.tier+' ('+lead.score+') hiring='+lead.hiring+' funding='+lead.funding);Platforms Used
Web search with knowledge graph, PAA, and AI overviews