How AI engines decide an answer is local
Some prompts come back with nearby businesses and some don't. What OpenAI and Google document about location, and a simple test that shows how each engine treats your prompts.
Ask ChatGPT "who's a good accountant for a small bakery?" and you might get general advice about what to look for. Ask "who's a good accountant for a small bakery in Bristol?" and you'll probably get names. Somewhere between those two prompts the engine decided the answer should be local.
Nobody outside OpenAI or Google can see exactly how that decision gets made, and we're not going to pretend otherwise. What you can do is read what the vendors have published, then test your own prompts and watch what happens. That's more useful anyway, because the behavior that matters is the behavior on the prompts your buyers type.
What the vendors say
OpenAI's help page on searching the web with ChatGPT is fairly specific. ChatGPT may use an approximate location based on your IP address to give local results. Sharing your device location is optional and off by default. When ChatGPT sends a search to a partner provider, it typically rewrites the question into one or more targeted queries, and it may pass along that general location. OpenAI's own example: someone asks for "good restaurants near me", ChatGPT works out from the IP address that they're in the San Francisco area, and the search becomes "top restaurants San Francisco". If memory is on, saved details like where you live can shape the rewrite too.
The same page gives tips for when local results show the wrong area: put the city, neighborhood, or postal code in the question, and note that a VPN can change the location inferred from your IP.
Google's Search help page on location says Google estimates where you are from several sources: device location if you allow it, home and work addresses saved in your account, past activity, and your IP address. It says location helps show nearby results "even if you didn't include a location in your search", and that Google always estimates at least a general area. That page covers Google Search as a whole. Google's separate documentation on AI Overviews and AI Mode doesn't spell out how those features use location, so we don't claim to know.
Two things follow from this. A location can enter an answer even when the prompt doesn't name one. And the location the engine uses is the searcher's, which means the answer you see from your office isn't necessarily the answer your customers see.
Three kinds of prompts
When we sort a client's prompt set, we split it into three groups before testing anything.
Explicitly local prompts name the place: "best wedding photographer in Lisbon", "physio near Clapham Junction". You'd expect a local answer here, since the location is right there in the text.
Implicitly local prompts don't name a place, but the need is local by nature: "emergency plumber", "dentist open on Saturday", "where can I get my bike serviced today". These are the interesting ones. Whether the engine treats them as local depends on whether it decides to use the searcher's location.
Then there are prompts that aren't local at all, like "how does a root canal work". A dental practice may still want to appear for these, but location rarely enters the picture.
The boundary between the second and third group isn't fixed. It can differ by engine, by category, and from one week to the next. That's why we test instead of guessing.
The test: same prompt, with and without a location
The method is plain. For each prompt in a sample of fifteen or twenty, run three versions:
- The prompt with the city written into it.
- The prompt without the city, from a session located in that city.
- The prompt without the city, from a session located somewhere else.
Use a logged-out or clean session so saved memory and past activity don't skew things. For the third version, OpenAI's note about VPNs tells you what you need: change the network location and the IP-based estimate moves with it.
For each run, write down whether the answer names local businesses, which ones, in what order, and which sources it cites. Then repeat over a few days, because answers vary between runs.
Reading the results
If versions 1 and 2 come back with similar businesses, the engine is filling in the location for that prompt by itself. You need to measure that prompt from your customers' location, because typing the city in won't reproduce what a local searcher sees.
If version 2 is generic and version 1 is local, the engine treats the unqualified prompt as non-local. Track both forms, but the explicit one will carry most of the local signal.
If versions 2 and 3 name different businesses, the answer is location-sensitive. This is the case people miss most. A brand team checks from head office, sees itself named, and assumes every city sees the same.
If the cited sources change between cities, note which ones. A local news site in one city and a directory in another is a sign that the work to get named differs city by city too.
Doing this at a scale that holds up
A manual test is fine for building intuition. It breaks down quickly: dozens of prompts, several engines, a handful of cities, repeated daily.
We run it in Promptwatch. Each monitor carries a location and a language and runs its prompt panel daily per model, so the test becomes two or more monitors with the same prompts: one at country level, one set to the city. Country-level tracking is on every paid brand plan. State and city tracking starts on Business ($579/mo) and is on every agency plan. For prompts where the radius matters, local GEO/SEO targeting pins a monitor to exact coordinates, anywhere from 20 m to 5 km, so ChatGPT, Google AI Overviews, and Google AI Mode answer as if the question came from that spot. Other models fall back to country, state, or city. Coordinate targeting is on Business, Agency Scale, and Enterprise.
Comparing those monitors side by side shows which prompts the engines treat as local and which competitors win in each area. It also shows which sources the engines lean on in each place, and that's the list the rest of the local work starts from.
If you'd like us to run this test across your locations, write to hello@visiblyrank.com.