Methodology — how the numbers are built

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

5 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 three engines we track:

0.45

ChatGPT

60% AI-search share, dominant chat audience

0.30

Google AI Mode

1.5B users / month — biggest reach

0.25

Perplexity

Citation-rich, technical-buyer trust

Sources for the calibration (Q2 2026):

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 mentioned at quality 0.40 would count for ~16% of being mentioned at 0.90, 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 mention is genuinely more valuable than being option 7 of 12).
  • 0.4 lands the score where being mentioned with no qualitative lift is worth 40% of the credit available, and a strong recommendation takes you the rest of the way. Three engines × 0.4 baseline still leaves 60% of the score driven by quality — quality matters, but isn't a binary gate.

Mention quality buckets

We classify each mention 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_recommended0.90Top-of-list, dedicated section.

A small classifier handles ambiguous cases. Most mentions resolve deterministically from sentence patterns (X is the best, X | Static sites & Jamstack, listicle position).

Noise filtering

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

  1. Self-citation drop — your own domain.
  2. Generic blocklist — about 80 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 hero)Daily on Pro/Business — pulse cron at 04:00 UTC.
Mention RateSame as GEO Score.
Discovery Readiness (Page health)Weekly — Monday 04: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 daily pulse scan touches a sub-set of monitored questions to detect fast movers 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. Mention quality (semantic). When the AI does cite you, what is it saying? Covered by Mention vs. citation and the GEO Score calculation.
  4. Competitive context (relative). Who is AI citing instead of you? Covered by Competitor tracking.

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