How we measured the leaks
A plain-language explanation of every signal, every source, and every limit behind this report. If you find a method here you would not defend, tell us and we will change it.
The scope
We measured 0 businesses across 0 trades () in the Wilmington metro, covering . The scan window ran from -- to --.
Every figure on this site comes from a dated snapshot taken on a specific day, not from a live check. When you see a number on a business page, it is what we observed on the date shown next to it. If a business fixed something the next day, the page will not reflect that until the next scan.
The AI scan
For each business we ran 32 prompts mixing emergency, research, comparison, and hybrid intent across 3 engines (openai, gemini, perplexity), 3 times each, for 72 calls per business. Web search was enabled on every call, so the model could retrieve current results. An appearance is counted when the business is named in the model’s response. The appearance rate is appearances divided by total calls.
This is not your ChatGPT ranking, and anyone who tells you they can measure that is guessing. We query the APIs. A person using the consumer app gets a different system prompt, different retrieval, and their own memory and personalization. What we can measure honestly is the appearance rate in model responses to these specific questions, through the API, with web search on, across this many runs. That is what this number is. Nothing more, and we would rather say so.
One run is noise
A single query tells you almost nothing. Ask the same question twice and the model may name a different company. That is not a bug; it is how retrieval-augmented generation works. So we report a rate — how often a company appeared across many calls — and we report a confidence interval around it.
We use the Wilson score interval, which stays between 0 and 1 even when the count of appearances is small. A normal approximation goes negative at small counts, which is absurd for a proportion — you cannot appear negative-zero percent of the time. The Wilson interval corrects for this by accounting for the binomial shape of the data, so the lower bound never drops below zero and the upper bound never exceeds one.
Passive detection only
We observe the following from the public-facing page source, without interacting with any system:
- Whether a contact form is present, and how many forms are on the page
- The form’s action type (whether it posts to an endpoint or uses a mailto link)
- The HTTP response code the form’s endpoint returns when requested
- The number of fields on the form
- Whether a
tel:link is present and whether it is above the fold - HTTPS validity and mobile viewport configuration
- Presence of a tracking pixel
- Whether a thank-you route is detectable
We never submit a test lead into anyone’s system. Putting fake enquiries into a contractor’s pipeline to prove a point about their pipeline would make us the problem we are describing. So everything here is observed from the outside, and it is honest about what that cannot tell us: an endpoint that responds correctly can still drop mail at the inbox, and we would not see that.
No weight given to llms.txt
We give llms.txt no weight at all. There is no evidence any major AI assistant reads it. It is sold constantly because it is easy to sell and easy to install, which is not the same as it working. If that changes we will change this page and say so.
The lines we do not cross
We do not scrape LinkedIn, G2, Trustpilot, or Reddit. We do not deanonymize site visitors. We do not purchase data with undocumented provenance. Every data source is either an official API with documented rate limits, or a human reading a public page and recording what they saw.
The Coastal Collaborative
Erin Cronin, The Coastal Collaborative, Wilmington NC. If you see something wrong, email erin@thecoastalcollaborative.com and we will recheck it.
Corrections
Every correction we make gets listed here with the date. Nothing gets quietly edited.