The Problem
LLMs hallucinate confidently, and without an external check, wrong answers reach users. Internal evaluation datasets go stale within weeks. User feedback is sparse -- most users who get a wrong answer leave silently. Teams need a real-time verification layer that does not depend on human review or static test sets.
The Scavio Solution
After the LLM generates an answer, extract its key claims and verify each one against a live Scavio search. If the search results contradict the claim, flag the answer for correction or add a caveat before sending it to the user. This creates an automated fact-checking loop that catches hallucinations in real time without requiring human reviewers.
Before
Before search-based verification, a customer-facing bot told a user that a software product cost $49/month when the actual price was $79/month. The user signed up expecting the lower price and filed a support ticket. The team discovered the error three days later during a manual review.
After
After adding search verification, the bot's price claim is checked against a live Google search for the product's pricing page. The $49 hallucination is flagged because search results show $79. The bot corrects itself before the user sees the wrong price. Pricing errors dropped to near zero.
Who It Is For
AI teams shipping customer-facing LLM products who need an automated fact-checking layer to catch hallucinations before they reach users.
Key Benefits
- Real-time hallucination detection without human review
- Catches pricing, date, and factual errors before they reach users
- One API call per claim verification at $0.005
- Works as a post-generation filter in any LLM pipeline
- Search results provide citations for the correct answer
Python Example
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def verify_claim(claim: str, entity: str) -> dict:
"""Verify an LLM-generated claim against live search results."""
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{entity} {claim[:80]}'}, timeout=10).json()
snippets = [o.get('snippet', '') for o in r.get('organic', [])[:3]]
claim_lower = claim.lower()
support_signals = sum(1 for s in snippets if any(
term in s.lower() for term in claim_lower.split() if len(term) > 4))
return {
'claim': claim,
'supported': support_signals >= 2,
'evidence': snippets,
'action': 'pass' if support_signals >= 2 else 'flag_for_review'
}
result = verify_claim('Scavio costs $30 per month', 'Scavio search API pricing')
print(json.dumps(result, indent=2))JavaScript Example
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function verifyClaim(claim, entity) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'google', query: `${entity} ${claim.slice(0, 80)}` })
}).then(r => r.json());
const snippets = (r.organic || []).slice(0, 3).map(o => o.snippet || '');
const terms = claim.toLowerCase().split(' ').filter(t => t.length > 4);
const support = snippets.filter(s =>
terms.some(t => s.toLowerCase().includes(t))).length;
return { claim, supported: support >= 2, evidence: snippets,
action: support >= 2 ? 'pass' : 'flag_for_review' };
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Amazon
Product search with prices, ratings, and reviews