Scoring rubric

How the score is built

Score = 100 minus the penalties of failed checks that apply to the page type. Blocker 15, high 8, medium 4, low 2. Checks that do not apply to a page type are skipped, not failed. No hidden weights, no per-engine numbers. Contract version 1.0.0.

Site-wide

Deterministic, included in the free scan

AI search crawlers can reach your siteBlocker · 15 ptsDeveloperFree scan
robots.txt allows retrieval bots (OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended)
If retrieval crawlers are blocked, answer engines cannot cite you at all, no matter how good the page is.
Applies to: all
Training crawler policy is deliberateLow · 2 ptsDeveloperFree scan
Training bots (GPTBot, CCBot, Bytespider, Applebot-Extended) status
Blocking training bots is a choice, not an error. Fails only when a blanket rule blocks everything by accident.
Applies to: all
robots.txt points to your sitemapLow · 2 ptsDeveloperFree scan
Sitemap: directive present and resolvable
Crawlers discover new pages faster when robots.txt names the sitemap.
Applies to: all
Sitemap exists and parsesHigh · 8 ptsDeveloperFree scan
/sitemap.xml or declared index is valid XML with at least one URL
Without a sitemap, AI crawlers only find what they stumble on through links.
Applies to: all
Sitemap dates are currentMedium · 4 ptsDeveloperPaid audit
At least one lastmod within 30 days; lastmod on most URLs
Stale or missing dates tell crawlers nothing has changed, so they come back less often.
Applies to: all
llms.txt existsHigh · 8 ptsDeveloperFree scan
GET /llms.txt returns non-HTML text over 200 bytes
llms.txt is the one file written for AI systems; without it they infer what you are from scraps.
Applies to: all
llms.txt is maintainedMedium · 4 ptsDeveloperPaid audit
Content links resolve and at least 3 internal URLs are listed; updated within 30 days where detectable
A static llms.txt stops working; one that reflects new pages keeps citations coming.
Applies to: all
llms-full.txt existsLow · 2 ptsDeveloperPaid audit
GET /llms-full.txt returns non-HTML text
Gives AI systems the full text in one fetch instead of a crawl.
Applies to: all
Pages can be served as markdownLow · 2 ptsDeveloperPaid audit
Homepage with Accept: text/markdown returns markdown or a .md alternate link
Some AI crawlers request markdown; serving it removes layout noise from what they read.
Applies to: all
AI crawlers see your contentBlocker · 15 ptsDeveloperFree scan
Static HTML contains the page's text; not a client-rendered shell
Most AI crawlers do not run JavaScript. If the text arrives after scripts run, they read an empty page.
Applies to: all
Server responds fast enough for crawlersMedium · 4 ptsDeveloperPaid audit
Time to first byte under 800ms
Slow responses cut how many pages a crawler fetches per visit.
Applies to: all
Your business is defined once, site-wideBlocker · 15 ptsDeveloperFree scan
Organization JSON-LD on the homepage with @id, name, url and logo
AI systems attach facts to entities. Without an Organization entity there is nothing to attach your pages to.
Applies to: all
Your business is linked to its profilesHigh · 8 ptsMarketingFree scan
Organization.sameAs lists at least 2 authority profiles (LinkedIn, Wikidata, Crunchbase, Google Business, social)
sameAs links are how AI confirms your site and your public profiles are the same company.
Applies to: all
Site entity is declaredMedium · 4 ptsDeveloperFree scan
WebSite JSON-LD with @id and publisher pointing to the Organization @id
Connects every page to the site and the site to the business.
Applies to: all
An About page anchors the brandMedium · 4 ptsContentPaid audit
About page linked from navigation, with AboutPage schema whose mainEntity is the Organization @id
AI systems look for one page that says who you are. Without it they guess from the homepage.
Applies to: all
Bing and Copilot are told about changesLow · 2 ptsDeveloperPaid audit
IndexNow key file present at the root
Copilot and Bing-backed engines pick up new pages within hours when you push instead of waiting for a crawl.
Applies to: all

Page structure and schema

Deterministic, included in the free scan

One clear page titleHigh · 8 ptsContentFree scan
Exactly one h1 between 20 and 90 characters
The h1 is the first thing an answer engine uses to decide what the page is about.
Applies to: all
Headings are in orderMedium · 4 ptsDeveloperFree scan
No skipped heading levels, no empty headings
Skipped levels break the outline AI uses to split the page into answers.
Applies to: all
Page says what it is in the first linesHigh · 8 ptsContentFree scan
A paragraph of 40+ words within 300 characters of the h1 that names the page subject
The first paragraph is the passage most likely to be quoted. If it is a slogan, nothing quotable exists.
Applies to: all
Content is marked so AI can find the main partMedium · 4 ptsDeveloperPaid audit
main or article element present; nav and footer present; most text inside main
Landmarks let crawlers drop menus and footers and keep the content.
Applies to: all
Sections are self-containedMedium · 4 ptsContentPaid audit
Each h2 section is 80 to 400 words and its first sentence carries the heading subject
AI retrieves sections, not pages. Oversized or off-topic sections do not get retrieved.
Applies to: blog, about, other
Numbers and specs are in tablesMedium · 4 ptsContentPaid audit
Three or more numeric spec, price or date lines outside a table
Tables are read as facts; the same numbers in prose are read as opinions.
Applies to: product, category, blog
Steps and options are listsLow · 2 ptsContentPaid audit
li to p ratio above 0.2 when the page describes steps or options
Lists are extracted as how-to answers; paragraphs are not.
Applies to: blog, other
Ads do not break the articleLow · 2 ptsDeveloperPaid audit
No ad or iframe containers between paragraphs inside the main content
Ad blocks split the text stream an AI reads.
Applies to: blog
Mobile viewport setLow · 2 ptsDeveloperPaid audit
meta viewport present
Baseline rendering signal; cheap to fix.
Applies to: all
One canonical URLHigh · 8 ptsDeveloperPaid audit
Canonical present, https, resolving to this page or a valid target
Without a canonical, duplicates split the signals AI uses to pick a source.
Applies to: all
Language versions declaredLow · 2 ptsDeveloperPaid audit
hreflang set when more than one language is detected
Tells AI which version to cite for which audience.
Applies to: all
You are not opting out by accidentHigh · 8 ptsDeveloperFree scan
No robots meta noai, noimageai, nosnippet or max-snippet:0
These tags tell AI systems not to quote you. Usually left by a plugin.
Applies to: all
Page is not buried in codeMedium · 4 ptsDeveloperFree scan
Visible text at least 10% of HTML and at least 250 words
Crawlers budget by bytes; a page that is 95% code gets little of its text read.
Applies to: all
Images are described in textLow · 2 ptsContentPaid audit
alt text on at least 80% of content images
AI cannot read images; alt text is the only version it gets.
Applies to: all
Freshness is visible and machine-readableMedium · 4 ptsContentPaid audit
Visible date and dateModified in schema, within 12 months
Answer engines prefer sources they can date. Undated pages lose to dated ones.
Applies to: blog, product
Page links back to who you areLow · 2 ptsContentPaid audit
At least one internal link to the About page or a reference to the Organization @id
Reinforces that this page belongs to a known entity.
Applies to: all
Trust signals are text, not imagesMedium · 4 ptsMarketingFree scan
Testimonials, certifications or client logos exist as readable text, alt text or AggregateRating
A logo wall is invisible to AI. The same names in text are evidence.
Applies to: home, about, product
Address and contact are machine-readableMedium · 4 ptsMarketingFree scan
postalAddress, telephone or contactPoint in schema or footer text
Real-world details are how AI decides you are a real business.
Applies to: home, about
Offerings are listed with linksMedium · 4 ptsContentFree scan
A section listing at least 3 offerings, each linked internally
Gives AI the map of what you sell in one place.
Applies to: home
Navigation is real linksMedium · 4 ptsDeveloperFree scan
nav element with at least 3 anchor links to internal pages
Menus built from scripts hide your site structure from crawlers.
Applies to: home
Structured data parsesHigh · 8 ptsDeveloperFree scan
All ld+json blocks parse; @context is schema.org; no conflicting duplicate @id
Broken JSON-LD is ignored entirely, taking every entity on the page with it.
Applies to: all
The page itself is typedMedium · 4 ptsDeveloperPaid audit
WebPage (or subtype) with url and isPartOf pointing to the WebSite @id
Typed pages are placed in the site graph; untyped pages float.
Applies to: all
Position in site is declaredLow · 2 ptsDeveloperPaid audit
BreadcrumbList with at least 2 items matching the URL path
Tells AI where the page sits in your hierarchy.
Applies to: about, product, category, blog, other
Page links to the business entityHigh · 8 ptsDeveloperPaid audit
publisher, provider, brand or author.worksFor references the Organization @id, not an inline copy
Pages that reference the entity by @id inherit its authority; inline copies create duplicates.
Applies to: all
FAQs on the page are in schemaMedium · 4 ptsContentPaid audit
Visible question-and-answer pattern has matching FAQPage schema, and vice versa
Q&A is the format AI quotes most. Unmarked FAQs are missed; marked FAQs without text are ignored.
Applies to: all
Product basics are machine-readableBlocker · 15 ptsDeveloperPaid audit
Product with name, image, brand and an Offer with price, priceCurrency and availability
Shopping assistants only recommend products whose price and availability they can read.
Applies to: product
Return policy is attached to the offerHigh · 8 ptsDeveloperPaid audit
Offer.hasMerchantReturnPolicy with merchantReturnDays and returnPolicyCategory
Agents compare return terms before recommending; missing terms lose the comparison.
Applies to: product
Shipping is attached to the offerMedium · 4 ptsDeveloperPaid audit
Offer.shippingDetails with shippingRate and deliveryTime
Delivery time is a ranking factor in shopping answers.
Applies to: product
Product has a global identifierMedium · 4 ptsDeveloperPaid audit
gtin, mpn or sku present
Identifiers let AI match your product to the same product elsewhere.
Applies to: product
Reviews are machine-readableLow · 2 ptsMarketingPaid audit
aggregateRating present when visible reviews exist
Ratings in schema are quoted; ratings in a widget are not.
Applies to: product
Category lists its productsHigh · 8 ptsDeveloperPaid audit
CollectionPage with an ItemList whose items are Products with URLs
Lets AI understand the range you sell from one page.
Applies to: category
Article is typed with author and datesHigh · 8 ptsDeveloperPaid audit
Article or BlogPosting with headline, datePublished, dateModified, image and mainEntityOfPage
Untyped articles are treated as generic pages and rarely cited.
Applies to: blog
Author is a real, linked personHigh · 8 ptsContentPaid audit
author is a Person with @id, url and at least one sameAs
AI weighs who wrote it. A name string is not a person; a linked entity is.
Applies to: blog
Author expertise is declaredLow · 2 ptsContentPaid audit
Person has jobTitle and knowsAbout or worksFor pointing to the Organization
Expertise signals decide which of two similar articles gets cited.
Applies to: blog, about
Founders and team are linked to the businessHigh · 8 ptsContentPaid audit
AboutPage.mainEntity is the Organization; founder, employee or member Persons with sameAs
Connects the humans to the brand so their credibility transfers.
Applies to: about
Answer passages are markedLow · 2 ptsDeveloperPaid audit
speakable cssSelector or xpath present
Points assistants at the passage you want quoted.
Applies to: blog, home

Content judgment

Model-judged on a cleaned extract; quotes its evidence. Paid audits only.

The answer comes firstHigh · 8 ptsContentPaid audit
Primary answer stated within the first 200 words, before context
AI extracts from the top; buried answers are skipped.
Applies to: all
There is a quotable 40 to 60 word answerHigh · 8 ptsContentPaid audit
At least one paragraph answers the page's main question standalone
This is the paragraph that becomes the citation.
Applies to: blog, other, home
Key term is defined explicitlyMedium · 4 ptsContentPaid audit
A sentence of the form '[subject] is a [category] that ...'
Definitions are the most quoted sentence type in AI answers.
Applies to: blog, product, home
Sections stay on subjectMedium · 4 ptsContentPaid audit
h2 and h3 carry the page subject terms rather than generic labels
Generic headings ('Overview', 'More') lose the topic when a section is retrieved alone.
Applies to: all
Claims are backed by numbersMedium · 4 ptsContentPaid audit
At least 2 hard data points per 100 words in the body
Specific numbers get cited; vague claims do not.
Applies to: blog, product, about
Claims are attributedMedium · 4 ptsContentPaid audit
Named sources, experts or studies support key claims
Attributed claims are treated as evidence, not opinion.
Applies to: blog, about
AI can tell who and what this page is aboutHigh · 8 ptsContentPaid audit
Primary entity named consistently in title, h1, first paragraph and schema
Inconsistent naming splits the page across several entities in the AI's model.
Applies to: all
Page answers the obvious follow-up questionsHigh · 8 ptsContentPaid audit
The three likely user questions for this page type are answered
Pages that answer the follow-up win the citation over pages that only answer the first question.
Applies to: product, blog, home
Content reads as currentLow · 2 ptsContentPaid audit
References to years, versions or events are not older than 24 months where relevant
Dated references make AI treat the whole page as stale.
Applies to: blog, product