{"slug":"planhat-76g42b","companyName":"Planhat","domain":"planhat.com","url":"https://planhat.com","headline":"Planhat publishes no prices and routes all buyers to a sales demo, blocking agents from computing cost before signup.","compositeScore":43,"humanScore":54,"agentScore":32,"doorGap":22,"humanMeasured":4,"agentMeasured":6,"percentile":8,"humanPercentile":8,"agentPercentile":15,"isPartial":false,"depth":"free","siteClass":"b2b_saas","scannerVersion":12,"scannedAt":"2026-09-08T14:01:08.740Z","unlocked":false,"mission":{"steps":[{"url":"https://www.planhat.com","outcome":"ok","purpose":"reach the site at all"},{"url":"https://www.planhat.com/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://www.planhat.com","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://www.planhat.com/llms.txt","outcome":"missing","purpose":"read the site's own guide for language models"},{"url":"https://www.planhat.com/sitemap.xml","outcome":"ok","purpose":"find out what pages exist"},{"url":"https://www.planhat.com/.well-known/security.txt","outcome":"missing","purpose":"find a contact route for machines"},{"url":"https://www.planhat.com","outcome":"missing","purpose":"find a published agent interface"},{"url":"https://www.planhat.com/.well-known/ai-plugin.json","outcome":"missing","purpose":"find an agent plugin manifest"},{"url":"https://www.planhat.com","outcome":"missing","purpose":"find out whether verified agents are recognised"},{"url":"https://www.planhat.com","outcome":"missing","purpose":"read the homepage as data rather than as a page"},{"url":"https://www.planhat.com","outcome":"missing","purpose":"find a machine readable API spec"},{"url":"https://www.planhat.com","outcome":"ok","purpose":"read the developer documentation"},{"url":"https://www.planhat.com/pricing","outcome":"missing","purpose":"read the prices without running JavaScript"},{"url":"https://www.planhat.com","outcome":"missing","purpose":"find a comparison page worth citing"},{"url":"https://www.planhat.com/size/smb","outcome":"ok","purpose":"walk the way a visitor would, to a signup form or a product"}],"verdict":"The agent got through 6 of 15 requests, but could not read the site's own guide for language models. It came up empty on 8 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":68,"summary":"The site allows AI crawlers by name in robots.txt and serves them the homepage normally. A sitemap lists 1142 URLs. However, no schema.org markup appears on the homepage, and no llms.txt or ai-plugin.json is published, so machines cannot.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":24,"summary":"Authentication is documented, code samples are provided.","evidence":{"locked":true,"count":3}},{"key":"pricing_legibility","audience":"agent","score":12,"summary":"The pricing page at /pricing publishes zero prices in raw HTML or rendered output. The page routes all visitors to a demo request form instead. No pricing schema is present.","evidence":{"locked":true,"count":1}},{"key":"agent_aware_instrumentation","audience":"agent","score":8,"summary":"No MCP manifest is published at any of the 3 standard paths checked. The site offers no machine-readable protocol for agents to discover capabilities or invoke actions.","evidence":{"locked":true,"count":4}},{"key":"machine_fetchable_trust","audience":"agent","score":40,"summary":"No security.txt is published at /.well-known/security.txt. The homepage responds to automated requests, but no trust signals are machine-readable. A security contact or vulnerability disclosure policy is not discoverable by machines.","evidence":{"locked":true,"count":2}},{"key":"commercial_rails","audience":"agent","score":40,"summary":"A self-serve signup form is reachable 2 steps from the homepage at /size/smb. The form does not ask for payment information. However, the pricing page routes to a demo, and no API key can be obtained without human contact, so the.","evidence":{"locked":true,"count":2}},{"key":"steps_to_first_value","audience":"human","score":80,"summary":"The primary call to action, 'Planhat for Start Ups', is 2 steps from the homepage and leads to a signup form. The form is immediately accessible without prior authentication or verification.","evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":25,"summary":"The signup form contains 43 fields total, of which 8 are required. Required fields include company email and email address. The form does not ask for payment, so a visitor can enter minimal data to proceed, but the field count is high.","evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":65,"summary":"No verification requirement appears on the signup page itself. No CAPTCHA, email confirmation step, or phone verification is visible in the rendered form. However, what verification occurs after form submission is not observed in this scan.","evidence":{"locked":true,"count":1}},{"key":"error_recovery","audience":"human","score":45,"summary":"10 of 43 form inputs carry validation rules, indicating some client-side error handling. No inline error containers or live regions are present on the page, so error messages may not be announced to assistive technology or displayed inline.","evidence":{"locked":true,"count":1}}],"issues":[{"rank":1,"title":"Pricing is hidden behind a demo request form, preventing agents and evaluators from computing cost before engaging sales.","dimensionKey":"pricing_legibility","evidence":{"locked":true,"count":3},"fix":null},{"rank":2,"title":"No API key can be obtained without human contact, blocking agents from testing integration or building clients.","dimensionKey":"programmatic_onboarding","evidence":{"locked":true,"count":3},"fix":null},{"rank":3,"title":"No machine-readable specification or protocol is published for agents to discover Planhat's capabilities or invoke actions.","dimensionKey":"agent_aware_instrumentation","evidence":{"locked":true,"count":3},"fix":null}],"fixArtifacts":{"locked":true,"count":7,"summaries":[{"id":"pricing_publish:pricing-md","kind":"pricing_publish","title":"A pricing page that states a price","path":"/pricing.md","effort":{"minutes":60,"role":"owner"},"outcome":{"dimension":"pricing_legibility","external":["Assistants can quote a starting price instead of routing the buyer to a call."]}},{"id":"comparison_page_brief:compare-planhat-vs-competitor","kind":"comparison_page_brief","title":"A comparison page brief","path":"/compare/planhat-vs-competitor","effort":{"minutes":180,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["A server-rendered comparison page exists for an assistant to cite."]}},{"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":"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":"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":"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":null,"key":"issue:programmatic_onboarding:-"},{"type":"issue","dimensionKey":"agent_aware_instrumentation","checkId":null,"key":"issue:agent_aware_instrumentation:-"}]}}