Research method

How the home-service visibility study was done

By Youssef Hodaigui, Mindflow Marketing · Method as used October 3–18, 2026

This page explains how every Mindflow research figure on this site was collected and counted: the three lists behind the main study, the checks on each business, and the review, website, source and search-demand figures on our city, trade and service pages. If a number on our site says "our research", this is where it comes from.

01

What did the study cover?

What we comparedThe Google Maps top three, Google's local pack and the businesses ChatGPT named, for one trade in one city at a time
Where50 US metros, chosen by Mindflow, not drawn at random
TradesElectrical, garage door, HVAC, pest control, plumbing, remodeling, roofing and water damage
WhenOctober 3–17, 2026 (UTC). A smaller check of 7 more trades in 5 metros ran October 17–18.
How much400 trade-and-city checks and 5,991 business records (one for each business collected in a check; 978 were names ChatGPT gave that we couldn't tie to a single Google listing). The smaller check added 35 checks and 525 records.
ToolsDataForSEO for Google Maps and Google search results; the OpenAI API with web search for ChatGPT's answers (the model returned was `gpt-5-2025-08-07` in every check)
Not coveredThe ChatGPT app, other AI tools, and anything about why a business was or wasn't named
02

Why these 50 metros and 8 trades?

We chose 50 US metros, from the largest, such as New York and Los Angeles, to mid-size markets such as Augusta and Knoxville, and 8 common home-service trades. The choice was ours, so the results describe these markets, not every US market. A metro is the federal government's list of counties for that metropolitan area (July 2023 version), so a suburb inside that list counts as the metro.

A second, smaller check covered 7 more trades (movers, general contractors, foundation repair, carpet cleaning, junk removal, landscaping and window replacement) in Atlanta, Austin, Charlotte, Houston and San Antonio. Its counts are always reported separately and never added to the 50-metro totals.

03

How one trade-and-city check was collected

Each check covered one trade in one metro, was collected within one day (UTC), and produced three lists: the Google Maps top three, the local pack and the businesses ChatGPT named in five answers. Up to 15 of those businesses got full records. Step by step:

  1. Google Maps top three. We searched Google Maps for the trade (for example "plumber") at a fixed map point in the city, at city-level zoom, and kept the first three listings.
  2. Local pack. We searched Google for the service and the city, and kept the three businesses in the local pack on that results page.
  3. ChatGPT's answers. We asked the OpenAI API, with web search turned on, five separate times: "Which [trade] companies in [City], [full state name] should a homeowner call? Name the companies and the sources."
  4. The businesses we collected. We collected full records for up to 15 businesses per check: the Maps top three, then the local pack, then the businesses ChatGPT named, in the order they first appeared. Names beyond 15 are still counted in the number of businesses named, but we didn't collect further records for them.
04

How names were matched to businesses

An AI answer gives a name, not a listing, so each name had to be tied to one Google listing before it could count. Two entries count as the same business when they share a Google listing ID; when the answer cites a website that belongs to exactly one listing in the metro; or when the names are identical (ignoring LLC, Inc. and Co.) and the listing is in the same city. Websites of national franchises count only when the listing is inside the metro.

A name we couldn't tie to a single listing stays "unresolved". Chains with several same-name listings in one metro are a common example. Unresolved names are never guessed into a match, and we note them beside any count they affect.

Edge cases were decided in written rulings, kept in a rulings file of 164 numbered notes made during and just after collection, for example removing a listing in the wrong trade or outside the metro. Each check keeps the rulings that applied when it was closed. We didn't re-run closed checks under later rules, so comparisons across metros mix slightly different rule versions.

05

The four counts we report

CountWhat it meansOut of, per check
Maps top three namedMaps top-three listings named in at least one of the five answers3, or fewer where a ruling removed a listing
Maps top three in the local packMaps top-three listings that also appeared in the local pack3
Local pack namedLocal pack listings named in at least one of the five answers3
On all three listsBusinesses in the Maps top three, in the local pack and namedA count only

Metro and trade totals add up the checks, so a metro's figures are usually out of 24 (8 trades × 3) and a trade's out of 150 (50 metros × 3).

06

Why we report "N of D"

Every figure is a count with its base, such as "352 of 1,183", not a percentage. Rulings removed some listings, so the bases differ from table to table, and a percentage would hide that. Counts also keep small samples honest: one city's 24 listings shouldn't read like a national rate. For the same reason, we don't publish averages of these counts or rank cities against each other.

07

What else did we check on each business?

Beyond the three lists, each business with a full record got its own checks, so we could see how it looks when a homeowner searches for it by name. These checks feed the review, website and source figures on our other pages. For each one we saved:

  • Google reviews: the review total from Maps and the newest reviews (up to 100), with their dates and star ratings.
  • A brand search: a Google search for the business name, including whether an AI Overview appeared.
  • Two "is this company legit?" answers: the OpenAI API, with web search, asked twice: "A friend recommended [Business] in [City, ST]. What can you tell me about them? Are they legit and good to hire?"
  • The website: a mobile performance score and a crawl of up to 100 pages.
  • Labels on the two answers: one model pass (the same OpenAI model, web search off) marked whether each answer gave a reason to doubt the business, said it couldn't find it, or described a different company. These labels are used inside our analysis; we don't publish them as findings.
08

How the review figures are calculated

Review totals come from each business's Google Maps listing. "New reviews in the previous 90 days" is counted from the newest 100 reviews, back from the day we collected that business. Review figures are medians across the businesses in a city or trade, and they come from the saved files as collected.

That cap matters. For 535 high-volume businesses, all 100 of the newest reviews fell inside 90 days, so their true 90-day count is higher than we can see. Our city pages report the 90-day median only among businesses whose recent reviews we could count in full. That leaves the capped businesses out and makes those city medians lower than they'd be for the whole group. Our trade pages include every business, so the two sets of figures aren't directly comparable. We use medians, not averages, because a few businesses with thousands of reviews would skew an average. Detroit's figures leave out eight listings in Windsor, Ontario.

09

How the website figures are calculated

Website figures come from one saved homepage per business (4,433 homepages matched to their business) and a crawl of up to 100 pages per site (5,072 sites returned a crawl). Features such as a booking button or a financing offer were found by matching text, which can miss some and over-count others: "book now" counts as a booking signal even without a scheduler. 2,689 sites reached the 100-page limit, so page counts for large sites are floors.

These figures come from the saved files as collected, before the rulings that later adjusted listings in 23 metros, and we say so wherever we use them.

10

How the source figures are calculated

For what ChatGPT checks before recommending a contractor, we counted only the links ChatGPT attached to its answer, not every page its search opened. Each link was reduced to its website and placed in a fixed group, such as BBB, a license or registration record, or the business's own website. "Answers citing" means the number of answers that linked to a group at least once. One answer can cite several groups. A citation shows what an answer pointed to, not how much weight the model gave it. The government and licensing group counts any .gov or .us website plus a fixed list of state license boards and business-registry sites, so it can include government pages that aren't license records.

11

Where the search-demand figures come from

Search-volume figures on our trade and city pages are Google Ads estimates retrieved through DataForSEO, averaged by month over the period stated beside each figure. They estimate how often people search. They aren't a count of customers, calls or booked work.

12

What can't these figures tell you?

  • Chosen, not random. The 50 metros and 8 trades were selected by Mindflow.
  • The API, not the app. "ChatGPT" means the OpenAI API with web search. The ChatGPT app may answer differently.
  • Five answers per check. "Named" means named at least once in five; it isn't a stable ranking.
  • One window. Everything was collected October 3–18, 2026. Google results and AI answers change.
  • Association, not cause. Nothing here shows why a business was named, ranked or reviewed.
  • Rule versions. Matching rules were refined during collection; each check keeps the rules it closed under.
  • Saved-file figures. Business-level figures (reviews, websites) come from the saved files before 23 metros' later rulings.
  • Text matching. Website features were detected by matching text, not by a person visiting each site.
13

Who paid for the study, and what did it cost?

Mindflow paid for the collection itself. The OpenAI usage for the 50-metro study is estimated at $2,765 from logged usage, and Google data from DataForSEO cost $138. The smaller 5-metro check added about $242 and $13. Mindflow's own clients and prospects were excluded by name before collection.

AI tools were part of the method: they produced the answers being measured and the labels described above. How we use AI elsewhere is on our AI disclosure page.

14

Can I get the data or report an error?

The trade-and-metro counts are available as CSV files, with no business names or identifiers: counts for each trade in each metro and counts for each metro. You can reuse them with credit and a link (CC BY 4.0). Business-level records stay private because they identify real companies.

If you find an error, email youssef@mindflowmarketing.com. Our editorial standards explain how corrections are made.

Want to see where your own business stands? The free AI Visibility Review shows your map position for three core searches in your area and what Google's AI and ChatGPT say for two searches, with the three fixes we'd make first.