RecoSignal

How We Measure AI Visibility: The Full Methodology

Updated July 17, 2026 · RecoSignal team

Key takeaways

  • We measure frequency, not rank: across 30 customer-style prompts per engine, how often does an assistant name your business? Position inside an answer is recorded but scored at zero weight, because the order of names in AI answers is unstable.
  • One audit is 138 measurements: 30 prompts on each of ChatGPT, Gemini and Perplexity, with the 8 highest-intent prompts asked three times each — 46 measurements per engine.
  • The engine weights (ChatGPT 0.45, Gemini 0.30, Perplexity 0.25) and the verdict bands (≥40 visible, 10–39 weak, <10 invisible) are judgments, not measurements. We publish them so you can disagree with them and recompute.
  • What the score cannot do: predict, guarantee, or prove causation. It is a snapshot of how three engines answered on one day, and re-running it on another day will move the number.
  • Every raw answer is stored. Any figure in a RecoSignal report can be traced back to the text of a real AI answer, which is the only reason to believe any of it.

Why this page exists

A category that sells "AI visibility scores" without publishing how they are computed deserves the suspicion it gets. A score whose method is secret cannot be checked, argued with, or reproduced — which makes it indistinguishable from a number invented to sell a subscription.

So this is the method, in full: the prompts, the engines, the arithmetic, the thresholds, and the specific things the number does not prove. Where a choice is a judgment rather than a measurement, it is labelled as one. Where the method has a limitation that cuts against us, it is stated here rather than left for a competitor to find.

This page tracks the code. If the measurement changes, this page and the methodology version change with it.

What we measure: frequency, not rank

The core question is simple: across many realistic, customer-style questions, how often does an assistant name your business? Each measurement is binary. Named in the answer scores 1. Absent scores 0. Nothing else enters the score.

We do record where in the answer your name appeared, but that rank is stored as diagnostics and weighted at zero. The reason is that the order of names inside an AI answer is not stable enough to build a metric on: ask the same question twice and the same businesses can come back in a different order. A vendor reporting your "rank in ChatGPT" is reporting noise with a decimal point on it. There is no ranked list inside these systems to hold a position in.

An engine score is therefore a percentage: 100 × (measurements naming you ÷ successful measurements on that engine). If you were named in 12 of 46 successful measurements on ChatGPT, your ChatGPT score is 26.1.

The questions: 30 prompts per engine, five intents

The prompts are generated for your business and your city, and they are written the way customers write, not the way marketers write. Thirty per engine, spread across five intents, each intent appearing in two flavours: one that names your city explicitly, one phrased as "near me" with the location passed as an API parameter instead of typed into the question.

  • best_of — "Who is the best implant dentist in [city]?"
  • near_me — "Good med spa near me", with the location passed to the engine as a structured parameter where it supports one, rather than typed into the question.
  • attribute — the question that filters on a specific fact: an insurer accepted, a device used, a service offered, a price.
  • comparison — "X or Y in [city]: who does both, and what do they charge?"
  • urgency — the same-day question: a chipped tooth tonight, a burst pipe, an emergency appointment.

138 measurements per audit, and why the same question is asked three times

The eight highest-intent prompts — the ones where a customer is closest to booking — are asked three times each instead of once. That turns 30 prompts into 46 measurements per engine, and across three engines an audit is 138 live calls to ChatGPT, Gemini and Perplexity.

The repetition is not padding; it is the whole reason the result means anything. These systems are non-deterministic: the same question asked twice can produce different business names. A single answer is an anecdote. Asking the questions that matter most three times is how a one-off mention gets told apart from a business the engine reliably names.

It also sets the honest ceiling on precision. With 46 measurements per engine, a single mention moves that engine's score by about 2.2 points. A one-point difference between two businesses is not a finding, and we do not report it as one.

The engines we ask — and the limitation we will not bury

We measure three engines: ChatGPT, Google Gemini and Perplexity. Each is queried through its official API with web search enabled, in the configuration published in our code.

Here is the limitation, stated plainly: we query the API models, not the consumer apps. The answer a patient gets in the ChatGPT app on their phone — with their chat history, their memory, their account, their subscription tier and whatever version OpenAI shipped that morning — is not guaranteed to be the answer our measurement received. No vendor in this category can measure the consumer app at scale, because there is no interface to do so; anyone implying otherwise is selling you a screenshot.

What our measurement is, precisely: a large, repeated, reproducible sample of how the underlying models answer local recommendation questions with live web search, in your city. What it is not: a wiretap on your customers' phones. We think the first thing is worth paying for and the second thing does not exist. You should know which one you are buying.

Geography: how the engines are told where the customer is

A local recommendation depends entirely on where the customer is standing, and the three engines take that fact differently.

ChatGPT and Perplexity accept a structured location — city, region, country — passed alongside the question, which is why our "near me" prompts can be phrased exactly as a customer phrases them, without a city typed into the text.

Gemini, in our testing, did not act on a location supplied that way. So for Gemini we fall back to naming the city inside the question text itself. This is a real asymmetry between the engines, it is set by a flag in our code rather than hidden in a black box, and it means Gemini's "near me" results answer a slightly different question than ChatGPT's. We would rather tell you that than pretend the three engines were asked identically.

How the three engine scores become one number

The final AI Visibility Score is a weighted average of the three engine scores: ChatGPT 0.45, Gemini 0.30, Perplexity 0.25.

Those weights are a judgment, not a measurement. They are our estimate of how much of the assistant-using public each engine actually reaches, and we hold them loosely. We publish them for exactly this reason: you can take the per-engine scores in your report, apply your own weights, and get your own number. Nothing is hidden inside the average.

One mechanical rule protects the average from garbage. If an engine returns usable answers for fewer than half its measurements — an outage, rate limiting, a model refusing to answer — that engine is dropped from the score entirely and the remaining weights are renormalised, rather than letting a broken engine drag the number down and pass it off as invisibility. If no engine clears that bar, the audit reports no score instead of inventing one.

The verdict bands, and the fact that they are a judgment

A score of 40 or above reads as visible. Between 10 and 39 reads as weak. Below 10 — including a business that was never named at all — reads as invisible.

There is no science behind those two cut-points. They are the boundaries we chose to make a number legible to a business owner, and they are the part of this methodology most open to reasonable disagreement. What they are not is a hidden lever: your raw per-engine percentages are in the report, and if you think the line between weak and visible belongs at 35 or at 50, you can draw it there yourself.

For scale, from a real market: in our July 2026 Dallas dental benchmark, the highest-scoring practice in the entire metro scored 27.0 out of 100 (the benchmark). Nobody in that market cleared the visibility bar. A score of 40 is a high bar, and it is meant to be.

Counting mentions: how a name in a sentence becomes a number

Every mention is parsed from the text of a real answer. Business names are normalised (case, punctuation, suffixes such as "LLC" or "DDS"). Two different spellings are counted as one business only when something in the data shows they are the same: the identical spelling once accents and punctuation are stripped, the same name written in another alphabet, or both spellings appearing alongside citations of the same company website. Spellings that turn up in the same answer as two separate items are never combined — an assistant listing options does not name one business twice, so that is evidence of two businesses, not one. The same rule governs your own business and every competitor, and a spelling we cannot tie to anything stays on its own line instead of being folded in on a guess. That is deliberate: a leaderboard that splits a business in two is noisy, but one that merges two businesses into one is simply wrong.

For the competitor leaderboard, a business needs at least two independent mentions to appear. A single passing mention is inside the noise floor of a non-deterministic system, and a leaderboard full of one-mention businesses would be a leaderboard of coincidences. Two exceptions are deliberate: your own business always appears, including when the honest answer is a zero — a zero you asked for is a finding, and dropping it quietly would be a lie by omission. Competitors you named yourself bypass the two-mention threshold on one mention. A competitor you named that no engine mentioned even once does not currently appear as a zero row on the leaderboard; that is a limitation of the current build, not a judgment that the fact is unimportant, and it is on the list to fix.

Share of Voice uses a broader denominator than the leaderboard. It counts every distinct canonical business mention in every successful answer, including businesses mentioned only once. The same business can count at most once per answer, even if the model repeats its name or uses multiple aliases. Your Share of Voice is 100 × (answers-and-business pairs belonging to you ÷ all answers-and-business pairs). It is a share of observed mentions in this audit, not market share and not search traffic.

We also record every source domain the engines cited. That is what produced the most uncomfortable finding we have published: across the three Dallas markets we measured in July 2026, 73% to 79% of the sources behind AI's recommendations were the businesses' own websites, not directories — a result that argues against a large part of what this industry sells, and against a large part of what we ourselves used to write. The per-market breakdowns are published on the benchmark pages.

What this score cannot do

It cannot predict. The score describes how the engines answered during the measurement window. It is not a forecast of next month, and a model update can move it without anything about your business changing.

It cannot guarantee. Nobody can promise that ChatGPT will recommend you, because there is no position to buy and no ranked list to enter. Anyone selling a guaranteed #1 in an AI answer is selling a place that does not exist.

It cannot prove causation. We can show that the businesses an engine names tend to be the ones whose facts are stated in readable text and repeated consistently everywhere the engine checks. We have not run a controlled experiment proving that fixing a specific gap raises your score — nobody has, and a vendor claiming a causal number here is guessing. What we can do is measure you before, and measure you again after, and tell you honestly what moved.

It is one day. The Dallas benchmark is a snapshot from July 7, 2026. Ask the same questions in October and the names will have moved. That is an argument for re-measuring, not for treating a single measurement as gospel — including ours.

Reproducibility

Every raw AI answer collected during an audit is stored, along with the prompt that produced it, the engine that answered, the timestamp, and the source domains cited. Every number in a RecoSignal report traces back to that text.

This is the part that separates a measurement from a marketing claim, and it is the standard we would like the rest of this category to be held to — including by anyone reading this page with a competitor's report open in another tab. If a number in your report looks wrong, ask us for the answers behind it. They exist.

This page describes methodology version 1.2. When the method changes, the version changes, and reports say which version produced them.

See it run on your own business

The fastest way to judge a methodology is to watch it produce a result you can check. The free AI Visibility Snapshot runs the measurement above on your business and reports your score, your share of recommendations against your competitors, and your single biggest gap — with the raw answers behind it. If the number surprises you, the answers are there to argue with.

Frequently asked questions

Why measure frequency instead of my rank in ChatGPT?
Because there is no rank. AI assistants do not maintain a ranked list of businesses; they generate an answer, and the order of names inside it shifts between runs of the same question. We record position as diagnostics and give it zero weight in the score. A vendor selling you a "rank in ChatGPT" is putting a decimal point on noise.
Do you measure the actual ChatGPT app my customers use?
No, and neither does anyone else. We query the models through their official APIs with web search enabled. The consumer app adds chat history, account memory, subscription tier and app-side changes we cannot see or reproduce, so the answer on a customer's phone can differ from ours. What we produce is a large, repeatable, checkable sample of how the underlying models answer local recommendation questions in your city — not a recording of your customers' screens.
Where do the engine weights come from?
From our judgment about how much of the assistant-using public each engine reaches: ChatGPT 0.45, Gemini 0.30, Perplexity 0.25. They are not a measurement, and we publish them precisely so you can reject them. Your report contains the raw per-engine scores; apply your own weights and compute your own number if ours do not match your market.
Why is 40 the line for "visible"?
Because we drew it there. The bands (≥40 visible, 10–39 weak, <10 invisible) exist to make the number legible to an owner, not because a study established those cut-points. For context, the best-performing dental practice in our entire Dallas metro benchmark scored 27.0 out of 100 — in that market, nobody cleared the bar.
How many measurements is a single audit?
138 live calls: 30 customer-style prompts per engine across ChatGPT, Gemini and Perplexity, with the 8 highest-intent prompts asked three times each — 46 measurements per engine. The repeats exist because these systems are non-deterministic, and a single answer is an anecdote rather than a measurement.
If I fix the gaps in my report, will my score go up?
It should raise the probability that you are named, and we will not pretend to know more than that. No controlled study has proven that a specific fix causes a specific score increase — not ours, and not any competitor's. What we can do is measure again after the changes and tell you what actually moved, which is why re-measurement matters more than any single number.

Find out if AI recommends your business

The free Snapshot shows your AI Visibility Score and who ChatGPT, Gemini and Perplexity recommend instead of you.

Run a Free AI Visibility Snapshot