Skip to main content

How PromptScore works

Every check, every weight, and how we calculate your score. Published here so you can verify, critique, and improve against it.

Written by , founder of Performance Peak. Published . Last updated .

Scoring model version: 1.0.0

References and source documents

The check list and weights are derived from public specifications and crawler documentation: Schema.org, llmstxt.org, OpenAI bots documentation, Anthropic ClaudeBot documentation, Google Search Central crawler index, and the W3C TDM Reservation Protocol.

The five categories

Your overall score is a weighted sum across five categories. The weights reflect the relative importance of each category to AI search discoverability as of the current scoring version.

CategoryWeight
Crawler access20%
Structured data25%
Content clarity25%
AI-specific signals15%
Authority & trust15%

How checks are run

Each check is one of three types. Every check returns a score of 0, 0.5, or 1 (or a continuous value for composite checks, normalised before aggregation).

DDeterministic

Pure parsing or HTTP check. Returns the same answer every time.

DCComposite

Combines several deterministic signals using fixed thresholds.

AAI-graded

Uses Claude at temperature 0 with a locked prompt. Cached by URL, content hash, and prompt version.

Approximately 75% of the overall score comes from D and DC checks. AI-graded checks (type A) are used only within Content clarity and Authority & trust, where human-readable judgement is required.

All 36 checks

This table is generated directly from the scoring package at build time. Adding or changing a check in code automatically updates this page.

Crawler access

20% weight · 7 checks
CheckTypeWeight
robots.txt is present and valid
robots_valid
D2
AI retrieval bots can access your site
retrieval_bots_allowed
D5
Explicit stance on AI training bots
training_bots_explicit
D3
Sitemap linked from robots.txt
sitemap_present_linked
D2
HTTPS with HSTS enabled
https_hsts
D2
Content renders without JavaScript
js_dependency_ratio
DC5
Fast mobile performance
pagespeed_mobile
DC1

Structured data

25% weight · 8 checks
CheckTypeWeight
Organization schema markup
schema_organization
D5
Schema types match your business category
schema_category_appropriate
DC6
FAQ/HowTo schema on Q&A content
schema_faq_howto
DC3
BreadcrumbList schema on inner pages
schema_breadcrumbs
D2
Complete Open Graph tags
og_tags_complete
D3
Twitter/X card with image
twitter_card
D2
Schema markup has no errors
schema_validates
D2
Canonical URLs set correctly
canonical_urls
D2

Content clarity

25% weight · 8 checks
CheckTypeWeight
Logical heading structure (H1–H6)
heading_hierarchy
D3
Semantic HTML landmarks
semantic_landmarks
D2
Images have descriptive alt text
alt_text_coverage
DC2
Publication and update dates marked up
publication_dates
DC2
Homepage clearly explains what you do
homepage_clarity_rubric
A6
Content answers real user queries
query_coverage_rubric
A6
FAQ content detected
faq_content_present
D2
Content depth and internal linking
content_depth_linking
DC2

AI-specific signals

15% weight · 6 checks
CheckTypeWeight
llms.txt file present and valid
llms_txt_present
D3
llms-full.txt extended version present
llms_full_txt
D1
Retrieval and training bots treated differently
retrieval_vs_training_differentiated
D4
Firewall not blocking AI retrieval bots
waf_not_blocking_ai_bots
DC4
AI policy page present
ai_policy_page
D2
TDM / AI training reservation headers set
tdm_headers
D1

Authority & trust

15% weight · 7 checks
CheckTypeWeight
Substantive About page (300+ words)
about_page_substantive
DC2
Complete contact information in HTML and schema
contact_info_complete
D2
Author bylines with bios on content
author_bylines
DC2
Entity on Wikidata
wikidata_presence
D3
3+ authoritative sameAs links
sameas_links
D2
Content cites sources and links to authorities
citation_practice
A2
Consistent brand name across schema, titles, and copy
brand_consistency
D2

AI-graded checks

3 checks are graded by Claude rather than deterministic code. These are checks where a nuanced judgement is needed that no regex or threshold can reliably make.

Model and temperature

Claude Sonnet is used at temperature 0. Temperature 0 makes the model effectively deterministic, the same input reliably produces the same output.

Prompt versioning

Each AI check has a locked prompt ID. Changing the prompt increments the version, which invalidates the cache for that check across all stored scans for fairness.

Result caching

AI check results are cached by (check key, prompt version, content hash). If your page content has not changed, a re-scan returns the identical cached result within 30 days.

Failure handling

If Claude returns invalid JSON, one retry is attempted. If the retry also fails, the check is marked not_scored and excluded from aggregation. The remaining weights are renormalised so your score is not penalised for infrastructure issues.

Output schema

Every AI check uses a strict JSON schema for its output. The model is instructed to produce only the specified fields. This makes the output machine-readable and auditable.

AI-graded checks in this version:

  • AHomepage clearly explains what you do(content clarity)
  • AContent answers real user queries(content clarity)
  • AContent cites sources and links to authorities(authority trust)

Score bands

Score bands give context to the number. They are fixed thresholds, not percentile rankings, so your band does not change based on how other sites score.

85–100
AI-Ready Leader
Your site is in the top tier for AI discoverability. Focus on maintaining and extending your advantage.
70–84
Solid foundation
The fundamentals are in place. Targeted improvements will push you ahead of competitors.
55–69
Partial readiness
Several gaps are costing you AI visibility. A focused 2–4 week programme could lift you into the top tier.
35–54
Significant gaps
Your site is missing structural elements that AI systems rely on. Acting now avoids falling further behind.
0–34
High risk
Your site is effectively invisible to the current generation of AI retrieval systems. This is a strategic problem that compounds monthly.

Scoring version

Every stored scan records the scoring version it was run under. When weights, rubrics, or score bands change, the version increments and all AI-check caches are invalidated for fairness. You can always see which version produced a scan on the results page.

VersionDateChanges
1.0.0(current)

Initial public release.

  • 34 checks across 5 categories (crawler access 20, structured data 25, content clarity 25, AI-specific 15, authority and trust 15).
  • Three check types: deterministic (D), composite (DC), and AI-graded (A) using Claude at temperature 0 with locked prompt versions.
  • Five score bands: AI-Ready Leader (85+), Solid foundation (70-84), Partial readiness (55-69), Significant gaps (35-54), High risk (0-34).

Frequently asked questions

Is this just SEO?
No. Traditional SEO optimises for Google's keyword-matching algorithm. AI search readiness focuses on whether AI systems (ChatGPT, Perplexity, Claude) can understand, trust, and cite your content when answering user questions. The signals overlap somewhat (good structure, clear content, schema markup) but AI search adds distinct requirements: explicit bot permissions in robots.txt, llms.txt, entity disambiguation, answer-ready content format, and E-E-A-T depth. A site can rank well in Google and still be nearly invisible to AI-powered answers.
Why does my score change between scans?
Several reasons. First, your actual content may have changed, PromptScore detects this via a content hash. Second, AI-graded checks (homepage clarity, query coverage) are cached for 30 days tied to both your content hash and the current scoring version; if either changes, the check re-runs. Third, external signals like PageSpeed Insights vary based on real-world server performance at the time of scan. If you see an unexpected score drop, compare the two scan results' evidence fields to identify what changed.
Why are some checks graded by AI?
Purely deterministic checks can only measure presence or absence. Whether your homepage clearly explains what you do, who it is for, and what outcome you deliver is a nuanced judgement that no regex can make reliably. We use Claude at temperature 0 with a locked, version-controlled prompt and a strict JSON output schema. Temperature 0 means the model is essentially deterministic. All AI-graded results are cached against the content hash, so rescanning the same unchanged page returns the identical score.
What is the difference between retrieval bots and training bots?
Retrieval bots (OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot) fetch your content at the time a user asks a question. Allowing them means your site appears in live AI-powered answers. Training bots (GPTBot, ClaudeBot, CCBot, Google-Extended) crawl your content to train the underlying model. Allowing them means your content may influence the model's base knowledge. These are separate decisions with separate business implications. PromptScore scores whether you have an explicit stance on each group, not which choice you make.
We block PerplexityBot via Cloudflare. Should we unblock it?
Almost certainly yes, if appearing in Perplexity answers is valuable to you. PerplexityBot is a retrieval bot: it fetches your content at query time, not to train a model. Blocking it means Perplexity cannot include your site in answers, regardless of how good your content is. The exception would be if you have a specific legal or commercial reason to prevent Perplexity from citing you. To unblock: Cloudflare dashboard, Security, Bots, allow PerplexityBot and Perplexity-User user agents. Also check your robots.txt does not disallow them.
How often should we re-scan?
Scan after any significant change to your site: new schema markup, updated robots.txt, content rewrites, technical migrations. For ongoing monitoring without changes, once per month is sufficient. AI search ranking signals change more slowly than keyword rankings, weekly scanning rarely surfaces meaningful changes. If you are running a structured improvement programme, scan at the start and end of each implementation sprint.
Can I get a private scan that is not visible to others?
Scan results are not publicly listed or indexed. A scan result is accessible only to someone who has the direct URL containing the scan ID (a non-guessable UUID). There is no public directory of scans. If you need a result removed entirely, contact us at lee@performancepeak.co.uk and we will delete it from the database.
Who built PromptScore?
PromptScore is built and operated by Performance Peak, a digital marketing and technology consultancy based in the UK. The scoring model draws on public AI crawler documentation from OpenAI, Anthropic, Google, and Perplexity, as well as the emerging llmstxt.org specification and the Schema.org vocabulary. The methodology is published here so it can be scrutinised and improved.
How can I improve my score?
The full PDF report (available after entering your email on the results page) contains the top five priority actions ranked by impact divided by implementation effort. Start there. In general: fix your robots.txt first (it gates everything), add or complete your Organization schema, ensure your homepage clearly states what you do and who for in the first viewport, and add llms.txt. Most sites can move from Significant gaps to Solid foundation with two to four weeks of focused technical work.
Is the score guaranteed accurate?
No. The score is a systematic estimate based on observable signals, not a direct measurement of AI citation frequency. It does not guarantee that a high-scoring site will appear in any specific AI answer, or that a low-scoring site will not. AI search ranking is influenced by many factors PromptScore does not measure, including the AI provider's own content policies, query intent, and real-time retrieval decisions. The value of the score is its repeatability: the same inputs reliably produce the same score, so you can measure progress.

See how your site scores

Run a free scan against all 36 checks. Results in under two minutes.

Scan my site