Article · October 23, 2026
I looked at 73 HVAC, plumbing, electrical, garage door and roofing websites in the Portland area the way a customer or an AI assistant would. Two showed an open time before asking who you are. Nine posted a price for a routine job.
In October I asked ChatGPT, Claude and Gemini to book a furnace tune-up with a fictional Portland heating company. When the site showed open times and prices, two of the three assistants could hold a time on their own. When a booking page asked for a phone number, email and street address first, ChatGPT stopped there.
That test used a company I made up. So between October 16 and 23 I looked at real ones: 73 websites of local trade businesses in the Portland area and Vancouver, WA, across five trades. I was also looking for businesses I might work with, and I have contacted some of them. This page names none of them.
| Of 73 websites | Count |
|---|---|
| Showed an open time before asking who you are | 2 |
| Booking tool that asks for your address or contact details before any time | 6 |
| "Book" or "Schedule" button that leads to a request form | 24 |
| No way to book online | 39 |
| Posted their own price for a routine job | 9 |
| Opening hours missing from the pages I read | 17 |
| Tell an AI assistant to stay away in robots.txt | 1 |
| Have an llms.txt file | 31 |
Two sites use a booking tool I couldn't walk to the end, so the booking rows add up to 71.
Only two of 73 showed a real open time before asking for any personal details. Both use ServiceTitan's online scheduler. After a ZIP code and a few questions about the job, it listed windows like "Mon, Oct 26, 2 PM - 5 PM", and only then asked for a name and phone number.
Six sites use Housecall Pro. On the four I walked through by hand, picking a service led straight to a screen asking for first and last name, phone, email and street address, before any time appeared. That is the page where ChatGPT stopped in my test. On the other two, the first screen asked for an address before showing anything.
Twenty-four sites have a "Book" or "Schedule" button that opens a request form. A few of these let you pick a preferred day or time, but someone still has to call back to confirm it. Thirty-nine have no online booking at all, and on one of those the "Schedule Service" link was broken.
For a customer at 9 pm, most of these sites offer a phone number and a form. For an AI assistant asked to book something, they offer nothing it can act on.
Nine of 73 posted their own price for a routine job: a furnace tune-up, a garage door tune-up, a diagnostic fee, a first hour of troubleshooting, a roof inspection. None of the 14 plumbers did.
An automatic search found dollar amounts on twelve more sites, but none of them was a price a customer could use: insurance limits, amp ratings, financing per month, discount thresholds, prices quoted inside customer reviews, and a roofer whose page still shows a template's sample prices.
On two sites a price did exist, just not where people look. Their Housecall Pro booking pages listed prices, a $170 heating tune-up on one of them, that their own websites don't show.
An assistant asked "what does a tune-up cost with this company" can only repeat a number it can find. For 64 of these businesses, there isn't one.
Seventeen sites had no opening hours on the pages I read. Twenty-seven say they offer 24/7 or round-the-clock service. I didn't call any of them at night, so I can't say how many answer.
Blocking isn't the problem. Only one of the 73 tells AI assistants to stay away in its robots.txt. Twenty sites sit behind Cloudflare, though, and Cloudflare has its own setting for AI crawlers that can't be seen from outside. If your site is on Cloudflare, it is worth looking at that setting once.
Thirty-one of the 73 have an llms.txt file, a newer convention meant to give AI tools a summary of a site. In my booking test, none of the three assistants ever requested it. The things they did use, open times and prices on ordinary pages, are what most of these sites are missing.
| Trade | Sites | Times before details | Booking tool, details first | Request form | No online booking | Own routine price |
|---|---|---|---|---|---|---|
| HVAC | 13 | 1 | 2 | 6 | 3 | 3 |
| Plumbing | 14 | 1 | 0 | 5 | 8 | 0 |
| Electrical | 14 | 0 | 2 | 4 | 8 | 1 |
| Garage doors | 18 | 0 | 2 | 6 | 9 | 4 |
| Roofing | 14 | 0 | 0 | 3 | 11 | 1 |
One HVAC site and one garage door site use a booking tool I couldn't walk to the end. With 13 to 18 sites per trade, these numbers describe these businesses, not each trade as a whole.
None of these needs new software. Most are settings and one paragraph of text.
I picked local businesses from Google Maps in five trades across the Portland metro and Vancouver, WA. A script read each homepage and up to seven linked pages the way any visitor's browser would, and recorded booking links, prices, hours, robots.txt and structured data. It never typed into a form or picked a time.
I then checked by hand what the script couldn't settle: every dollar amount it found, and the booking tools. For those I chose a service and, on the ServiceTitan scheduler, entered a public ZIP code. I stopped at the first screen that showed times or asked for personal details, and I never submitted anything. The Housecall Pro walks were on October 18 and the ServiceTitan walks on October 23.
I checked 85 websites and dropped 12. Nine were parked domains, where my list had the wrong web address for the business, two showed a bot check the script couldn't pass, and one had a certificate error.
This is not a random sample. It is the businesses I was looking at, and a site can change the day after I read it. I didn't call any phone numbers for this page.
If you want to see what an assistant runs into when it tries to book with your business, the details are in what AI assistants actually do when you ask them to book a furnace tune-up. The fixes I build for owners are on more customers.