Crawler access
- robots.txt allows GPTBot, PerplexityBot, ClaudeBot and Google-Extended
- Firewall and bot protection return 200, not 403 or 429, to those user agents
- No noai or noimageai meta tags on pages you want cited
- Sitemap.xml exists, is linked from robots.txt and lists canonical URLs only
- llms.txt exists at the root and describes what the site is for
- The page's main content is in the HTML response, not rendered only after JavaScript runs
Schema depth
- Organization JSON-LD with @id, logo, description and contactPoint
- sameAs links to LinkedIn, GitHub, Crunchbase and Wikidata where records exist
- Person schema for named authors with their profiles
- Article or BlogPosting on every long-form page with datePublished and dateModified
- FAQPage on pages that carry a question-and-answer block
- Product or SoftwareApplication schema on product pages with an Offer
Entity records
- The company name is spelled identically on every profile
- The description on LinkedIn, Crunchbase and the site say the same thing
- A Wikidata item exists or a request has been filed
- Founders and authors link back to the company page
Answer structure
- The first paragraph of each page answers the page's question directly
- One H1 per page; H2s are questions a buyer would ask
- Comparison and pricing pages carry a table, not paragraphs
- Every claim with a number has the number, not an adjective
- Internal links use descriptive text, not 'click here'
Freshness
- dateModified is real and updates when the content changes
- A changelog or updates page exists for products
- Pages older than a year are reviewed or removed
- The blog's latest post is less than 60 days old