Scan report ·

brooklinen.com

Mixed signal. Agents can reach the page, but guess from there.

Category · home

C
55 / 100
Mixed signal
Aisle Storefront · Simulated twin
This scan found 4 weaknesses an agent would hit at checkout, so we planted the same mechanisms in a simulated storefront. Watch an agent shop it, or send your own.
Aisle Max · Remediation packet
Every fix this scan flagged, one card at a time: ranked by points per effort, with copy-paste snippets, per-fix downloads, and a plan your AI coding agent can execute.
Discoverability
C
12 / 20
Machine Readability
C
11 / 20
Transactability
B
14 / 20
Agent Posture
D
6 / 15
Trust Signals
C
6 / 10
Agent-Native Content
D
6 / 15

Narrative

Brooklinen scores 55 out of 100, a mixed signal that captures a specific and self-inflicted problem: the site is generous to AI crawlers and technically competent on payments, but it withholds the structured data those crawlers exist to consume. GPTBot, ClaudeBot, PerplexityBot, and six other agents are explicitly allowed in robots.txt, and an llms.txt sits at the well-known path. Then those crawlers arrive at product pages and find nothing machine-readable to eat.

The single largest point loss is structured product data, where Brooklinen scores 0 out of 6. Across all nine sampled product URLs, from classic-duvet-cover to the-complete-clean-bundle, there is zero Product or Offer schema. This is remarkable given the site runs on Shopify, where Product JSON-LD is essentially a checkbox. The raw HTML contains a Shopify product JSON blob with variants and prices (which is why price-in-raw-HTML earns full marks at 8 out of 8, with hits like the $135.20 duvet variant), but none of it is exposed in schema.org form. Agents shopping for bedding on behalf of users will see Brooklinen's robots.txt say yes and then fail to extract a canonical price, GTIN, or availability. That is the worst of both worlds.

Compounding this, product attributes structured scores 0 out of 6. Not a single sampled URL exposes color, size, or material in structured markup. Two pages (the classic duvet cover and the checkerboard lumbar pillow) surface these as labeled text, but seven pages including classic-fitted-sheets and prism-alpaca-throw-blanket offer nothing at all. An agent trying to reconcile "queen percale in white" against Brooklinen inventory has to scrape and guess.

Agent posture loses four more points to CAPTCHA prevalence, scoring 0 out of 4. Both reCAPTCHA and hCaptcha are present on the cart and homepage, and the check flags this as transaction-blocking. Combined with the single 403 observed at https://brooklinen.com/checkout, this signals to any agent runtime that completing a purchase on behalf of a user is likely to fail at the last mile, even though Shop Pay, ACH via Plaid, Apple Pay, and PayPal are all detected and the Shopify /cart endpoint is accessible. The plumbing is there; the doorman turns agents away.

Checkout structure and guest checkout together lose six more points. The classifier could not reach the checkout page without an initialized cart, and the cart shows only Sign In and Create Account, no visible guest path. Shopify defaults to guest, so this is likely a theme-level choice worth reversing.

Smaller but telling: the sitemap at brooklinen.com/sitemap.xml contains only five URLs and no product entries, and has no lastmod timestamps. Stated agent policy scores 0 out of 2 because no terms or privacy content was classifiable. Merchant verifiability is partial: "Brooklinen" appears in the copyright but there is no physical address or registration ID. Price stability scores 0 out of 2 because no priceValidUntil or price schema exists to anchor an agent's quote.

The biggest opportunity is embarrassingly cheap: enable Product and Offer JSON-LD on product pages and remove the CAPTCHA gate from cart, and Brooklinen converts an open door into an actual storefront for agents.

CDiscoverability

Robots, sitemap, agent endpoints. partial.

AI crawler posture: 6/6
https://brooklinen.com/robots.txt
1.1 · 6/6
×
Structured product data coverage: 0/6
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
1.2 · 0/6
!
Sitemap quality: 2/4
https://brooklinen.com/sitemap.xml
How to fixPro
1.3 · 2/4
Agent-specific endpoints: 4/4
https://brooklinen.com/.well-known/ai-plugin.json
1.4 · 4/4

CMachine Readability

Schema coverage, raw-HTML price, inventory, variants. partial.

Price in raw HTML: 8/8
sample · https://www.brooklinen.com/products/classic-duvet-cover
2.1 · 8/8
×
Product attributes structured: 0/6
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
2.2 · 0/6
!
Inventory signals: 2/5
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
2.3 · 2/5
!
Variant handling: 1/1
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
2.5 · 1/1

BTransactability

Checkout flow, guest, transparency, payment rails, cart API. mostly strong.

!
Checkout flow structure: 2/6
How to fixPro
3.1 · 2/6
!
Guest checkout availability: 2/4
How to fixPro
3.2 · 2/4
Price transparency signals: 4/4
3.3 · 4/4
Machine-native payment rails: 3/3
3.4 · 3/3
Cart API accessibility: 3/3
3.5 · 3/3

DAgent Posture

Bot detection, CAPTCHA, rate limiting, stated agent policy. gappy.

!
Bot detection aggressiveness: 3/6
How to fixPro
4.1 · 3/6
×
CAPTCHA prevalence: 0/4
How to fixPro
4.2 · 0/4
Rate limiting posture: 3/3
4.3 · 3/3
×
Stated agent policy: 0/2
How to fixPro
4.4 · 0/2

CTrust Signals

Return policy, merchant verifiability, price history, third-party anchors. partial.

!
Return policy machine-readable: 1/3
https://brooklinen.com/returns
How to fixPro
5.1 · 1/3
!
Merchant verifiability: 1/3
How to fixPro
5.2 · 1/3
Price history signals: 2/2
5.3 · 2/2
Third-party trust anchors: 2/2
5.4 · 2/2

DAgent-Native Content

Specs, descriptions, decision support, delivery, stability, absence of manipulation. gappy.

!
Specification completeness: 2/4
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
6.1 · 2/4
×
Conversational product descriptions: 0/2
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
6.2 · 0/2
!
Decision-support metadata: 1/3
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
6.3 · 1/3
!
Delivery date transparency: 1/2
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
6.4 · 1/2
×
Price stability signals: 0/2
sample · https://www.brooklinen.com/products/classic-duvet-cover
How to fixPro
6.5 · 0/2
Absence of manipulation tactics: 2/2
6.6 · 2/2