Can ChatGPT Actually Read Your Contracting Website? Run This 20-Minute Test Yourself
I ran a raw-HTML crawler test against ten real general contractor websites across Fall River, New Bedford, Swansea, Dartmouth and Westport. Eight of ten had no business hours an AI assistant could find. Here is the exact procedure, free, so you can run it on your own site tonight.

A homeowner in the Highlands opens ChatGPT and types: find me a general contractor near Fall River who does full kitchen remodels, and tell me if they're open Saturday.
The assistant does not open Chrome. It does not scroll your homepage, admire your slider, or wait for your booking widget to finish loading. It reads a raw file that a crawler fetched, and it answers from whatever plain text was in that file.
So the useful question is not "do I have a website." It is "when a machine fetched my homepage, what did it actually get?"
Last night I measured that on ten real general contracting and remodeling companies across Fall River, New Bedford, Swansea, Dartmouth and Westport. These are good outfits. Several have been building in this region for decades, they have real crews, real addresses, and reputations earned on job sites, not on the internet. Nothing below is a knock on their work. It is a knock on a class of website problem that almost nobody has been told about yet, because it did not matter until about eighteen months ago.
I have anonymised every site as Site A through Site J. They did not ask to be graded in public.
What I measured, exactly#
Three AI crawlers, using the real user-agent strings their operators publish: GPTBot (OpenAI), ClaudeBot (Anthropic) and PerplexityBot. For each of the ten homepages I checked four things:
- Does the server let the bot in at all, or does it return an error before anything else happens?
- Does
robots.txttell that bot to go away? - Are the basic business facts — phone, street address, opening hours — present in the raw HTML, with no JavaScript executed?
- Is there structured data (
LocalBusinessschema) the machine can parse without guessing?
That third one is the whole ballgame, and it is worth being precise about why. A Vercel and MERJ analysis of roughly a billion AI-crawler requests found that "the results consistently show that none of the major AI crawlers currently render JavaScript." Their crawlers fetch your JavaScript files and then never run them. If your phone number, hours or service area are painted onto the page by a script after load, the assistant never sees them.
One important caveat, because getting this wrong is easy and embarrassing: this does not apply to Google. Vercel's same write-up notes that Google's Gemini uses Googlebot's infrastructure and does render JavaScript fully. So the honest framing is narrower and more useful: Google's AI Overviews can probably read your JavaScript-heavy contractor site. ChatGPT, Claude and Perplexity likely cannot.
Date measured: 11 August 2026. Homepages only. I did not measure whether any assistant recommends these companies — that varies per user and per session and is not measurable from a server, so I am not going to pretend otherwise.
What came back#
The good news first, because it is real: every one of the ten sites was reachable, and not a single one blocked an AI crawler in robots.txt. Nine of ten had a phone number sitting in plain text where a machine could grab it. Southeastern Massachusetts contractors are not, as a group, hiding from the robots.
The gaps were narrower and stranger than I expected.
| Site | Town | Score /5 | Missing from raw HTML |
|---|---|---|---|
| Site B | Fall River | 2 | phone, address, hours, schema |
| Site C | Fall River | 3 | hours, schema |
| Site H | Swansea | 3 | address, hours, schema |
| Site I | Dartmouth | 3 | address, hours, schema |
| Site J | Westport | 3 | address, hours, schema |
| Site A | Fall River | 4 | hours |
| Site D | New Bedford | 4 | address, hours |
| Site E | New Bedford | 4 | schema |
| Site F | New Bedford | 4 | hours |
| Site G | Swansea | 4 | address |
Three findings worth your attention:
Site B is the cautionary tale. 807 words of visible copy reached the crawler — plenty of text — and yet no phone number, no address and no hours were anywhere in it. The contact details exist on the site. A human sees them. They are simply not in the file the machine received. This is the most expensive failure mode there is, because it is completely invisible from your own browser.
Site G got a door slammed in one bot's face. ClaudeBot and PerplexityBot both received a clean 200. GPTBot received an HTTP 429 — rate-limited, refused. Its robots.txt allows every AI crawler, so nobody at that company chose this. It happened somewhere in the hosting or CDN layer, which is exactly the sort of thing you never find out about unless you go looking.
Site J had a broken structured-data block — one JSON-LD script that failed to parse. Structured data that does not parse is worth precisely as much as no structured data at all, and it will never announce itself.
The quote that reframed this for me#
The instinct is to assume that if something were blocking the robots, you would know. You would not. Here is Aleyda Solís, an international SEO consultant who does this for a living, describing finding it on her own site:
I realized my hosting company was blocking AI bots. All the answers looked wrong and the share of voice was terrible. I only found it because I dug deep into the validation.
If a specialist only caught it by digging, a contractor running three crews and a truck full of estimates is not going to catch it by accident. Which is the entire argument for spending twenty minutes running the check deliberately.
The walkthrough: run this on your own site tonight#
Free, no tools to buy, no account to create. A laptop and twenty minutes.
Step 1 — See the page the way a crawler sees it. (3 minutes)
Open your homepage in Chrome. Press Ctrl+U (Windows) or Cmd+Option+U (Mac). That is View Source — the raw file the server sent, before any JavaScript ran. It is the closest thing to a crawler's-eye view you can get without writing code.
Now press Ctrl+F inside that source view and search for, one at a time:
- Your phone number, digits only:
5085551234 - Then with formatting:
(508) 555-1234 - Your street number and street name
- Your ZIP code
- The word
Monday, thenSaturday - The words
openandam
Every search that returns zero hits is a fact an AI assistant cannot state about your business. If you find your phone number in the rendered page but not in View Source, you have found your problem. That gap is the whole article.
Step 2 — Check you are not turning the bots away. (2 minutes)
In your browser address bar, type your domain followed by /robots.txt — for example yourcompany.com/robots.txt. Read what comes back.
You are looking for any block that names GPTBot, ClaudeBot, anthropic-ai, PerplexityBot, CCBot or Google-Extended and is followed by Disallow: /. That combination means "this crawler is banned from the entire site." Also check whether User-agent: * is followed by Disallow: /, which bans everything.
If the file returns a 404, that is fine. No robots.txt means every crawler is allowed by default. Absence is not a block.
Step 3 — Check your structured data. (5 minutes)
Go to Google's free Rich Results Test at search.google.com/test/rich-results, paste your homepage URL, run it.
You want to see a LocalBusiness or HomeAndConstructionBusiness type, containing your address, your phone and your openingHours. If you see errors, or you see nothing at all, that is your six-in-ten result. Site J's block was present and broken, which the test would have caught in about forty seconds.
Step 4 — Read your own homepage as a stranger. (10 minutes)
Copy the visible text of your homepage into a blank document and read it cold. Answer four questions, out loud:
- Does it say which towns you serve, by name? Not "the South Coast." Fall River, Somerset, Swansea, Westport, Dartmouth.
- Does it say what you actually do? "Full kitchen and bath remodels, additions, roofing" beats "quality craftsmanship since 1987."
- Does it say when you answer the phone?
- Is your license number on there?
An assistant answering "who does additions in Swansea" can only match words that exist. If the phrase is not on your page, you are not in the running.
The fixes, cheapest first#
Free, 15 minutes: put your hours, address and phone in your footer as plain text. Not in an image. Not in a widget. Typed into the page, on every page, in the footer. Eight of ten sites I tested would move up a full grade on this alone, and it is the one thing on this list you can do yourself tonight with your existing site editor. This is the fix I would want you to take even if you never speak to me.
Free, 20 minutes: name your towns. Add one plain sentence: "Serving Fall River, Somerset, Swansea, Westport, Dartmouth and New Bedford, Massachusetts." Six of the ten sites I tested described their service area in terms a machine cannot map to a place.
Free, 5 minutes: fix or remove broken structured data. If the Rich Results Test flags a parse error, a broken block is worse than none — it burns crawl budget and returns nothing.
About an hour, or one call to your host: chase the 429. If a bot got refused, the answer is in your CDN or firewall settings, not in your site's content. Most hosts will tell you in one support ticket whether they have AI-crawler blocking switched on by default. Many now do, quietly.
Half a day, and worth it: get LocalBusiness schema on the site properly. Address, phone, openingHoursSpecification, service area, license number. This is the difference between a machine inferring your business and a machine knowing it.
Why bother, when the phone still rings#
Fair question, and I want to answer it honestly rather than sell you urgency.
Right now, most of your work still comes from referrals, repeat customers and the truck with your name on it. That is not going to stop. The U.S. Small Business Administration's Office of Advocacy reported in September 2025 that "nearly 82 percent of businesses under five employees reported relevance as a reason they were not planning to use AI in the near future." For a lot of small shops, that judgment is correct today.
But the check above costs twenty minutes and zero dollars, and the two fixes at the top of the list cost thirty-five minutes of typing. That is a very cheap insurance policy against a homeowner asking a machine a question about you and getting silence back.
And here is the part that actually matters: everything that makes your site readable to a crawler — plain-text hours, a named service area, a real address, working structured data — also makes it readable to a sixty-eight-year-old homeowner on a phone in bad light. There is no version of this where you do the work and only the robots benefit.
If you run the test and find something you cannot explain — a bot getting refused, a phone number that vanishes in View Source, a schema error you did not put there — send me the URL and I will tell you what I see, no charge and no pitch. I am in Fall River, and I would rather this region's contractors show up when someone asks.
Joshua Amado, Avalon Partner · 774.559.8992 · Joshua.Amado@AvalonPartner.com
Method notes: ten homepages fetched 11 August 2026 using the published user-agent strings for GPTBot, ClaudeBot and PerplexityBot. Facts were counted only where they appeared in the raw HTML response, with no JavaScript executed. I did not measure page speed, and I did not measure whether any assistant recommends these companies — that is not measurable from a server, and I am not going to claim it.
Filed under
Want help putting this into practice?
Avalon Partner helps Fall River and South Coast businesses fix the gaps that cost them leads. Call 774.559.8992 or email Joshua.Amado@AvalonPartner.com.
