Methodology · version of 13 Oct 2026

AI visibility methodology

Our AI visibility methodology asks each engine the buyer's question from the closest location it accepts, repeats it to build a sample, detects brands in a fixed order, and reports every rate with its sample size, a Wilson 95% interval and a significance test for change.

Engines and routes

The apps and Google's results pages are collected through DataForSEO at the location we set; exact model versions of ChatGPT, Claude, Gemini and Perplexity go through DataForSEO's API routes; Grok, DeepSeek, Llama, Mistral and other models go through OpenRouter with web search on. We never run our own browsers against ChatGPT, Gemini or Google. Each brand chooses its engines and models in Settings, within its plan's engine count and budget.

EngineRouteFan-out searchesRead vs citedWeight
ChatGPTConsumer app (LLM Scraper), web search onYesBoth0.45
Google AI OverviewsGoogle results page, AI Overview itemNoCited0.25
Google AI ModeGoogle AI Mode resultsNoCited0.1
GeminiConsumer app (LLM Scraper)NoCited0.08
Perplexity (API)Sonar via LLM Responses, Live only; any Sonar modelWhen returnedCited0.08
Claude (API)Newest Sonnet via LLM Responses, web search on; any Claude modelYesCited0.04
ChatGPT (API)LLM Responses, web search on; any OpenAI modelYesCited0 beside the ChatGPT app; 0.04 without it
Gemini (API)LLM Responses, Google Search grounding; any Gemini modelWhen returnedCited0.03
Grok, DeepSeekOpenRouter, web search on; any model of the familyNoCited0.03
Llama, Mistral, other modelsOpenRouter, web search onNoCited0.02

Weights reflect each engine's audience and are renormalised over the engines a brand tracks; a picked model weighs what its family weighs and is its own series. Gemini (API) and the OpenRouter models take no location: they search the web from wherever they run. A route never changes silently: if a route fails, the run is marked failed and retried later on the same route. A route change starts a new series, and charts mark every model change the engines report.

Location

Each project has a market: a country and, for local businesses, a city. Each engine gets the closest location it accepts. ChatGPT accepts a country (DataForSEO lists 191 countries and no cities for it), so its answers are country level. Google's AI Overviews, AI Mode and Gemini get the city centre as coordinates. Claude and ChatGPT (API) get a country code and the city name. Perplexity gets a country code. The question text never carries the location unless a buyer would type it ("best plumber in Cape Town"); every answer records the location it used.

Runs

SituationRuns per question per engine
Free check1 (labelled a snapshot)
Baseline, a new project's first run5 (2 on Claude and ChatGPT API)
WeeklyChatGPT 3, Gemini 3, AI Overviews 2, AI Mode 2, Perplexity 1; Claude and ChatGPT API once every 8 weeks
Daily (Growth, Agency)1 on ChatGPT and AI Overviews, for the 10 key questions

Every run is clean: a fresh context, no conversation history, no memory and no system message beyond what the route requires. We record the temperature and never re-run to get a better answer. AI Overviews run twice a week because two same-day runs of the same question shared only 24% of their cited sources in our tests (9 pairs).

Brand detection

Each brand has a name, aliases, product names and domains. We test, in order, and record which test decided: (1) the domain among the cited or retrieved links; (2) the engine's own brand or local-business cards; (3) an exact or alias match on word boundaries, possessives included; (4) for ambiguous names only (common words such as Sage or Apex, or a name seen only at the start of a sentence), a small model that reads the sentence and says whether it means the company, cached per answer. Rank is the order in which brands are first named. Sentiment (positive, neutral or negative, with a reason of 20 words or fewer) comes from the same small model.

Statistics

  • Mention rate = answers naming the brand ÷ answers. Citation rate = answers citing its domain ÷ answers. Share of voice = its mentions ÷ all tracked brands' mentions.
  • Every rate shows n and a Wilson score 95% interval.
  • A change between periods is tested with a two-proportion z test, or Fisher's exact test when any cell is below 5, and called up or down only at p < 0.05; otherwise "no clear change".
  • Searches where an engine shows no AI answer are counted as their own outcome and never dilute the mention rate.
  • Brand-direct questions ("what does X charge?") check accuracy against your own site and are reported separately.

Visibility score

For each engine e, the demand-weighted mention rate is re = Σ dq·kq,e ÷ Σ dq·nq,e, where k is answers naming you, n is answers, and dq is the question's demand weight. The score is 100 × Σ we·re ÷ Σ we over the engines measured. Its interval combines each engine's Wilson interval, using Kish's effective sample size for the demand weights.

The demand weight of a question is the monthly search volume of its nearest keyword (DataForSEO Labs), normalised as max(1, 10 × volume ÷ the set's top volume): the most-searched question counts ten times a question nobody searches, and no question counts for less than 1.

Fan-out searches and the gap check

Every fan-out search is stored with its engine, run, question and location, lower-cased and stripped of punctuation, and clustered with a token-set similarity (no embeddings). Clusters are ranked by the share of runs that issued them. For the top clusters we pull Google's organic top 20 (and Bing's top 10 on Growth and Agency) at your market's location, cached per query, location and day, and record your rank, the competitors that rank and the third-party pages that rank. ChatGPT returned fan-out searches in 100% of the 25 answers we have measured.

Sources

Links are normalised (tracking parameters removed, Google grounding redirects resolved) and each domain is classed as your site, a competitor, a review or rating site, a directory, a marketplace, Reddit or a forum, video, Wikipedia, news, government or education, or other. Retrieved and cited are kept apart.

Site checks

Weekly, at no cost: robots.txt rules for twelve AI crawlers; your pages fetched with each search crawler's user agent (indicative, since real crawlers use their own IP addresses); raw HTML compared with a browser render; noindex, canonical, sitemap and status codes; llms.txt and structured data, both reported as optional. When we read your site we identify ourselves as Sightings-SiteReader/1.0 (+https://sightings.io/methodology#crawler) and obey robots.txt.

Limits

  • Answers are collected through DataForSEO, a third party; we store every raw response, hashed, so any number can be traced and re-parsed.
  • ChatGPT is measured at country level. Copilot and Meta AI are not offered by our providers yet; Grok, DeepSeek and the OpenRouter models answer through their APIs, not their apps.
  • Recommendations are evidence-based suggestions, not guarantees. We never promise rankings.

Questions about the method: see about us.

See what AI says about your business

Free, about two minutes, no sign-up.

Check my AI visibility