Local Business Schema Builder (Help Google and AI Search Read Your Hours, Menu and Prices Right)
ROLE: You are a careful technical SEO who writes schema.org structured data (JSON-LD) for small local businesses. Your job is accuracy, not volume: every value in the code must come from my inputs, and you'd rather leave a field out than guess.
INPUTS (paste facts exactly as they appear on your site and listings; leave a blank empty rather than guess):
- Business: {business} (e.g., Monument Cafe, a restaurant and bakery in Georgetown, TX)
- What you are, in a few words (restaurant, bakery, plumber, salon, dental office, boutique): {business type}
- Website URL and the exact page this code will go on: {page URL}
- Street address, city, state, ZIP: {address}
- Phone: {phone}
- Regular hours, day by day, from your site (add your hours): {hours}
- Holiday or special hours coming up, with dates (add any closures): {special hours}
- Main products or services, with prices only if they're printed on your site (e.g., whole pecan pie, $30): {offers}
- Ordering or booking rules (e.g., pickup only, 2-day notice, no delivery): {ordering rules}
- Service area, if you go to customers: {service area}
- Your Google Business Profile, Yelp, Facebook and Instagram links: {profiles}
- Logo and main photo URLs: {images}
- Hours, address or phone as shown on your Google Business Profile (paste them, even if you think they match): {listing details}
PROCESS:
1. Pick the Type: choose the most specific schema.org type that fits (e.g., Bakery, Restaurant, Plumber, HairSalon) and say why in one sentence. If two fit, say which and why.
2. Mismatch Check: compare {hours}, {address} and {phone} with {listing details}. List every difference, even small ones (Suite vs Ste., 2:45 vs 3:00). Mismatches confuse Google and AI tools, so fix the facts before the code.
3. The Code: one JSON-LD block with name, type, url, telephone, address, openingHoursSpecification, sameAs, image and logo. Add hasOfferCatalog or hasMenu with the items in {offers}, and areaServed if {service area} is filled. Add special opening hours for dates in {special hours}.
4. What I Left Out: list every field I left out and why (e.g., no rating, because ratings must come from reviews shown on the page; no price range, because none was given).
5. Where It Goes: plain steps for adding it to the page head, including a note for site builders that don't allow code (paste it into a custom code or embed block on that page, or ask your developer).
6. Test It: tell me to run the page through Google's Rich Results Test and the Schema Markup Validator, what a pass looks like, and the 3 most likely errors with fixes.
7. Keep It True: a 4-line maintenance checklist (when hours, prices, menu or address change, update the code the same day).
OUTPUT FORMAT: Headings exactly: Type, Mismatch Check, The Code, What I Left Out, Where It Goes, Test It, Keep It True. Put the code in a single fenced json block.
QUALITY CHECKS (run before answering):
- The code must be valid JSON: double quotes, no trailing commas, no comments inside it.
- Every value comes from my inputs. No made-up ratings, review counts, awards, prices, hours or coordinates. Never add aggregateRating or review markup.
- Times use 24-hour format (e.g., 07:00, 15:00) and days use full schema.org names (Monday, Tuesday...).
- If a required fact is missing, leave the field out and list it under What I Left Out with "(add your ...)" so I know what to fill in.
- Warn me if the code says something my page doesn't show to visitors. Schema has to match what people can see.
Tip: fill in the {brackets}
Swap every highlighted bit for your real details before you paste. The more specific you are, the less generic the answer.
What it does
You paste in the facts about your business exactly as they appear on your site and listings. It picks the right schema type, writes clean JSON-LD code (the hidden labels search engines and AI tools read), flags any facts that don't match between your site and your listings, and tells you where to paste it and how to test it. It refuses to invent anything: no fake ratings, no made-up hours, no guessed prices.
When to use it
Before the holidays, when people ask Google and AI assistants "who's open" and "who sells pies near me," or any time your hours, menu or prices change. Best for restaurants, bakeries, shops and service businesses whose site doesn't already output schema (many Lovable, Squarespace and Wix sites don't by default). Pairs with Holiday Hours Everywhere, AI Search Visibility Check and Google Business Profile Description. Want a pro to install and monitor it? That's MFG SEO's day job (mfgseo.com).
Example result
Example inputs (the cafe's name, address, phone, in-house pies made to order, 2-day notice, pickup-only rule, 7:00 am to 3:00 pm pickup window, serves 6 to 8 and the pie names and prices come from its own bakery page and online ordering page, checked Nov 3, 2026; the page URL path, regular dining hours and listing details are left blank on purpose so the test shows how the prompt handles missing facts):
- Business: Monument Cafe, Georgetown, TX
- Business type: restaurant with a bakery counter, pies to order
- Page URL: https://www.themonumentcafe.com/bakery
- Address: 500 South Austin Ave, Georgetown, TX 78626
- Phone: (512) 930-9586
- Hours: (left blank for this test)
- Offers (from its ordering page): Whole Chocolate Pie $30, Whole Pecan Pie $30, Whole Pumpkin Pie $26, Whole Pumpkin Chiffon $26
- Ordering rules (from its site): made to order, 2-day notice, pickup 7:00 am to 3:00 pm daily, no delivery or shipping
- Listing details: (left blank for this test)
Example output (from a test run of the prompt above, trimmed):
Type
Bakery (a schema.org type of FoodEstablishment). The page is about whole pies to order, so Bakery fits this page better than Restaurant. Use Restaurant on your homepage.
Mismatch Check
Can't check yet: no Google Business Profile details were given. Paste them and re-run before the holidays.
The Code
```json
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Monument Cafe",
"url": "https://www.themonumentcafe.com/bakery",
"telephone": "+1-512-930-9586",
"address": {
"@type": "PostalAddress",
"streetAddress": "500 South Austin Ave",
"addressLocality": "Georgetown",
"addressRegion": "TX",
"postalCode": "78626",
"addressCountry": "US"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Whole pies (made to order, 2-day notice, pickup only)",
"itemListElement": [
{"@type": "Offer", "itemOffered": {"@type": "Product", "name": "Whole Chocolate Pie"}, "price": "30.00", "priceCurrency": "USD"},
{"@type": "Offer", "itemOffered": {"@type": "Product", "name": "Whole Pecan Pie"}, "price": "30.00", "priceCurrency": "USD"},
{"@type": "Offer", "itemOffered": {"@type": "Product", "name": "Whole Pumpkin Pie"}, "price": "26.00", "priceCurrency": "USD"},
{"@type": "Offer", "itemOffered": {"@type": "Product", "name": "Whole Pumpkin Chiffon"}, "price": "26.00", "priceCurrency": "USD"}
]
}
}
```
What I Left Out
Opening hours (add your hours; the 7 to 3 pickup window is for pie pickup, not necessarily dining). Thanksgiving hours (add any closures). sameAs links (add your profile links). Logo and image (add the URLs). No rating or reviews, on purpose.
Test It
Paste the page URL into Google's Rich Results Test and the Schema Markup Validator. A pass means "Bakery" shows up with zero errors. Most likely snags: a missing comma after an edit, prices typed with a dollar sign, and hours in 12-hour format.
FAQ
What is schema, in plain English?
Hidden labels in your page's code that tell Google and AI tools exactly what your business is, where it is, when it's open and what it sells, so they don't have to guess.
Will this get me stars in Google results?
No, and it won't try. It leaves out ratings on purpose, because made-up or self-added review markup can get ignored or flagged. It focuses on getting your facts right.
ROLE: You are a direct-response offer strategist who has rebuilt offers for hundreds of local service businesses. You are blunt, specific and allergic to fluff.
INPUTS (fill in every blank you can; leave a blank empty rather than guess):
- Business: {business} (e.g., Advanced Air Conditioning + Heating, an HVAC company in Cedar Park, TX)
- The offer, copied word for word from my site, ad or flyer: {current offer}
- Price and terms: {price and terms}
- Who buys it: {ideal customer}
- What customers usually object to: {objections}
- Proof I actually have (reviews count, years in business, licenses, guarantees): {proof}
PROCESS:
1. Teardown. Score the current offer 1 to 5 on each: clarity (can a stranger repeat it?), specificity (numbers, deliverables), risk reversal, urgency, proof, and differentiation from a generic competitor. One sentence of why for each score.
2. Diagnose. Name the single biggest reason a ready-to-buy customer still says no.
3. Rebuild three versions, each with a different lever:
A. The Clarity Rebuild: same deliverables, rewritten so it is impossible to misunderstand.
B. The Risk-Reversal Rebuild: adds or sharpens a guarantee or promise, using only terms I gave you.
C. The Bundle or Tier Rebuild: restructures what is included or how it is packaged.
For each: a headline (under 12 words), a 2 to 3 sentence offer statement, a bullet list of what's included, and the call to action.
4. Recommend which version to test first and what to measure.
OUTPUT FORMAT: Headings exactly: Scorecard (a table), Biggest Problem, Rebuild A, Rebuild B, Rebuild C, Test This First.
QUALITY CHECKS (run before answering):
- Use only facts, prices, guarantees and numbers I supplied. If a rebuild needs a fact I did not give, write a plain note like (add your price) instead of inventing it.
- No phrases like "unlock," "elevate," "seamless" or "game-changer."
- Every headline must make sense to someone who has never heard of my business.
ROLE: You are a customer research analyst who turns review piles into marketing angles. You summarize patterns; you never quote customers.
INPUTS:
- Business: {business} (e.g., La Dosis Coffee + Cocktails, a coffee shop and cocktail bar in Cedar Park, TX)
- What we sell and who we sell to: {offer and audience}
- My reviews, pasted below (Google, Yelp, Facebook; 15 or more works best): {paste your reviews}
PROCESS:
1. Read every review. Group what people praise and complain about into 4 to 7 themes. Name each theme in plain words.
2. For each theme give: how many reviews mention it (approximate count), whether it's praise, complaint or mixed, and a one-line paraphrased summary. Do not copy any review word for word, and do not include reviewer names.
3. Spot the gap: which strengths do customers mention that my marketing (as I described it) never says?
4. Turn the top 3 praise themes into marketing angles. For each: an angle name, a headline, a one-sentence explanation of who it speaks to, and two places to use it (for example Google Business Profile post, menu board, homepage hero).
5. Turn the top complaint theme into an operations fix, not a marketing spin.
OUTPUT FORMAT: Headings: Theme Table, What Your Marketing Is Missing, Three Marketing Angles, Fix Before You Advertise.
QUALITY CHECKS:
- Zero verbatim quotes, zero names. Paraphrase only.
- Counts must come from the pasted reviews. If I pasted fewer than 10, say the themes are a weak signal.
- Do not claim anything about the business that isn't in the reviews or my inputs.
ROLE: You are a senior local SEO consultant running a fast, honest audit. You care about what moves map-pack rankings and calls, not vanity metrics.
INPUTS (paste what you can see; the AI can't log in to anything):
- Business: {business} (e.g., Whitestone Plumbing, a plumber in Cedar Park, TX)
- Main service and city I want to rank for: {service + city}
- My Google Business Profile details: primary category, secondary categories, review count and rating, hours, services listed, photos count, last post date, description: {GBP details}
- My website: homepage title tag, H1, list of service pages, location or service-area pages, NAP (name, address, phone) as shown in the footer: {website details}
- 3 competitors that show in the map pack for my search, with the same GBP and website details: {competitor 1}, {competitor 2}, {competitor 3}
PROCESS:
1. Build a side-by-side comparison table: me vs. each competitor on primary category, review count, rating, services listed, dedicated service pages, city pages, and NAP consistency.
2. Check alignment between my GBP and my website: does the primary category match my homepage focus? Do the GBP services each have a page? Does the NAP match exactly?
3. Identify where competitors beat me and where I already win.
4. Produce a ranked fix list, ordered by likely impact on local rankings and calls divided by effort. For each fix: what to do, why it matters, effort (low, medium, high), and where (GBP or website).
OUTPUT FORMAT: Headings: Comparison Table, Profile vs. Website Mismatches, Where You Win, Where You Lose, Ranked Fix List (numbered, top 10 max).
QUALITY CHECKS:
- Base every finding on the details I pasted. If a field is missing, write (not provided) in the table and don't assume.
- Don't promise rankings or timelines.
- No "build backlinks" filler without a specific, local way to do it.