What one answer is
One answer is one prompt asked on one channel in one country on one day. The ledger keeps the answer's text, the pages the assistant retrieved and the ones it cited, the model that answered, and the versions of the connector, parser and matcher that handled it. Everything else on SQSEO is a count over answers.
How answers are captured
Official APIs where the vendor offers one with its own web search: Claude, Gemini, Perplexity's Sonar, and the models SQSEO runs through OpenRouter (ChatGPT, Grok, DeepSeek, Qwen, Mistral, Llama). A logged-out consumer surface is captured by an authorised browser, never with a client's account. Each prompt is asked once a day per channel and country; a target can ask up to three times a day to tighten its interval.
A canary is a fixed prompt asked on every channel on a schedule. When too few canaries answer in the recent window, the channel is quarantined and no client prompt runs on it until the canaries pass again. The status page shows the rule's numbers and every channel's state this minute.
From an answer to a mention
The matcher reads the answer's text for the project's brands: each brand's name and the aliases the project keeps. A mention is a brand named in the answer; its position is its rank among the brands named. The matcher's version is written on every mention, so a change in matching is visible in the ledger and never rewrites the past unseen.
The pages the assistant read are recorded as retrieved; the ones it referenced in the answer as cited. Each page gets a domain, a class by rules (editorial, review, community, corporate, documentation), a relation to the project's brands by domain, and, once crawled, a page type by rules a reader can check.
The metrics
- Visibility
- The share of answers that name the brand.
- Share of voice
- The brand's mentions over all brand mentions in the same answers.
- Citation rate and retrieval rate
- The share of answers that cite a page of the brand's own domain, and the share that read one.
- Position
- The mean rank of the brand among the brands named, over the answers that name it.
Every proportion carries n, the answers behind it, and a 95 percent Wilson interval; a mean carries a bootstrap interval. A day without answers is a gap in the chart, never a zero. A window's numbers are rolled up from stored daily counts, and a rebuild from the raw answers is asserted to match them exactly.
Actions, and whether they worked
Actions come from the same ledger: the pages competitors are named on and you are not, the topics where no page of yours is read, the checks the GEO audit fails on your own pages. Their impact is relative and rank based, with the counts behind the rank on every card.
When you start an action, its window opens: the prompts it is about become the treatment arm and the rest the control, and the change is read as a difference in differences with bootstrap intervals. A model change or a quarantined channel inside the window is flagged as a confounder, not hidden.
What is not measured
- Nothing behind a login, and nothing with a client's account.
- No synthetic or estimated answers: when a channel did not answer, its cell is empty.
- No vendor's number relabelled: every figure is a count over answers SQSEO captured itself.
- No score without its n: a number that cannot be traced to answers is not shown.
Versions and changes
Every answer carries the versions of the connector, parser and matcher that produced it. The status page lists the model behind each channel and the day it was first seen, so a change shows the day it happens. The JSON behind every public page is linked from the page.