# Brooklinen catalog audit

> How Google Shopping and AI shopping agents (ChatGPT, Perplexity, Google AI Mode) read brooklinen.com's Shopify catalog. Audited 16 October 2026 by catalogaudit from public storefront data only.

- Ad feed health: 86/100 (good)
- AI agent readability: 56/100 (needs work)
- Catalog size: 437 products; 25 flagship products inspected in depth
- 5 of 25 sampled products have an issue that gets items disapproved or throttled in Google Shopping (about 87 catalog-wide)
- 5 of 25 are hard for AI shopping agents to read (about 87 catalog-wide)

## Issues found

1. **Critical: Product structured data only appears after JavaScript runs** (25/25 sampled products; affects AI agents). Google renders it eventually, but most AI crawlers (OAI-SearchBot, PerplexityBot, ClaudeBot) don't execute JavaScript — to them the product has no structured data at all. How to fix: Render the JSON-LD server-side in the theme's Liquid instead of injecting it with an app script, so it's in the HTML crawlers download. If an app adds it, look for a server-side output setting or switch apps. See https://catalogaudit.app/checks#jsonld_js_only
2. **Critical: No material, measurements or specs in the product data** (5/25 sampled products; affects AI agents). Agents filter on facts ("merino, under 300g, machine-washable"). With none, the product can't match those queries. How to fix: Add the facts shoppers filter on — material, dimensions, weight, care — to the description and, better, to metafields published in the JSON-LD as additionalProperty. See https://catalogaudit.app/checks#specs_absent
3. **Critical: Missing description** (3/25 sampled products; affects ad feeds and AI agents). Description is a required feed attribute; agents have nothing to reason over. How to fix: Write a description that covers what the product is, what it's made of, its fit or dimensions, and who it's for. See https://catalogaudit.app/checks#description_missing
4. **Critical: Invalid GTIN / barcode** (3/25 sampled products; affects ad feeds). Merchant Center rejects invalid GTINs ("Invalid value [gtin]"); the item is disapproved until fixed. How to fix: Correct the barcode in Shopify admin (product → variant → Barcode) to the 8-, 12-, 13- or 14-digit GTIN from the manufacturer or your GS1 record. If the product has no GTIN, clear the field rather than entering a SKU. See https://catalogaudit.app/checks#gtin_invalid
5. **Critical: Purchasable variant priced at 0** (2/25 sampled products; affects ad feeds). Zero prices are rejected as "Invalid value [price]". How to fix: Set a real price on purchasable variants, or make free samples and gifts unavailable so they drop out of feeds. See https://catalogaudit.app/checks#zero_price
6. **Critical: No product image** (1/25 sampled products; affects ad feeds and AI agents). Image link is required — the item can't serve in Shopping at all. How to fix: Add at least one product image, and point each variant to its own image. See https://catalogaudit.app/checks#image_missing
7. **Warning: No GTIN on any variant** (3/25 sampled products; affects ad feeds and AI agents). Branded products without GTINs get "limited performance" in Shopping and can't be matched to the same product across sellers by agents. How to fix: Add the manufacturer's GTIN to each variant's Barcode field. For your own brand, license GTINs from GS1; for custom or handmade items without one, submit identifier_exists = no. See https://catalogaudit.app/checks#gtin_missing
8. **Warning: Specs buried in prose, not structured** (1/25 sampled products; affects AI agents). Facts exist in paragraphs but not as attributes; agents and feeds have to guess, and usually drop them. How to fix: Move specs out of paragraphs into product metafields and publish them as additionalProperty name/value pairs in the JSON-LD. See https://catalogaudit.app/checks#specs_unstructured
9. **Warning: Very thin description (< 150 characters)** (1/25 sampled products; affects ad feeds and AI agents). Short copy limits which searches the item can match in Shopping and gives agents nothing to quote. How to fix: Expand the description past 150 characters with material, dimensions, use and care — the facts agents quote and feeds match on. See https://catalogaudit.app/checks#description_thin
10. **Warning: No product type** (1/25 sampled products; affects ad feeds and AI agents). Without a product type, mapping to Google's taxonomy (and bidding by category) falls back to guesswork. How to fix: Fill in the product type (or Shopify product category) for every product so it maps cleanly to Google's product taxonomy. See https://catalogaudit.app/checks#product_type_missing
11. **Info: Very short title (< 25 characters)** (9/25 sampled products; affects ad feeds and AI agents). Feed titles that include brand, product type and key attribute get more impressions. How to fix: Lengthen the feed title to brand + product type + key attribute, e.g. "Acme Women's Merino Crew Sweater – Navy". See https://catalogaudit.app/checks#title_thin
12. **Info: Images have no alt text** (1/25 sampled products; affects AI agents). Crawlers and agents that don't run vision read nothing from the images. How to fix: Add alt text to product images in Shopify admin, describing the product, its color and the view. See https://catalogaudit.app/checks#image_alt_missing

## Store-wide checks

- AI shopping agents can crawl product pages: yes
- Refund policy published: yes
- Shipping policy published: yes

## Products

Scores out of 100 (ad feed / AI agents), worst first:

- Sunwashed Stripe Duvet Set Checkout: 0 / 0
- Dev Paper Bag: 7 / 7
- Super-Plush 4-Piece Bath Towel Set: 46 / 0
- Classic Percale Pillowcase Set - Last Call: 70 / 10
- Pillow Protector Set: 97 / 37
- Set of 2 Comforter Bundle: 70 / 70
- Modern Heritage Quilt Set: 88 / 58
- Bigtime Lounge Around Bundle: 88 / 58
- Breezeweave Crinkle Cotton Duvet Cover - Last Call: 100 / 58
- Essential Sheet Set: 97 / 67
- Bigtime Robe: 97 / 67
- Dreamweave Waffle Pouch: 97 / 67
- Super-Plush Slippers: 97 / 67
- Pop Check Duvet Cover: 97 / 67
- Tufted Cotton Bath Mat: 97 / 67
- Linen Shower Curtain: 97 / 67
- Sherpa Lumbar Pillow Cover: 100 / 70
- Super Fluff Throw Blanket: 100 / 70
- Modern Heritage Quilted Sham Set: 100 / 70
- Terry Bucket Hat - Last Call: 100 / 70
- Surfside Stripe Terry Tote - Last Call: 100 / 70
- Parkside Beach Blanket - Last Call: 100 / 70
- Down Alternative Lumbar Pillow Insert: 100 / 70
- Sunwashed Check Bed Blanket: 100 / 70
- Oxygen Bleach Alternative: 100 / 70

## Fixed products

catalogaudit rebuilt the 5 lowest-scoring products into complete structured data (JSON-LD), Shopify metafields and Google feed rows: Sunwashed Stripe Duvet Set Checkout; Dev Paper Bag; Classic Percale Pillowcase Set - Last Call; Pillow Protector Set; Set of 2 Comforter Bundle. The fixed payloads are on the report page.

## Method

Everything comes from public storefront data: /products.json, the storefront Ajax API and each product page's JSON-LD, robots.txt and policy pages, checked against Google Merchant Center's product data specification and schema.org's Product vocabulary. Every check: https://catalogaudit.app/checks

Full report: https://catalogaudit.app/reports/brooklinen.com
