How the score is measured
Engine version 2026-08-26.1 · Measured from real AI answers. Never simulated.
What we measure
An audit asks AI engines the questions a real customer would ask when looking for a business like yours, then records who each engine recommends. Every answer in a report is a real, stored engine response. We never fabricate, simulate, or paraphrase an answer.
Each probe is labeled with exactly what it is: OpenAI · web search (the OpenAI API with its web search tool enabled), Gemini · Google Search grounding (the Gemini API with Google Search grounding enabled), and Claude · web search (the Anthropic Messages API with its native web search tool enabled, on the Sonnet model).
We name the API and the grounding method. We never claim a probe is the consumer app itself. Consumer apps layer personalization and memory on top of these APIs; the APIs are the closest measurable, reproducible proxy.
in Temescal”
× intent weight
An LLM classifies answers. Code computes every number.
The query matrix
Every audit runs a fixed matrix of query templates, filled in deterministically from the business profile: category, neighborhood, city. One example, for a pizza restaurant in Temescal:
“best pizza restaurant in Temescal”
The same profile always produces the same queries, so two businesses in the same category are measured with structurally identical questions and their scores are comparable.
We publish the structure and the weights, but not the verbatim query strings. If the exact probes were public, a score could be gamed by optimizing for those literal sentences instead of for genuine visibility, and the measurement would stop meaning anything. Search engines publish ranking principles, not their crawlers’ probes, for the same reason.
straight category-in-place intent
proximity-anchored intent
moment or situation intent
quality- or value-qualified intent
Identical questions for every business in a category. Specialized verticals swap in their own matrix.
The score
For each engine, every query contributes to a 0 to 100 score:
score = Σ( rank_weight × (1 + sentiment) / 2 × intent_weight ) / Σ intent_weight × 100
Rank weight: position 1 counts 1.0, position 2 counts 0.7, position 3 counts 0.5, positions 4 and 5 count 0.3, and anything deeper counts 0.15. Not mentioned counts 0. Sentiment: how the answer characterizes the business, from −1 to +1, rescaled so a neutral mention still earns half credit. Intent weight: the query’s family weight from the matrix. Queries where the business was not mentioned stay in the denominator, so absence costs points.
The headline score is the simple mean of the per-engine scores, over the engines that actually completed. An engine that failed to run is excluded, never averaged in as a zero. Grades map directly from the blended score.
Simple mean across completed engines. A failed engine is excluded, never a zero.
What the AI does, and what it does not
A language model reads each stored engine answer and classifies three things: whether an entity is present, at what rank, and with what sentiment. It also writes the plain-language prose in the report. Everything numeric comes from code: the query matrix, the intent weights, the score, the grade mapping, and the gap detection triggers are deterministic arithmetic over stored values. Run the same stored answers through the pipeline twice and you get the same score twice.
The noise floor
AI engine answers vary between runs even when nothing about a business changes. Before treating any score movement as signal, we measured that variation directly: repeated audits with an identical configuration, across multiple days.
We treat a change of fewer than 10 points on the blended score as noise, not news. That threshold is two audit-to-audit standard deviations, rounded up. It is measured, not chosen.
This is why a report will never alarm you over a 4-point dip. If we tell you your visibility dropped, the movement cleared a bar that random variation does not clear.
Dashed line = alert threshold. Movement under 10 points is noise, not news.
Snapshots and versioning
An audit is an immutable snapshot. The engine answers, mentions, scores, and gaps are stored once, and a report URL renders from those stored values forever. Nothing is re-generated when someone opens the report later.
Every audit is stamped with the engine version at the top of this page. When the instrument changes materially (probe models, answer extraction, the analyzer, or the scoring math), the version is bumped, and audits from different versions are never compared for alerts. A cross-version difference is a change in the instrument, not in your visibility.
Questions about the method? Contact us. Or grade your business.