{
  "id": "G10",
  "url": "https://cartforagents.com/guides/product-evidence-graph",
  "title": "Product evidence graphs: keep variant, component and seller facts in place",
  "description": "Model product, variant and offer relationships with explicit inheritance and exclusion edges; keep sibling-choice experiments separate.",
  "answer": "Model each product as a small graph: a group node, component nodes for parts such as a hood, a variant node per purchasable item, an offer node per seller, and source nodes for documents, joined by explicit edges for inherits, overrides, excludes, scoped-to and derived-from. A fact reaches a variant only through an inheritance edge that no exclusion blocks, a fact scoped to a component never answers a whole-product question, and offer facts never pass between sellers. The worked snowsuit example below shows it on a real record.",
  "take": "If your catalog has components or many sellers, a table isn't enough: it can't say that a -30 °C rating belongs to the hood, not the suit. A small graph can, and that's the exact slip we saw in Shopify's generated spec list.",
  "summary": "A table can tell you which level a fact belongs to. It can't tell you that a rating belongs to the hood, not the suit, or that one seller's return policy stops at its own offer. A small graph can. Here is a proposed one, worked on a real snowsuit record.",
  "claims": [
    {
      "text": "Schema.org defines a ProductGroup as a group of products that vary only in well-described ways, such as size or colour; properties applied to the ProductGroup represent characteristics shared by each variant, except properties that reference the group and the variesBy, hasVariant and url properties.",
      "source_title": "Schema.org: ProductGroup",
      "source_url": "https://schema.org/ProductGroup",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Vocabulary definition. It has no way to say a group property applies to most but not all variants, or to one part of a product."
    },
    {
      "text": "Google says ProductGroup lets you specify common product properties for all variants, such as brand and review information, as well as the variant-determining properties.",
      "source_title": "Google Search Central: Product variant structured data",
      "source_url": "https://developers.google.com/search/docs/appearance/structured-data/product-variants",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Describes Google's markup support, not how any AI assistant reads inheritance."
    },
    {
      "text": "Schema.org says a MerchantReturnPolicy can be associated with an Organization, a Product or an Offer through hasMerchantReturnPolicy, and Google recommends store-wide return policy markup nested under Organization.",
      "source_title": "Schema.org: MerchantReturnPolicy; Google Search Central: Product structured data",
      "source_url": "https://schema.org/MerchantReturnPolicy",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Google's recommendation is on https://developers.google.com/search/docs/appearance/structured-data/product. Neither page defines precedence when policies at two levels disagree."
    },
    {
      "text": "Shopify's Global Catalog clusters search results by Universal Product ID with offers from multiple merchants; get_product explores options for a product or variant ID and returns pricing and seller checkout links for the chosen variant. Shopify marks the description, options and generated attribute, specification, feature and selling-point fields as Inferred.",
      "source_title": "Shopify: Global Catalog MCP, How it works and Inferred response fields",
      "source_url": "https://shopify.dev/docs/agents/catalog/global-catalog",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Interface documentation. It does not say how facts from different sellers' records are merged under one product."
    },
    {
      "text": "Shopify says Catalog Mapping can group separate products that are variants of the same product so they are displayed as a single listing, and can source product data from custom fields such as metafields.",
      "source_title": "Shopify Help Center: Shopify Catalog and product discovery for agentic storefronts",
      "source_url": "https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "We have not seen the Channel mapping screen; this is what the help page says."
    },
    {
      "text": "OpenAI says that after a shopper selects a product, ChatGPT may show other merchants offering it at the same or different prices, ranked on factors like availability, price, quality and maker or primary-seller status.",
      "source_title": "OpenAI Help Center: Shopping with ChatGPT Search, Pricing and How merchants are selected",
      "source_url": "https://help.openai.com/en/articles/11128490-shopping-with-chatgpt-search",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Living help article; factors, not weights."
    },
    {
      "text": "For \"toddler snowsuit rated for minus 30\", position 9's description says the insulated jacket has a hood with insulation \"rated to -30°C\", while its generated spec list says \"Insulation: [insulation brand] rated to -30°C\", and a generated top feature says that insulation \"keeps kids safe from the elements\". The description puts the two zippered side pockets on the snow pants; the generated spec says \"Pockets: Two zippered side pockets\".",
      "source_title": "Cart for Agents: Variant evidence graphs, how we checked",
      "source_url": "https://cartforagents.com/guides/product-evidence-graph#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "One record from one unpersonalized snapshot. We can't see what Shopify generated the lists from, and we haven't inspected the garment."
    },
    {
      "text": "The same record listed ten sizes (4, 5, 6, 7, 8, 9, 10, 12, 14 and 16), returned the size 4 variant at USD 339.00, and carried a generated spec line \"Available sizes: 5-6 years, 7-8 years, 6 US, 16 US\". The product rating was 4.9 from 11 reviews and the returned variant's rating 4.8 from 4.",
      "source_title": "Cart for Agents: Variant evidence graphs, how we checked",
      "source_url": "https://cartforagents.com/guides/product-evidence-graph#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "We don't know how either rating is compiled or which reviews each covers."
    },
    {
      "text": "In our 162-search Shopify agent-catalog snapshot, every one of the 1,620 results carried exactly one variant from one seller.",
      "source_title": "Cart for Agents: Receipts cited by our guides (Shopify agent-catalog snapshot, Oct 26, 2026)",
      "source_url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Search responses only, one unpersonalized context; we did not call get_product. Multi-seller clusters may appear in other calls."
    }
  ],
  "sources": [
    {
      "title": "Schema.org: ProductGroup",
      "url": "https://schema.org/ProductGroup",
      "accessed": "2026-10-27"
    },
    {
      "title": "Schema.org: MerchantReturnPolicy",
      "url": "https://schema.org/MerchantReturnPolicy",
      "accessed": "2026-10-27"
    },
    {
      "title": "Google Search Central: Product variant structured data",
      "url": "https://developers.google.com/search/docs/appearance/structured-data/product-variants",
      "accessed": "2026-10-27"
    },
    {
      "title": "Google Search Central: Product structured data",
      "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
      "accessed": "2026-10-27"
    },
    {
      "title": "Shopify: Global Catalog MCP",
      "url": "https://shopify.dev/docs/agents/catalog/global-catalog",
      "accessed": "2026-10-27"
    },
    {
      "title": "Shopify Help Center: Shopify Catalog and product discovery for agentic storefronts",
      "url": "https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/products",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Help Center: Shopping with ChatGPT Search",
      "url": "https://help.openai.com/en/articles/11128490-shopping-with-chatgpt-search",
      "accessed": "2026-10-27"
    },
    {
      "title": "Cart for Agents: Receipts cited by our guides",
      "url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "accessed": "2026-10-27"
    }
  ],
  "limitations": [
    "Platform documentation was checked on 2026-10-27. Platform routes and their documentation change; re-check before acting.",
    "The graph, its node and edge types and its resolution rules are our proposal for your own data. They are not a standard, no platform reads them, and we have not measured any effect on picks, rank or sales.",
    "The worked case is one catalog record from one unpersonalized snapshot of October 26, 2026. We read its text; we did not inspect the product.",
    "Search responses carried one variant from one seller per result, so we have not observed how a multi-seller cluster merges facts.",
    "This page does not test which sibling variant an agent picks. That is a separate experiment.",
    "Store, brand and material brand names are withheld."
  ],
  "related": [
    "https://cartforagents.com/guides/product-variant-structured-data",
    "https://cartforagents.com/guides/agent-commerce-optimization",
    "https://cartforagents.com/guides/product-claim-provenance",
    "https://cartforagents.com/guides/machine-readable-product-data",
    "https://cartforagents.com/guides/product-data-freshness-for-ai",
    "https://cartforagents.com/guides/agent-ready-product-data"
  ],
  "published": "2026-10-27",
  "updated": "2026-10-27",
  "checked": "2026-10-27",
  "kind": "guide"
}