1001 SEO Media
All posts
By 1001 SEO MediaGEOlocalAI searchprocess

How we run city-level AI visibility for multi-location clients

Our process for tracking AI recommendations city by city for clients with several locations: which cities we pick, how we keep prompts comparable, what we report, and the platform we run it on.

Multi-location clients usually come to us with one AI visibility number. Someone ran a national audit, the score looked fine, and then the regional manager in one city said customers never mention finding them through ChatGPT. Both can be true. A national number averages cities together, and the city that's losing gets hidden by the two that are winning.

So for any client with more than one market, we track by city from the first month. This is how we set it up.

We pick cities with sales, not with a map

The client's location list is the starting point, not the answer. We ask sales or operations two questions: which cities bring in the most revenue, and which cities are you losing in or trying to grow? Those become the first five to eight cities. Everything else waits.

We also ask about cities where the client sells without a storefront. A home services firm based in one town often makes most of its money in three others. Location-anchored tools miss those markets entirely, which is one reason we don't run this work on a listings suite.

Same prompts, same wording, one variable

We run client programs on Promptwatch. A monitor there carries the location (country, optional state, optional city), the language, an optional persona and the models. We build one monitor per city and put the identical prompt set in each.

That sounds obvious. It's also where most homemade city tracking breaks. If the Leeds prompts say "physio" and the Manchester ones say "physiotherapist," you aren't comparing cities anymore. We freeze the wording before the first run and copy monitors rather than retyping them.

We keep the city name out of the prompt text, because the monitor already sets the location. We add one "near me" variant per topic, since that wording depends entirely on where the model thinks the user is.

A typical set is 15 to 20 prompts per city: mostly unbranded category questions, a few brand checks, and the two or three competitor comparisons the sales team hears most. We check search volume and difficulty on each prompt and drop the ones nobody asks.

We check the plan before we promise anything

City and state targeting in Promptwatch are included from the Business plan ($579/mo) and on every agency plan. We use the agency plans for client work, starting from Kick-off at $199/mo, which has unlimited projects and prompts and 10 seats. Essential and Professional track by country only, so if a client wants to run this in-house on a smaller plan, we tell them up front that they won't get the city split.

The response budget is the real limit. Fifteen prompts on three models, daily, in one city is about 1,350 responses a month. We size the city list to fit rather than thinning out the checks.

Two weeks of baseline, then one row per city

We don't report anything for the first two weeks. AI answers move day to day, and a single check makes noise look like news.

After that, the report has one row per city per engine. We never show a blended "AI visibility" figure across cities. When a client sees that they're the first recommendation in one city and missing in another, the conversation about where to spend gets much easier.

For the weak cities, we trace the cause

A low city score is a symptom. We follow it in three steps, all in the same workspace.

First, what did the answer cite? Citation analytics show the pages and domains behind each answer, including Reddit and YouTube. In local answers we look first for a regional directory or a local news piece the client isn't in.

Second, could AI crawlers read the client's page for that city? Agent Analytics logs visits from ChatGPTBot, PerplexityBot, ClaudeBot and others, with errors. A location page that is blocked or erroring can't be cited, and it's one of the cheapest fixes on the list when it turns up.

Third, when AI did send visitors, did they convert? Visitor analytics, set up through a small script or the GTM template, ties AI-referred visits to conversions.

Then we fix what we found

Directory gaps go into the citation work from our local SEO playbook. Crawl problems go to the developer. Thin or missing city pages get rewritten or written, with real local facts from the client: address, services offered at that site, who works there. We don't publish a page for a city where the client has nothing true to say.

Then the monitors keep running, and the next report shows whether the fix moved that city.

Why this setup

We've looked at the local suites and the geo-grid tools, and each does part of this well. What we need for a client program is our own prompts in any city, daily data, and the crawl and conversion data to explain a drop, without stitching three tools together. That combination is why Promptwatch is the platform we run this on. If you have several locations and want the city split in your reporting, email hello@1001seomedia.com with the cities that matter most.