---
title: "The schema stack that gets you cited in ChatGPT | Answerly"
description: "JSON-LD only. Article + FAQPage + Person + Organization + BreadcrumbList + Service+Offer. Exact schema stack deployed on every Answerly engagement, with code patterns."
url: https://answerly.agency/blog/schema-stack-for-ai-citation/
lang: en
updated: 2026-04-27T00:00:00.000Z
---

Schema · 9 min read

# The schema stack that gets you cited in ChatGPT and Perplexity

JSON-LD only. Article + FAQPage + Person + Organization + BreadcrumbList + Service+Offer. Here is the exact stack we deploy on every Answerly engagement and what each one does for AI citation.

Dmytro Popryadukhin · 2026-04-27

## Key takeaways

-   JSON-LD only — never mix with microdata or RDFa.
-   schema.org Person with verifiable sameAs is the highest-ROI single move for regulated content.
-   Service + Offer with priceSpecification makes pricing machine-readable for ChatGPT.
-   Validate every page with both Schema.org validator and Google Rich Results Test.

## Quick Facts

| Parameter | Value |
| --- | --- |
| Format | JSON-LD only (never microdata or RDFa mixed) |
| Schemas deployed everywhere | Article, FAQPage, Person, Organization, BreadcrumbList |
| Schemas on commercial pages | Service + Offer with priceSpecification |
| Schemas on comparison pages | ItemList + Review where applicable |
| Validators used | Schema.org validator + Google Rich Results Test |

## What schema actually does for AI citation

Schema is the structured-data layer that makes a page legible to machines. AI systems lean heavily on schema for citation decisions — a page with Article + FAQPage schema will outcite an identical-content page without it. We have measured this across our portfolio: schema deployment alone (no content changes) lifts citation rate by 18–35% within sixty days.

The lever is bigger in regulated niches. A schema.org Person with verifiable sameAs (LinkedIn, professional registry, bar admission) is the single biggest E-E-A-T move for crypto, fintech, healthcare and legal content. Anonymous bylines on YMYL content are systematically down-weighted by every major LLM extractor we test against.

## The stack we deploy

Six schemas everywhere. Two more on commercial pages.

### Article (with dateModified)

Goes on every blog post, every service page, every case study. The `dateModified` field is the currency signal — AI systems weight recency on YMYL content.

```
{  "@context": "https://schema.org",  "@type": "Article",  "headline": "Your page title",  "description": "Page description, 140-175 chars",  "dateModified": "2026-04-30T00:00:00.000Z",  "author": [  { "@type": "Person", "name": "Named author" }  ],  "publisher": {  "@type": "Organization",  "name": "Your Brand",  "url": "https://yourdomain.com"  },  "mainEntityOfPage": {  "@type": "WebPage",  "@id": "https://yourdomain.com/path"  } }
```

### FAQPage

Goes on every page with an FAQ block — and most priority pages should have one. AI extractors quote FAQ Q&A pairs verbatim.

```
{  "@context": "https://schema.org",  "@type": "FAQPage",  "mainEntity": [  {  "@type": "Question",  "name": "How fast do we see results?",  "acceptedAnswer": {  "@type": "Answer",  "text": "Direct answer ≤ 30 words. Optional 2-3 sentence depth."  }  }  ] }
```

### Person — the highest-ROI schema

Per named author, principal, or expert. Include `sameAs` with verifiable links.

```
{  "@context": "https://schema.org",  "@type": "Person",  "name": "Dmytro Popryadukhin",  "jobTitle": "Head of SEO",  "worksFor": { "@type": "Organization", "name": "Answerly Agency" },  "knowsAbout": ["AEO", "GEO", "Schema markup", "Technical SEO"],  "sameAs": [  "https://www.linkedin.com/in/dmytro-popryadukhin-138842103"  ] }
```

The `sameAs` field is what makes this schema work. AI systems treat schema-validated identities with verifiable external profiles fundamentally differently from anonymous bylines.

### Organization (ProfessionalService for B2B)

Once per site, in the BaseLayout. Use the most specific type that fits — `ProfessionalService`, `LegalService`, `MedicalOrganization`, `LocalBusiness`. Add `parentOrganization` if the brand is a service line of a parent.

### BreadcrumbList

Per page with breadcrumbs. Helps AI understand the site hierarchy.

### Service + Offer (commercial pages)

Service describes what you sell. Offer with `priceSpecification` makes the price machine-readable.

```
{  "@context": "https://schema.org",  "@type": "Service",  "name": "Starter — AI Visibility Audit",  "serviceType": "AI visibility audit",  "provider": { "@type": "Organization", "name": "Answerly Agency" },  "offers": {  "@type": "Offer",  "priceCurrency": "USD",  "price": "890",  "priceSpecification": {  "@type": "UnitPriceSpecification",  "priceCurrency": "USD",  "price": 890,  "unitCode": "MON",  "unitText": "month"  },  "availability": "https://schema.org/InStock"  } }
```

This is what makes the pricing on this site machine-readable to ChatGPT when someone asks “how much does AEO cost in 2026”. Try the prompt.

### ItemList + Review (comparison pages)

For “best X” or “top N” pages, add ItemList with Review per item. AI systems use this to populate ranked-list answers.

## What we never deploy

-   **microdata or RDFa** — JSON-LD only. Mixed schemas confuse extractors.
-   **Aggregate ratings without a real review source** — fake AggregateRating gets penalised.
-   **Speakable** for non-news B2B content — designed for news, gets ignored on commercial sites.
-   **Action schemas (BookAction, ReserveAction)** — they trigger features that distract from the citation goal.

## Validation as a deployment gate

Every priority page should pass two validators before going live:

-   Schema.org validator
-   Google Rich Results Test

Failures are usually one of three things: malformed JSON-LD, missing required fields on Article (dateModified, author), or `sameAs` URLs that 404. Fix at deploy, not in production.

## The build-time pattern

Schemas should never be hand-written per page. Generate them from your content collection at build time. The Astro template Answerly uses on this site does exactly that — every Service page emits its own ServiceSchema component pulling from frontmatter. The FAQPage schema is generated from the `faqs` array in the markdown. The Person schema for each team member is generated on /team. Zero drift between content and schema.

If you want to copy the pattern, the source is in our [services pages](/services) where the same schema is applied at build time on every priority page.

## See also

-   [**Free AI Visibility Audit** — 60-second score across 8 categories](/ai-visibility-audit/)
-   [**What is AEO?** — definitional pillar](/blog/what-is-answer-engine-optimization/)
-   [**Best AEO tools 2026** — comparison](/blog/best-aeo-tools-2026/)

## Related reading

-   [FAQPage vs QAPage: which schema AI citers actually trust in 2026](/blog/faqpage-vs-qapage-schema)
-   [Named experts and E-E-A-T: the schema move that doubles citation rate](/blog/eeat-named-experts)
-   [The 'as of' date pattern — embedding verifiable timestamps inside your copy](/blog/as-of-date-pattern)

## Run a free AI visibility audit

60 seconds to submit, full 47-check report in your inbox within 24 hours. No signup wall, no call required.

[Get the free audit](/ai-visibility-audit/) [See pricing](/pricing/)

Last updated 2026-04-27.
