How CiteFuel Scores AI Visibility — Full Methodology

Why we publish this: the GEO/AEO space has a snake-oil problem. Tools publish opaque "AI scores" with no explanation of inputs, weights, or validation. We publish ours because (a) transparency builds trust, (b) you should understand what you're optimizing for, and (c) if our weights are wrong, we want to hear about it. Email hello@citefuel.com with disagreements.

Every audit runs the same 23 checks worth a combined 111 points. Your 0-100 score is the share of available points you earn: score = earned ÷ available × 100. A partial result earns half the check's weight. A skipped check (e.g. AI answer sampling temporarily unavailable) is excluded from the denominator — you are never penalized for checks we couldn't run.

Category 1 — AI Crawler Access · 6 checks · 28 pts (25.2%)

The access layer: can AI systems physically read your content? No content-quality improvement matters if the crawler is blocked. Failing checks here are P0 severity — they make you invisible to that AI system regardless of how good your content is.

01
GPTBot access (robots.txt) ai_robots_gpt
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention (neutral, noted)
5 pts
02
ClaudeBot access (robots.txt) ai_robots_claude
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
5 pts
03
Google-Extended access (robots.txt) ai_robots_gemini
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
5 pts
04
PerplexityBot access (robots.txt) ai_robots_perplexity
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
4 pts
05
Meta external agent access (robots.txt) ai_robots_meta
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
3 pts
06
WAF / bot-manager AI-agent blocking waf_block_heuristic
Homepage fetched with 5 AI-crawler user-agents. fail = 3+ blocked (403/429/challenge); partial = 1-2 blocked; pass = none blocked
6 pts

Category 2 — llms.txt Presence & Quality · 2 checks · 13 pts (11.7%)

llms.txt is the AI-native site index. We check that it exists, parses, has the required structure (H1 + description + page entries), and that every URL it lists actually exists in your sitemap — a malformed llms.txt can be worse than none.

07
llms.txt present at root llms_txt_present
pass = 200 with plain-text body; fail = 404/error; partial = exists but >50KB or non-text
7 pts
08
llms.txt quality & sitemap consistency llms_txt_quality
pass = ≥80% of listed URLs are in the sitemap AND has H1 + description structure; partial = 50-79%; fail = <50% or unparseable
6 pts

Category 3 — Schema Markup AI-Readiness · 3 checks · 15 pts (13.5%)

AI systems parse JSON-LD to extract authoritative entities, definitions, and factual claims. We check presence, Organization + WebSite coverage, and sanity: domain-locked @id values, a valid schema.org @context, and no injection vectors.

09
JSON-LD structured data present jsonld_present
pass = ≥1 valid application/ld+json block on homepage; partial = present but malformed JSON; fail = none
6 pts
10
Organization + WebSite schema coverage jsonld_coverage
pass = both Organization and WebSite types found; partial = only one; fail = neither
5 pts
11
Schema sanity (domain-locked @id, valid @context) jsonld_sanity
pass = @id contains the domain, valid @context URL, no script-injection strings; fail = any violation
4 pts

Category 4 — Passage Citability & Entity · 2 checks · 13 pts (11.7%)

Passage-level citability is scored by an LLM against the criteria AI retrieval systems reward: answer-first structure, entity naming over pronouns, standalone coherence, 40-150-word length. Entity footprint estimates how distinct your brand is as a knowledge-graph entity.

12
Passage-level citability (LLM-scored) citability_passage
Top 3 extracted homepage passages scored 0-10 for standalone citability by an LLM. pass = avg ≥7; partial = 5-6.9; fail = <5
8 pts
13
Entity footprint signals entity_footprint
LLM evaluates distinct entity signals (knowledge-base presence, structured directory references, notable mentions). pass = 3+; partial = 1-2; fail = 0
5 pts

Category 5 — Technical Foundation · 8 checks · 28 pts (25.2%)

The classical technical foundation that AI retrieval inherits from search: canonical correctness, Core Web Vitals (field data via PageSpeed Insights), HTTPS integrity, sitemap discoverability, Open Graph completeness, and mobile viewport.

14
Canonical tag self-reference canonical_tag
pass = canonical present and self-references the homepage; fail = missing or points elsewhere
4 pts
15
Core Web Vitals — LCP cwv_lcp
pass = LCP <2.5s; partial = 2.5-4s; fail = >4s (PageSpeed Insights, field data preferred, lab fallback)
5 pts
16
Core Web Vitals — CLS cwv_cls
pass = CLS <0.1; partial = 0.1-0.25; fail = >0.25
3 pts
17
Core Web Vitals — INP cwv_inp
pass = INP <200ms; partial = 200-500ms; fail = >500ms
3 pts
18
HTTPS / TLS integrity https_tls
pass = valid certificate and no mixed content on homepage; fail = certificate error or http-only homepage
4 pts
19
XML sitemap discoverable sitemap_present
pass = sitemap returns 200 XML (at /sitemap.xml or via robots.txt Sitemap: directive); partial = malformed XML; fail = none found
4 pts
20
Open Graph completeness og_tags
pass = og:title + og:description + og:image all present; partial = 1-2 present; fail = none
3 pts
21
Mobile viewport meta viewport_meta
pass = width=device-width viewport meta present; fail = absent
2 pts

Category 6 — Live AI Answer Presence · 2 checks · 14 pts (12.6%)

The outcome layer: we sample live AI answer engines and check whether your brand is actually surfaced and accurate. When sampling is unavailable, these checks are marked "skipped" and excluded from your score denominator — you are never penalized for checks we could not run.

22
AI answer presence — Google AI Overviews ai_brand_sample_chatgpt
Headless sample: is the brand/domain surfaced when an AI answer engine is asked about it? pass = present and accurate; partial = present but inaccurate; fail = absent. skip = sampling unavailable (excluded from denominator)
7 pts
23
AI answer presence — Perplexity ai_brand_sample_perplexity
Same sampling logic against Perplexity. skip = sampling unavailable (excluded from denominator)
7 pts

Grades & scoring tiers

ScoreGradeWhat it means
90-100SExceptional — full AI citation eligibility. Maintain with monthly re-audit.
75-89AStrong AI citation eligibility. Small refinements available.
60-74BMeaningful gaps. P1 fixes recommended within 30 days.
45-59CSignificant gaps. Multiple issues limiting citation.
0-44DP0 blocks likely present. AI citation unlikely regardless of content quality.

Severity tiers

Every failing check is assigned a severity: P0 means an AI system cannot cite you at all (configuration-level invisibility), P1 means a weak or missing signal that materially reduces citation probability, and P2 is a quality refinement. Free reports show your full severity-tiered gap list; paid audits deliver the fix files.

Changelog

  • v1.0 (2026-06-11) — initial 23-check framework. We update when major AI crawlers document behavior changes; weight changes are recorded here.