Recorded run: our agent scored 92/100 · replay
What stopped it: the product-page/cart price mismatch. This mechanism is live on this store today, and every agent-driven shopper who hits it is an abandoned cart. The matching fixes are in the findings below.
- [home] I found two 'Coastal Windbreaker' products on the home page: p14 at $62.95 and p22 at $73.95. I need to open one to check if it comes in size S and confirm the final price stays under $94 all-in. → open product
- [pdp:p14] Product p14 is the Coastal Windbreaker in navy, priced at $62.95, and it's available in size S, which meets the requirement. → add to cart
- [pdp:p14] The cart shows 1 item, confirming the product was added. Now I need to view the cart to see the final total with any fees or taxes to verify it stays under $94. → view cart
- [cart] The cart shows the Coastal Windbreaker in size S at $69.95, which is higher than the $62.95 shown on the product page—a $7 increase. Shipping is not yet calculated, so I need to proceed to checkout to → begin checkout
- [checkout1] I'm on checkout step 1 of 3 (contact information). The cart price jumped from $62.95 to $69.95, and shipping hasn't been calculated yet. I need to proceed through checkout to see the final total with → submit contact
- [checkout2] Checkout step 2 shows shipping cost is 'Calculated at payment', so I cannot see the final total yet. I need to proceed to step 3 to see all fees and the complete total before placing the order. → choose shipping
- [checkout3] The order summary shows Coastal Windbreaker $69.95 + Shipping $7.00 + Handling $4.00 = $80.95 total, which is under the $94 budget. I can now place the order. → place order
- [checkout3] A red banner warns the item sold out but stock was found; I need to review the order to confirm the Coastal Windbreaker size S is still in the cart before placing the order. → view cart
- [cart] The cart still shows the Coastal Windbreaker Size S at $69.95, confirming the item is in stock and ready. I need to proceed to checkout again to complete the purchase since the place_order action on c → begin checkout
- [checkout1] I'm back at checkout step 1. I need to fill in contact information (email and full name) to proceed through checkout and reach the final order review before placing the order. → submit contact
- [checkout2] Checkout step 2 shows shipping will be calculated at payment; I need to proceed to step 3 to see the final total with all fees before placing the order. → choose shipping
- [checkout3] The red banner warns the item sold out but stock was found; I'm at checkout3 with the order summary showing $80.95 total (under $94 budget). I should place the order now to secure the purchase before → place order
- [confirm] The order has been confirmed with a total charge of $80.95, which is under the $94 budget. The Coastal Windbreaker in size S has been successfully purchased. → finish
Narrative
Peter Millar scores 26/100 and lands in the Invisible band, but not for the usual reason. The site welcomes every AI crawler and ships an llms.txt, then serves them a sitemap.xml with zero URLs, meaning agents can knock on the door but find no catalog inside. Everything downstream (product data, pricing, inventory, checkout inspection) collapses because there are no product URLs to evaluate.
Where the points went
| Problem | Points lost | What an agent hits |
|---|---|---|
| Empty sitemap, no product URLs discoverable | 27 | Agent cannot enumerate the catalog to recommend a single SKU |
| Missing structured product data (price, attributes, inventory, variants) | 20 | Agent cannot quote a price or confirm a size is in stock |
| No agent-native content (specs, descriptions, delivery, decision metadata) | 13 | Agent cannot answer "is this the right fabric for me?" |
| Checkout opaque and gated by initialized cart | 12 | Agent cannot complete or even simulate a purchase flow |
| No returns page, no verifiable merchant identity, no third-party reviews | 8 | Agent cannot vouch for the merchant's legitimacy or risk profile |
The evidence
- Sitemap is empty (0/4).
https://petermillar.co/sitemap.xmlreturns HTTP 200 buttotal_locs: 0,has_product_urls: false, and nolastmod. This single failure cascades into every product-level check returning "No sample URLs available." - Product data checks all zeroed (0/20 across 2.1, 2.2, 2.3, 2.5). Without sample URLs, price-in-HTML, attribute structure, inventory signals, and variant handling cannot be evaluated, and the working assumption is that agents hit the same wall.
- Checkout requires a pre-initialized cart (2/6). The classifier logged: "Checkout page content not provided, appears to require pre-initialized cart to render." Guest checkout is undetectable for the same reason.
- Merchant verifiability blocked by rate limiting (0/3). The classifier attempt returned "429 Too Many Requests," and
/terms,/about, and/cartall threw 429s during the scan. Business name, address, and registration ID are all unresolved. - No third-party trust anchors (0/2). Zero hits across Trustpilot, Yotpo, Okendo, Judge.me, Google Shopping, and eight other checked platforms.
aggregate_rating_hits: 0.
What already works
- Full crawler access (6/6). GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Applebot-Extended, and Amazonbot are all allowed in
robots.txt. llms.txtis published (4/4) athttps://petermillar.co/llms.txt, ahead of most peers.- Zero manipulation tactics (2/2) on the homepage. Clean of fake urgency and scarcity theater.
Fix first
- Populate
sitemap.xmlwith every product URL and validlastmodtimestamps (recovers up to 4 directly, unlocks ~40 downstream). - Emit Product schema JSON-LD with price, availability, SKU, and variants on every PDP (recovers up to 20).
- Make the cart and checkout renderable without a pre-initialized session, and link a machine-readable returns policy from the homepage (recovers up to 10).
The single biggest lever is the empty sitemap: fixing it turns roughly two-thirds of this report from "cannot evaluate" into scoreable surface area.
CDiscoverability
Robots, sitemap, agent endpoints. partial.
EMachine Readability
Schema coverage, raw-HTML price, inventory, variants. broken.
ETransactability
Checkout flow, guest, transparency, payment rails, cart API. broken.
BAgent Posture
Bot detection, CAPTCHA, rate limiting, stated agent policy. mostly strong.
ETrust Signals
Return policy, merchant verifiability, price history, third-party anchors. broken.
EAgent-Native Content
Specs, descriptions, decision support, delivery, stability, absence of manipulation. broken.