Skip to main content
CitationDesk

Guide · 10 min read

What the Citation Readiness Score actually measures.

The Citation Readiness Score is a 0-100 measurement built from six dimensions and 43 signals, all read from your page's served HTML, robots.txt and llms.txt. Here's every input explained in plain English, plus the two dimensions that can hard-block a page no matter how strong the others are.

Overview of the six dimensions

The Citation Readiness Score is built from six dimensions, each scored 0.0 – 1.0 from your page's served HTML and robots.txt / llms.txt. They roll up into three pillars: AI Visibility — the geometric mean of GEO Readiness, Dual Fit, Entity Coherence, and Bot-Crawl Health, and the number that drives the pass/fail verdict — Search Foundation (SEO Foundation alone), and Convert (Conversion Readiness alone). We use a geometric mean inside the AI pillar because one weak dimension pulls the whole pillar down — you can't paper over a structural failure in Dual Fit or Bot-Crawl Health by stacking points elsewhere.

Two of the six dimensions can hard-block: Dual Fit when all four of its checks fail, and Bot-Crawl Health when robots.txt blocks AI retrieval bots site-wide, the page has fewer than 50 words of body text in its HTML, or the PerplexityBot fetch gets HTTP 403. The verdict then becomes HARD-BLOCK; the pillar scores and blended number are still shown. The other four dimensions (SEO Foundation, GEO Readiness, Entity Coherence, Conversion Readiness) can score zero without hard-blocking — they reduce their pillar's score but don't flip the verdict to HARD-BLOCK.

SEO Foundation — 13 signals

SEO Foundation captures conventional on-page search signals:

  • Stable URL slug — no /p/12345 numeric-only paths
  • <title> between 30 and 70 characters
  • <meta description> of at least 80 characters
  • Exactly one <h1>
  • At least two H2 headings
  • ≥3 internal links
  • Schema.org WebPage or Article JSON-LD
  • OpenGraph + Twitter Card meta tags
  • Canonical URL declared
  • Viewport meta tag
  • lang attribute on <html>
  • A Sitemap: line in robots.txt
  • No more than two render-blocking <script src> tags in <head>

The score is (items passing) / 13 rounded to 0.1.

GEO Readiness — 10 signals (the 10 characteristics)

See our dedicated guide on the 10-characteristic checklist. The score is (items passing) / 10 rounded to 0.1.

Dual Fit — 4 signals (HARD-BLOCK if all fail)

Dual Fit asks whether one page serves a keyword searcher and an answer engine at the same time. We check four heuristics:

  • Title is not blank or a generic word ("Home", "Index", "Untitled", "Welcome")
  • First paragraph contains a fact-shaped phrase (a percentage, a four-digit number, "is a", "defined as", "means", "according to")
  • First paragraph under 600 characters
  • At least one H2 that ends in a question mark

If ALL four fail, Dual Fit = 0.0 and the verdict becomes HARD-BLOCK. The fix is a structural rewrite, not optimization.

Entity Coherence — 5 signals

Five things we check about whether the page identifies who is behind it:

  • Organization JSON-LD
  • Person JSON-LD for the operator/author
  • sameAs count ≥2 across the page's JSON-LD
  • A link to /about
  • Consistent brand name — checked as Organization JSON-LD being present

Bot-Crawl Health — 5 signals (can HARD-BLOCK)

Citation is impossible if AI retrieval bots can't fetch your page. This is the upstream gate. We check:

  • robots.txt has no site-wide Disallow: / for an AI retrieval bot (OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot, Claude-User) or for User-agent: *
  • robots.txt has no site-wide Disallow: / for an AI training bot (GPTBot, ClaudeBot, CCBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent, Bytespider)
  • A non-empty /llms.txt at site root
  • Body content ≥200 words in the served HTML (the crawler does not run JavaScript)
  • A request to your page with a PerplexityBot user-agent returns HTTP 200–399

Hard-block conditions: robots.txt blocks AI retrieval bots site-wide, the served body is <50 words (suggesting JS-gated content), or the PerplexityBot fetch gets HTTP 403. Blocking only training bots costs one signal, not a hard-block.

Conversion Readiness — 6 signals

Being cited is the wedge, not the whole job. A citation that sends someone to a page with no next step earns nothing. We check six things:

  • Primary CTA present (a link to contact, pricing, signup, or subscribe — or a form)
  • Lead-capture form or email input
  • Pricing / offer link (pricing, plans, buy, checkout, demo)
  • Social proof (testimonials, reviews, "trusted by")
  • Clear value proposition — exactly one <h1>, plus a first H2 or opening paragraph of 200 characters or fewer
  • Trust surface (a link to about, contact, privacy, or terms)

Conversion Readiness never hard-blocks — a page can be a poor converter and still be perfectly citable. It just caps the Convert pillar, which is a quarter of the composite Visibility Score.

How do we aggregate to the three pillars?

Each of the six dimensions scores 0.0 – 1.0. We combine them into three pillars, then into one composite:

ai      = geometric_mean(geoReadiness, dualFit, entityCoherence, botCrawlHealth) × 100
search  = seoFoundation × 100
convert = conversionReadiness × 100

visibilityScore = round(0.5 × ai + 0.25 × search + 0.25 × convert)

The AI pillar alone — not the composite — is what drives the PASS / WEAK verdict, because AI citation readiness is the thing this tool exists to measure. Search and Convert give equal-weighted context around it in the Visibility Score you see on the report. Geometric mean inside the AI pillar is multiplicative — a dimension at 0.0 is treated as 0.001, so one zero pulls that pillar near zero. That's by design: a structural failure should not be masked by an average. Hard-block conditions set the verdict separately.

Try it on your own URL: Free Citation Readiness Score.

Score your own site against this guide.

The free Citation Readiness Score runs every signal from this guide against any URL. ~90 seconds, no signup.

Or skip pasting a URL — email me a free sample AI-visibility report instead.