{"slug":"ollie-fvf3xn","companyName":"Ollie","domain":"ollie.com","url":"https://ollie.com","headline":"A pet food delivery service blocks its signup funnel to automated visitors while publishing prices only after JavaScript execution.","compositeScore":52,"humanScore":80,"agentScore":23,"doorGap":57,"humanMeasured":1,"agentMeasured":6,"percentile":8,"humanPercentile":17,"agentPercentile":50,"isPartial":false,"depth":"free","siteClass":"unknown","scannerVersion":12,"scannedAt":"2026-09-08T14:26:46.316Z","unlocked":false,"mission":{"steps":[{"url":"https://www.ollie.com","outcome":"ok","purpose":"reach the site at all"},{"url":"https://www.ollie.com/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://www.ollie.com","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://www.ollie.com/llms.txt","outcome":"missing","purpose":"read the site's own guide for language models"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"find out what pages exist"},{"url":"https://www.ollie.com/.well-known/security.txt","outcome":"missing","purpose":"find a contact route for machines"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"find a published agent interface"},{"url":"https://www.ollie.com/.well-known/ai-plugin.json","outcome":"missing","purpose":"find an agent plugin manifest"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"find out whether verified agents are recognised"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"read the homepage as data rather than as a page"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"find a machine readable API spec"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"read the developer documentation"},{"url":"https://www.ollie.com/meal-plans/","outcome":"missing","purpose":"read the prices without running JavaScript"},{"url":"https://www.ollie.com","outcome":"missing","purpose":"walk the way a visitor would, to a signup form or a product"}],"verdict":"The agent got through 3 of 14 requests, but could not read the site's own guide for language models. It came up empty on 10 other checks too. That is enough missing for a machine to give up before it reaches a purchase."},"observations":null,"dimensions":[{"key":"machine_discoverability","audience":"agent","score":40,"summary":"The site serves a real browser normally and allows major AI crawlers by user agent, but key content appears only after JavaScript runs. No sitemap or schema.org markup exists to help machines understand the offering.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":10,"summary":"No API documentation is linked from the homepage in raw HTML or after rendering. No OpenAPI spec exists at any of the 6 standard paths checked. The signup path is blocked to automated visitors by robots.txt rule Disallow: /onboarding/, so.","evidence":{"locked":true,"count":3}},{"key":"pricing_legibility","audience":"agent","score":30,"summary":"2 prices appear only after JavaScript runs, a client that does not render pages sees no price at all.","evidence":{"locked":true,"count":1}},{"key":"agent_aware_instrumentation","audience":"agent","score":8,"summary":"No MCP manifest exists at any of the 3 standard paths checked. No ai-plugin.json, llms.txt, or Web Bot Auth signals are published. The site has no machine-readable way to tell an agent what it can do or how to interact with it.","evidence":{"locked":true,"count":4}},{"key":"machine_fetchable_trust","audience":"agent","score":40,"summary":"The homepage answers automated requests with HTTP 200 and serves a real browser normally. No security.txt file exists at /.well-known/security.txt to publish security contact information or policies.","evidence":{"locked":true,"count":2}},{"key":"commercial_rails","audience":"agent","score":10,"summary":".","evidence":{"locked":true,"count":2}},{"key":"steps_to_first_value","audience":"human","score":80,"summary":"The signup page is 2 steps from the homepage, but robots.txt closes it to automated visitors with Disallow: /onboarding/, so the form itself could not be read. A human can reach it in 2 clicks.","evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"error_recovery","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}}],"issues":[{"rank":1,"title":"Pricing information is completely hidden from machines that do not execute JavaScript.","dimensionKey":"pricing_legibility","evidence":{"locked":true,"count":3},"fix":null},{"rank":2,"title":"No developer documentation is linked from the homepage, in raw HTML or the rendered page, so integration starts with a search engine.","dimensionKey":"programmatic_onboarding","evidence":{"locked":true,"count":1},"fix":null},{"rank":3,"title":"No machine-readable API or integration surface is published for agents to interact with the service.","dimensionKey":"agent_aware_instrumentation","evidence":{"locked":true,"count":3},"fix":null}],"fixArtifacts":{"locked":true,"count":9,"summaries":[{"id":"robots_search_bots:robots-txt","kind":"robots_search_bots","title":"robots.txt rules for AI crawlers","path":"/robots.txt","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["The assistants' search crawlers read and cite the site to buyers; training stays the owner's decision."]}},{"id":"pricing_ssr_fallback:pricing-page","kind":"pricing_ssr_fallback","title":"Prices in the HTML, not only after JavaScript","path":"pricing page","effort":{"minutes":60,"role":"developer"},"outcome":{"dimension":"pricing_legibility","external":["A client that reads raw HTML sees the plans and prices."]}},{"id":"software_offer_jsonld:pricing-page","kind":"software_offer_jsonld","title":"Pricing as Offer structured data","path":"pricing page","effort":{"minutes":20,"role":"developer"},"outcome":{"dimension":"pricing_legibility","external":["Assistants comparing vendors read the plans and prices as Offer structured data."]}},{"id":"sitemap_xml:sitemap-xml","kind":"sitemap_xml","title":"sitemap.xml","path":"/sitemap.xml","effort":{"minutes":20,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["Search engines and assistant crawlers find every listed page without walking for it."]}},{"id":"organization_jsonld:homepage","kind":"organization_jsonld","title":"Organization structured data","path":"homepage","effort":{"minutes":15,"role":"developer"},"outcome":{"dimension":"machine_discoverability","external":["Search and assistant crawlers read the company entity from the homepage rather than inferring it."]}},{"id":"interfaces_note:notes","kind":"interfaces_note","title":"Machine interfaces: where you stand","path":"notes","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["The developer surface is built in an order where every published pointer answers."]}},{"id":"pricing_md:pricing-md","kind":"pricing_md","title":"pricing.md","path":"/pricing.md","effort":{"minutes":20,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["Agents read the price list directly instead of rendering the pricing page."]}},{"id":"security_txt:well-known-security-txt","kind":"security_txt","title":"security.txt","path":"/.well-known/security.txt","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"machine_fetchable_trust","external":["Researchers and automated scanners find a disclosure address instead of guessing one."]}},{"id":"llms_txt:llms-txt","kind":"llms_txt","title":"llms.txt","path":"/llms.txt","effort":{"minutes":15,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["Assistants that read llms.txt get a curated map of the site instead of guessing from the homepage."]}}]},"feedback":{"endpoint":"/api/feedback","mcpTool":"rate_fix","targets":[{"type":"report","key":"report"},{"type":"dimension","dimensionKey":"machine_discoverability","key":"dimension:machine_discoverability"},{"type":"dimension","dimensionKey":"programmatic_onboarding","key":"dimension:programmatic_onboarding"},{"type":"dimension","dimensionKey":"pricing_legibility","key":"dimension:pricing_legibility"},{"type":"dimension","dimensionKey":"agent_aware_instrumentation","key":"dimension:agent_aware_instrumentation"},{"type":"dimension","dimensionKey":"machine_fetchable_trust","key":"dimension:machine_fetchable_trust"},{"type":"dimension","dimensionKey":"commercial_rails","key":"dimension:commercial_rails"},{"type":"dimension","dimensionKey":"steps_to_first_value","key":"dimension:steps_to_first_value"},{"type":"dimension","dimensionKey":"required_fields","key":"dimension:required_fields"},{"type":"dimension","dimensionKey":"verification_walls","key":"dimension:verification_walls"},{"type":"dimension","dimensionKey":"error_recovery","key":"dimension:error_recovery"},{"type":"issue","dimensionKey":"pricing_legibility","checkId":"pricing_nojs","key":"issue:pricing_legibility:pricing_nojs"},{"type":"issue","dimensionKey":"programmatic_onboarding","checkId":"api_surface","key":"issue:programmatic_onboarding:api_surface"},{"type":"issue","dimensionKey":"agent_aware_instrumentation","checkId":null,"key":"issue:agent_aware_instrumentation:-"}]}}