We ran our own AI-visibility audit and scored 40. Here's how we got to 98.
We build a tool that scores how visible a website is to AI search. So before we told anyone else what to fix, we pointed it at our own homepage. It scored 40 out of 100 — a failing grade. Here is exactly what was wrong, every fix we made in order, and what each one was worth.
How can a brand-new site fail an AI audit?
The same way most modern sites do: it shipped an empty page. icited.ai is a JavaScript single-page app. When a browser loads it, JavaScript runs and paints the whole experience — the headline, the copy, the audit form. It looks great to a human.
But that's not what a crawler sees. Many AI crawlers and answer engines fetch the raw HTML and don't execute JavaScript. What they got from us was essentially this:
<div id="root"></div>
An empty container. No headline. No description of what we do. No answers to any question. To an engine deciding what to quote when someone asks "how do I know if AI cites my business," our page contained nothing to quote. A 40 was generous.
The fixes, in order of impact
The audit groups its 29 checks into four categories: Answer Engine Optimization (AEO), E-E-A-T (experience, expertise, authoritativeness, trust), AI crawlability, and content structure. We worked worst-first.
1. Put real content in the HTML (the big one)
We added a crawler-visible block of real HTML that ships in the initial response — inside the same #root element, so the moment our JavaScript loads it replaces the block with the live app. Humans never see it; crawlers read it instead of a blank shell. It mirrors the homepage: the headline, a plain-language description of what iCited does, and short answers to the questions people actually ask ("What does iCited check?", "How do you get cited by ChatGPT and Google's AI?").
This single change did more than everything else combined. You can't optimize content that doesn't exist — step one is making sure it exists in the HTML.
2. Lead every section with a quotable answer
AEO rewards content an engine can lift verbatim. So we phrased headings as the questions users ask, and opened each section with a direct one-to-three-sentence answer before the supporting detail. That structure — question, then a clean answer, then depth — is exactly what an AI answer wants to quote.
3. Add structured data (JSON-LD)
We added Organization, WebSite and WebPage schema so engines know who publishes the site, and a FAQPage block that pairs each question with its answer in machine-readable form. Structured data is how you hand an engine the facts instead of hoping it infers them.
4. Fix crawlability: robots.txt, llms.txt, sitemap, canonical
Being readable isn't enough if you're accidentally blocking the readers. We:
- Wrote a robots.txt that explicitly welcomes the AI crawlers —
GPTBot,ClaudeBot,PerplexityBot,Google-Extended— instead of leaving their access ambiguous. - Published an llms.txt file: a plain-text map that points AI systems at the pages that matter, following the llms.txt specification.
- Added a sitemap.xml and a single canonical URL, and made sure every public file agrees on one host (
www.icited.ai). Mixed hosts split your signals; consistency concentrates them.
5. Shore up trust and content signals
The last points came from E-E-A-T and content structure: author attribution, machine-readable published/updated dates, semantic HTML landmarks, descriptive link text and alt text, and enough substantive text on the page to be worth citing. Individually small; together they moved us from the high 80s into the 90s.
What each category was worth
Here's how our own scorecard moved, category by category:
| Category | Before | After | What changed |
|---|---|---|---|
| Answer Engine Optimization | Low | High | Question headings, quotable answers, FAQ schema |
| E-E-A-T | Low | High | Organization schema, author, machine-readable dates |
| AI crawlability | Medium | High | robots.txt for AI bots, llms.txt, sitemap, canonical |
| Content structure | Very low | High | Real crawler-visible content, semantic HTML, alt text |
| Overall | 40 | 98 |
We made the score permanent
Getting to 98 once is easy to undo — one refactor that moves content back behind JavaScript and you're at 40 again without noticing. So we wired the audit into our build: every deploy re-runs the same 29-check engine against the built homepage and fails the build if the score drops below 95. The site literally cannot ship in a state its own product would flag. Dogfooding, enforced by CI.
Why isn't it 100?
Two points are sitting behind one check: verified social profiles. The audit looks for sameAs links connecting the site to established LinkedIn/X profiles as a trust signal. The moment those accounts exist, we add them and the score ticks to 100. We left the honest gap rather than fake the signal — which is the whole point of the exercise.
The five-minute version
If you take one thing from this: view your homepage's raw HTML (in most browsers, "View Page Source" — not "Inspect"). If your actual content isn't there, no amount of clever optimization matters yet. Then, in order:
- Get your real content into the initial HTML, not just the JavaScript render.
- Phrase headings as questions; answer them in the first sentence.
- Add Organization and FAQ structured data.
- Let the AI crawlers in (robots.txt), publish an llms.txt and sitemap, set one canonical host.
- Attribute authorship, date your content, and keep the HTML semantic.
That's the path from invisible to cited. It took our own site from 40 to 98.
What does AI see when it looks at your site?
Run the same free audit we ran on ourselves. Enter a URL, get your score across all four categories and a prioritized fix list in about two minutes.
Run your free audit →Frequently asked questions
Why did a modern website score so low on an AI-visibility audit?
Because it was a JavaScript single-page app that shipped an empty HTML shell. AI crawlers and answer engines that don't execute JavaScript saw a blank page, so there was almost nothing to read, quote or cite.
What was the single biggest fix?
Putting real, crawler-visible HTML content into the page that ships in the initial response — the headline, what the product does, and answers to common questions — instead of relying on JavaScript to render it. That one change moved the score more than any other.
Does JavaScript hurt SEO and AI visibility?
JavaScript itself is fine. The problem is when your important content only exists after JavaScript runs. Many AI crawlers fetch raw HTML and don't execute scripts, so anything that isn't in the initial HTML often can't be cited. Server-render or pre-render your key content, or ship a crawler-visible fallback.