Methodology · Updated
How the score works
A free scan asks ten customer questions, twice, and shows what came back. This page is the whole formula. If the formula changes, this page changes in the same release.
The headline is named in X of Y. The visibility score is a second number, from 0 to 100. They measure related things. They are not the same number.
What a free scan asks
The ten questions are written from the kind of business and the city. They do not include the business name, a competitor, a neighborhood, or Saturday hours. Two dental offices in the same city get the same ten questions.
- What is the best {kind of business} in {city}?
- Can you recommend a good one?
- What are the top options right now?
- Which has the best reviews?
- Best value.
- Who is the most trusted?
- What do locals recommend? (If there is no city: what do experts recommend?)
- Highest rated in 2026.
- Affordable, and actually good.
- I need one this week. Who should I try first?
Each of those is asked twice. The two runs are two separate answers. Run 2 is not a copy of run 1.
Saturday hours, a neighborhood, and questions about specific services are audit work. They are not in the free scan. A question that uses the business name, if one is on a scan, is shown on the result as a brand check and left out of the score.
Named in X of Y
X is the number of scored answers that named the business with confidence. Y is every scored answer, including answers that failed.
A full free scan is 10 questions × 2 runs, so Y is 20. “Named in 7 of 20” means seven of those answers named the business. It does not mean seven of the ten questions.
A failed answer stays in Y and is not a yes. Dropping it would make the scan look shorter than it was. A possible name match is not a yes. A brand-check answer is not in X or Y.
The visibility score
Only the unbranded questions are in the score. Brand checks are a separate section on the result page.
Each run of a scored question has a weight:
- 1st in a list: 1.0
- 2nd: 0.8
- 3rd: 0.65
- 4th or lower: 0.5
- Named, but the answer is not a list: 0.5. This is not first place.
- Not named, a possible match, or a failed call: 0
A question’s contribution is the average of its run weights. The visibility score is 100 times the average of those question contributions. The result page shows that score rounded to the nearest whole number.
That is the same as, for each question: (runs that named you, divided by all runs of that question, including failures) times (the average weight of the runs that named you). A question that was never named contributes 0. A question that failed on both runs contributes 0. It does not become a free point, and it is not removed to raise the average.
Worked example. One question, two runs. Run 1 lists you 1st (weight 1.0). Run 2 does not name you (weight 0). That question contributes 0.5. If every question did that, the score would be 50.
A possible match is a longer name that only starts with the business’s words, such as “Peak Dental Group” when the business is “Peak Dental.” It is shown and it does not move the score.
List place is read from the answer: a numbered list, or at least two bold names. If there is no list, the page does not print a rank.
Average list place
This is the mean of the list places where the business had one. Answers that named the business without a list are not in this average. They still count as 0.5 in the score. If no answer had a list place, the page says so.
Whether the two runs agreed
Agreement is only “named” or “not named.” It is not a confidence percentage.
A failed run counts as not named, because that run did not name you. When a failed run is why a question differs, the result says: “A failed run counts as not named.”
A change in list place is not a disagreement. First on one run and second on the other still counts as agreed, because both runs named you. When that happens, the result says: “A change in list place does not count as a disagreement.”
- Both runs named you, or both did not: that question agreed.
- One run named you and the other did not: that question disagreed. The result says how many questions differed, out of the scored questions.
- A scan that asked each question once, including the saved Denver example, says it cannot tell whether the runs agreed. One run cannot agree with itself.
Who was named more often
Names are parsed out of the answers. Each name is counted once per answer. The chart includes the business being scanned and the other names that showed up. The three competitor boxes, if someone filled them in, are names to watch. They are not the only names the chart can show.
When two or more other names have the same count, the headline, the “who was named” sentence, the share card, and the top 3 issues all name every one of them. The page does not quietly pick one. A tie reads like: “Maple Dental, Oak Street Dental and River Smile each came up 17 times.”
When the scanned business has that same count, the sentence includes it. The Denver example says: “You and Coffee shop D each came up 7 times.” The page also says “You are tied.”
The free questions do not contain a competitor’s name, so the chart is whoever the answers actually named.
Top 3 issues
The result lists up to three findings taken from those answers: how often the business was named, who else was named, and which page was cited most. A cited page is counted once per answer. The free scan does not open that page, so it does not claim the business is or is not on it.
These findings are not a ranking factor we invented. They are what this scan observed. The page does not say that ChatGPT reads schema, hours, or any other field on a website.
What “ChatGPT” means here
A result labeled Real ChatGPT used OpenAI’s API with web search. It can still differ from the ChatGPT app, because the app adds memory and personal context.
A result labeled ChatGPT-style used live web results read by Gemini. That label says “Not ChatGPT itself,” and the number on that page is not a ChatGPT score. A scan uses one engine. Gemini answers are never filled into a ChatGPT score.
When the day’s ChatGPT limit is used up, the whole scan switches to the labeled fallback. It does not mix the two.
Failures, retries, and the clock
A failed call is tried once more, after a short wait. If it fails again, the result shows that the run failed, with a short reason, and that run counts as 0. We do not keep retrying.
About 90 seconds is the usual time for a free scan. It is not a cutoff. A slow question is finished. It is not cancelled to protect the clock.
The day cache
Unbranded answers are stored for the calendar day, per engine, per question, per city, and per run number. The next business in that category and city reuses the stored text, and only the name match is done locally. Run 1 and run 2 are two stored answers. They are not the same reply saved twice.
A question that contains the business name is not shared. A failed call is not stored, so a later scan can try it again.
Website readiness
Readiness is a second number, from the business’s own site. It is not part of named in X of Y, and it is not part of the visibility score. A perfect site with no mentions still scores 0 on visibility. A messy site that gets named still keeps its visibility score.
The check opens the homepage and a few linked pages, plus robots.txt and a sitemap if one is listed. It stops after a handful of pages. It follows robots.txt for its own fetch. A page robots.txt disallows is not opened, and that is not reported as a missing page.
Each check is pass, failed, or not checked. The readiness score is 100 times the passes divided by the checks that actually ran, rounded to the nearest whole number. A check that did not run is left out. It is not a failure and it is not a zero.
The checks that can count are: OAI-SearchBot is allowed, the homepage has real text, the business name is on the homepage, the city is on the homepage, a phone number is on a page we opened, a street address is on a page we opened, hours are stated, those facts do not conflict across the pages we opened, the homepage states the service and the city, LocalBusiness structured data is present, the homepage has a title and a meta description, an About, contact, or FAQ page was found, and a sitemap was opened.
OAI-SearchBot is the crawler OpenAI’s docs say can keep a page out of ChatGPT search. GPTBot is the training crawler. A blocked GPTBot is reported and is not, by itself, a failed check. ChatGPT-User, PerplexityBot, Google-Extended, Googlebot, and Bingbot are reported the same way. Googlebot or Bingbot being allowed is not a claim that the page is in that index.
Structured data is hygiene. Google has documented it. This scan does not say that ChatGPT uses schema.
These are not checked, and they are not zeros: Google AI Overviews, Google Business Profile, whether Google has indexed the site, whether Bing has indexed the site, review counts, and page speed.
If no website was entered, the section says so and there is no readiness score.
What this score is not
It is not a guarantee that ChatGPT will name the business tomorrow, for a different person, or in the ChatGPT app. It is not a Google ranking. It does not include a readiness grade for the website. That is a separate check, and it is not part of this number.
FAQ
Does a higher score mean ChatGPT will recommend me?
No. The score is the average of the weights above, for the questions and runs on that scan. Answers change from run to run.
Why is the headline not the same as the score?
The headline counts confident mentions. The score also cares where in a list the name appeared, and it gives a mention with no list half credit. First place in every answer scores 100. A mention with no list scores lower than first place even though the headline still counts it.
Are failed questions removed?
No. A failed run stays in the question and counts as zero. The page shows the failure.