measurement

What GEOBee measures, and what it deliberately doesn't

What GEOBee's three lenses score, why the results are local and re-runnable, and what it does not measure: citations, prompt visibility, or rankings.

GEOBee is a desktop crawler. It fetches the pages of a site, scores each URL through three lenses (SEO, AEO, and GEO), and lists what to fix on each page. That is the whole job. It does not tell you whether an assistant cited you, how often your brand appears in answers, or where you’ll rank next month.

We say that up front because the category we sell into is full of products that imply the opposite, and because the boundary is the reason the scores are worth anything. This post covers what GEOBee measures, the properties of that measurement we think matter, and the things it can’t see, stated plainly.

What the three lenses measure

Each lens is a weighted set of signals that sums to 100. A page’s lens score is the share of that weight it earned. The three scores stay separate and are never blended into one number. Every signal and weight is published in the three lenses, so what follows is a summary, not a secret.

AEO, or answer readiness, asks whether an assistant could read the page and lift a clean, correct answer from it. It has eight signals. The answer block carries the most weight (20): a concise, direct answer near the top. Headings, FAQ or Q&A structure, and extractability carry 15 each, where extractability means enough real text compared with HTML noise. Answer-relevant schema, lists and tables, and title and meta length carry 10 each. Sentence conciseness carries 5.

GEO, or generative visibility, asks whether the page looks like a source a generative engine would retrieve and reproduce. Citability carries 25: statistics, outbound citations, and quotable blocks. Author signals, freshness, and entity clarity carry 15 each. Trust, depth, and AI bot access carry 10 each. The bot access check reads robots.txt for the crawlers that feed today’s assistants (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, and others) and flags any that are blocked.

SEO is the classic technical layer: HTTPS, title, H1, meta description, canonical, alt text, and the rest, weighted so it sits alongside the other two lenses.

Alongside the scores, GEOBee reads each page’s JSON-LD, reports the type it finds, and checks required fields. Missing or broken schema reads as None, Invalid, or Partial. Every lens score lands in a band: 80–100 passes, 60–79 is a warning, below 60 is critical. The Overview & grid explains how those bands show up across a crawl.

The weights are ours, and they’re a model. They say how much of a page’s readiness we think each signal accounts for. They don’t say how much any engine’s output depends on that signal, because no engine publishes that. We publish the weights so they can be checked and argued with.

Three properties we designed for

Deterministic. The scores are computed from what the page returns: its HTML, its headers, its robots.txt, its structured data. Crawl an unchanged page under the same settings and you get the same score. Nothing in the three lenses is sampled, estimated from a panel, or inferred from a model’s opinion of the page. Lighthouse category scores in a deep scan are the one exception, and they sit outside the three lenses. They come from rendering the page, and Lighthouse’s own documentation says its results vary between runs with network and machine conditions. We report them as Lighthouse reports them and keep them out of the lens scores.

The determinism also refuses to cover for failures. A redirect, an error, or a non-HTML response shows as “not scored” instead of a failing zero, so a 404 can’t pull an average down and pass for a content problem.

Re-runnable. Every crawl is saved into a project for its domain. Re-crawl after a fix, choose a baseline and a current snapshot, and compare them. You get the change in each lens and in the Critical count across the crawl, plus a per-page diff that marks each URL as improved, regressed, unchanged, added, or removed. Because the measurement is deterministic, a delta means the page changed, not that the sample did. GEOBee warns you when a pair isn’t comparable, such as two different sites, or a quick scan against a deep scan.

One caution from our side: the Scoring Rules tab lets you change several SEO thresholds, such as title length and the thin-content floor. Changes apply to the next crawl. If you move a threshold between baseline and current, part of the delta comes from your rule change, not the site.

Local. GEOBee runs on your machine, and crawl history is stored there. The sites you audit aren’t uploaded to us or anyone else. The built-in MCP server, which lets an agent start crawls and read results, listens on 127.0.0.1 and can only be reached from the same computer. For anyone auditing client sites, that’s a practical difference, not a slogan.

What it doesn’t measure

This is the section that matters most.

It doesn’t measure citations. GEOBee never asks an assistant anything. It can’t tell you whether ChatGPT, Perplexity, or an AI Overview quoted your page today, last week, or ever.

It doesn’t measure prompt visibility. We don’t run prompt panels, track share of voice across assistants, or estimate how often your brand appears in generated answers. Tracking those outputs is a different method, and the tools that do it work on a different layer from the one we score.

It doesn’t predict rankings. None of the lens signals is a ranking factor for any engine, and a high score is not a forecast. A page can score 95 on AEO and rank nowhere. A page can score 40 and get cited every day because of who published it.

It can’t see what an assistant answered. Citation depends on things that don’t live on your page: the exact question asked, the competing sources, the engine’s retrieval and its own judgment of authority, and when the question was asked. None of that is visible from a crawl, and pretending otherwise would mean inventing it.

There are narrower limits too, and they’re stated in our own docs. The AI bot access signal reads robots.txt. It doesn’t test whether a CDN or firewall turns away a bot that robots.txt allows. GEOBee fetches pages with its own user-agent, so it sees what that user-agent is served. If your edge treats named AI crawlers differently, you need the separate checks in How to check whether AI crawlers can actually reach you. A quick scan scores the HTML the server returns and doesn’t run scripts. A deep scan renders pages and finds links that appear only after JavaScript runs.

Why saying so is the point

We could make the scores sound bigger. “Raise your GEO score and get cited” would be a stronger line, and some readers would believe it for a while. We don’t write it, here or anywhere else, because it isn’t true, and because a measurement that overclaims stops being useful the first time someone checks it.

Readiness and citation are two halves of the same problem with very different properties. Citation is probabilistic and depends on many factors, most of which you can’t influence from your own HTML. Readiness is a set of facts about your page. Is the answer in the first sentence under the heading that asks for it? Does the JSON-LD parse? Is GPTBot allowed through robots.txt? You can check each one, change it, and check it again. SEO, AEO, and GEO: what actually changed explains why those are different questions from ranking.

A tool that measures the second half honestly is useful precisely because it doesn’t blur into the first. When a GEOBee score moves, you know why: a specific signal on a specific URL changed, and the finding says which one. When a page clears its Criticals, you can say it’s now readable where it wasn’t, and show the before-and-after. You can’t say it’ll now be cited, and neither can we.

So we suggest pairing GEOBee with whatever you use for the other half, not treating it as a substitute. Measure outputs directly: a manual log of the questions that matter to you, run on a schedule, Search Console’s generative AI performance reports, and assistant referrals in your analytics. Use the crawl to make sure that when those outputs come up short, the cause isn’t something on your own page.

What that looks like in practice

A GEOBee result is a sentence of this shape, with your own counts in it: “Across N crawled URLs, this many have no direct answer under their H1, this many block one or more AI crawlers in robots.txt, and this many carry JSON-LD that fails to parse. After the fixes, the re-crawl shows these counts.” Anyone who runs the same crawl can reproduce every number in it.

A result we’ll never give you is “your AI visibility went up.” We don’t measure that, and we’d rather tell you so than produce a number that sounds like it.

GEOBee is $99 for a year, with longer terms on the pricing page and a 7-day trial with every feature unlocked.

On this page