Spurlock Studios
Contact
Share LinkedIn X
A lime beam hitting a small brass nameplate. Thesis: LOCAL BUSINESS AEO GETTING CITED.

Local AEO for service businesses is the work of getting named when someone asks ChatGPT or a Google AI Overview for a pro near them — not only when they open the map pack. Maps SEO remains mandatory. It is no longer the whole game. Buyers ask full-sentence questions (“Who installs heat pumps in Greenville with same-week service?”) and generative systems answer with shortlists.

This spoke applies the Answer Engine Optimization playbook to local and multi-location operators. I have been SEO certified since 2021. The local version of that work is still a fact packet you can defend: identical NAP, a Google Business Profile that matches the door, and pages that state services and cities in plain sentences.

The short answer

  • Lock one public name, one address format, one phone, and one hours grid, then paste that NAP onto the site, Google Business Profile, and every listing you still control
  • Treat Maps and AI answers as two surfaces that share evidence. Winning the pack does not mean chat will name you
  • Service-area businesses hide the street address on Google and say so on the site. Do not publish a walk-in pin you do not have
  • Write service + city pages only for territory sales will accept. Thin doorway pages teach the wrong coverage
  • Ask for reviews that name the job and the city. Re-run a local prompt panel every month and log what the answers actually said

What is local AEO, and how is it different from Maps SEO?

Local AEO is entity and evidence work so a model can recommend you for a geographic buyer question. Maps SEO is still the Google local-pack and Maps ranking problem. You need both. One screenshot of the pack is not a citation program.

Google is explicit about how the pack works. Local results are mainly based on relevance, distance, and prominence (how well-known the place is, including links and reviews). There is no way to request or pay for a better local ranking (Google Business Profile: tips to improve local ranking). AI Overviews and AI Mode sit on top of Search. They fan out related queries, pull snippet-eligible pages, and tell you to keep Business Profile information current (Google Search Central: AI features; Google: optimizing for generative AI features).

SurfaceWhat the buyer seesWhat usually feeds itWhat “winning” looks like
Google Maps / local packPins, hours, call, directionsVerified Business Profile, distance, reviews, relevanceYou appear for the category + area query
Classic local blue linksCity or service pages in web resultsIndexed pages that match the queryThe page ranks and converts
AI Overview / AI ModeA shortlist or a “call this shop” sentenceIndexed pages plus profile facts Google already storesYou are named, with the right city and service
Chat with searchA shortlist with or without linksWhatever the crawl and retrieval can quoteYou are named, and the facts match the door

If you only optimize photo counts on Google Business Profile and ignore answer-shaped pages, chat shortlists will keep favoring competitors with clearer copy.

  • You can state the primary local question in one sentence
  • You know whether you are a storefront, a service-area business, or a hybrid
  • You have a written NAP card, not three versions in three tools
  • You have a prompt list that includes city, neighborhood, and emergency shapes

Maps rank is proximity plus proof. AI answers are compression plus proof. Same facts. Different layout.

Where do local AI answers get their evidence?

They sample the public record and compress a recommendation. Google says Business Profile information is compiled from the official website, licensed third-party data, user contributions (including owners who claim the profile), and Google’s own interactions with the place (Google: how it sources Business Profile info). That is why a leftover directory row still shows up in an answer two years after you moved.

Evidence classExamplesWhat a conflict does
Owned profileGoogle Business Profile name, address or service area, phone, hours, categories, servicesWrong category or hidden-vs-shown address teaches the wrong business type
Owned pagesLocation pages, service-area pages, FAQ, footer NAPThin or spun city copy looks like doorway spam and gets ignored
Structured dataLocalBusiness JSON-LD that matches visible textMarkup that disagrees with the page is a conflict you authored
Reviews and Q&AGoogle reviews, owner replies, claimed Q&A“Great guys!!!!” teaches nothing a model can quote
CorroborationChambers, local press, partner “vendors” pages, trade associationsSilence here makes the profile the only witness
ResidueOld directories, PDFs, event pages, call-tracking numbers left as primaryThe old phone becomes the answer

Generative tools do not hold a separate “local truth” database you can ticket. They read the same mess Maps already reads, then they write a sentence. Conflicts (wrong phone, old address, mismatched categories) push you out — or worse, they keep you in with the wrong facts.

Google’s Places APIs now expose AI-written place and review summaries built from that same place record (Google Maps Platform: AI-powered place summaries). If the underlying profile is sloppy, the summary inherits the slop.

  1. List every URL that currently states your name, address or service area, phone, and hours
  2. Mark each row owned, claimable, or residue
  3. Fix owned first. Claim the claimable. Outcompete residue you cannot edit
  4. Re-test the same local prompts after the owned layer matches

The public record is the patient. The model is the messenger.

Why do NAP mismatches knock you out of Maps and AI answers?

NAP is name, address, and phone. Local AEO fails here more often than it fails on “content strategy.” Google’s representation rules are stricter than “close enough.” The public name should match real-world signage and stationery, not a keyword-stuffed slogan. The address should be a real location customers can use — not a P.O. box or a remote mailbox. The phone should connect to that location, stay under the business’s control, and prefer a local line over a central call-center helpline (Google Business Profile: representation guidelines; Google: manage your business address).

Incomplete or inaccurate profile info is also how Google describes weaker local visibility (Google: tips to improve local ranking). The same incomplete card is what AI Overviews are told to keep current (Google Search Central: AI features).

NAP fieldCanonical ruleResidue that keeps teaching the error
NameOne legal / public name, same punctuation and suffixOld DBA, “LLC” on some rows, “Best HVAC Greenville” glued to the name
AddressOne street format, one suite notation, one city/state/ZIP — or a hidden address plus service areaPrior shop; “Ste” vs “Suite”; a pin on a coworking lobby you do not staff
PhoneOne primary line per location, one written formatCall-tracking on GBP, cell in the footer, 1-800 on ads
URLOne canonical host (www or apex, https) that represents that locationFacebook-as-website, a national homepage for a local shop, a dead builder subdomain
HoursOne weekly grid plus holiday exceptionsSaturday hours left over from a promotion; “24/7” on the site and 8–5 on Maps

Humans forgive “Street” vs “St.” Aggregators and models often do not collapse those rows into one entity. Pick a format and paste it. Do not retype it from memory.

  • One written NAP card exists (name, address lines or “service area only,” phone, URL, hours)
  • Footer, Contact, About, and location pages paste from that card
  • Google Business Profile matches the card after you edit the profile
  • Call-tracking numbers are labeled as tracking, not as the public primary
  • Old addresses appear only on a dated “we moved” note, never as current

A wrong suite on a legacy directory is not a branding nit. It is the next model’s evidence. The cleanup loop for leftover brand facts is in avoiding AI-hallucinated brand facts.

Storefront, service-area, or hybrid — which profile should you run?

Pick the type that matches how customers actually meet you. Google represents service businesses as a service-area business (you visit them; they do not visit you) or a hybrid (they can come to you and you also travel) (Google: Business Profile for service businesses). If you do not serve customers at the address, hide it and list the service area. If you hide the address and skip the service area, Google picks a local area for you (Google: manage your business address; Google: manage service areas).

TypeWhat is true in the real worldWhat Google wants on the profileWhat the site must say
StorefrontCustomers walk in during stated hours; permanent signageShow the street address; pin the doorAddress, hours, parking, how to find you
Service-area business (SAB)You travel to them; no public walk-inHide the address; set cities or postal codes you actually serveCities served, travel fees, where you are based — no fake lobby
HybridShop plus on-site work (garage plus roadside, showroom plus install)Show the address and add a service areaBoth the visit path and the travel path, with different hours if they differ

Google’s service-area rules are specific. You cannot set a radius and then edit it later if you already stored it that way — you specify cities, postal codes, or other area types. Service-area edits can take up to 48 hours. A location without permanent on-site signage is not eligible as a storefront (Google: manage service areas; Google: representation guidelines).

AI answers that invent a fake street address are a common SAB failure. They happen when the site still publishes a “visit us at” block, a Maps embed of a house, or schema with a streetAddress you told Google to hide.

  1. Write one sentence: “Customers meet us at [address]” or “We come to you in [areas]; we do not have a public counter”
  2. Set the profile to match that sentence
  3. Remove the opposite sentence from the site, schema, and ads
  4. Re-run “Where is [Brand] located?” and “[Service] near [city]”

A pin you cannot staff is not “more visibility.” It is a one-star review waiting for Saturday.

Which Google Business Profile category should you pick?

Pick the primary category that matches the money service, then add secondaries that are true. Google says the primary category should be the most specific description of what the business is — “Nail salon,” not “Salon” — and that you should not use categories as keywords or to describe every product on the shelf. Additional categories cover real departments, not a wish list. Changing a category can trigger re-verification. Categories affect local ranking (Google: manage your business category; Google: edit your Business Profile).

SituationPrimary categorySecondary that is honestSecondary that will hurt you
HVAC shop that sometimes pulls a permit for a disconnectHVAC contractorAir conditioning contractor, if that is real workElectrician, if you are not one
Plumber who also snakes drainsPlumberDrain cleaning service, if you sell itGeneral contractor
Auto shop with a wreckerAuto repair shopTowing service, if you run the truckCar dealer
Multi-location brandSame primary across locationsLocation-true extrasA different primary in each city for “coverage”

Google also says all locations of a business must share a primary category (Google: edit your Business Profile). Franchise marketing that sets “Emergency service” as a category because the ad account wants it will win the wrong prompts and lose trust.

Specialized prompts (“commercial refrigeration [city]”) need specialized page proof. A generalist homepage loses to a specialist in a generative shortlist even when the specialist is smaller.

  • Primary category matches the service that pays the bills
  • Every secondary is work you will accept on a Thursday
  • Site H1s and GBP services use the same nouns as the categories
  • You did not add a category to “rank for” a neighbor’s business type

Category stuffing is keyword stuffing with a dropdown. Models notice. Customers notice faster.

How should hours and emergency claims be written so AI does not invent 24/7?

If you offer emergency service, say so with hours and fees. If you do not, say so. AI answers that invent 24/7 availability create angry callers and one-star reviews. Accuracy is brand safety.

Google lets you set main hours, special hours for holidays or short closures, and “more hours” for a specific service such as delivery or after-hours dispatch (Google: edit your business hours; Google: edit your Business Profile). The site, the profile, and the phone script have to recite the same grid.

ClaimPublish it whenDo not publish it when
Open Saturday 8–12Someone answers the phone or the shop is staffedThe van is parked and voicemail is full
Emergency / after-hoursYou have a real on-call rotation and a stated fee“We try to get back to you”
24/7You actually dispatch at 2 a.m.You mean “we have a voicemail box”
Same-week serviceDispatch can keep that promise in seasonYou mean “sometimes in February”
Closed holidaysYou set special hours before the week ofYou forget and let last year’s hours linger
  1. Write the weekly grid the office will honor next week
  2. Enter it on Google Business Profile, including special hours you already know
  3. Put the same grid on Contact and every location page
  4. Put emergency rules in one FAQ sentence: hours, fee, what qualifies
  5. Remove “24/7” from ads, trucks, and old landing pages if the grid is 8–5

Holiday hours left live in March are how a model still says you are open on Sunday. Special hours exist so you do not have to lie in the main grid.

How do you make GBP services match the site?

The services list on the profile and the services list on the site should be the same nouns, in the same scope. Google’s edit-profile flow is where hours, categories, photos, and Q&A live; services belong in that same accuracy pass (Google: edit your Business Profile; Google: get started with Business Profile).

Site saysProfile should sayFailure if they disagree
Heat pump install, not “green HVAC solutions”Heat pump installationAI quotes the vague phrase and skips you for the specific job
Residential onlyResidential services; no commercial categoryYou win commercial prompts you will decline
Service area: Greenville CountyService area cities that match that countyA leftover “Columbia” page keeps you in the wrong shortlist
No refrigerationNo refrigeration service rowAn old menu item still teaches the specialty

Do not invent a service row to occupy a prompt. Occupying a prompt you cannot fulfill is how review damage starts.

  • Export or screenshot the GBP services list
  • Diff it against the site nav and the top service pages
  • Delete profile services you retired
  • Add profile services you actually sell and already describe on a page
  • Use the same words a dispatcher would use on the phone

Staff nicknames for services leak into reviews. Give CSRs the official names on a one-pager so the public record stays one language.

What review language actually helps local AI answers?

Reviews that mention the real service and the city become retrieval fuel. Star-only praise does not. Google treats reviews as a prominence signal for local ranking and tells owners to reply once the profile is verified. Replies are reviewed against content policies and usually post in about ten minutes, though a review can take up to 30 days. Customers can edit after you reply (Google: manage customer reviews; Google: tips to improve local ranking).

Review textWhat a human hearsWhat a model can quote
“Replaced our two rooftop units at the Greenville store and had us back open before Friday’s rush.”Proof and a timelineService + city + commercial context
“Same-day water heater in Simpsonville. Licensed, showed up when they said.”TrustService + city + license mention
“Awesome company!!!!!”WarmthAlmost nothing
Keyword-stuffed “best HVAC Greenville heat pump install near me”FakeStuffing. Humans and models both flinch

Train CSRs and techs to ask for specifics: service performed, location, timeline. Never script unnatural keyword strings.

Owner replies should reinforce the true service and city without stuffing. “Glad we got the Greenville store’s RTUs swapped before Friday” is a fact. “Thanks for choosing the best HVAC in the Upstate for your heat pump furnace AC mini split” is an ad.

  • Review ask includes “what we did” and “which location or city”
  • Someone replies to new reviews on a set cadence
  • Replies use official service names
  • You flag policy-violating reviews instead of arguing in public
  • You do not buy reviews or write them for the customer

A review you wrote for them is not proof. It is a future trust problem with your name on it.

Do photos and Q&A matter if the model is reading text?

Yes, because the profile is one object. Photos teach humans and, increasingly, multimodal systems what the work looks like. Q&A is literal question-and-answer text sitting on the same entity. Google reviews uploads (pending / not approved / live), notes that logo and cover depend on a complete profile (name, valid location, categories, phone, hours), and says owner-managers can answer Q&A where the feature exists (Google: manage photos and videos; Google: edit your Business Profile).

AssetDo thisDo not do this
LogoReal mark, readable at small sizeA keyword-stuffed wordmark that is not on the truck
CoverA real job or a real storefrontStock smiling headsets
Job photosReal work, customer permission, city-trueAnother franchisee’s warehouse passed off as yours
Q&AClaim it. Answer “Do you serve [neighborhood]?” with the truthLeave “Are you open 24/7?” unanswered so a stranger fills it

Even text-only answers benefit when pages describe tangible proof (“EPA 608 techs on staff,” “stocked vans for brand-name parts”). Pair that with GBP photos of real jobs. Stock photography teaches nothing distinctive.

  1. Upload this week’s real jobs, not a batch from 2019
  2. Answer every open Q&A in the owner’s voice
  3. Add the three questions locals actually ask if they are missing
  4. Match those answers to the on-site FAQ so the two surfaces do not argue

An unanswered “Do you offer emergency service?” is an invitation for a stranger — or a model — to guess.

What on-site service-area pages should you publish?

One page per meaningful city or service combo you actually serve. Not a hundred spun URLs. Google’s AI-features guidance is still people-first pages, important content in text, and structured data that matches the visible page (Google Search Central: AI features; Google: succeeding in AI search). Doorway spam fails that bar and fails a human who lands on paragraph three.

Include, in plain sentences:

  • Who you serve in that area
  • Specific services
  • Response-time or scheduling realities you can keep
  • License and insurance statements if they are relevant
  • NAP or explicit service-area language plus a CTA
  • FAQs locals actually ask
Page elementHonest versionDoorway version
H1“Heat pump installation in Greenville, SC”“Best HVAC near me Greenville Anderson Spartanburg”
LeadWhat you do, who you serve, what a visit looks likeThree synonyms for “we serve the Upstate”
ScopeIncluded / not included“All your HVAC needs”
ProofLicense number, brands, a real job note“Trusted by thousands”
CitiesThe list dispatch will acceptEvery city inside a 90-minute radius

Service-page outline you can reuse

  1. H1 with service + city (honest)
  2. Two-paragraph lead: what you do, who you serve, response expectations
  3. Scope list (included / not included)
  4. Proof (licenses, brands serviced, project notes)
  5. Process steps (book → diagnose → quote → perform)
  6. Pricing posture (ranges or “why we quote onsite”)
  7. Neighborhoods and cities served
  8. FAQ
  9. NAP + CTA

That outline compresses cleanly for AI and converts humans who skip to the middle.

  • Every city on the page is a city sales will book
  • The page states at least one thing a competitor’s spun page cannot copy (license, brand, hours, fee)
  • The FAQ uses spoken shapes: “Do you serve [neighborhood]?” “Are you licensed in [state]?”
  • You do not need a separate “voice SEO” project. You need FAQ realism

If sales does not accept jobs in a city, do not publish a city page to win AI citations. Short-term inclusion creates long-term review damage. Align territory maps with the page inventory monthly.

How should LocalBusiness schema match the page and the profile?

Markup copies the page. It does not outvote the page. Google’s LocalBusiness structured data is how you describe hours, address, departments, and related facts for Search and Maps knowledge panels. Use the most specific subtype you can (HVACBusiness beats generic LocalBusiness when it is true). Required-quality fields start with name and address; recommended fields include telephone, url, geo, and openingHoursSpecification. The location url must be a working link for that location (Google Search Central: LocalBusiness; schema.org/LocalBusiness).

Google’s AI-features checklist repeats the tripwire: structured data must match the visible text (Google Search Central: AI features). A telephone in JSON-LD that is not on the page is a conflict you authored.

{
  "@context": "https://schema.org",
  "@type": "HVACBusiness",
  "name": "Example Heat & Air",
  "url": "https://www.example.com/greenville-heat-pump-installation",
  "telephone": "+1-555-0100",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 Example Street",
    "addressLocality": "Greenville",
    "addressRegion": "SC",
    "postalCode": "29601",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "17:00"
    }
  ],
  "areaServed": ["Greenville County", "Simpsonville", "Mauldin"]
}

If you are a service-area business with a hidden street address, do not publish a public streetAddress you told Google to hide. State areaServed in visible copy and in markup. A storefront should show the same street on the page, in schema, and on the profile.

FieldStorefrontSAB
addressFull street, matches GBPOnly what you are willing to show; do not invent a lobby
areaServedOptional extraRequired in practice — list the cities on the page
openingHoursSpecificationDoor hoursDispatch / office hours you will honor
urlThat location’s pageThat service-area page, not a national homepage
geoPin of the doorDo not drop a residential pin you asked Google to hide

Validate the JSON-LD. Then read the page out loud. If the two disagree, the markup is wrong.

How do Maps pins and embeds fit into the public record?

The pin is a public claim. Google lets you enter a complete street address, include suite and floor data, and pin the map when the geocoder cannot find you. Landmark-only addresses (“across from the park”) are the wrong pattern. The address on the profile is public unless you are a service-area business and you turn that display off (Google: manage your business address).

Embed / pin choiceUse it whenFailure mode
GBP pin on the doorStorefront or hybrid with signagePin in the parking lot of a different tenant
Site embed of the GBP placeYou want the same place ID on the pageEmbed of a generic city, not your place
No public pinSAB; you hid the addressSite embed of the owner’s house
“Get directions” to a landmarkLast-resort regions without a street numberReplaces a real address you already have
  1. Open the business on Google Maps as a customer, not as the owner dashboard
  2. Confirm the pin, the hours, the phone, and the website
  3. Confirm the site embed points at that same place
  4. If you are an SAB, confirm the address is hidden and the service area is the list you meant

A Maps embed of the wrong suite is a second NAP. Treat it like a listing.

How do multi-location and franchise brands keep entities from colliding?

Each location needs a clear entity relationship to the parent brand. Do not reuse one phone number everywhere if numbers differ in the real world. Corporate can own the parent Organization; locations own LocalBusiness pages. Conflict between the two is a common hallucination source.

Google wants a complete, accurate profile per place, a shared primary category across locations of the same business, and a website URL that represents that individual location (Google: representation guidelines; Google: edit your Business Profile; Google Search Central: LocalBusiness).

LayerCorporate ownsLocation owns
NameBrand rules (punctuation, suffix, “of City” pattern)The string on that door
PhoneFormatting rulesThe line that rings that shop
HoursHoliday calendar templateThe grid that shop will honor
ServicesThe national menuThe subset that shop can perform
PhotosBrand standardsPhotos from that site
ReviewsReply voice guideThe actual reply, on time

Franchise and roll-up brands: publish a fact packet per location plus brand-level rules so AI does not invent hours. National voice that a location cannot fulfill is how Saturday callers arrive at a locked door.

  • Every location has its own page and its own profile
  • No shared tracking number set as the public primary on five shops
  • Schema url points at that location, not the national homepage
  • A location that closed has a dated closed notice, not a zombie profile

Closed-but-listed locations are identity landmines. So are unclaimed listings with the wrong category. Claim them even if you never post updates.

Which leftover listings still teach the old phone number?

Build a tracking sheet of the top local directories and data aggregators that matter in your vertical. Columns: URL, NAP snapshot, category, last verified, fix status. Wrong phone numbers on legacy directories still feed AI answers years later because Google and everyone else still crawl them (Google: how it sources Business Profile info).

Prioritize cleanup where:

  • The directory ranks for your brand name
  • The directory appears in your AI citation log
  • The listing is claimed and editable
PriorityExampleAction this week
P0GBP, Apple Business Connect, Bing Places, the site footerMake them identical
P1Listings that rank for the brand query or show up in AI citationsClaim and correct
P2Vertical directories (home-services, medical, legal)Correct or request removal
P3Chambers, sponsors, “preferred vendor” pagesEmail the webmaster with the NAP card
ParkedUneditable scrapersOutcompete with owned pages; do not obsess

Unclaimed listings with wrong categories are identity landmines — claim them even if you never post updates.

  1. Dump the top 15–20 URLs into the sheet
  2. Fix the worst three mismatches the same day
  3. Note the date. Re-check those three in 14 days
  4. Do not declare the corpus clean because GBP looks right

GBP is the front door. It is not the whole house.

How do you run a local prompt panel without vanity screenshots?

Log citations the way you would log any other AEO program. Google now gives site owners a Generative AI performance view in Search Console for impressions inside AI Overviews, AI Mode, and related surfaces (Google Search Central Blog: generative AI performance reports). That is useful. It is not a substitute for reading the sentence an answer engine said about your shop.

Local prompt shapes worth running monthly:

  • “Best [service] in [city]”
  • “[Service] near [neighborhood]”
  • “Emergency [service] [city] open Saturday”
  • “Who does [specialized job] in [county]?”
  • “Is [Your Brand] good for [service]?”
  • “Where is [Your Brand] located?”
  • “Does [Your Brand] serve [out-of-territory city]?”
MetricWhat it tells youWhat it does not tell you
Map-pack screenshotYou are visible on Maps for that queryChat named you, or named you correctly
Search Console generative AI impressionsGoogle used a URL in an AI featureThe answer had the right hours and cities
GBP calls and direction requestsHumans acted on the profileThe model recites your facts
City-page form fillsThe page convertsYou are in the shortlist
Prompt-panel citation + accuracyWhether you were named, and whether the facts were rightTomorrow’s run

Track:

  • Local prompt citation rate (named / not named)
  • Accuracy of hours, services, and cities in the answer
  • GBP actions as supporting context
  • Form fills from city pages

Do not declare victory from map-pack screenshots alone when chat still omits you.

  • Ten local prompts exist in a sheet with date, product, and verbatim answer
  • Someone owns the monthly re-run
  • Wrong facts get a source hunt, not a shrug
  • Out-of-territory prompts are in the panel on purpose

An answer that names you for a city you do not serve is not a win. It is a ticket.

What breaks when city pages and sales territory disagree?

The failure mode is simple. Marketing publishes coverage. Dispatch declines the job. The customer writes the review. The next model quotes the review.

BreakWhat it costsWhat you do instead
City page for a town sales will not bookDrive time, a bad review, a shortlist you cannot fulfillDelete or noindex the page; say “we do not serve X” on the FAQ
GBP service area wider than the pageAI says yes; the CSR says noShrink the service area to the honest list
“24/7” on ads, 8–5 on MapsAfter-hours rageOne grid, everywhere
SAB with a public house pinStrangers at a residential door; a fake storefront in chatHide the address; remove the embed
Franchise national hours on a local pageSaturday callers at a locked doorLocation-level hours, even if the brand kit is prettier
Call-tracking number as the only public phoneAggregators copy the tracking line; it dies with the campaignOne primary; tracking is labeled

Seasonal verticals (HVAC, landscaping, tax) see question spikes. Pre-write and refresh seasonal FAQs before the season, not during the outage. Keep last season’s accurate claims. Remove temporary promotions that died.

Voice-search phrasing is just spoken FAQ. “Who can fix my ice machine tonight in this city?” belongs on the page as a real answer, including “we do not dispatch after 8.”

Never publish cities, emergency claims, or certifications you cannot honor on a busy Thursday. Local AI answers amplify promises. Broken promises become reviews, and reviews become the next model’s evidence. Accurate boredom scales. Inventive coverage does not.

What does a 30-day local AEO sprint actually include?

A month is enough to lock the owned layer and start the residue hunt. It is not enough to “finish local SEO.”

WindowWorkDone when
Days 1–7NAP audit, GBP cleanup, baseline local promptsSheet exists; worst three mismatches fixed; ten prompts logged
Days 8–16Rewrite the top three service or city pages answer-first; ship LocalBusiness schema that matches the pagePages live; JSON-LD validates; visible NAP matches
Days 17–23Review ask that names service + city; claim leftover listings; reply to open Q&AThree new specific reviews requested; P0/P1 listings claimed
Days 24–30One local corroboration (chamber, partner page, or press); re-run prompts; write down what changedSecond prompt log; one owned fact that moved
  • NAP matrix across top listings
  • GBP services = site services
  • LocalBusiness JSON-LD validated and visible-true
  • Priority city/service pages live
  • Review ask includes service + city
  • Local prompt panel logging
  • Geography and core services stated in llms.txt if you publish one

Week one should be almost aggressively practical: matrix, three fixes, one page rewrite, five prompts, three review asks. Repeat the kit after a move, a rebrand, or a territory change. The cost of re-baselining is tiny compared with a quarter of unmeasured pages.

If you need a second pair of eyes, the visibility lane exists for that reason: /visibility. Either way, ship the ritual before you buy another dashboard logo.

Who on the crew owns the facts after week one?

Techs, office managers, and CSRs influence local AEO every day through review asks, GBP posts, and how they describe services on the phone. Give them a one-page cheat sheet: official service names, cities served, what not to promise, and the link to leave a review. When staff improvise nicknames, those nicknames leak into reviews and then into AI answers.

RoleOwnsMust not freelance
Owner / GMThe NAP card and the territory listA new city “just to see if we rank”
Office / CSRReview asks, Q&A, hours exceptions“We’re probably 24/7”
MarketingPages, schema, listing sheet, prompt panelDoorway city URLs sales will not honor
TechsJob photos (with permission), specific review asksInvented certifications on the truck

Hold a 20-minute quarterly huddle on “what AI is saying about us” using two or three prompt results. People remember better when they see the weird wrong answer with their own eyes.

Name an owner on the sheet. When someone goes on leave, transfer the ritual explicitly — AEO dies in the handoff gaps. Keep the fact packet nearby whenever you edit Google Business Profile. Document the change so the next person knows why a sentence exists.

Institutional memory is part of AEO operations. When in doubt, re-run the related prompts and keep the receipts beside the content diff.

FAQ

What is local AEO for service businesses?

It is optimizing entity facts, local pages, profiles, and reviews so AI systems recommend you for geographic buyer questions — alongside classic local SEO. Maps still matters. The extra work is making NAP, service-area language, and proof consistent enough that a shortlist can name you without inventing hours or a storefront.

How do I show up in AI local answers?

Align NAP across the site and Google Business Profile, write honest service-area pages, mark up LocalBusiness so it matches visible facts, earn reviews that mention the real service and city, and measure with a local prompt panel. Keep the profile complete; Google already treats incomplete info as weaker local visibility and tells you to keep Business Profile data current for AI features.

Does ranking in the map pack guarantee AI citations?

No. Strong Maps presence helps because the same profile facts feed Search, Maps, and Google’s AI features, but chat shortlists often use a wider page-and-listing mix. Treat both as required. A pack screenshot with a silent chat log is an incomplete baseline.

Should every city get a page?

Only cities you serve and can describe honestly. Quality beats a hundred spun URLs. If dispatch will not book the town, do not publish the page to occupy a prompt — the review will become the next model’s evidence.

How do home-service brands avoid hallucinations?

Lock the fact packet (areas, hours, services), hide SAB addresses you do not staff, fix leftover listings, and chase wrong citations. See avoiding AI-hallucinated brand facts for the leftover-source loop after a move or a rebrand.

Is digital PR relevant locally?

Yes. Local news, trade associations, chambers, and partner vendor pages are corroboration when the owned layer already agrees. They will not rescue a profile that still shows last year’s phone. Fix NAP first, then earn the mention.

CTA

Local buyers ask AI out loud. Give the machines one business to recommend: identical NAP, a clean Maps profile, and pages that state what you actually do.

For the full visibility system, read the AEO playbook. Spurlock Studios baselines local citation readiness in visibility audits — /visibility or book an audit.

FAQ

What questions does this article answer?

What is local AEO for service businesses?
It is optimizing entity facts, local pages, profiles, and reviews so AI systems recommend you for geographic buyer questions — alongside classic local SEO. Maps still matters. The extra work is making NAP, service-area language, and proof consistent enough that a shortlist can name you without inventing hours or a storefront.
How do I show up in AI local answers?
Align NAP across the site and Google Business Profile, write honest service-area pages, mark up LocalBusiness so it matches visible facts, earn reviews that mention the real service and city, and measure with a local prompt panel. Keep the profile complete; Google already treats incomplete info as weaker local visibility and tells you to keep Business Profile data current for AI features.
Does ranking in the map pack guarantee AI citations?
No. Strong Maps presence helps because the same profile facts feed Search, Maps, and Google's AI features, but chat shortlists often use a wider page-and-listing mix. Treat both as required. A pack screenshot with a silent chat log is an incomplete baseline.
Should every city get a page?
Only cities you serve and can describe honestly. Quality beats a hundred spun URLs. If dispatch will not book the town, do not publish the page to occupy a prompt — the review will become the next model's evidence.
How do home-service brands avoid hallucinations?
Lock the fact packet (areas, hours, services), hide SAB addresses you do not staff, fix leftover listings, and chase wrong citations. See [avoiding AI-hallucinated brand facts](/blog/avoiding-ai-hallucinated-brand-facts) for the leftover-source loop after a move or a rebrand.
Is digital PR relevant locally?
Yes. Local news, trade associations, chambers, and partner vendor pages are corroboration when the owned layer already agrees. They will not rescue a profile that still shows last year's phone. Fix NAP first, then earn the mention.
Sources

Last reviewed — Google Business Profile NAP, address, service-area, category, hours, reviews, photos, local-ranking, and sourcing docs; Search Central LocalBusiness schema, AI features, and AI-optimization guidance checked 2026-08-16.

More from this lane

AI Visibility

All →
Send the shop brief