If you build or maintain websites for local businesses, you've probably already noticed organic click-through rates dropping even as rankings hold steady. The reason: AI Overviews now appear in roughly 68% of local searches (versus ~39% for the classic three-pack local results), and for "near me" or pricing-style queries, AI-generated answers show up 80–97% of the time. ChatGPT itself is reportedly the third most-used source for local recommendations, behind Google and Facebook.
Ranking #1 in classic SERPs no longer guarantees you get mentioned when an LLM synthesizes an answer. As developers, that means the job has expanded: we're no longer optimizing purely for a crawler that returns links — we're optimizing for models that read, verify, and cite structured facts.
This post is a practical, implementation-level walkthrough: what's changed, what to build, and where to instrument tracking so you can actually prove impact to a client or stakeholder.
What's different, technically, about AI search
Classic search: crawl → index → rank → return links.
AI search / generative engine optimization (GEO): crawl → extract entities → verify consistency across sources → synthesize an answer → optionally cite sources.
The practical consequence is that LLM-driven answer engines lean much harder on:
-
Structured data (
schema.orgJSON-LD) — explicit, machine-readable facts beat inferred ones - Entity consistency — the same NAP (Name, Address, Phone) data across your site, Google Business Profile, Bing Places, Apple Business Connect, and data aggregators
- Content freshness — AI-cited pages are, on average, about 25% more recently updated than pages that rank well organically but are never cited
- Third-party corroboration — interestingly, Reddit alone accounts for roughly 21% of citations in Google AI Overviews, more than any single business website
If you're the one writing the code and markup, this is where you actually have leverage.
Why it matters for the business (not just the codebase)
A few numbers to bring to your next client call or sprint planning:
- Pages ranked #1 organically see roughly 58% lower average click-through when an AI Overview answers the query directly — meaning the value of being cited is rising relative to the value of being ranked.
- AI recommendation engines are estimated to be around 30x more selective than a traditional SERP — they typically surface one or two names instead of ten blue links.
- Implementing
ArticleandFAQPageschema correctly has been associated with roughly a 28% increase in AI citation rate. - LLM-driven recommendations skew toward higher-rated businesses (roughly 3.9–4.3★ depending on platform), so review data feeding into your schema and GBP integration matters too.
For a dev team, this reframes "SEO work" from a content/marketing-only task into something with real technical scope: schema architecture, crawler access policy, and analytics instrumentation.
Implementation: the technical checklist
1. Ship complete, valid LocalBusiness JSON-LD
Don't just drop in a name and address. Include the fields AI systems actually use to verify and cite you:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "SoftWin Local Client Example",
"image": "https://example.com/storefront.jpg",
"@id": "https://example.com",
"url": "https://example.com",
"telephone": "+1-512-555-0134",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 30.2672,
"longitude": -97.7431
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "212"
},
"sameAs": [
"https://www.facebook.com/example",
"https://www.yelp.com/biz/example",
"https://www.google.com/maps/place/example"
]
}
Key details that get overlooked: the sameAs array is what lets an LLM cross-reference your GBP, Yelp, and Facebook listings to confirm you're the same entity everywhere. aggregateRating should mirror your actual, current review data — mismatched ratings between schema and the live listing are an easy trust penalty.
2. Add FAQPage schema to service and location pages
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does [service] cost in [city]?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Pricing for [service] in [city] typically ranges from $X to $Y, depending on [factors]."
}
}
]
}
This directly targets the query types most likely to trigger an AI Overview — pricing and "how does X work" questions trigger AI-generated answers over 80% of the time.
3. Check your crawler access policy — don't accidentally block AI bots
A lot of legacy robots.txt files block "unknown" or aggressive crawlers by default, which can inadvertently block AI user agents you want indexing you. Audit for:
User-agent: GPTBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Google-Extended
Allow: /
Decide deliberately, per client, whether you want each of these allowed — some businesses have legitimate reasons to restrict AI training crawlers while still allowing retrieval/citation bots (the two are not always the same user agent). Some teams are also experimenting with an llms.txt file at the site root — an emerging, informal convention for summarizing site content specifically for LLM consumption — though it's not yet a universal standard, so treat it as supplementary, not a replacement for solid schema and clean HTML.
4. Rebuild location pages for "fact density," not just keyword targeting
Programmatically generated location pages (the classic "swap the city name" template) are easy for both classic crawlers and LLMs to flag as low-value or duplicate. Structurally, each location page should include:
- A pricing table with real, current numbers
- 3–5 FAQ entries marked up with
FAQPageschema - At least one locally-specific data point (service area, response time, a stat unique to that market)
- Genuine review excerpts pulled dynamically from your reviews API/integration, not hardcoded
5. Instrument AI referral tracking in GA4
Because AI-driven visits often arrive without standard UTM parameters, they can silently collapse into "Direct" traffic. Set up custom channel groupings or at minimum a segment based on referrer domain:
chatgpt.com
perplexity.ai
gemini.google.com
copilot.microsoft.com
www.bing.com/chat
In GA4, this can be done via a custom channel group (Admin → Data display → Channel groups) with a referrer-based condition, or via a lightweight server-side check if you're logging referrers yourself. Without this, you have no way to prove AI-search work is actually driving traffic — which makes it hard to justify continued investment to a client or stakeholder.
6. Automate NAP consistency checks
Manual audits go stale fast. A simple approach: maintain a canonical JSON "business profile" object in your codebase or CMS, and diff it periodically against your live listings (GBP, Yelp, Facebook, Bing Places) — either manually on a quarterly cadence or via a citation-tracking API (BrightLocal, Semrush Listing Management, Moz Local all expose this). Flag any mismatch in name, address, phone, or category immediately; inconsistency is one of the most common reasons a business gets excluded from AI-generated answers, because the model can't confirm which version is authoritative.
https://softwin.io/'s practical take
When https://softwin.io/'s dev team onboards a local business site, the AI-readiness audit now runs as a standing checklist alongside the technical SEO audit: schema validation (completeness, not just presence), crawler-access review, GA4 AI-referral instrumentation, and a quarterly NAP consistency diff. The single most common finding isn't a missing feature — it's drift: schema that was correct at launch but never updated when the business changed hours, added a location, or their review count changed. AI systems have very little tolerance for stale or inconsistent data, more so than classic search ever did.
Common mistakes
-
Shipping schema once and never updating it — stale
aggregateRatingoropeningHoursSpecificationactively hurts trust signals -
Blocking AI crawlers by accident via an overly restrictive
robots.txtinherited from a template - Programmatic location pages with zero unique content — easy for LLMs to deprioritize as duplicate
- No AI-referral tracking, so the impact of this work is invisible in analytics and hard to justify
- Treating schema as a one-time SEO task instead of a maintained data layer that should live in your CMS/codebase
FAQ
Does adding schema markup guarantee an AI citation?
No — schema improves the odds of being correctly parsed and verified, but citation also depends on review data, third-party corroboration, and content freshness. Treat it as necessary, not sufficient.
Should I block AI crawlers like GPTBot to protect my client's content?
That's a business decision, not just a technical one — discuss it explicitly with the client. Blocking training crawlers doesn't necessarily block retrieval/citation bots, and the two often use different user agents, so a blanket block can hurt visibility without achieving the content-protection goal intended.
Is llms.txt worth implementing right now?
It's a low-cost, low-risk addition, but it's an emerging, informal convention rather than an established standard — invest in solid schema markup and clean semantic HTML first, and treat llms.txt as a supplementary experiment.
How do I prove this work had impact to a stakeholder?
Instrument GA4 AI-referral tracking before you start the work, so you have a baseline, and re-run direct prompts ("best [service] in [city]") across ChatGPT, Perplexity, and Google AI Mode periodically to track whether citations change over time.
Does this apply to small sites, or only enterprise/multi-location deployments?
It applies especially to small sites — they're the most likely to be running templated themes with generic or missing schema, and the fixes here are proportionally cheaper to implement than on a large multi-location deployment.
Wrapping up
The technical SEO fundamentals you already know — clean HTML, fast load times, mobile usability — haven't gone away. What's new is that structured data, entity consistency, and crawler-access decisions have moved from "nice to have" to "directly determines whether an AI names your client's business." That's a meaningful expansion of scope for anyone building local business sites, and it's a good time to add an AI-readiness pass to your standard site audit template.
If you want a second pair of eyes on a client's schema implementation or crawler configuration, https://softwin.io/'s team runs technical AI-search audits for local and multi-location business sites — feel free to reach out, or drop a comment below with your own findings on what's actually moving AI citations for you.
Written by the SoftWin engineering team. We build and audit web infrastructure for local and growing businesses, with a focus on technical SEO and AI-search readiness.
Top comments (1)
ngl the part about ai search changing local intent is scary. wonder how much this is actually gonna affect lead gen for smaller shops.