VANTARE

What 300 contractor websites are underselling

By Thomas G. Goddard, JD, PhD · Published 30 August 2026 · Findings

We scanned 300 contractor and restoration websites in a single run and found that 236 of them showed evidence of a service line the company was not selling. Then we threw away 96 of those. What survived was 95 sites — under a third of the corpus — where the evidence was strong enough and we had read enough of the site to say anything at all. The discarded majority is the more useful half of this, so it gets the same space as the finding.

If you run an HVAC, restoration, roofing or pest-control company, the useful part of this is not the total. It is the shape: the most common thing a contractor's own website proves they can do and does not sell is the work they are already doing in someone else's house. Three of the clusters below are that, and one of them is not a new trade at all — it is a buyer they have already served and never advertised to.

Corpus: 300 US HVAC, restoration, roofing and pest-control sites · Scanned in one run, 30 August 2026 · Directional at this sample size, not a population estimate

The whole funnel

Every number below is a count from one run, labeled s2-300-20260830. No site was scanned twice and none errored.

StageSitesOf 300
Scanned300—
Carried a candidate line of business23679%
Candidate discarded by the verifier9632%
Finding survived verification13846%
Enough of the site read to make an absence claim15351%
Both — a verified finding on a site we read enough of9532%

The two middle rows are separate gates and a site has to clear both. One asks whether the evidence supports the finding. The other asks a narrower question: did we read enough of this website to be claiming that something is absent from it. A site can pass either one alone and still tell us nothing.

What the 95 turned out to be

Clusters were assigned by matching a fixed list of terms against the named service line, and nothing else — not the evidence text, not our notes. A finding can match more than one, and 13 of the 95 match none, so these do not sum to 95. The full term list is at the bottom of this page, so you can rerun it and get the same rows.

ClusterSitesOf 95
Indoor air quality and duct work1819%
Energy audits and weatherization1718%
Commercial or property-manager work1314%
Plumbing1112%
Recurring maintenance and inspection contracts1011%
Fire, smoke and storm damage1011%
Biohazard, hoarding and trauma cleanup66%
Reconstruction and rebuild after a loss66%

The third row is the one worth stopping on. Thirteen of the ninety-five were not a new service at all — they were the same service, sold to a different buyer. A residential restoration company with three commercial jobs in its own case studies and no commercial page. That is a channel sitting inside the work already done, and it is cheaper to open than a trade you would have to hire for.

Why we discarded 96 findings

A candidate is discarded when a second pass cannot substantiate it from the site's own pages. The first pass proposes; the second pass tries to knock it down and keeps only what it cannot. Ninety-six candidates did not survive that — things like "formal home energy audits with diagnostic tools" on a site whose evidence supported the sales conversation but not the diagnostic capability.

We keep this number in public because the alternative is worse. Anything said about someone else's website is checkable by them in about a minute. Being wrong in front of a stranger costs more than being quiet, and a tool that reports a finding on 79% of the sites it touches is reporting its own eagerness, not their opportunity.

The obvious question if you were thinking of buying a report: does yours go through the same filter, and would you be paying for something that gets thrown away? Yes to the first, and that is the point. A paid report reads far more of your site than the 12 pages here, so it clears the read-depth gate that removed half this sample. But the verifier is the same one, and if it cannot substantiate a finding on your pages, the report says so instead of inventing one.

The read-depth gate, and what it does not do

We cap the crawl at 12 pages, so on a large site we are looking at a small slice. The gate compares pages read against pages discovered and drops any site under 10%. It removed 147 of the 300. On this corpus the median site advertised 31 pages, the mean was 152, and the largest carried 13,063 — which is why a flat page count would have been useless and a ratio was not.

What that gate does not do is separate true findings from false ones. On a hand-checked set of 12 sites, the median read rate was 19.4% among the findings that turned out to be wrong and 18.7% among the ones that were right. The lowest-coverage scan in that sample produced a correct finding, and the highest produced a false one. Read depth answers whether we are entitled to say a thing is missing. It says nothing about whether the thing we found is real. Those are different jobs and only the verifier does the second one.

The AI-readability half

Of the 208 sites where the readability checks returned something, 64 had at least one page with an empty or missing meta description, and 56 had at least one page with no single clear H1. That is 31% and 27% of that subset. These are counts anyone can confirm in their own page source in under a minute, which is the only reason they are worth printing.

They are also the least interesting thing in this dataset. A missing meta description is a small mechanical gap. A restoration company with 40 commercial jobs behind it and no commercial page is a different order of problem, and no amount of markup addresses it.

What this sample cannot support

Method

Each site was crawled to a 12-page cap, respecting robots.txt by user-agent group. A first pass proposed one adjacent line of business with the evidence quoted from the site's own pages; a second pass attempted to falsify it and suppressed the candidate when it could. Read depth was computed as pages read over pages discovered, with a 0.10 floor. Four deterministic readability checks ran over every page reached: crawler reach, entity schema presence, meta-description coverage, and one-H1-per-page. Those four involve no model call, so the same crawl produces the same rows every time.

The 0.10 floor came from the distribution on an earlier run of 108 sites, not from a hunch. We moved it anywhere between 0 and 0.40 and the result did not change, so the threshold is not what is doing the work here.

The run cost $73.32, about 24 cents a site. That figure is here because our own earlier estimate of 19 cents was low by a quarter, and anyone sizing a larger run off the old number would come up short.

Which parts of this a machine wrote

A model reads the pages and proposes the service line. A second pass tries to knock that proposal down, and 96 of them did not survive it. Everything in the funnel table and the readability counts is arithmetic over what the crawler fetched — no model touches those numbers, and the same crawl produces the same rows every time.

So the split is this: the counts are mechanical and you can check them in your own page source. The judgment about what a company could sell is a model's reading of that company's own words, quoted back so you can disagree with it. We say reports are AI-generated in the footer because they are, and because a business paying $495 should know which half is arithmetic and which half is a read.

Run it on your own site. Same scan, on your pages, in about twenty seconds. No email. It names one line your own site already evidences, and quotes the evidence back to you so you can check it.

Run the free read →

The paid read is $495 or $899 and arrives by email within 24 hours of payment (the Deeper Dive follows your questionnaire). No calls, and we never touch your live site.

The term list

Published so the cluster table above is reproducible. Each pattern is matched case-insensitively against the named service line only, over the 95 findings that cleared both gates.

ClusterTerms matchedn
Indoor air quality and duct workduct · indoor air · air quality · air seal · air balanc · air filtration · air purif18
Energy audits and weatherizationenergy audit · energy efficien · weatheriz · commissioning · home performance · energy assessment17
Commercial or property-manager workcommercial · property manager · multi-family · multi-residential · multifamily13
Plumbingplumbing · drain clean · water heater · leak detection11
Recurring maintenance and inspectionmaintenance plan/contract/agreement · preventive · preventative · inspection · service contract10
Fire, smoke and storm damagefire · smoke · storm · board-up · tarping10
Biohazard, hoarding and traumabiohazard · hoarding · trauma · sewage · decontamin · crime scene6
Reconstruction and rebuild after lossreconstruct · rebuild · remodel6
Matched no cluster—13

One correction worth recording: an earlier version of this page put fire, smoke and storm damage at 9. The pattern had been written as fire  with a trailing space, which missed a finding reading "HVAC system restoration and repair after fire/water damage." The correct count under the list above is 10.

More: all findings · what a Beachhead scan finds · how the method works