We Turned Our AI Agents Loose on Our Own Sites
We sell website and AI audits to local service businesses. On the night of August 7, 2026, we finally pointed the same agents at our own three websites.
It went about as well as you'd expect. Below is the honest list — what broke, what we found out we'd been repeating without a source, and the short version you can run on your own site this week.
The booking button had been dead for weeks
Start with the worst one.
We migrated our booking calendar a while back. The new calendar worked. The old link did not — and the old link was still baked into the primary call-to-action button across the site.
The audit agent didn't find one dead button. It found 71 of them, spread across 35 pages, on one site alone. Every "book a call" and "get your free audit" on those pages sent the visitor to a 404.
Nobody noticed, because nobody clicks their own buttons. We look at our homepage constantly — the hero, the copy, the video, the spacing. We had not actually clicked through the button in weeks. Neither has anyone reading this, on their own site.
That's the shape of the whole problem. A dead button doesn't throw an error. It doesn't show up in a report. It just quietly stops producing leads, and every week of silence looks exactly like a slow week.
Our "industry stats" turned out to be folklore
The second finding stung more, because it was self-inflicted.
We'd been quoting two figures that circulate in every agency deck in this industry: that a large majority of customers hire whoever responds first, and that most callers hang up rather than leave a voicemail. Both sound true. Both feel true from experience.
Neither has a primary source. We sent an agent to trace them back and it hit the same wall every time: a blog citing a blog citing a slide, going back roughly fifteen years, with no study, no sample, and no methodology at the bottom of the chain. Marketing folklore, laundered into a statistic by repetition.
So we deleted them. Off every page, on all three sites.
We kept exactly two numbers, because those two have real work behind them:
- Response speed compounds fast. The Lead Response Management study run by Dr. James Oldroyd with InsideSales.com — three years of data, thousands of leads, more than a hundred thousand call attempts — found that waiting 30 minutes instead of 5 to respond cut the odds of qualifying a lead by 21 times. (study)
- Most searches never reach a website. SparkToro's 2026 analysis of Similarweb clickstream data found that about 68% of US Google searches ended without a click to the open web in the first four months of the year, up from 60% in 2024.
Two sourced figures beat a dozen convincing ones. If a customer asked us where a number came from, we can now answer with a link instead of a shrug.
We'd built a few hundred pages that nobody read
Somewhere along the way we did the thing every SEO playbook from 2018 told us to do: generate a page for every service crossed with every city. Roofing in one town. Roofing in the next town. Same page, different noun.
The agents counted roughly 130 to 180 of these per site, and pulled the impressions data. Almost all of them earned close to nothing. Not a bad ranking — no ranking. They were near-identical templates competing with each other, and search engines correctly treated them as one page repeated.
We consolidated them into a few dozen genuinely different hub pages — real content about the trade, real content about the region — and 301-redirected everything else into the survivor that best matched it. Nothing was deleted into a dead end; every retired URL points somewhere that answers the same question better.
The lesson for anyone whose old agency built them a "city page" farm: a hundred thin pages is not a hundred chances to rank. It's one page's worth of value split a hundred ways.
Then the small stuff, which was not small
The remaining findings were all in the category of "technically working, quietly wrong":
- Duplicate schema. Several articles shipped their own structured data while the site generator also produced some, so pages were telling search engines two slightly different stories about the same article. We now merge them at build time and emit exactly one.
- Tables rendering as raw pipes. Markdown tables in a handful of posts were showing up as literal
|characters mid-sentence. It had been that way in public for a while, on pages we'd have pointed a prospect to. - A sitemap that lied. Every rebuild stamped today's date on every page, whether or not the page had changed. To a crawler that reads as "everything here changed again," which is a good way to teach it to stop trusting your dates. Now the timestamp comes from when the source content actually changed.
- A chat assistant quoting retired prices. The site's assistant was answering from an old knowledge file and confidently naming packages we no longer sell. That one had a real chance of costing us a customer's trust in the first thirty seconds.
None of these produced an error message. That's the theme. Websites don't crash — they drift.
Why this happens to everyone
A website is not one thing. It's a domain, a host, a calendar tool, a form processor, a phone number, a chat widget, a review feed, and a pile of content — each owned by a different vendor, each updated on its own schedule, none of them aware of the others.
Any one of those can change under you. The calendar migrates. The form provider updates an endpoint. The phone number ports. The prices change on the pricing page but not in the assistant's training file. Nothing breaks loudly, because nothing in that stack is watching the stack.
Meanwhile the owner is on a roof, or under a sink, or driving between jobs. Checking the website is what you do when you have a slow week — and a broken booking button is very good at producing slow weeks.
The 20-minute self-audit
You don't need agents to catch the expensive ones. You need a phone, a browser, and twenty minutes once a month. Do it on a phone, not a desktop, because that's where your customers are.
| Check | How to do it | What a pass looks like |
|---|---|---|
| Booking button | Tap every "book," "schedule," and "contact" button on your site and go all the way to the confirmation | Every one lands on a working form or calendar — no 404, no blank screen, no old branding |
| Your own phone number | Call it from your cell at 7 PM on a weekday and again on a Sunday | Something answers, or the caller gets a real path forward. Not a full voicemail box, not a ring-out |
| Logged-out search | Open a private window, search your service plus your city, and look at what appears | Your business shows up, and the hours, address, and phone shown are the current ones |
| Every claim on the page | Read your homepage and pick out every number and superlative | You could name the source for each one out loud to a customer without guessing |
| Forms and replies | Submit your own contact form with a real email | The lead arrives somewhere a human will see it, and the auto-reply says something current |
If a check fails, write down the date it failed. Two failures in the same place over two months is a vendor problem, not bad luck.
The fixes are mechanical. Nearly everything on our list was a wrong URL, a stale file, or a duplicate block — the kind of thing that takes an afternoon once you know it's there. The hard part was never the repair. It was that nothing told us.
Our free audit runs this pass across your site, your listings, and your phone, and gives you back the same kind of list we just gave ourselves — dead links, unsourced claims, pages doing nothing, and anything answering customers with outdated information. Start with the audit and see what's quietly broken before you spend a dollar with us.
FAQ
How often should a small business check its own website?
Once a month for the twenty-minute pass above, and immediately after any change to a connected tool — a new calendar, a new phone provider, a new form or chat widget, a price change. Most silent breakages start the day a vendor changes underneath the site.
Why don't broken booking links show up in analytics?
Because a click on a dead link is still a click. Analytics records that someone pressed the button; it doesn't know the destination failed. Unless you're specifically watching for 404s or comparing button clicks to completed bookings, a broken call-to-action looks identical to a healthy one with poor conversion.
Are city-specific service pages bad for local SEO?
Not inherently. A page about a real service area with real, specific content earns its place. A page that's a template with the city name swapped in does not — search engines treat near-duplicates as one page, so a hundred of them tend to earn what one page would have. Consolidating into fewer, genuinely different pages and 301-redirecting the rest is usually the fix.
What should I do about statistics on my website I can't source?
Delete them. An unsourced number is a liability the moment a customer or a competitor checks it, and search engines increasingly reward content that can be traced to something real. Keep the claims you can point to a study for, and replace the rest with things you know first-hand from your own jobs.
Related reading
- What Is Answer Engine Optimization for Local Shops? — why a hundred thin pages never get you named in an AI answer.
- The Real Cost of a Missed Call for a Local Service Business — the math behind why an unanswered call, or an unclickable button, is a lost job.
- How to Get Found When Zero-Click Search Skips Your Site — what the 68% figure above actually changes about how customers find you.
Stellaris Ridge