The Problem
Most AI-visibility tools tell you IF you were mentioned and give a visibility score, but not WHY. As one r/GEO_optimization thread put it: 'Most tools are good at telling me whether I was mentioned. What I really want is why, which sources influenced the answer, what changed since the last check, and what specific actions improve visibility.' A score with no source attribution is a symptom without a diagnosis. You know you are losing the AI answer, but not which page, thread, or competitor to go fix.
The Scavio Solution
Reconstruct the source pool an assistant draws from by pulling the live SERP and the top Reddit threads for the exact query, then diff it against your own presence. Assistants ground 'best X' and 'who should I hire' answers in organic results, People Also Ask, the knowledge panel, and community discussion. Fetch all of them for a query in one 2-credit Google call plus one Reddit search, and you can see exactly which domains and threads are in the running, which competitors appear, and where you are absent. Run it over time and the diff shows you what changed and what to fix.
Before
You open Profound or a similar dashboard, see 'visibility score 34, down 6 this week', and have no idea which source moved. You guess, publish a blog post, and hope.
After
You pull the SERP and Reddit sources for the query, see that a competitor now owns two of the three cited threads and the top PAA answer, and you know exactly which threads to engage and which page to earn a citation on.
Who It Is For
SEO/GEO teams, marketers, and founders who have an AI-visibility score but no idea which sources to fix, and anyone who wants source attribution without a $300-$800/mo enterprise tool.
Key Benefits
- Source-level attribution: the actual domains and Reddit threads in the query's answer pool, not a black-box score
- Competitor visibility: see who is cited where you are not
- Change detection: re-run on a schedule and diff the source pool week over week
- Cheap: one full SERP call is 2 credits ($0.01) plus one Reddit search at 2 credits, so a 50-query weekly audit is about $1
- Actionable: every gap maps to a specific page to improve or thread to engage
Python Example
import os, requests
H = {"Authorization": f"Bearer {os.environ['SCAVIO_API_KEY']}", "Content-Type": "application/json"}
def source_pool(query):
s = requests.post("https://api.scavio.dev/api/v2/google",
headers=H, json={"query": query, "light_request": False}).json()
r = requests.post("https://api.scavio.dev/api/v1/reddit/search",
headers=H, json={"query": query, "sort": "top"}).json()
return {
"organic_domains": [x.get("link") for x in s.get("organic_results", [])[:10]],
"paa": [x.get("question") for x in s.get("related_questions", [])],
"reddit_threads": [(p.get("score"), p.get("url")) for p in r.get("posts", [])[:10]],
}
pool = source_pool("best crm for small agencies")
print(pool["organic_domains"]) # who is in the running
print(pool["reddit_threads"]) # the threads AI likely citesJavaScript Example
import { Scavio } from "scavio";
const client = new Scavio({ apiKey: process.env.SCAVIO_API_KEY });
async function sourcePool(query) {
const s = await client.google.search({ query, light_request: false });
const r = await client.reddit.search({ query, sort: "top" });
return {
organicDomains: (s.organic_results || []).slice(0, 10).map(x => x.link),
paa: (s.related_questions || []).map(x => x.question),
redditThreads: (r.posts || []).slice(0, 10).map(p => [p.score, p.url]),
};
}
console.log(await sourcePool("best crm for small agencies"));