Machine-Readable or Invisible: Auditing a Product Feed for AI Shopping Agents
Objective: Given a real product page and its structured data, decide whether an AI shopping agent (ChatGPT, Perplexity, or Google's agent stack) can actually read, compare, and recommend it, or whether it silently drops out of consideration before a human ever sees the recommendation.
You're the ecommerce SEO analyst at Allbirds, the sustainable footwear and apparel brand, checking whether the current sneaker product pages meet the baseline an AI shopping agent needs before it will even consider recommending them.
Crawl a product page's structured data, score it against the five agent-readiness inputs from the lesson, and flag the single gap most likely to disqualify the listing.
Before you start
What you'll need
Free path (everything below is enough to finish)
Free up to 500 URLs, covers a single-category audit
No account friction, easy to share with the merchandising team
The process
2 steps
Step 01 of 02
The lesson's feed-and-schema section lists Product/Offer schema.org markup and GTIN/MPN identifiers as the baseline inputs Perplexity's merchant program and the Agentic Commerce Protocol both require before an agent will parse a listing at all.
A crawl of 12 Allbirds product URLs returns Product schema present on all 12, but the `gtin` field is empty on 5 of them (all in the new Tree Runner colorways). What happens to those 5 pages in an agent's comparison, and what's the fix?
Procedure
- Load the 12 product URLs into Screaming Frog's list mode
- Enable structured data extraction and crawl
- Export the Structured Data tab, filter for Product schema entries
- Check the `gtin13`/`mpn` property column for blank cells
- Cross-reference blank rows against the CMS to find where the identifier was never backfilled
12 URLs crawled, Product schema found: 12/12 GTIN present: 7/12 GTIN missing: 5/12 (all Tree Runner colorways, launched this quarter) MPN present as fallback: 0/5 missing rows
Healthy
Every product URL has either a valid GTIN or, when no GTIN exists (a private-label first-party item), a documented MPN plus brand name as the fallback identifier.
Unhealthy
A product page ships with Product schema but an empty identifier field, which is functionally invisible to any system that matches products by universal ID rather than by title text.
What this means
Schema presence alone is not the pass condition. An agent built around GTIN matching cannot place an identifier-less product next to a competitor's, so it gets excluded from the comparison before quality or price ever matter.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| New colorways/SKUs launch without a GTIN backfilled | Add GTIN assignment as a launch-checklist item alongside the product page itself, not a follow-up task | 30 min |
Step 02 of 02
The lesson's merchant-checklist section treats review volume and real-time price/stock accuracy as direct inputs to an agent's recommendation, not passive trust signals, and warns that a stale price creates a failed or unwanted transaction.
The same 12 URLs show review counts ranging from 3 to 890, and one page's price in the feed (checked against Merchant Center) is 11 days stale after a markdown. Which of these two problems disqualifies a listing outright, and which just weakens it?
Procedure
- Paste the 12-URL crawl export into Google Sheets
- Add a review-count column pulled from each product page
- Add a feed-price-vs-live-price column by comparing the Merchant Center feed export to the current live price
- Flag any row where feed price != live price as 'checkout risk', regardless of review count
- Flag any row under 10 reviews as 'weak recommendation signal', not a hard block
URL: /tree-runner-go-mizzle Reviews: 890 Feed price: $98 Live price: $98 Status: OK URL: /tree-runner-caramel Reviews: 4 Feed price: $110 Live price: $85 (11 days stale) Status: CHECKOUT RISK
Healthy
Feed price matches live price within the same day, and review count is high enough that the agent has real sentiment data to summarize.
Unhealthy
A stale feed price that would complete a transaction at the wrong amount, which the lesson calls worse than not appearing at all.
What this means
Low review count weakens a recommendation; a stale price actively breaks the transaction agents are built to complete, so it gets fixed first regardless of how strong the rest of the listing is.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| Feed price drifts from live price after a markdown or promo | Set the feed sync job to run at least daily, hourly during sale periods | dev ticket |
Final deliverable
A 12-row agent-readiness audit sheet flagging every product missing a GTIN/MPN and every product with a stale feed price, ranked by which fix unblocks the most revenue.
See a reference example
Warby Parker, agent-readiness audit (excerpt) BLOCKING (fix first) Hayes Sunglasses, Rye Tortoise GTIN: missing Feed price: matches live -> backfill GTIN this week CHECKOUT RISK Percey Optical, Elderflower Crystal GTIN: present Feed price: $145, live $125 (9 days stale) -> resync feed job WEAK SIGNAL, not blocking Durand Sun, Whiskey Tortoise Reviews: 6 GTIN: present Feed: current -> request review outreach, no urgent fix
Success criteria
You're done when you can:
- Correctly separates hard-blocking gaps (missing identifier, stale price) from weakening-but-not-blocking gaps (low review count)
- Produces a ranked fix list, not just a flat list of issues