“AI-ready product data” is a query people already type into Google looking for a checklist. There isn’t a single spec that defines it β€” schema.org gives you the vocabulary, but not which fields actually decide whether a shopping agent can complete a purchase. AgentReady’s audit engine answers that narrower question directly: it is a deterministic set of checks, each one pass/partial/fail, each one scoped to a single fact an agent needs before it will buy. Below is the field-by-field walk, taken from the check definitions themselves.

Can the agent find a product at all?

The first check (sd.product, in the audit’s structured-data pillar) looks for a Product node in JSON-LD, either on the product page or the homepage. Its logic is binary on purpose: a page can be fully readable by a human and still return nothing here, and when that happens every check below it is moot β€” there is no product object for price or availability to live inside. The fix the audit hands back is literally a JSON-LD snippet: Product with name, image, brand, sku/gtin13, and an offers block.

Can it price and stock-check the item?

Two checks, both binary in what they’ll accept:

  • Structured price + currency (sd.price) passes only when offers.price and offers.priceCurrency are both present. A number with no currency code earns half credit β€” the audit’s own comment on the check is that “a number with no currency is not a price.”
  • Structured availability (sd.availability) checks for offers.availability and has no partial state at all: it’s PASS or FAIL. The rationale in the check itself β€” “the agent can’t tell if it’s in stock” β€” is why a missing availability field scores as a hard failure rather than a minor deduction.

Can it trust and resolve the listing?

Three more checks decide whether the agent trusts the offer enough to act on it:

  • Structured brand (sd.brand) β€” a bare brand field, PASS/FAIL.
  • Product identifier (sd.identifier) β€” SKU, GTIN (in any of its 8/12/13/14-digit forms) or MPN. The audit’s framing: without one of these “the agent can’t disambiguate the product” from near-identical listings elsewhere.
  • Aggregated reviews (sd.rating) β€” aggregateRating with a ratingValue. Lower weight than the others, but it’s the field that lets an agent compare your reputation against a competitor’s in the same query.

Can it resolve a variant and filter the catalog?

This is where most stores actually lose points, and it’s a separate pillar (catalog, not structured data) for a reason β€” a store can have flawless single-SKU JSON-LD and still be unusable for a search like “size 43, black, under $120”:

  • Structured variants (cat.variants) looks for hasVariant, more than one Offer, or more than one entry in a Shopify products.json feed. A ProductGroup with a price range and nothing purchasable underneath it β€” the group without its members β€” earns only partial credit: an agent has parsed the page correctly and still has nothing to add to a cart, a distinction covered in more depth in our walk through schema.org’s variant fields.
  • Attributes as fields, not prose (cat.attributes) checks for color, size, material, pattern, category or additionalProperty as structured fields β€” or, on Shopify, named feed options. Two or more of these pass in full; fewer earns partial credit; “trail, size 43” in a paragraph of marketing copy earns nothing, because an agent can’t filter on a sentence.
  • Product feed / catalog signals (cat.feed) rewards a machine-readable feed β€” Shopify’s products.json scores the full weight; OpenGraph product tags and og:availability score partial credit as a fallback signal.

What this actually predicts

None of these eight checks asks whether your page reads well. They ask whether a specific fact exists as a parseable field. That gap is the recurring finding across every store we’ve scanned: pages that are perfectly legible to a human and still unbuyable to an agent, because the price, the stock status or the variant lives in a <span> or a dropdown rather than a field an agent’s parser can read.

It’s also, per our own Search Console data, a query people are already typing β€” “ai ready product data” showed up with real (if early) search demand in our own property’s 28-day export, alongside “ai ready product feed”-shaped phrasing, which is the reason this checklist exists as its own piece rather than staying folded into the JSON-LD article.

FAQ

What is AI-ready product data?

It’s product information exposed as machine-readable fields β€” JSON-LD Product and Offer nodes, or a structured feed like Shopify’s products.json β€” rather than as text inside a styled page. A shopping agent parses fields; it does not reliably parse prose, click dropdowns, or infer a price from a screenshot.

What’s the minimum a store needs for an agent to buy?

At minimum: a Product node with name and brand; an offers block carrying price and priceCurrency together; and availability. Missing any one of these three is enough to stop a transaction β€” a price with no currency or a product with no stock status leaves an agent unable to confirm what it would actually be buying.

Why do variants break more stores than missing prices?

Because variants require a second structural layer most platforms don’t add by default: a ProductGroup (the “T-shirt” template) has to expose hasVariant links down to each purchasable size/color combination, or list more than one Offer directly. A store that only markets the group β€” a price range, no individually addressable SKUs β€” looks complete to a human and is a dead end to an agent, which is why AgentReady scores that state as partial credit rather than a pass.

Sources

  • audit/pillars/structured_data.py and audit/pillars/catalog.py β€” AgentReady’s own check definitions (sd.product, sd.price, sd.availability, sd.brand, sd.identifier, sd.rating, cat.variants, cat.attributes, cat.feed), the primary source for every check described above.
  • audit/scoring.py β€” pillar weighting (structured_data, catalog as distinct scored pillars).
  • research/GSC_QUERY_INSIGHTS.md, addendum 2026-08-19 β€” the 28-day Search Console export recording real query demand for “ai ready product data”.

An audit that only checks for a Product tag existing can’t tell you any of this β€” these are the fields that decide whether that tag translates into a completed order.