How CiteFuel Scores AI Visibility — Full Methodology

By Hunter Spence, founder — last updated July 12, 2026

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 support@citefuel.com with disagreements. Product scoring changes are recorded on this page. Separate, dataset-based publications live in CiteFuel Research and follow our editorial policy and corrections process.

Score 2.0 (current engine): your published GEO score is a blend of two layers — Readiness (R), the deterministic on-site check table below (26 checks worth 129 points, R = earned ÷ available × 100, same partial/skip rules as before), and Visibility (V), a live-sampled presence rate: we generate a disclosed synthetic prompt set about your category, sample an AI-answer engine across N runs, and report the share that produced a positive brand-presence reading — as a rate with a 90% bootstrap confidence interval. A text adapter generally counts a brand appearance; a supported source/reference match may also count. This is not a uniform recommendation or citation rate. Individual outputs vary, so repeated fixed-prompt sampling and an interval quantify, but do not remove, uncertainty. Your published score is a confidence-weighted blend of R and V — nominally 0.65×R + 0.35×V, but V's actual weight scales with how many samples it's based on (see "Confidence-weighted blend" below for the full formula and why). If Visibility wasn't sampled this run (rate-limited, errored, or genuinely not yet run), the score is R alone, and the report says so explicitly — never a guessed or assumed V.

Google-specific boundary: Google says its AI features use the same foundational Search requirements, require normal indexing and snippet eligibility, need no special AI schema, and ignore llms.txt. See Google's AI features guidance and generative AI optimization guide. CiteFuel's checks and scores are internal measurements, not Google ranking signals.

Hard gates: two implemented failures are severe enough that no amount of Readiness or Visibility credit offsets them: the HTTPS/TLS check fails, or an AI assistant asked cold about the brand states a claim that clearly contradicts the site's own evidence. Either condition caps the published score at 39 (grade D), regardless of what R and V would otherwise blend to. The WAF row is a CiteFuel-origin user-agent response comparison, not verified crawler-network evidence; it remains coverage-critical and can lower Readiness, but it is not a 39/D hard-cap condition.

The 6-engine visibility matrix

Visibility (V) attempts up to 6 AI-answer engines. Authentication, billing, rate limits, and provider health can change which lanes complete — this configuration snapshot is not a promise of readings:

EngineStatus
ChatGPT Configured lane — only completed readings count
Claude (web search) Configured lane — authentication/provider failures remain unavailable
Gemini Configured lane — only completed readings count
Perplexity Configured lane — only completed readings count
Grok Configured lane — only completed readings count
Google AI Overviews Disabled by default pending verified DataForSEO billing health; disabled or unavailable lanes produce no evidence

A report's sample count only counts completed readings. An unavailable engine is neither a zero nor a pass; it is reported as unavailable and excluded from the measured denominator. The report's own engine, timestamp, locale, N, confidence interval, and provider status are authoritative for that run.

Confidence-weighted blend — why your V weight isn't always 35%

The nominal split is 65% Readiness / 35% Visibility, but Visibility's actual weight in your headline scales with how many samples it's based on — a single unlucky or lucky sampled answer can swing a pooled presence rate by a large amount. Repeated answers can vary even for a fixed prompt, so a 10-sample free-tier read shouldn't count for as much as a robust 48-sample paid-tier read.

confidence = min(1, n_runs ÷ 20)N ≥ 20 is the full-confidence weighting threshold, where Visibility reaches its full nominal 35% weight. Below that, V's effective weight is 0.35 × confidence and R picks up the difference, so the two always sum to 100%. At 0 samples this degenerates to R alone (100% Readiness, 0% Visibility) — the same behavior as before Visibility sampling existed at all. At 20+ samples it's byte-identical to the nominal 65/35 split.

Visibility here means positive brand-presence readings, not a uniform citation or recommendation rate. Confidence-weighting prevents a small sample from taking the full nominal 35% of the formula. For example, Readiness 100 and Visibility 0 at pooled N=10 yields 0.825 × 100 + 0.175 × 0 = 82.5. That low-N output is provisional: it is not evidence of a grade or certification and is not comparable with an N ≥ 20 full-confidence audit. Reports disclose the effective weight and N; the separate evidence gate also prevents low-N weighting from producing a new S/90+ certification.

Coverage and S/90+ certification gate

The displayed formula score is not enough to earn an S grade. New reports can publish 90+ only when the unrounded formula is at least 90.0 and all of these are true: at least four visibility engines produced readings; pooled N ≥ 20 (the full-confidence weighting threshold); at least 90% of Readiness check weight was actually measured; and no critical crawl/index/citation measurement was skipped. Visibility must also be fresh: a cached reading cannot earn a new S/90+ certification. A robust badge additionally requires N ≥ 40. If display rounding produces 90 while the raw formula is below 90.0, or if an evidence gate fails, the report shows the raw unrounded value, display-rounded value, and gate reasons, then caps the published score at 89/A. Missing evidence never becomes successful evidence.

Every report lists measured weight, skipped checks, healthy engines, attempted engines, unavailable provider reasons, pooled N, confidence interval, and the exact gate reasons. Cached results disclose the original Visibility measurement time and cache age. Authority coverage is reported separately in the SEO track; an OpenPageRank not_found response means authority is unknown, not zero and not passed.

Mention rank & cited-source rank

Alongside the presence rate, each engine's reading includes two rank signals computed from the same sampled answers (no extra API calls):

  • Mention rank — your brand's position among every brand name mentioned in the engine's answer, ordered by which name appears earliest in the text. Rank 1 means you were the first brand named; a higher number means competitors were named before you. No rank at all means your brand never came up in that answer.
  • Cited-source rank — your domain's position within the engine's own list of cited sources/references for that answer (when the engine surfaces one), same ordering convention. This is a different signal from mention rank: an engine can name your brand without ever citing your site as a source, or vice versa.

Your report shows the median of each rank across every sampled run for that engine — a single run's rank is noisy, so the median across N runs is less sensitive to one outlier. It still carries sampling uncertainty and should be compared across identically configured audits.

Every check below still keeps the same partial/skip rules as before: a partial result earns half the check's weight, and a skipped check (e.g. AI sampling temporarily unavailable, or a Wikipedia article that doesn't exist for your brand) is excluded from the denominator. Coverage and skips are disclosed separately so a smaller denominator is never mistaken for stronger evidence.

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

The access layer tests whether each named crawler or product token is allowed by robots.txt and whether a request using documented crawler identification receives usable content. A blocked retrieval crawler cannot fetch the tested URL directly, but that result alone does not prove a brand can never appear through other indexes or sources.

01
OAI-SearchBot access (robots.txt) ai_robots_gpt
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention (neutral, noted)
5 pts
02
Claude-SearchBot access (robots.txt) ai_robots_claude
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
5 pts
03
Googlebot access (robots.txt) ai_robots_gemini
pass = explicitly allowed for Search indexing; fail = explicitly disallowed; Google-Extended policy is informational and not scored
5 pts
04
PerplexityBot access (robots.txt) ai_robots_perplexity
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
4 pts
05
YouBot access (robots.txt) ai_robots_meta
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
3 pts
06
WAF requesting-agent response heuristic waf_block_heuristic
Runner-origin configuration probe with 7 retrieval/index or user-request agents. skip = fewer than 80% complete; fail = 4+ blocked (401/403/405/406/429/503 or challenge); partial = 1-3 blocked; pass = none blocked. Training and product-policy tokens are diagnostic only. This is not verified-crawler-IP proof.
6 pts

Category 2 — llms.txt Presence & Quality · 2 checks · 4 pts (3.1%)

llms.txt is a voluntary proposal for publishing a curated Markdown site map. We check optional-file syntax and link hygiene for services that choose to consume it. Google Search explicitly ignores llms.txt, so this check is not a Google ranking, AI Overview, or AI Mode lever.

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
2 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
2 pts

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

We validate whether JSON-LD parses, uses a schema.org context, has safe absolute identity-reference URLs, and avoids obvious injection strings. This automated check does not prove that every claim matches visible content; publishers remain responsible for that. Structured data can support search understanding and eligibility for supported rich-result features, but Google requires no special AI schema and valid markup does not guarantee ranking or citation.

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 syntax and identity-reference sanity jsonld_sanity
pass = valid schema.org context, absolute HTTP(S) identity-reference URLs, exact-host sameAs validation, and no injection strings; external identity URLs are allowed; fail = any syntax or safety violation. Schema is not a ranking guarantee.
4 pts

Category 4 — Passage Citability & Entity · 6 checks · 41 pts (31.8%)

Passage-level citability is CiteFuel's internal heuristic for clarity, evidence, and standalone readability; it is not an engine ranking factor or citation probability. Entity footprint estimates how distinct the brand appears from measured public evidence.

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
10 pts
13
Entity footprint signals entity_footprint
Deterministic identity check: Wikipedia and Wikidata candidates count only when an external link or P856 official-site claim matches the audited domain. pass = both; partial = one; fail = none; provider errors skip. sameAs declarations are informational, not independent evidence.
9 pts
15
Answer-first structure (direct-answer sentence early) answer_first_structure
pass = a direct-answer sentence (40-300 chars, definition/answer phrasing, not nav boilerplate) appears within the first 30% of main text; partial = found later in the page; fail = no such sentence found
8 pts
16
Quotation & stat density (citable evidence) quotation_stat_density
Quoted spans + numerals-with-units + attribution phrases ("according to"...), combined into a density per 500 words. pass = ≥3; partial = 1-2.9; fail = <1
5 pts
25
Off-site editorial candidates (Brave + GDELT) offsite_mentions
Counts distinct candidate publisher registrable domains across live web and news search using a bundled Public Suffix List. Owned domains, duplicate publisher subdomains, directories/platforms, and automated reputation pages are excluded. Search results do not prove editorial independence. pass = 3+ candidate domains; partial = 1-2; fail = 0; if either provider is unavailable, observed results are disclosed but certified readiness skips the check.
6 pts
26
Wikipedia article quality wikipedia_quality
For a matched Wikipedia article: 3 signals summed (has an infobox, links back to the official site, edited within 2 years). pass = all 3; partial = 1-2; fail = 0; skip = no Wikipedia article matched
3 pts

Category 5 — Technical Foundation · 9 checks · 41 pts (31.8%)

The classical technical foundation shared with search: canonical correctness, HTTPS integrity, sitemap discoverability, Open Graph completeness, mobile viewport, and PageSpeed metrics. PageSpeed field data is preferred; Lighthouse lab fallback is lab evidence, not real-user Core Web Vitals proof.

14
Homepage editorial freshness signal freshness_signals
pass = the homepage sitemap <lastmod> is a plausible true editorial date no more than 180 days old; fail = a plausible date is older; skip = homepage unreachable, date unavailable/future, or sitemap dates resemble deployment timestamps. HTTP validators are cache diagnostics only and never earn freshness credit.
6 pts
17
Canonical tag self-reference canonical_tag
pass = canonical present and self-references the homepage; fail = missing or points elsewhere
9 pts
18
Core Web Vitals — LCP cwv_lcp
pass = LCP <2.5s; partial = 2.5-4s; fail = >4s (PageSpeed Insights, field data preferred, lab fallback)
4 pts
19
Core Web Vitals — CLS cwv_cls
pass = CLS <0.1; partial = 0.1-0.25; fail = >0.25
2 pts
20
Core Web Vitals — INP cwv_inp
pass = INP <200ms; partial = 200-500ms; fail = >500ms
1 pts
21
HTTPS / TLS integrity https_tls
pass = valid certificate and no mixed content on homepage; fail = certificate error or http-only homepage. A fail here also trips the hard gate (below).
4 pts
22
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
10 pts
23
Open Graph completeness og_tags
pass = og:title + og:description + og:image all present; partial = 1-2 present; fail = none
3 pts
24
Mobile viewport meta viewport_meta
pass = width=device-width viewport meta present; fail = absent
2 pts
Engine v1 (legacy — reports scored before 2026-07-03)

Reports generated before the Score 2.0 cutover (2026-07-03) were scored against the table below — 23 checks worth 111 points, a single Readiness-only score with no Visibility blend or hard gates. Those reports still render with this table's weights for an honest like-for-like comparison; every audit run today shows its v1 reading too (report.score_v1) alongside the current Score 2.0 headline.

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

The access layer tests whether each named crawler or product token is allowed by robots.txt and whether a request using documented crawler identification receives usable content. A blocked retrieval crawler cannot fetch the tested URL directly, but that result alone does not prove a brand can never appear through other indexes or sources.

01
OAI-SearchBot access (robots.txt) ai_robots_gpt
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention (neutral, noted)
5 pts
02
Claude-SearchBot access (robots.txt) ai_robots_claude
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
5 pts
03
Googlebot access (robots.txt) ai_robots_gemini
pass = explicitly allowed for Search indexing; fail = explicitly disallowed; Google-Extended policy is informational and not scored
5 pts
04
PerplexityBot access (robots.txt) ai_robots_perplexity
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
4 pts
05
YouBot access (robots.txt) ai_robots_meta
pass = explicitly allowed; fail = explicitly disallowed; partial = no mention
3 pts
06
WAF requesting-agent response heuristic waf_block_heuristic
Runner-origin UA configuration test; not verified-crawler-IP proof. skip when fewer than 80% of probes complete
6 pts

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

llms.txt is a voluntary proposal for publishing a curated Markdown site map. We check optional-file syntax and link hygiene for services that choose to consume it. Google Search explicitly ignores llms.txt, so this check is not a Google ranking, AI Overview, or AI Mode lever.

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 syntax and link hygiene 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

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

We validate whether JSON-LD parses, uses a schema.org context, has safe absolute identity-reference URLs, and avoids obvious injection strings. This automated check does not prove that every claim matches visible content; publishers remain responsible for that. Structured data can support search understanding and eligibility for supported rich-result features, but Google requires no special AI schema and valid markup does not guarantee ranking or citation.

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 syntax and identity-reference sanity jsonld_sanity
valid schema.org context, absolute HTTP(S) identity-reference URLs, exact-host sameAs validation, and no injection strings; external identity URLs are allowed; schema is not a ranking guarantee
4 pts

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

Passage-level citability is CiteFuel's internal heuristic for clarity, evidence, and standalone readability; it is not an engine ranking factor or citation probability. Entity footprint estimates how distinct the brand appears from measured public evidence.

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
Deterministic identity check: Wikipedia and Wikidata candidates count only when an external link or P856 official-site claim matches the audited domain. pass = both; partial = one; fail = none; provider errors skip. sameAs declarations are informational, not independent evidence.
5 pts

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

The classical technical foundation shared with search: canonical correctness, HTTPS integrity, sitemap discoverability, Open Graph completeness, mobile viewport, and PageSpeed metrics. PageSpeed field data is preferred; Lighthouse lab fallback is lab evidence, not real-user Core Web Vitals proof.

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

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

The outcome layer samples live answer engines and records whether the brand produced a positive presence reading under each adapter. Presence is not uniformly a recommendation or citation. Unavailable readings are excluded and disclosed rather than treated as zeroes or passes.

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

SEO Track B — a separate, thin sibling score

Alongside the GEO score above, every audit also computes a lightweight SEO score — classic on-page and technical search-visibility signals, worth 95 points across 12 checks. It's reported separately (report.seo) and never mixed into your GEO score or grade — the two are scored independently. Checks marked "reuses your GEO result" read an existing GEO check's verdict rather than re-running it.

SEO 1 — On-Page SEO · 5 checks · 41 pts (43.2%)

01
Title tag length & presence title_tag
Parsed directly from your homepage HTML — free, no extra API calls.
10 pts
02
Meta description length & presence meta_description
Parsed directly from your homepage HTML — free, no extra API calls.
8 pts
03
Single H1 heading structure h1_structure
Parsed directly from your homepage HTML — free, no extra API calls.
8 pts
04
Indexable (no noindex directive) indexability
Parsed directly from your homepage HTML — free, no extra API calls.
10 pts
05
Redirect chain health redirect_health
Parsed directly from your homepage HTML — free, no extra API calls.
5 pts

SEO 2 — Technical SEO (shared signals — reused from your GEO check results) · 5 checks · 34 pts (35.8%)

06
Canonical tag self-reference canonical
Reuses your GEO canonical_tag check result — not re-run.
5 pts
07
XML sitemap discoverable sitemap
Reuses your GEO sitemap_present check result — not re-run.
6 pts
08
HTTPS / mixed-content integrity https_mixed
Reuses your GEO https_tls check result — not re-run.
8 pts
09
Mobile viewport meta viewport
Reuses your GEO viewport_meta check result — not re-run.
5 pts
10
Core Web Vitals — LCP cwv_lcp
Reuses your GEO cwv_lcp check result — not re-run.
10 pts

SEO 3 — Domain Authority · 2 checks · 20 pts (21.1%)

11
Domain authority score domain_authority
OpenPageRank provider measurement. not_found/unavailable remains unknown coverage, never a pass.
10 pts
12
Brand SERP ownership brand_serp_ownership
Serper top-10 brand SERP inspection, including reputation and aggregator results.
10 pts

A 13th check, Referring domains (backlinks) (backlink_referring_domains, 8 pts), runs on paid audits and enters their measured SEO denominator. It is not included in the free 95-pt table.

App AI-Visibility — a separate scale, for iOS App Store links

Paste an App Store link instead of a domain and CiteFuel runs a different, purpose-built 14-row audit registry, never mixed into the website GEO or SEO scores above. The current app_v2 headline normalizes 10 scored Readiness rows worth 75 available points, then blends that Readiness result with the separately sampled Visibility layer. A partial earns half weight and a skipped scored row is excluded from the available denominator. Two developer-site rows — optional app schema and the llms.txt/FAQ/answer-first inventory — are reported but informational and earn zero Readiness credit. The two live sampling rows, ai_recommendation_sampling and competitor_sov, describe one shared Visibility sample and also earn no fixed Readiness points. The historical 100-point flat checklist remains in report JSON only for explicitly labeled legacy comparison.

App 1 — App Store Listing · 4 rows · 37 legacy checklist pts

What the approved App Store listing itself says: whether the subtitle uses a descriptive category term, the description opens clearly, and relevant listing language is covered without stuffing. CiteFuel does not claim this proves query demand.

01
App Store subtitle contains a real search term listing_subtitle_query_match
10 Readiness pts
02
Description opens with a clear answer listing_description_answer_first
12 Readiness pts
03
Description covers category search terms listing_keyword_coverage
10 Readiness pts
06
Screenshot count screenshot_captions
5 Readiness pts

App 2 — Ratings Signal · 2 rows · 18 legacy checklist pts

Rating volume and an age-adjusted lifetime-average ratings-per-month proxy, benchmarked against a live category corpus. The latter does not measure recent rating velocity or prove current momentum.

04
Rating volume vs. category rating_volume
10 Readiness pts
05
Lifetime-average ratings per month vs. category rating_lifetime_average_rate
Total ratings divided by months since release, compared with the category corpus. This is a lifetime-average proxy, not recent rating velocity.
8 Readiness pts

App 3 — Freshness · 1 rows · 8 legacy checklist pts

Time since the last shipped update. An app that looks abandoned reads as abandoned to both users and AI answer engines regardless of how good the listing copy is.

07
Update freshness update_freshness
8 Readiness pts

App 4 — Developer Site · 3 rows · 19 legacy checklist pts

If a developer website is listed: does it resolve, link clearly to the App Store listing, expose important content in visible text, and use truthful applicable structured data. Optional files and schema are never treated as ranking guarantees.

08
Developer website present & reachable dev_website_present
4 Readiness pts
09
Applicable app structured data (informational) dev_website_app_schema
Informational in app-v2. Applicable truthful schema is inventoried but earns no Readiness credit; Google requires no special AI schema.
Informational · 0 Readiness pts
10
Optional developer-site format inventory (informational) dev_website_geo_subset
Informational in app-v2. Optional llms.txt, FAQ markup, and answer-first formatting earn no Readiness credit and are not Google ranking levers.
Informational · 0 Readiness pts

App 5 — Off-Site Presence · 4 rows · 18 legacy checklist pts

Whether the app is mentioned outside the App Store — Reddit, "best apps" listicles, and live AI-answer sampling with competitor share-of-voice. Each row scores only when its source returns usable evidence; unavailable sources are disclosed as skips, not zeroes or passes.

11
Reddit mentions offsite_reddit_mentions
Uses live Reddit search when configured and available; otherwise records an explicit skip.
4 Readiness pts
12
"Best apps" listicle presence offsite_listicle_presence
Uses Brave Search when configured and available; otherwise records an explicit skip.
4 Readiness pts
13
AI assistant app recommendation sampling ai_recommendation_sampling
Scores the app presence rate when the shared visibility sampler completes runs; no completed runs means skip.
Visibility row · no fixed Readiness pts
14
Competitor share-of-voice competitor_sov
Scores competitor share-of-voice from the same completed visibility sample; no completed runs means skip.
Visibility row · no fixed Readiness pts

Grades & scoring tiers

ScoreGradeWhat it means
90-100SHigh measured CiteFuel score with the S/90+ coverage gate satisfied; not a ranking guarantee.
75-89AStrong measured score or an otherwise-high score awaiting sufficient evidence coverage.
60-74BMeaningful gaps. P1 fixes recommended within 30 days.
45-59CSignificant gaps in CiteFuel's measured readiness rubric.
0-44DCritical tested failures or many readiness gaps; not a forecast of ranking or citation.

Severity tiers

Every failing check is assigned an operational priority: P0 is a tested access, security, or indexability failure for the named surface; P1 is an important internal-readiness gap; and P2 is a refinement. These labels prioritize remediation. They are not estimates of ranking or citation probability. Free reports show the full priority-ranked gap list; paid audits deliver the fix files.

Changelog

  • 2026-07-12 — added S/90+ evidence-coverage gates (4 healthy engines, N≥20, ≥90% measured check weight, no critical skip; N≥40 for robust badge); paid SEO now activates its paid authority row; provider failures and OpenPageRank not-found results remain explicit unknowns.
  • 2026-07-06 — reweighted sitemap_present (4→10 pts) and canonical_tag (4→9 pts) in the Readiness table; both signals were underweighted relative to their impact on crawl discoverability. Readiness table now totals 129 pts, up from 118. Check count unchanged (26).
  • v2.0 (2026-07-03) — Score 2.0: published score became 0.65×Readiness + 0.35×Visibility (26 checks / 118 pts Readiness table, up from 23/111 — added freshness signals, answer-first structure, quotation/stat density, off-site mentions, and Wikipedia quality; moved live AI-presence sampling out of Readiness and into the new Visibility layer), with a 39/D cap for the implemented HTTPS/TLS and evidence-contradiction hard gates. v1 stays computed and shown for comparison (report.score_v1).
  • v1.0 (2026-06-11) — initial 23-check framework. We update when major AI crawlers document behavior changes; weight changes are recorded here.