Methodology — how the numbers are built

The full picture of weights, freshness, noise filtering, and the trade-offs we accepted along the way.

8 min read

This page is the long-form reference for the choices behind every number on the dashboard. The shorter, feature-specific articles link back here when you want to see the reasoning underneath the headline.

Engine weights

GEO Score is a weighted average across the engines on your plan — up to five (Perplexity, ChatGPT, Google AI Mode, Gemini, and Google AI Overview), depending on your tier (see AI engines for the per-plan ladder). Each engine is weighted by how much it drives AI-led buyer discovery today:

0.35

ChatGPT

60% AI-search share, dominant chat audience

0.25

Google AI Mode

1.5B users / month — biggest reach

0.15

Gemini

Google's flagship model

0.15

Perplexity

Citation-rich, technical-buyer trust

0.10

Google AI Overview

The panel above classic results

The weighting is renormalised across whichever engines actually returned a result, so a plan with more engines isn't penalised.

Sources used for the Q2 2026 calibration (dated external evidence; re-verify before the next weight change):

We re-evaluate weights quarterly. The current calibration replaced a 2025 default that overweighted ChatGPT (0.55) before Google AI Mode's public roll-out matured.

The visibility baseline (0.4)

The GEO Score formula multiplies Mention Rate by:

BASELINE + (1 − BASELINE) × avgQuality

with BASELINE = 0.4. Why 0.4 and not 0 or 1?

  • 0 would mean a "pure quality" score — being cited at quality 0.40 would count for ~16% of being cited at 1.00, which feels punitive given that "you're in the answer at all" is the hard part.
  • 1 would mean visibility alone is the whole signal — quality framing wouldn't move the score, which we know matters for buyer signal (a top-list citation is genuinely more valuable than being option 7 of 12).
  • 0.4 lands the score where being cited with no qualitative lift is worth 40% of the credit available, and a strong recommendation takes you the rest of the way. The 0.4 baseline still leaves 60% of the score driven by quality — quality matters, but isn't a binary gate.

Confidence weighting — not every prompt counts the same

Before a scan result enters either average, it is weighted by how much we trust the prompt that produced it. A prompt we have verified as a genuine fit for your product carries its full weight; one still "worth tracking" carries 0.7; one we have judged off-target carries 0.3. A prompt we have not classified yet is neutral at 1.0, so a new account is never penalised for questions the Confidence Coach has not reached.

This is why deleting a bad prompt and re-scoring can move the number more than the raw mention counts suggest: an off-target prompt was already contributing at 0.3 of a normal one.

AI citation quality buckets

We classify each AI citation into one of four buckets and assign a quality score (0–1):

BucketQualityRule of thumb
not_mentioned0.00Brand absent.
mentioned0.40Named in passing or as part of a list.
recommended0.70Singled out positively.
top_recommended1.00Top-of-list, dedicated section.

A small classifier handles ambiguous cases. Most AI citations resolve deterministically from sentence patterns (X is the best, X | Static sites & Jamstack, listicle position). The bucket names above (not_mentioned, mentioned, …) are the internal type values stored in the database — the user-facing label is "AI citation" with the quality tier shown alongside.

Noise filtering

Auto-discovery for Competitor tracking applies four filters before persisting a hostname:

  1. Self-citation drop — your own domain.
  2. Generic blocklist — publishing, aggregator, and infrastructure hosts (Wikipedia, Reddit, GitHub, Medium, news outlets, generic agency listicle sites).
  3. Subdomain prefix filterblog., docs., news., learn., partners., community., developer., tutorials., articles., guide(s)., support., help., resources., forum(s)., press..
  4. TLD whitelist — pseudo-domains the regex parser sometimes picks up (next.js, node.js) are dropped.

The full blocklist is reviewed every release. If a real competitor is caught by accident, you can add it back manually via the Add competitor dialog.

Data freshness

MetricRefresh cadence
GEO Score (Overview and Visibility)Weekly per monitored prompt — the pulse cron wakes daily at 08:00 UTC and runs whatever is due. Hero Prompts refresh daily.
Mention RateSame scan cadence as GEO Score; the denominator is scanned prompts, not competitor appearances.
Competitive Share of Voice30-day rolling response-level appearances among the validated product-brand cohort.
Content & Technical readinessWeekly — content audit Monday 07:00 UTC, crawlability Sunday 03:00 UTC, plus on-demand re-run.
Content audit per-page rowsSame as Page health.
Competitor share of voice30-day rolling window, recomputed at every dashboard load (no nightly job).
"Where you lose"30-day rolling window, recomputed on load.
Citation excerpt searchReal-time over 90-day window — no cache.
Trend chartsSnapshot per scan; weekly deep scan adds a stable point.

A weekly pulse scan measures each due prompt several times and averages the reps; Hero Prompts are pinned to daily so genuinely fast movers are still caught between weekly runs. Manual scans always count toward the score and refresh dashboard numbers immediately.

Honest limitations

Where the numbers live

Everything described here is computed from rows in your Supabase project, scoped to your user via row-level security. We never share data across tenants. No third party sees your raw answer text.

If you want to read the actual sentences behind any signal, the Citation excerpt search is the entry point.

The visibility stack, top to bottom

The dashboard layers are deliberately ordered from "can AI find you at all" up to "how is AI talking about you":

  1. Discovery (gate). Can the AI bot fetch your site? Covered by How AI bots discover your site and the AI Crawlability Monitor — if robots.txt or X-Robots-Tag: noindex blocks the bot, every layer above is blind.
  2. Page health (structural). What can the bot make sense of once it fetches? Covered by Content audit — schema, headings, citations, freshness.
  3. AI citation quality (semantic). When the AI does cite you, what is it saying? Covered by AI citation vs. source URL and the GEO Score calculation.
  4. Competitive context (relative). Who is AI citing instead of you? Covered by Competitor tracking.

A "0 AI citations" result on the GEO Score is most often a layer-1 problem, not a layer-3 problem. Always check Crawlability first.

Free GEO Snapshot

The Free GEO Snapshot measures the same three confirmed buyer questions once in ChatGPT Search and once in Perplexity, in one server-locked market and language. Its report discloses the prompts, engines, time and successful-answer denominator, and keeps the complete returned answer available as raw evidence. A mention is not a recommendation, an owned-domain citation is not referral traffic, and observed competitors are outputs rather than prompt inputs. We do not present category rank or market share from this small sample. Read the Free GEO Snapshot guide for the customer workflow and report anatomy.