---
title: The AI Product Passport: What Information Does an AI Shopping Agent Need? (2026)
description: The shopping-agent information object — not the PIM catalog contract. Fragmented data produces poor recommendations. Reuse Gateway ~180 to 95 ms and ~$791/mo at 50K sessions, not a passport completeness KPI.
url: https://www.factualminds.com/blog/ai-product-passport-ecommerce-2026/
datePublished: 2026-08-27T00:00:00.000Z
dateModified: 2026-08-27T00:00:00.000Z
author: palaniappan-p
category: Generative AI
tags: ai-agents, ecommerce, product-data, amazon-bedrock, bedrock-agentcore, generative-ai
---

# The AI Product Passport: What Information Does an AI Shopping Agent Need? (2026)

> The shopping-agent information object — not the PIM catalog contract. Fragmented data produces poor recommendations. Reuse Gateway ~180 to 95 ms and ~$791/mo at 50K sessions, not a passport completeness KPI.

> **AWS lifecycle notice (June 30, 2026)** — Amazon Bedrock Agents Classic is in maintenance for new customers after **July 30, 2026**. Catalog **draft** agents should use [Bedrock AgentCore](/blog/amazon-bedrock-agentcore-production/). Full matrix: [lifecycle roundup](/blog/aws-service-lifecycle-updates-june-2026/). The passport is a **data object**, not a Classic action group.

**On June 17, 2026**, AgentCore **Harness** reached general availability ([What's New](https://aws.amazon.com/about-aws/whats-new/2026/06/amazon-bedrock-agentcore-harness-generally-available/)). Use it to **draft** against tools. Do not use it as the product system of record.

The AI product passport is the **shopping-agent information object**: what a comparison or recommendation turn is allowed to read about one sellable SKU. It is **not** [the AI-ready catalog contract](/blog/ai-ready-product-catalog-agentic-commerce-2026/) (post 35). That contract is the PIM output for **all** consumers. Fragmented product data produces poor AI recommendations.

This post is **not** an anonymized client engagement. We do not invent completeness % or recommendation CTR.

> **First-party signals we reuse (not eCommerce outcomes)** — Gateway server-side tools cut median tool round-trip **~180 ms → ~95 ms** on a **B2B CRM assistant** (12 tools, ~8k turns/day) — [Gateway post](/blog/amazon-bedrock-agentcore-gateway-server-side-tool-execution-2026/). Platform TCO silhouette: support-style AgentCore at **50K sessions/mo ~$791/mo** platform + model ([decision guide](/blog/aws-bedrock-agentcore-vs-amazon-q-enterprise-decision-guide-2026/)). Passport reads are catalog/inventory p95, not Gateway canary. Model **your** copilot mix on the [AgentCore pricing calculator](/tools/amazon-bedrock-agentcore-pricing-calculator/).

> **Reproduce this** — Copy [`ai-product-passport-schema.md`](https://www.factualminds.com/examples/architecture-blog-2026/ecommerce-ai-agents-series/ai-product-passport-schema.md). Map groups to **your** PIM. Fail one category’s SKUs closed if identity or `asOf` is missing. Contract: [`ai-ready-catalog-contract.md`](https://www.factualminds.com/examples/architecture-blog-2026/ecommerce-ai-agents-series/ai-ready-catalog-contract.md). Series folder: [`ecommerce-ai-agents-series/`](https://www.factualminds.com/examples/architecture-blog-2026/ecommerce-ai-agents-series/README.md).

**Opinionated take:** one passport object per sellable SKU, served from the same fields as checkout. Trade-off: merchandising cannot keep a chat-only title. You stop recommending fiction.

FactualMinds helps merchants make product information agent-readable — not a second catalog in a prompt.

## The object (what the agent is allowed to read)

```mermaid
flowchart TB
  product[Product]
  product --> attrs[Attributes]
  product --> variants[Variants]
  product --> price[Price]
  product --> inv[Inventory]
  product --> compat[Compatibility]
  product --> reviews[Reviews]
  product --> ship[Shipping]
  product --> pol[Policies]
```

```text
Product
├── Attributes
├── Variants
├── Price
├── Inventory
├── Compatibility
├── Reviews (aggregated, policy-safe)
├── Shipping
└── Policies (return, warranty) by reference
```

| Group | Fields | If missing |
| ----- | ------ | ---------- |
| **Identity** | `sku`, `parent_id`, `gtin` | Fail closed |
| **Attributes** | Required per category | No honest comparison |
| **Variants** | Size/color graph | Wrong size sold |
| **Price** | Amount, currency, `asOf`, fees known | Hallucinated total |
| **Inventory** | ATP, `asOf` | Oversell |
| **Compatibility** | Named relations | Bad attach / wrong fit |
| **Reviews** | Count + themes from **your** pipeline | Invented quotes |
| **Shipping** | Method ids, not prose | Wrong ETA |
| **Policies** | Policy document version | Drift from legal copy |

Do not auto-publish passport fields. Draft in PIM; [deterministic validate](/blog/ai-product-catalog-management-ecommerce-2026/); merchandiser publishes.

[Baymard](https://baymard.com/lists/cart-abandonment-rate) **70.22%** still describes checkout confidence. A passport that lies about stock or fees hands that problem to every agent that reads it.

**Identity group, worksheet.** `sku` is the sellable unit the cart uses. `parent_id` ties colorways. `gtin` is unique among live SKUs — duplicates fail the [catalog contract](/blog/ai-ready-product-catalog-agentic-commerce-2026/). If marketplace sellers share a GTIN you do not own, do not pretend uniqueness; fail closed or qualify the merchant.

**Attributes group.** Required keys are **per category**, not a global kitchen sink. Apparel: size, width, material, care. Hardware: voltage, compatibility SKU list. Empty required keys → no comparison, not “the model will infer from the hero image.”

**Variants.** A parent without children is not a size selector. A child without a parent is how agents sell the wrong URL. The graph must match what checkout sells.

**Price and inventory.** Two clocks. If price `asOf` is newer than ATP `asOf`, say so in the object — do not silently mix. Fees the shopper will see at checkout belong on the passport or the agent must return **unknown** for total, not a made-up landed cost.

**Compatibility.** Named relations (`fits_sku`, `requires_sku`), not “works great with our ecosystem” in the description. Bad attach is a returns generator.

**Reviews.** Count + theme tags from **your** pipeline. Star average without a count is weak evidence. Quotes, if any, are opted-in and stripped of PII. The model does not write testimonials into the passport.

**Shipping and policies.** Method **ids** and policy **version** pointers. “Free shipping on orders over $50” as prose will drift from the OMS rule. Point at the rule.

The passport is a **view** of the contract, not a CMS. If search, recs, GEO, and the agent each get a different JSON, you have four products. One contract, many consumers — post 35. This object is the shopping-agent slice.

## How this differs from adjacent posts

| Post | Job |
| ---- | --- |
| **9 — catalog management** | Extract, validate, merchandiser publish **inside PIM** |
| **10 — shopping readiness** | 13-check score before inviting **your** copilot |
| **34 — GEO** | Packaging for generative engines — **not** a rank guarantee |
| **35 — catalog contract** | One output contract for search, recs, GEO, **and** agents |
| **36 — agent choice** | Strategic decision layer (what intermediaries weigh) |
| **61 — agent-ready storefront** | APIs, identity, shipping/policy as storefront prep |
| **62 — this passport** | The **read object** for a shopping-agent turn |
| **64 — comparison audit** | Merchant audit of whether that object survives a bake-off |

SEO is **not** obsolete. The passport does not replace Shopping feeds. It is what an agent uses **in addition** when it compares.

## Minimum viable vs “complete dossier”

**Minimum (fail closed without):** identity, required attrs, sellable variant graph, price+`asOf`, ATP+`asOf`.

**Then:** compatibility relations, shipping method ids, policy version pointers, aggregated reviews.

**Never:** PAN, shopper PII, unpublished discounts, invented certifications, raw review PII, Browser-scraped HTML as ATP.

A JSON sketch (not a client schema — map to **your** PIM). Context: illustrative object only; serve it from APIs with `asOf`, not from HTML.

```json
{
  "sku": "SKU-TEE-BLU-M",
  "parent_id": "SKU-TEE-BLU",
  "gtin": "0000000000000",
  "attributes": { "size": "M", "color": "blue", "material": "cotton" },
  "price": { "amount": "24.00", "currency": "USD", "asOf": "2026-08-27T12:00:00Z" },
  "inventory": { "atp": 12, "asOf": "2026-08-27T12:00:00Z" },
  "shippingMethodIds": ["std", "exp"],
  "policyVersion": "returns-v3",
  "reviews": { "count": 40, "themes": ["fit", "color"] }
}
```

Replace the GTIN, amounts, and counts with **your** records. Do not submit this fixture as completeness. `reviews.count` here is a placeholder, not a FactualMinds measurement. Empty `gtin` or missing `asOf` should fail closed in code, not in the model.

Adobe July 2026 AI-referral figures ([Digital Commerce 360](https://www.digitalcommerce360.com/2026/08/19/adobe-ai-referral-traffic-data-july-2026/): **+62% YoY**, **60%** higher conversion vs non-AI) are **channel mix**, not proof that passports already convert unattended. Do not copy those lifts as a FactualMinds KPI.

## How this sits on AWS

`getProduct` / `getPassport` via Gateway. No native Shopify connector. Harness for a **draft** loop if tools are short. Publish stays human. Multi-agent is not required to serve a JSON object. Skip Agents Classic after **30 July 2026**.

Strands after export does not become the PIM. Memory must not store live price/ATP — [memory policy](/blog/ai-agent-memory-ecommerce-2026/).

Gateway **~180 → ~95 ms** is the CRM canary. Catalog p95 dominates. **~$791/mo** at 50K sessions sizes a support-shaped host, not passport generation savings.

Context: Python 3.12+, `boto3` ≥ 1.38.0, [supported region](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agentcore-regions.html). Sketch — pin the model your account allows.

```python
# Sketch — InvokeHarness for a draft/enrich turn. Publish is not a tool.
# runtimeSessionId ≥ 33 characters. getProduct must return passport fields + asOf.
import boto3
import uuid

client = boto3.client("bedrock-agentcore", region_name="us-west-2")
response = client.invoke_harness(
    harnessArn="arn:aws:bedrock-agentcore:us-west-2:123456789012:harness/catalog-draft",
    runtimeSessionId=str(uuid.uuid4()),
    messages=[{"role": "user", "content": [{"text": "Draft missing attrs for SKU-TEE-BLU-M"}]}],
)
```

If `publishProduct` is attached, you are past Draft. Strip it.

## What broke

> **What broke** — A merchandising team built a “chat catalog” JSON in a CMS so agents would “have everything,” separate from PIM. Titles were punchier; GTINs duplicated; ATP was copied nightly. **Detection:** comparison goldens picked SKU-TEE-BLU-M as in-stock; checkout said 0; GTIN clash with a colorway. **Fix:** delete the shadow JSON; passport views the contract fields; fail closed on identity/`asOf`; merchandiser publish only. **Lesson:** fragmented product data produces poor recommendations. A second dossier is fragmentation with better typography.

Invented review quotes in the passport is the same class of failure with a legal twist.

## What to Do This Week

1. Copy [`ai-product-passport-schema.md`](https://www.factualminds.com/examples/architecture-blog-2026/ecommerce-ai-agents-series/ai-product-passport-schema.md).
2. Map each group to PIM fields. Empty groups are honest; invented groups are not.
3. Fail closed on missing `sku` / `parent_id` / `gtin` / price `asOf` / ATP `asOf` for one category.
4. Confirm search, recs, and the passport **share** post 35 — no shadow graph.
5. Ban auto-publish. Draft tools only if validation is code.
6. Browser off. Model any draft harness on the [AgentCore pricing calculator](/tools/amazon-bedrock-agentcore-pricing-calculator/).
7. Run [`monday-checklist.md`](https://www.factualminds.com/examples/architecture-blog-2026/ecommerce-ai-agents-series/monday-checklist.md). Then audit comparison survival — [post 64](/blog/ai-product-comparison-optimization-ecommerce-2026/).

## What This Post Doesn't Cover

- Catalog contract for all consumers — [post 35](/blog/ai-ready-product-catalog-agentic-commerce-2026/)
- PIM extract/validate/publish loop — [post 9](/blog/ai-product-catalog-management-ecommerce-2026/)
- Storefront APIs and identity — [post 61](/blog/agent-ready-ecommerce-storefront-2026/)
- Merchant comparison audit — [post 64](/blog/ai-product-comparison-optimization-ecommerce-2026/)
- A measured recommendation-quality KPI from a named passport rollout — we are not inventing it

## FAQ

### When should you NOT publish an AI product passport field?

Do not auto-publish. Uncertified claims and missing `asOf` fail closed. Merchandiser publishes.

### How is the passport different from the AI-ready catalog contract?

Post 35 is the shared output contract. This is the shopping-agent read object. One graph.

### What could go wrong if the passport is assembled from PDP HTML at request time?

Prose specs, stale badges, parent/child confusion. Serve checkout fields.

### When should you NOT include review quotes in the passport?

No invented quotes, no raw PII. Aggregated count and themes from your pipeline.

### What could go wrong if variants are missing from the passport?

Wrong size sold, oversell on the parent. Identity plus variant graph are required.

### Does AgentCore generate the passport?

It may draft. It must not publish. No native Shopify connector. Skip Classic after 30 July 2026.

---

Need a shopping-agent object that is not a second PIM? [Contact FactualMinds](/contact-us/) or see [Amazon Bedrock](/services/aws-bedrock/).

## FAQ

### When should you NOT publish an AI product passport field?
Do not auto-publish. Draft in PIM; merchandiser publishes. Uncertified organic, medical, or waterproof claims, empty required attrs, and prices without asOf fail closed. The passport is a read object for comparison turns — not a write surface for the model.

### How is the passport different from the AI-ready catalog contract?
Post 35 is the PIM output contract every consumer (search, recs, GEO, agents) must share. This post is the shopping-agent information object: the slice a comparison or recommendation turn is allowed to read. Do not invent a second graph. If the contract fails, fix PIM — do not prompt the passport harder.

### What could go wrong if the passport is assembled from PDP HTML at request time?
Color, size, and compatibility stay in prose. Cache badges go stale. The agent compares a parent to a child. Golden evals fail when you restyle the PDP. Serve the passport from the same fields as add-to-cart.

### When should you NOT include review quotes in the passport?
Skip invented quotes and raw PII. Aggregated count plus themes from your review pipeline, policy-safe. A model that writes five-star copy into the passport is marketing fraud, not enrichment.

### What could go wrong if variants are missing from the passport?
The agent sells SKU-TEE-BLU-M as in-stock when only the parent is listed, or ships the wrong size. Identity needs sku, parent_id, gtin. The size/color graph is not optional for apparel.

### Does AgentCore generate the passport?
It may draft missing copy against a short tool list (Harness GA 17 June 2026) if validation is code and publish is human. It must not be the system of record. No native Shopify connector. Skip Agents Classic after 30 July 2026.

---

*Source: https://www.factualminds.com/blog/ai-product-passport-ecommerce-2026/*
