A concrete contractor in Collinsville pours driveways, patios, and the occasional stamped concrete pool deck. His website says all of this clearly, in plain English, right on the homepage. But when someone in Tulsa asks an AI assistant "who does stamped concrete near Collinsville," his business doesn't come up. A competitor with a much thinner site does. The difference usually isn't the writing. It's that the competitor's page tells search engines and AI crawlers exactly what it is in a format machines can parse without guessing, and his doesn't.
Schema Markup Is a Label, Not a Ranking Trick
Schema markup (also called structured data) is a standardized code format (usually JSON-LD) that sits in a page's HTML and describes what's on the page in terms a machine can read directly, instead of inferring from paragraphs of text. It doesn't change how the page looks to a visitor. It's not a ranking factor Google weighs the way it weighs backlinks or page speed.
What it does is remove ambiguity: instead of a crawler guessing that "we pour driveways, patios, and footings across the Tulsa area" describes a concrete contracting business, the page states it directly: business type, service area, service names, in a format built for exactly that. Google's own introduction to structured data describes it the same way: a standardized format for providing information about a page and classifying its content.
Two Schema Types Do Most of the Work Here
For a concrete contractor, two schema types cover almost everything worth marking up. LocalBusiness schema (or a more specific subtype) describes the business itself: name, service area, hours, the fact that it's a contracting business rather than, say, a concrete supply store. Service schema describes individual offerings: driveway installation, stamped concrete, concrete repair, each as its own distinct, labeled entity rather than one paragraph mentioning all three. This separation matters because it's what lets a search engine or AI system match a specific query ("who pours stamped concrete patios near Collinsville") to a specific part of the page, instead of just a general match on "concrete."
Why This Matters More With AI Answer Engines in the Mix
Traditional search still mostly works off crawled text and links. AI answer engines, the kind that generate a direct written answer instead of ten blue links, lean more heavily on structured, unambiguous data when they can get it, because it's faster and more reliable to pull from than parsing prose.
A business with clean schema is handing these systems a pre-formatted answer key. A business without it is asking the AI to infer the same information from marketing copy, which it can do, but less reliably and less consistently across different phrasings of the same question. That gap is part of what my local SEO and AEO work is built around: making sure a business is legible to both the old search engine and the newer AI layer sitting on top of it.
What Good Schema Looks Like in Practice
It doesn't need to be exotic. A concrete contractor's homepage benefits from one LocalBusiness block naming the business, its service area (Tulsa, Collinsville, and whatever other suburbs are actually served), and its category. Each services page benefits from a Service block naming that specific offering and linking it back to the business. What kills the value of schema is letting it go stale: a service area that still says one suburb after the business expanded, or a services list that hasn't been touched since the site launched. Schema is only as accurate as the last time someone updated it, and an inaccurate label is arguably worse than no label at all.
Test It Before You Trust It
Hand-written JSON-LD is easy to get almost right and just as easy to get subtly wrong: a missing comma, a mismatched quote, a field name that doesn't match what the schema type actually expects. None of these mistakes break the visible page, which is exactly why they go unnoticed for months. Before publishing schema, it's worth pasting the block into a validator to confirm it actually parses and matches the schema type's expected structure, rather than assuming it's correct because it looks right. It's a five-minute check that prevents a labeling system meant to add clarity from quietly adding confusion instead, and it's worth repeating any time the block gets edited, not just the first time it's written.
- Schema doesn't rank you by itself. It makes the page easier to correctly classify, which is a different thing.
- Use LocalBusiness for the company, Service for each offering. Lumping everything into one block loses the specificity that makes schema useful.
- Keep it current. Stale schema that contradicts the visible page content is a bigger liability than skipping it entirely.