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 Lee Debnam, 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.
| Category | Weight |
|---|---|
| Crawler access | 20% |
| Structured data | 25% |
| Content clarity | 25% |
| AI-specific signals | 15% |
| Authority & trust | 15% |
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).
Pure parsing or HTTP check. Returns the same answer every time.
Combines several deterministic signals using fixed thresholds.
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| Check | Type | Weight |
|---|---|---|
robots.txt is present and valid robots_valid | D | 2 |
AI retrieval bots can access your site retrieval_bots_allowed | D | 5 |
Explicit stance on AI training bots training_bots_explicit | D | 3 |
Sitemap linked from robots.txt sitemap_present_linked | D | 2 |
HTTPS with HSTS enabled https_hsts | D | 2 |
Content renders without JavaScript js_dependency_ratio | DC | 5 |
Fast mobile performance pagespeed_mobile | DC | 1 |
Structured data
25% weight · 8 checks| Check | Type | Weight |
|---|---|---|
Organization schema markup schema_organization | D | 5 |
Schema types match your business category schema_category_appropriate | DC | 6 |
FAQ/HowTo schema on Q&A content schema_faq_howto | DC | 3 |
BreadcrumbList schema on inner pages schema_breadcrumbs | D | 2 |
Complete Open Graph tags og_tags_complete | D | 3 |
Twitter/X card with image twitter_card | D | 2 |
Schema markup has no errors schema_validates | D | 2 |
Canonical URLs set correctly canonical_urls | D | 2 |
Content clarity
25% weight · 8 checks| Check | Type | Weight |
|---|---|---|
Logical heading structure (H1–H6) heading_hierarchy | D | 3 |
Semantic HTML landmarks semantic_landmarks | D | 2 |
Images have descriptive alt text alt_text_coverage | DC | 2 |
Publication and update dates marked up publication_dates | DC | 2 |
Homepage clearly explains what you do homepage_clarity_rubric | A | 6 |
Content answers real user queries query_coverage_rubric | A | 6 |
FAQ content detected faq_content_present | D | 2 |
Content depth and internal linking content_depth_linking | DC | 2 |
AI-specific signals
15% weight · 6 checks| Check | Type | Weight |
|---|---|---|
llms.txt file present and valid llms_txt_present | D | 3 |
llms-full.txt extended version present llms_full_txt | D | 1 |
Retrieval and training bots treated differently retrieval_vs_training_differentiated | D | 4 |
Firewall not blocking AI retrieval bots waf_not_blocking_ai_bots | DC | 4 |
AI policy page present ai_policy_page | D | 2 |
TDM / AI training reservation headers set tdm_headers | D | 1 |
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.
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.
| Version | Date | Changes |
|---|---|---|
| 1.0.0(current) | Initial public release.
|
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