the ledger notes
The LLM journey: optimizing our own AI observability, before and after
We audit every site's AI-readiness. Today the audit pointed at us, and the results were embarrassing enough to fix in one sitting — and instructive enough to document every step. This is the before/after log.
Before: the audit we failed
The trigger: our own summarizer — the same one that writes the "What the Machine Says" section on every domain report — was asked about airanks.net. Its verdict, verbatim:
"The accessible homepage at airanks.net exposes essentially no substantive content beyond the page title 'AIRANKS.'"
The site that measures AI visibility was invisible to AI. Cause: airanks.net is a client-rendered app, and (verified via crawler telemetry) GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot fetch HTML but execute no JavaScript. To them, our fighting ledger — 376,101 model answers, 1.3M brand mentions — was an empty div.
The file audit was no better. Our own domain report showed:
File Before After llms.txt 140-byte tracer stub curated index (tracer link preserved — it's an instrument) llms-full.txt 404 full story incl. what we deliberately do not claim ai.txt 404 attribution license at /ai.txt AND /.well-known/ai.txt (IETF draft location) ai-plugin.json 404 manifest pointing at the live OpenAPI spec robots.txt ✓ (route) unchanged sitemap.xml ✓ (route) unchanged JSON-LD ✓ (server-rendered) unchanged — already done right, spatie + Blade Readable content, no JS ✗ empty shell server-rendered floor in the initial HTMLThe wrong fix that almost shipped
First instinct: wrap real content in <noscript>. Fifteen minutes later our own research pass (three agents over the primary sources) returned the correction: AI crawlers ignore noscript (Vercel/MERJ telemetry). The theoretical fix would have audited clean and done nothing — exactly the fact-vs-theory trap this site exists to fight. The shipped fix is a plain server-rendered block in the initial HTML that an inline script removes before first paint for JavaScript-capable browsers: crawlers keep it, humans never see it.
The lag nobody tells you about
After deploying the floor we re-ran the summarizer. Same verdict. The model's browsing reads from the vendor's search index, not from your live page — so a fix ships instantly and the AI's picture of you updates when the crawler comes back. Our llm-crawled board watches for exactly that visit, and every domain report now has a ↻ refresh button that re-queues measurement the moment it matters. Freshness signals (sitemap lastmod, llms.txt) are the lever you actually hold.
Everything else that changed today
- /d/{hostname} domain reports: AIR score, the Machine's dated summary, recent observations (date · phrase asked · page cited), the full file audit with live-content modals, phrases and co-ranked brands — the page every toolbar link now lands on.
- A glowing "Get Full Observation" CTA leads the toolbar's file-report panel.
- /llm-web-indexing-files: the educational reference for all seven surfaces, every claim badged VERIFIED / COMMUNITY-REPORTED / THEORY, built from primary sources — including the numbers most guides omit (Ahrefs' n=1,885 difference-in-differences showing JSON-LD's citation lift is a null result; Cloudflare's 38,000:1 ClaudeBot crawl-to-referral ratio).
- The slogan: The Authoritative Rankings for AI Web Content — now in the header, the meta tags, the llms files, and the AI-readable floor.
The score
Before: 4 of 7 surfaces present, homepage unreadable to AI, no way to see your own observations. After: 7 of 7 present and verified by our own checker — the same checker that audits every other domain, which is the only reason any of this is credible.