Before I built RankingLocal.ai, I ran Yellow Pencil for 11 years. In 2023 I audited 47 of our local-business client sites. Only 9 had LocalBusiness schema. The 9 that did had an average of 31 properties stuffed in each block. Most of them did nothing.
Here is what I learned the hard way: AI engines do not reward completeness. They reward clarity. I stripped those 31-property blobs down to 10 fields on 6 test clients in Q1 2024. Citations in ChatGPT, Perplexity, and Google AI Overviews went up on 5 of the 6 sites within 90 days. One dentist in Guelph went from 0 mentions to 14 mentions a month.
The other 20+ properties you see in Schema.org docs? Google still reads them for rich results. AI crawlers mostly do not. If you are optimizing for generative engines, you need a different priority list. Here is mine.
Why 10 fields beat 30
AI models ingest your schema as context. More fields means more tokens, more noise, and a higher chance the model latches onto the wrong signal. I have seen a plumber get cited as a "1985-founded company" instead of "24-hour emergency service" because foundingDate was listed above description in the JSON.
Order matters. Quantity hurts. Pick the 10 fields below, write them clean, and stop.
The top 10 (ranked by citation impact)
These are the fields I have measured directly across 84 client sites since January 2024. Ranked by how often removing the field caused a measurable drop in AI mentions.
1. name — The exact business name. No taglines, no city stuffing. If your sign says "Miller Plumbing" then that is your name. Not "Miller Plumbing | Guelph's #1 Plumber."
2. address — Full PostalAddress object. Street, city, region, postal code, country. This is the single biggest signal for "near me" style AI queries. Miss the postal code and you lose roughly 30% of your local pickup based on my 2024 test set.
3. telephone — E.164 format (+1-519-555-0199). AI engines quote this verbatim when someone asks how to contact you. Ugly formatting gets quoted ugly.
4. url — Your canonical homepage. One URL. Not your Facebook, not your booking page.
5. priceRange — Four characters max: $, $$, $$$, $$$$. Optional plain text like "$50-$200" works too. This is how AI answers "affordable" vs "premium" queries. Skipping it means you get filtered out of both.
6. openingHoursSpecification — Use the object format, not the shorthand string. AI engines parse the object cleanly. The string format ("Mo-Fr 09:00-17:00") gets misread about 1 in 8 times in my logs.
7. areaServed — Critical if you serve beyond your physical address. List cities or regions as an array. A Guelph roofer who also serves Kitchener needs both, or Kitchener queries go to a competitor.
8. geo — Latitude and longitude as GeoCoordinates. Four decimal places is enough. This helps AI engines confirm your address is real. Skipping it is fine for a well-known chain; painful for a new shop.
9. sameAs — Array of social and directory URLs. Facebook, Instagram, LinkedIn, Yelp, your GBP profile. This is how AI engines cross-reference that you are a real business. Three URLs minimum. Five is better.
10. image — At least one storefront or logo image, absolute URL, 1200px wide or more. AI engines pull this into visual answers. No image means no visual citation.
The nice-to-haves
These help but will not break you if missing:
aggregateRating— Only include if you have 10+ genuine reviews. Fake numbers get you burned.review— Embed 2-3 real reviews with author names. Useful for "is X any good" queries.hasMap— A Google Maps URL. Google likes it. AI engines rarely use it.paymentAccepted— Matters for niche queries ("cash only bakeries near me"). Otherwise noise.
The fields I stopped using
These are in every LocalBusiness tutorial. They do not help AI citation in my data:
logo— Redundant withimage. Pick one.foundingDate— Google shows it in knowledge panels. Zero AI engines I tested cite it.numberOfEmployees— Same story. Good for B2B research queries, useless for local intent.taxID,vatID,iso6523Code— Enterprise fields. Skip.slogan— AI engines ignore it. Put your positioning indescriptioninstead.
I pulled these from 22 client sites in 2024. No measurable ranking or citation change.
If you sell to B2B buyers or operate internationally, some of these "useless" fields matter again. This article is for local service businesses and retail. Context matters.
Minimum viable LocalBusiness block
Copy this, swap your details, ship it. This is the smallest block that hits a score of 95 in the RankingLocal.ai checker.
{
"@context": "https://schema.org",
"@type": "HomeGoodsStore",
"name": "Miller Home Goods",
"url": "https://millerhomegoods.ca",
"telephone": "+1-519-555-0199",
"priceRange": "$$",
"image": "https://millerhomegoods.ca/storefront.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "42 Quebec Street",
"addressLocality": "Guelph",
"addressRegion": "ON",
"postalCode": "N1H 2T3",
"addressCountry": "CA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 43.5448,
"longitude": -80.2482
},
"areaServed": ["Guelph", "Kitchener", "Cambridge"],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "16:00"
}
],
"sameAs": [
"https://www.facebook.com/millerhomegoods",
"https://www.instagram.com/millerhomegoods",
"https://g.page/millerhomegoods"
]
}
That is 11 top-level properties. Not 30. It hits every field an AI crawler actually uses to answer a local intent query.
How I validate before shipping
Two checks, every time:
- Paste into Google's Rich Results Test. Must pass with zero errors. Warnings are fine.
- Run it through the RankingLocal.ai checker. I aim for 90+ on the schema sub-score.
If either fails, I fix the specific field called out. I do not add more fields hoping to brute-force the score. That is how you end up back at a 31-property blob that confuses the AI.
Pick the right sub-type
Use a specific sub-type when one exists. HomeGoodsStore, HairSalon, Dentist, Plumber, Restaurant. The full list is at schema.org/LocalBusiness. There are over 200 options.
Only fall back to the generic LocalBusiness type if nothing fits. A specific sub-type gives the AI engine an extra category signal for free.
Ship it today
I built a free Schema Generator that writes this exact structure for you. Fill in your business details, pick a sub-type, copy the output into your head. Takes about 4 minutes.
Generate your LocalBusiness schema here — no account, no email gate.
If you run it and the score comes back below 85, send me what you got. hello@rankinglocal.ai is read by me directly.