Overview
Per-record enrichment workflow for resolving B2B company names to canonical websites, handling rebrands and acquisitions via knowledge graph alias data. ~92-96% accuracy on clean names.
Trigger
Per CRM row (batch or stream)
Schedule
Per-record (batch or stream)
Workflow Steps
Scavio search per company name
Returns top organic + knowledge_graph entry.
Pick candidate domain
Prefer knowledge_graph.website; fall back to top organic_results[0].link.
Scavio /extract on candidate
Pull text from the candidate domain home page.
Verify name match in extracted text
Lowercased substring or fuzzy match.
Compute confidence score
knowledge_graph hit + name-in-text + domain not on a generic-host list = high confidence.
Route low-confidence to human review
Honest about the 4-8% edge cases.
Python Implementation
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def resolve(name):
s = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': f'"{name}" official site'}).json()
kg = s.get('knowledge_graph', {})
candidate = kg.get('website') or (s.get('organic_results') or [{}])[0].get('link')
if not candidate:
return {'match': False}
page = requests.post('https://api.scavio.dev/api/v1/extract', headers=H, json={'url': candidate}).json()
text = (page.get('text') or '').lower()
return {'match': name.lower() in text, 'website': candidate}JavaScript Implementation
// Same shape in TS / Node — POST /api/v1/search then POST /api/v1/extract.Platforms Used
Web search with knowledge graph, PAA, and AI overviews