How Share of Answer is measured

Share of Answer is one number for how often a business is found and recommended wherever its customers look: Google results and maps, Google's AI Overviews and AI Mode, ChatGPT, Gemini, Perplexity, Claude, and Copilot. This page describes exactly how Virtucano computes it, so anyone can audit the method. The code that implements it is open source (packages/core/src/stats and packages/pollster).

AI answers are personal, multi-turn and different every time. So Virtucano doesn't "track a rank". It polls assistants the way pollsters survey voters, and it reports every number with a range.

1. What is measured

For every answer Virtucano collects, it records three things about the business:

Measure Question it answers Counted over
Named Does the answer mention the business at all? Unbranded questions
Recommended first Is it the first business the answer recommends? Unbranded questions
Described accurately Is every checkable fact the answer states about it correct? All answers that name it and state a checkable fact

Share of Answer, the headline, is the demand-weighted share of unbranded answers that name the business.

Unbranded questions are ones a customer asks without naming a business ("Who's the best plumber in Oak Park?"). Brand questions ask about the business by name ("Is Rosa's Plumbing open on Sundays?"). Brand questions would trivially "find" the business, so they never count toward Named or Recommended first; they exist to surface facts an assistant states, which are checked for accuracy.

2. The questions

Virtucano builds a question set for each business from its category, location and services:

  • Discovery: "Who's the best plumber in Oak Park, IL?"
  • Urgent: "My water heater is leaking. Who should I call in Oak Park tonight?"
  • Pricing: "How much does water heater replacement cost in Oak Park, and who do you recommend?"
  • Comparison: "Is there a plumber near Oak Park that's open on Sundays?"
  • Brand: "What do you know about Rosa's Plumbing in Oak Park? What are their hours?"

In weekly measurement, at least one question continues with a follow-up turn ("Which of those are open on weekends?"), because real buyers ask follow-ups and that is often where recommendations are decided. Whether the business was named, and where, is read from the answer to the question itself; a follow-up reply only adds facts such as hours. The free report skips follow-ups to keep its cost down. Each question has a relative demand weight (discovery and urgent questions weigh more than comparisons). The question set is deterministic for a business, so week-over-week numbers compare like with like.

When a business connects its own data, Virtucano builds questions from what its customers actually ask (site searches, call notes, reviews). That is the "synthetic customers" capability; the free report uses the category templates.

A kind of business that isn't on Virtucano's list keeps the words its owner used. A tattoo parlor is asked about as "the best tattoo parlor in Oak Park", and Google Maps is searched for "tattoo parlor". Virtucano measures businesses that serve customers in a place. Online stores and software, which customers choose by what they sell rather than where they are, aren't measured yet.

3. Sampling

Every question is put to every available surface, in weekly measurement several times (at least three samples per question per surface). The free report asks each question once per surface, so it costs little enough to give away; its ranges are wider for it. Each sample is an independent conversation, asked the way a consumer app would ask: no system prompt steering toward any business, from the business's city.

Virtucano samples through official APIs only:

Surface How it is observed
ChatGPT OpenAI Responses API with web search enabled
Claude Anthropic Messages API with web search enabled
Gemini Gemini API with Google Search grounding
Perplexity Perplexity Agent API
Google Search, Maps (local pack), AI Overviews Licensed SERP data (bring your own DataForSEO key)
Google AI Mode Licensed AI Mode data (DataForSEO)
Copilot Not sampled: Microsoft offers no public answer API. Copilot citations come from Bing Webmaster Tools' AI Performance report once connected.

Weekly measurement asks each assistant with the model its free chat app uses, because that is what most people see; the settings record which model that is, and every stored answer records the model that wrote it. The free report uses each provider's cheapest capable model to stay free, so its answers can differ somewhat from the apps'.

API answers can differ from what a signed-in consumer sees in an app. Virtucano calibrates against first-party evidence where it exists (AI referrals in analytics, Bing's Copilot citations, Search Console's generative AI reports) and says so wherever the difference matters.

A request that fails for a reason that passes (a server error, a rate limit, a search engine error) is tried again. When answers still fail, the report names the surface and how many failed, and its estimates use the answers that came back; a surface with no answers at all is listed as not sampled, with the error.

Unbranded answers for the same question, city and surface are shared across businesses in the same market for up to 24 hours. This keeps costs down; it does not change the estimate, because an unbranded answer doesn't depend on who asked. Brand questions are never shared.

Adaptive sampling. When there is budget for more samples, Virtucano spends them where they reduce uncertainty most: it allocates the next sample to the (surface, question) cell with the largest reduction in the blended estimate's variance per unit cost (greedy Neyman allocation; every unsampled cell first). Cells that matter more to the business's demand, or whose answers are split, get more samples.

4. Reading an answer

Each answer is analyzed for:

  • Businesses mentioned, in order. From numbered and bulleted lists, headings, bold names and links, and for search surfaces, the ranked results. The order of recommendation is the order in the list (or of first mention, for prose).
  • The business itself. Matched by name (normalized: case, punctuation, "&", legal suffixes like "LLC", and a leading "The" are ignored; near-identical spellings match; a generic trailing word like "Plumbing" alone does not), by its website's domain in citations and results, and by phone number.
  • Claims about the business. Hours ("closed on Sundays", "open 24/7"), phone, address, service area ("doesn't serve Evanston"), services offered, prices, "permanently closed", website. A website is only read from an address written in the answer, never from a citation link beside the business's name. Extraction is conservative: precision over recall.
  • Sources. Every cited URL is classified: the business's own site, a competitor's site, a directory, a review site, social, a forum, video, news, a wiki, government, or other. A competitor's site is one the answer links to a business it names, or one named like such a business ("a-dentalcenter.com" for "A-Dental Center").

By default the analysis is rule-based and deterministic. A server can opt into model-based extraction; every model call is logged with its prompt, input and output so results can be reproduced. It follows the same rules: each claim must quote the answer, and a website must be written out in it. Its model calls are part of what a report costs.

5. Checking facts

Each claim is checked against the business's Truth Ledger, the owner-approved record of its facts. A claim is correct, incorrect, or unverifiable (the ledger doesn't say). Unverifiable claims never count for or against accuracy. An answer is accurate when it states at least one checkable fact and none is wrong.

In the free report the business hasn't approved a ledger yet. If it has a website, Virtucano checks claims against the facts the site itself publishes (its structured data and visible phone number) and labels them as such. Without either, claims are shown as "is this right?" rather than scored.

Wrong hours stated in one answer ("Monday through Thursday 9 to 6, Friday 9 to 1") are reported as one error, next to the whole week the business publishes, rather than one error per day.

When a claim is wrong, Virtucano fetches the pages the answer cited and looks for the passage that supports the wrong claim, preferring pages that also mention the business. That page is reported as the likely source, with a confidence level, so the error can be corrected where it starts.

An error counts as fixed only on evidence. Later answers on the same surface must name the business and state the same fact correctly, at least twice, with no repeat of the error. Answers that don't name the business, or never mention the fact, count for nothing either way: an error that wasn't seen isn't corrected.

6. The estimate

Let surfaces be s, questions q, and for each (surface, question) cell let k of n sampled answers name the business.

Weights. Each surface carries a demand weight Ws: the estimated share of this business's customers who look there. Each question carries a relative weight wq, normalized within each surface over the questions that surface answered. The cell weight is Ws × wq, renormalized over cells that have samples.

Point estimate. The weighted mean of the cell proportions:

p̂ = Σcells weight × (k / n)

Uncertainty. Each cell's variance uses a smoothed proportion, p̃ = (k + 0.5) / (n + 1), so a cell where every answer agreed still contributes uncertainty. The variance of the blend is

Var(p̂) = Σcells weight² × p̃(1 − p̃) / n

The Kish effective sample size is neff = p̄(1 − p̄) / Var(p̂), where p̄ is the weighted smoothed proportion, capped at the raw sample count. The reported range is the Wilson score interval for p̂ at neff. With a single cell this reduces exactly to the Wilson interval. Virtucano reports 90% ranges by default; experiments use 80% ranges and say so.

Accuracy experiments compare the runs before and after a change with Newcombe's score interval for a difference of proportions. It's built from each run's Wilson interval at its effective sample size. Unlike the Wald interval it doesn't collapse at 0% or 100%: going from 0 of 3 accurate answers to 3 of 3 is reported as a large change, about +50 to +100 points, not a certain one.

Traffic experiments compare the changed page with unchanged pages. When the unchanged pages had no activity before or after the change, there is nothing to scale by. Virtucano then compares with the page's own history and says so. When too few days had activity to resample, it reports insufficient data rather than a number.

The same method gives each surface's own estimate (cells within that surface, weighted by question) and each question's estimate (cells for that question, weighted by surface). Accuracy is stratified by surface the same way.

Coverage. Surfaces with demand weight but no samples (Copilot, YouTube, marketplaces today, or any surface without an API key configured) are left out of the blend, and the report states the share of estimated demand the sampled surfaces cover. The blend is never silently extrapolated to surfaces that weren't measured.

7. Demand weights

Until a business connects its own data, surface weights come from published priors per kind of business:

Surface Local services Food & retail Health Professional E-commerce
Google Search 0.28 0.22 0.30 0.33 0.30
Google Maps / local pack 0.27 0.38 0.24 0.16 –
Google AI Overviews 0.12 0.10 0.13 0.13 0.12
Google AI Mode 0.04 0.04 0.04 0.05 0.05
ChatGPT 0.14 0.12 0.15 0.18 0.18
Gemini 0.06 0.05 0.06 0.06 0.07
Perplexity 0.03 0.02 0.03 0.04 0.04
Claude 0.02 0.01 0.02 0.02 0.02
Copilot 0.03 0.02 0.02 0.03 0.03
YouTube 0.01 0.04 0.01 – 0.07
Marketplaces – – – – 0.12

These are assumptions, and they are labeled as such. Once a business connects Search Console, Analytics and its Business Profile, Virtucano replaces them with weights from the business's own referrals and calls.

A kind of business that isn't on the list uses the local services weights, or the food and retail weights when it's a place customers walk into (its name includes shop, store, boutique, market, outlet, showroom, gallery, salon, spa, studio, barber or parlor). The e-commerce weights are for online stores, which Virtucano doesn't measure yet.

8. Reporting rules

  • Every estimate shows its range, its sample count and this method. No vanity scores, no single "rank".
  • Owners see plain language ("about 5 of 10 conversations"), rounded to the nearest tenth, next to the exact figure and range.
  • Virtucano only says a number went up or down when this week's and last week's ranges don't overlap. Otherwise it says "about the same".
  • Simulated data (Virtucano's demo mode when no API keys are configured) is always labeled, the weekly briefing included, and never blended with real samples.
  • The weekly briefing reports each outcome for what it measures: Business Profile call clicks, and website key events from all traffic. They aren't added together or credited to search and AI. A surface's share is described by the questions it covers (people in the city asking for the category), not by one question's wording.
  • Every raw answer is kept and exportable, so any estimate can be recomputed.
  • Comparisons with competitors count every business the same way: the unbranded answers that name it, out of the same answers, and the map spots where it's in the first three, out of the same spots. These counts aren't weighted by demand, so the business's own count can differ from its Share of Answer. The free report's "What's possible here" shows the best competitor's counts beside the business's: a target a business nearby already reaches.
  • Virtucano doesn't forecast a business's future numbers. "Within reach" lists what the report found that can move them (wrong facts, assistants that can't open the website, crawlers it blocks, pages AI cites for competitors that were read and don't name the business, map spots where the business is 4th to 10th), not when they'll move: that depends on when assistants and Google read the changes.

9. Can assistants open the website?

When customers ask about a business, assistants often open its website to check their answer. The free report asks whether they can, for the homepage:

Assistant How it is checked
Claude Claude's web fetch tool, through Anthropic's API: a fresh visit from Anthropic's own addresses
Perplexity The Agent API's fetch_url tool. A refusal counts only when Perplexity names it (an error status, "forbidden", a CAPTCHA)
Gemini The Gemini API's URL context tool. Google reads its index first and visits live otherwise, so success means Gemini can read the page, not that a live visit got through today
ChatGPT OpenAI's API offers no tool that opens a given page, so Virtucano sends a request using ChatGPT's fetcher name. Firewalls recognize real fetchers by their addresses, so this is an estimate, and labeled as one

A robots.txt rule that tells an assistant's search or fetch bot to stay out also counts. A failed visit is checked a second time before it is reported. The checks use the free report's models and stay under a cent per report.

The report also lists which facts customers ask about (phone, address, hours, prices, a booking or quote link) are in the page itself, readable without running JavaScript.

How many assistant visits a site turned away needs the site's own logs: a business that signs in can upload its server or CDN logs, and the demand radar counts the assistant fetches answered with an error.

10. Map rankings around the business

Google Maps ranks a business differently depending on where the person searching is. The local pack above is one search from the town; map rankings show the whole area around the business:

  • Virtucano finds the business on Google Maps by searching its name in its town, and keeps Google's ids for its listing.
  • It lays a square grid of spots around it: 7 by 7 in the free report, 13 by 13 each week for tracked businesses. Both cover the same area, about 6 miles across for a storefront and 12 for a business that goes to its customers.
  • From each spot it runs the search a customer would ("plumber"; tracked businesses also their main services), as a phone there sees it, and reads the first 20 results.
  • The business's rank at a spot is where its own listing appears, matched by Google's ids; "20+" when it isn't in the first 20.
  • A search that fails is tried once more, a few seconds later and fewer at a time, since a busy moment at the provider fails searches in bursts. A spot that fails again is shown as not checked, never as a rank, and the counts leave it out ("at 2 of the 47 spots we could check"). When no spot can be checked, the report says Google Maps couldn't be checked this time.

The headline counts the spots that put the business in the map's first three, the part most people see without scrolling. Spots sit on a lattice that every nearby business shares, so scans reuse each other's results: from the past week for a free report, the past two days for weekly tracking. Simulated rankings appear only beside simulated answers.

When a Mapbox token is set, the spots are drawn over a street map (Mapbox Streets), with the business and the competitors most often in the first three pinned where Google Maps lists them (a chain at the location it's listed at most often). The map is for finding your way; the rankings are the same with or without it.

11. Google rankings for tracked searches

Share of Answer asks the questions customers ask; Google rankings follow the exact searches a business chooses, the way rank trackers do, and on Google alone:

  • A business on Essentials tracks up to 25 searches, as people type them ("water heater repair oak park"). It starts with what customers call it, with and without its town, and its main services; Search Console's searches that aren't for the business by name are offered as more.
  • Once a week each search runs on Google from a phone near the business: at its pin on Google Maps when it was found there in the last 30 days, else its confirmed address, else its town. Virtucano reads the first 20 results (two pages), through licensed SERP data.
  • Each page gives three readings. Google is where the business's own website first appears among the organic results, matched by its domain; a directory's page about it doesn't count. Map pack is its place among the map listings on the page, matched by name, phone or website, or "not in it". AI Overview is whether Google's AI Overview on that page cites the website, names the business, leaves it out, or wasn't shown.
  • A search that doesn't come back within 12 hours is shown as not checked that week, never as a rank. Changes compare a search with its own previous check.

One page is one observation: rankings move a little between searches and phones, so a change of a place or two is noise. The weekly briefing reports a search only when it climbs at least two places into the first ten, or slips three or more.

12. Where AI looks, and the business is missing

The free report lists the pages AI answers cite when they recommend a business's competitors and leave it out. It counts the answers from assistants and Google's AI answers to the questions that don't name the business; search results and the local pack list pages beside businesses rather than picking from them, so they aren't counted.

  • Which pages. Pages where a business can be listed, reviewed or written up: directories, review sites, news, forums and videos, plus pages on other sites whose title ranks businesses ("The 10 Best Plumbers in Oak Park"). A business's own site, and a page about a single business (a competitor's Yelp page or profile), aren't a list anyone else can get onto, so they're left out. Pages are told apart by their address, without tracking parameters, so two lists on one site are two pages.
  • The counts. For each page, the answers that cited it and named a competitor but not the business, and the answers that cited it and named the business. Pages are ranked by the first count. Gemini's links name only the site, not the page, so the report says how many of its answers couldn't be counted rather than guess which page they were.
  • The check. Virtucano reads the top five pages once, at the same time, identifying itself as a bot, and looks for the business's name the way it does in answers. "Not on it" needs proof the page's list was readable: the page names a competitor the answers named. A page that turns the visit away, shows a bot check, doesn't load, or loads without any of those businesses is "couldn't check", never "not on it".
  • The next step depends on the kind of page: claim or create the listing on a directory or review site; for news and "best of" lists, a short note to the editor; for forums and videos, nothing. On Essentials, Virtucano drafts each note from the business's own facts (its name, kind, town, website and approved phone number), for the owner to copy and send. Virtucano sends nothing and writes no forum posts.
  • Every week, on Essentials, the check runs again on that week's answers. The business's page shows the newest check, weekly or from its report. The briefing mentions a page only when it's new among them and isn't known to name the business, or when it starts or stops naming it. A page that couldn't be checked, this week or the last, isn't news either way, since sites turn checks away some weeks and not others.

13. Known limitations

  • API answers are not app answers. Consumer apps add memory, personalization and location signals that APIs don't. Calibration against first-party referral data narrows, but doesn't eliminate, this gap.
  • Prompt sets are a model of demand. No assistant publishes prompt volumes. The weights are estimates, improved by each business's own data.
  • Rule-based extraction misses things. It favors precision: some claims go unextracted rather than misread. Model-based extraction is available and logged.
  • Sentiment is not scored yet. A mention counts as named whether it is a recommendation or a warning; the answers are kept so this can be added.
  • Small samples are wide. A free report with one sample per question gives honest but wide ranges. Weekly measurement narrows them over time.
  • Map rankings depend on zoom and device. Every spot is searched the same way, so rankings compare from spot to spot and week to week, but a given phone can see a slightly different order.
  • Google rankings are one phone, one place. Tracked searches run from one spot on a mobile device; someone across town, or logged in, can see another order.

14. Changes to this method

This document is versioned with the code. Changes are recorded in the repository history, and every stored measurement keeps the inputs needed to recompute it under a newer method.