A question about "optometry in Brooklyn" and a question about "optometry in Crown Heights" are different questions to an AI engine, and they get different answers. For decades, Google search treated Brooklyn as one market. ChatGPT, Perplexity, Gemini and Google AI Overviews answer at the scale the person asks, and people increasingly ask by neighbourhood.
That difference decides which business gets named. A site written for "Brooklyn" is a weak match for a question about Crown Heights, and the engine has better matches.
How Resolution Works in Retrieval
When someone asks an engine for a local answer, it looks for candidates that match the place in the question. It reads the address and areaServed in your LocalBusiness markup, your Google Business Profile, and your page text: whether you name Crown Heights or only say "Brooklyn".
If your address and your text both point at one neighbourhood, you are a clean match for questions about it. If your site only ever says "serving Brooklyn", you are a possible match for everything and a strong match for nothing. You may still appear, but by then the engine has usually named someone whose page says the neighbourhood outright. (For optometry specifically, see AI SEO for optometrists.)
What a Neighbourhood Question Actually Returns
In October we asked four engines, ChatGPT, Perplexity, Gemini and Claude, the same three questions: "Who's the best optometrist / physical therapist / chiropractor in Crown Heights, Brooklyn?" ChatGPT, Gemini and Claude were asked on 2 Oct 2026 and Perplexity on 4 Oct 2026, once each.
The 12 answers named 24 different practices and practitioners, and every answer named at least one. The engines rarely agreed. For physical therapy, one practice was named by all four engines. For optometry, one was named by three. For chiropractic, none was named by more than two, and five of the six pairs of engines had no chiropractor in common.
We then asked the same three questions with "in Brooklyn" in place of the neighbourhood. Those 12 answers named 42 different practices and practitioners, and only 3 were named by more than one engine.
Two things follow. A neighbourhood question narrows the field: 24 names instead of 42. And there is no single list of "the" answer to win. Each engine builds its own from what it can find. The full breakdown is on the Brooklyn page and the Crown Heights page.
Neighbourhood Edges Are Fuzzy
Six of the 24 Crown Heights names were placed by the engine itself on a border or in a neighbouring area: Fort Greene, Park Slope, Prospect Heights, Flatbush, Clinton Hill. Engines don't hold a precise map of where Crown Heights ends. They work from what pages say about themselves.
That cuts both ways. Most businesses serve more than one neighbourhood: a plumber in Crown Heights also works in Prospect Heights. But if your markup lists five neighbourhoods and your page text never names any of them, the engine has no clear signal about which questions you are the answer to.
The fix is to say plainly where you are and which nearby areas you serve, consistently, in your page text, your markup and your Business Profile. Name the neighbourhood you sit in first. Then name the neighbours you genuinely serve. For the markup side, see service-area schema.
The Corpus Problem
Engines also know more about some neighbourhoods than others. A neighbourhood with years of food coverage, "best of Brooklyn" lists and city press has a deep pool of published material for an engine to draw on. A neighbourhood with less coverage has a thinner pool, and fewer third-party pages that describe its businesses in quotable terms.
That has a practical consequence. In a thinly covered neighbourhood, your own site carries more of the weight, because there is less else to read. The Crown Heights answers show it: practice websites were among the sources of 11 of the 12 answers, and Zocdoc among the sources of 10.
Try it yourself. Ask Perplexity "best coffee in Williamsburg", then "best coffee in Crown Heights", and compare the length and detail of the two answers. Then ask the question for your own category in your own neighbourhood. The comparison tells you how much the engine has to work with where you are.
Resolution Changes Who Competes Against You
In borough-scale search you competed with every business of your type in Brooklyn. In a neighbourhood answer you compete with the handful the engine can find and place in that neighbourhood. A practice with clear, specific pages can be named ahead of one with more reviews whose site never says where it is.
You can see this by asking from different places. Ask "where do I get my eyes checked" with a VPN set to a Crown Heights location and note which businesses appear. Switch to Williamsburg and ask again. The answer usually changes.
How to Audit Your Density and Respond
Search Google Maps for your service type in your neighbourhood and count the results on the first page. If there are more than five, the neighbourhood is crowded for your category. If there are fewer than three, it is sparse.
In a crowded neighbourhood, a page that only states your name, address and phone gives the engine nothing to tell you apart from the rest. Do this:
- Fill in the markup fields that separate you: the most specific business type,
areaServed, opening hours, and each service you offer. - Write about the specific services or conditions you handle. Not "we do eye exams", but "we manage presbyopia" and "we fit contacts for astigmatism". That is the language specific questions use.
- Check that your Business Profile, Yelp listing and site all give the same name, address, phone and hours.
- If you travel to clients, build pages for the neighbourhoods you actually serve. See hyperlocal neighbourhood pages.
What This Means
Every page should say which neighbourhood it is about. Not "we serve Brooklyn", not "all five boroughs", but "Crown Heights optometry" or "based in Park Slope, serving Windsor Terrace and Gowanus". That tells the engine which questions you answer first, and it is the one change on this list that costs nothing.