In late May, an HVAC contractor in a mid-size metro ran their site through the free grader on our homepage. It scored 31 out of 100 — an F, with sixteen of 22 checks failing. Fourteen days later the same site regraded at 82, a B, and Perplexity had started citing it for local service queries. This is the log of what changed, in order.
We publish these case notes anonymized, with the client's permission, because the pattern repeats across nearly every grade we see: most F sites are not one big problem. They are a stack of small refusals to tell machines anything.
Nothing below required a redesign. The site looks the same. It just stopped being invisible.
What an F actually looked like
The failing checks clustered into four groups. Access: robots.txt blocked every crawler except Googlebot, and there was no llms.txt. Identity: no schema of any kind, no author names, no dates anywhere. Structure: every heading was a slogan — "Comfort Is Our Business" — and not one page answered a question in its first 90 words. Fundamentals: 14 of 19 pages had no meta description, and mobile LCP was 4.9 seconds.
None of this made the site bad for humans. Customers who arrived understood it fine. The problem was that the machines deciding who gets recommended could not read it, date it, or attribute it.
Sixteen failed checks sounds catastrophic. It is normal. The median site we grade fails eleven.
The owner's summary on our kickoff call was better than mine: "So we have a nice brochure in a locked drawer."
What the grader checks, and why
The grader runs 22 automated checks in four categories: crawler access (robots rules, llms.txt, sitemap health), machine identity (Organization and LocalBusiness schema, authors, visible dates), extractability (question-shaped headings, self-contained first paragraphs, FAQ blocks), and fundamentals (meta descriptions, load speed, mobile rendering). Each check maps to something an answer engine measurably uses, and it is deliberately unforgiving — a check half-done is a check failed.
The tool exists because "how visible am I to AI engines" should not require a sales call to answer. Roughly 900 sites have run it since March. The median grade is a D.
The scale reads like school: 90-plus is an A and rare, 80 to 89 is a B meaning everything controllable inside the site is done, and under 40 is an F — which usually means machines cannot even get in the building.
Days one and two: open the doors
The first fixes were access. We rewrote robots.txt to admit GPTBot, ClaudeBot, PerplexityBot, and Google-Extended, published an llms.txt describing the business and its 19 pages, and regenerated the sitemap with honest lastmod values. Total working time was about three hours, most of it verifying the changes broke nothing else. Six failed checks cleared with those three edits.
Blocking AI crawlers had been a deliberate choice by a previous vendor in 2023, "to protect the content." The content was service descriptions.
Crawl logs showed GPTBot arriving within 41 hours of the change. Machines are not slow to notice. They are just easy to lock out.
Access is the check category with the best effort-to-points ratio, and it always goes first.
Days three to five: give the site an identity
Next came the plumbing machines use to know who is talking: LocalBusiness and Service schema on every relevant page, the owner's name and 26-year credential on the about page and every service page, and visible updated dates sitewide. We wrote the company's canonical sentence and repeated it in the schema description, the footer, and their Google Business Profile.
Meta descriptions for all 19 pages took one writing session — 140 to 158 characters each, answer-first.
Dates matter more than service businesses expect. A furnace-repair page last touched in 2021 reads as abandoned to an engine weighing freshness.
Image compression and lazy-loading brought mobile LCP from 4.9 seconds to 2.3. Not elite, but out of the penalty zone.
Tool spend for the whole sprint: zero dollars. Every fix was text, markup, or configuration.
Days six to nine: rewrite the tops of ten pages
The heaviest lift was extractability. For the ten highest-value pages we rewrote every heading into a question a customer actually asks — "How much does AC repair cost?" "How fast can someone come out?" — and wrote a self-contained 40-to-90 word answer directly beneath each, with a real number in it: crew size, response window, price range, service radius. The slogans moved down the page. The answers moved up.
The owner resisted publishing price ranges. We showed him the queries his customers were already asking engines — nearly all about cost. The ranges went up on day eight. Calls did not drop.
Nothing was deleted. The pages kept their voice. They just now lead with what a machine, or a person in a hurry, can lift.
Time cost: roughly 11 hours of writing across the four days, split between our engine's drafts and human passes that kept the owner's phrasing.
Days ten to twelve: FAQs where the questions already were
The office team pulled the 18 questions they answer by phone every week, and we turned the best 12 into FAQ blocks across four pages, wrapped in FAQPage schema — each answer 40 to 90 words, self-contained, with numbers where they existed. These are exactly the question-and-answer pairs engines lift verbatim, and the office had been sitting on the inventory for years.
Answer quality beat answer polish. "Usually same day if you call before 10 a.m., next morning otherwise" is not elegant. It is exactly what gets quoted.
Day twelve was cleanup: internal links so no service page sat orphaned, alt text on some 60 images, a final lastmod pass.
Total new words on the site across fourteen days: about 4,800.
The regrade, and what moved first
Day fourteen: 82 out of 100, with twenty of 22 checks passing. The two holdouts were long-horizon items — review volume and third-party mentions. Within three weeks, Perplexity cited the site for 5 of the 15 local queries we track, AI-referred sessions went from zero to 11 a week, and the office traced two booked jobs to "the AI told me to call you." From a standing start of invisible.
The honest caveat: a B in fourteen days is achievable precisely because the site started at F. The last 18 points — mentions, reviews, original data worth citing — take months, not days, and they are next on his list.
Day fifteen, the owner asked what an A takes. Good question.
But the floor is where most local businesses are standing. If you have not graded your site, that is the whole pitch: it is free, it takes about 40 seconds, and the fix list is the report.