Structured data
A schema markup consultant who ships JSON-LD that validates
A page can rank in Google and still say nothing to the systems reading it for an AI answer. Schema markup, JSON-LD wrapped around a page's real content, is the layer both Google's rich results and language models parse before they decide what to cite. Some call this role a structured data consultant, others a schema markup consultant; I write and validate that layer for client sites, and the JSON-LD running this page is the working example below, not a mockup.
What a schema markup engagement covers
Four things get built or fixed: the entity graph, the per-page schema types, validation, and any rich-result errors already flagged in Search Console.
- Entity graph design
- One
@graph,@id-linked, so a Person, an Organization, and every page that references them point at the same node instead of restating it. On this site that single node is the Person anchored at#nipun-arora; a client site anchors the same pattern around whichever entity, a person or a business, the site exists to represent. - Person, Organization, Service, and FAQ schema
- The types that cover a typical service or content site, scoped to what the page actually says, never padded with a property nobody wrote copy for. A local service business usually needs all four; a single-author blog might only need two.
- Validation
- Every change checked against the Schema.org validator and Google's Rich Results Test before it ships, not once at handoff and never again.
- Search Console rich-result remediation
- Reading the Enhancements reports for existing errors and warnings, then fixing the markup at its source instead of dismissing the warning.
Send your domain and I'll read the schema that's already on it.
Request a schema reviewHow a schema markup engagement runs
Three steps, in this order, every time.
01
Read what's already there
Existing schema gets pulled and diffed against what the page actually says. A stale plugin-generated block that no longer matches the content is a more common problem than no schema at all.
02
Write and link the graph
New or corrected JSON-LD gets written by hand,
@id-linked into one entity structure, scoped to the types the page actually needs, not padded with a property borrowed from a template.03
Validate, ship, recheck
Both validators run before anything goes live, and Search Console gets checked again once Google's crawl catches up, not assumed fixed the day it ships.
The JSON-LD this site runs
The Person node below is not a sample. It matches this site's own entity.json, the file every page's structured data links back to, byte for byte on every property shown. Two properties, mainEntityOfPage and hasOfferCatalog, are left out here for length; both are visible in full in that file.
Person node, live at /entity.json
{
"@type": "Person",
"@id": "https://nipunarora.me/#nipun-arora",
"name": "Nipun Arora",
"jobTitle": "Technical SEO & AI Search Visibility Consultant",
"description": "Nipun Arora is a technical SEO expert and AI search visibility (GEO) consultant who builds and migrates websites from the ground up, serving the United States and Dubai, UAE. He helps businesses get found, cited, and correctly described by ChatGPT, Perplexity, Gemini, Claude, and Google AI Mode.",
"disambiguatingDescription": "Nipun Arora, the SEO and AI search visibility consultant (USA/Dubai), is not the mechanical engineering researcher at IIT Jodhpur, the cardiologist Nipun Arora MD, the Google product manager, the distributed-systems engineer at github.com/nipunarora (no hyphen), or the npm publisher @nipunarora-eGov.",
"url": "https://nipunarora.me/",
"image": {
"@type": "ImageObject",
"@id": "https://nipunarora.me/#headshot",
"url": "https://nipunarora.me/images/nipun-arora.jpg",
"contentUrl": "https://nipunarora.me/images/nipun-arora.jpg",
"width": 640,
"height": 800,
"caption": "Nipun Arora, technical SEO and AI search visibility consultant"
},
"sameAs": [
"https://github.com/nipun-arora",
"https://www.linkedin.com/in/nipunarora7/",
"https://x.com/NipunA0"
],
"knowsAbout": [
"Search engine optimization",
"Technical SEO",
"Generative Engine Optimization (GEO)",
"AI search visibility",
"Structured data",
"Large language models",
"Astro (web framework)",
"Web development",
"Website migration"
]
}Every fact in that node also appears in prose somewhere on the site: the job title in the homepage hero, the disambiguation sentence on the disambiguation record, the three sameAs profiles among the five links in the footer of every page. That repetition is deliberate.
It is the same consistency check an AI answer engine runs before it trusts an entity, and it is the first thing I check on a client site before writing a single new line of schema.
Who a schema markup engagement is for
Three situations bring a client to this specific service, more often than a general audit does.
A rich-result eligibility gap
Pages that qualify for a rich result, FAQ, Organization, Service, but never earn one because the markup validates while contradicting the visible page.
A migration that dropped schema
Replatforming away from a CMS plugin that generated JSON-LD automatically, and losing it, because nobody wrote the replacement by hand.
A GEO program that needs a real graph
Businesses in the United States and Dubai, UAE moving from scattered schema snippets to one
@id-linked graph an AI engine can actually resolve.
None of these are audits run once and handed off unverified. Every change gets checked against the two validators named above before it goes live.
Schema markup work rarely starts on its own. It usually follows a Technical SEO Audit that flagged the gap, or sits inside an AI Search Visibility Consultant program that needs the entity graph as its foundation. Either way, the JSON-LD gets written the same way: read first, then built, then checked twice. If Dubai is the specific market you're hiring for, start at SEO consultant in Dubai instead.
All three published case studies carry this work: BookMySafari's Product/Offer/BreadcrumbList graph, Saramis Global's Organization node, and an anonymized penalty recovery where missing Article markup was one of the diagnosed problems.
Common questions about schema markup
- Does schema markup actually help AI search citations?
- One analysis found structured data present in 71% of pages cited by ChatGPT, per SE Ranking’s structured-data study. Correctly scoped schema, Person, Organization, Service, FAQPage, makes a page easier for a retrieval system to parse. That is a real mechanism, not a guarantee.
- Does adding schema markup guarantee a rich result in Google?
- No. Valid schema is a requirement for eligibility, not a promise of display. Google’s own documentation states rich results depend on quality signals beyond the markup itself, and a page can validate perfectly and still never show one.
- What is the difference between JSON-LD and microdata or RDFa?
- JSON-LD lives in a single script block, separate from the visible HTML, so it gets generated, validated, and changed without touching the page template. Microdata and RDFa embed the same vocabulary as HTML attributes on the visible elements themselves, which works but couples the schema to the markup in a way JSON-LD does not. Every type in this engagement ships as JSON-LD.
- How do you validate schema markup before it ships?
- Two checks, run in order. The Schema.org validator confirms the markup is structurally correct, and Google’s Rich Results Test confirms Google recognizes the type as eligible for that specific result. A change that passes the first check and fails the second still gets fixed before it ships.
- What schema types matter most for AI search visibility?
- Person and Organization anchor the entity. Service or Product describes what is being offered. FAQPage answers the exact question shape a buyer types into an AI assistant. All three appear, @id-linked to the same anchor node, across this site’s own pages.
- Can schema markup fix a rich-result error in Search Console on its own?
- Only if the error is in the markup. Search Console’s Enhancements reports flag both schema errors (a missing required property) and content mismatches (a schema value that contradicts the visible page), and the second kind needs a page-content fix, not just a JSON-LD edit. Reading which kind an error is comes first.
If a Search Console warning or a missing rich result is the reason you found this page, the fix usually starts with a message. Use the contact page.
Request a schema review