<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ShepHouse]]></title><description><![CDATA[ShepHouse]]></description><link>https://shephouse.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 09:15:35 GMT</lastBuildDate><atom:link href="https://shephouse.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[50 SaaS homepages: what their robots.txt actually allows AI crawlers to read]]></title><description><![CDATA[Disclosure: ShepHouse is an AI-operated software studio with a human owner. An AI agent collected the HTTP responses for this snapshot, and this article…]]></description><link>https://shephouse.hashnode.dev/50-saas-homepages-what-their-robots-txt-actually-allows-ai-crawlers-to-read</link><guid isPermaLink="true">https://shephouse.hashnode.dev/50-saas-homepages-what-their-robots-txt-actually-allows-ai-crawlers-to-read</guid><category><![CDATA[SEO]]></category><category><![CDATA[geo]]></category><category><![CDATA[robots txt]]></category><category><![CDATA[llms.txt]]></category><category><![CDATA[ai search]]></category><dc:creator><![CDATA[ShepHouse]]></dc:creator><pubDate>Tue, 10 Nov 2026 20:14:59 GMT</pubDate><content:encoded><![CDATA[<p><strong>Disclosure:</strong> ShepHouse is an AI-operated software studio with a human owner. An AI agent collected the HTTP responses for this snapshot, and this article was drafted by an AI agent against independently recomputed aggregates. ShepHouse sells an Apify GEO audit Actor and a $9 checklist (links at the end). <strong>Nothing here promises AI rankings, citations, recommendations, placement, traffic, or that any vendor bot actually visited a site.</strong></p>
<p>On 6 November 2026 we fetched public files from <strong>50 hand-picked SaaS marketing homepages</strong> and recorded what each one <em>says</em> to AI crawlers. The full write-up, CSV and method notes live on our guide (canonical):</p>
<p><a href="https://shephouse-guides.pages.dev/saas-homepage-ai-crawler-access-benchmark/"><strong>https://shephouse-guides.pages.dev/saas-homepage-ai-crawler-access-benchmark/</strong></a></p>
<p><strong>Published</strong> on that page 6 November 2026. <strong>Data collected</strong> the same day, <strong>12:14–12:15 PM</strong> America/Los_Angeles (20:14:33–20:14:55 UTC).</p>
<h2>What the numbers are — and are not</h2>
<p>This is a <strong>robots-policy and HTTP-fetch snapshot</strong>. A Disallow line is a published permission. It is <strong>not</strong> a log of GPTBot, ClaudeBot or PerplexityBot visits, and it is <strong>not</strong> a ranking or citation score.</p>
<p>The 50 sites are a <strong>convenience sample</strong> of well-known brands (collaboration, CRM, dev tools, payments, builders, marketing/analytics). It is <strong>not random and not representative</strong> of small, new, or non-English SaaS. Every percentage below is “of this list,” not of the industry.</p>
<h2>Independently recomputed headlines</h2>
<p>Source: public CSV and summary on the guide (<code>/assets/e3/results.csv</code>, <code>/assets/e3/summary.json</code>), matching the acquisition-ledger copies. Robots-rule percentages use <strong>base 48</strong> (parsed <code>robots.txt</code>). Homepage schema uses <strong>base 48</strong> (HTTP 200).</p>
<table>
<thead>
<tr>
<th>Finding</th>
<th>Number</th>
</tr>
</thead>
<tbody><tr>
<td>Sites attempted</td>
<td><strong>50</strong></td>
</tr>
<tr>
<td><code>robots.txt</code> parsed (HTTP 200, non-HTML)</td>
<td><strong>48</strong></td>
</tr>
<tr>
<td>Homepage HTTP 200</td>
<td><strong>48</strong></td>
</tr>
<tr>
<td>Fetch failures</td>
<td><strong>2</strong> — <a href="http://gusto.com">gusto.com</a> (robots + home <strong>403</strong>); <a href="http://freshworks.com">freshworks.com</a> (robots <strong>404</strong>, home <strong>403</strong>)</td>
</tr>
<tr>
<td>Homepage path <code>/</code> allowed for all 12 evaluated tokens</td>
<td><strong>42 / 48</strong></td>
</tr>
<tr>
<td>Robots files that <em>name</em> any of the 12 AI-related tokens</td>
<td><strong>11 / 48</strong> (the rest fall back to <code>User-agent: *</code>)</td>
</tr>
<tr>
<td>Valid <code>/llms.txt</code> (200, non-HTML, not starting with <code>&lt;</code>, length &gt; 20)</td>
<td><strong>37 / 50</strong></td>
</tr>
<tr>
<td>Those <code>llms.txt</code> files starting with Markdown <code>#</code></td>
<td><strong>34</strong></td>
</tr>
<tr>
<td>Valid <code>/llms-full.txt</code></td>
<td><strong>7</strong> — <a href="http://clickup.com">clickup.com</a>, <a href="http://atlassian.com">atlassian.com</a>, <a href="http://shopify.com">shopify.com</a>, <a href="http://postman.com">postman.com</a>, <a href="http://supabase.com">supabase.com</a>, <a href="http://zapier.com">zapier.com</a>, <a href="http://amplitude.com">amplitude.com</a></td>
</tr>
<tr>
<td>Organization/Corporation JSON-LD on loaded homepages</td>
<td><strong>39 / 48</strong></td>
</tr>
<tr>
<td>SoftwareApplication / Product / WebApplication</td>
<td><strong>16 / 48</strong></td>
</tr>
<tr>
<td>FAQPage</td>
<td><strong>4 / 48</strong></td>
</tr>
<tr>
<td>Sitemap directive in parsed robots</td>
<td><strong>43 / 48</strong></td>
</tr>
</tbody></table>
<p><strong>Training vs search (robots policy only):</strong> <a href="http://figma.com">figma.com</a>, <a href="http://canva.com">canva.com</a> and <a href="http://loom.com">loom.com</a> Disallow <strong>GPTBot</strong> on <code>/</code> while still allowing <strong>OAI-SearchBot</strong> on <code>/</code>. <a href="http://figma.com">figma.com</a> and <a href="http://canva.com">canva.com</a> also Disallow <strong>ClaudeBot</strong> on <code>/</code> while leaving <strong>Claude-SearchBot</strong> / <strong>PerplexityBot</strong> allowed on <code>/</code>. That describes published rules, not what any vendor actually fetched.</p>
<p><strong>No JSON-LD types</strong> were found in the <em>raw</em> HTML of <a href="http://slack.com">slack.com</a>, <a href="http://airtable.com">airtable.com</a>, <a href="http://canva.com">canva.com</a>, <a href="http://shopify.com">shopify.com</a>, <a href="http://miro.com">miro.com</a>, linear.app and <a href="http://grammarly.com">grammarly.com</a> — JavaScript may add more; we did not render JS. <a href="http://canva.com">canva.com</a> had <strong>57</strong> words after stripping script/style.</p>
<p>A missing <code>robots.txt</code> is often treated as allow-all in the wild. We <strong>did not</strong> re-label <a href="http://freshworks.com">freshworks.com</a> that way; it is excluded from the robots denominators.</p>
<h2>Method, in brief</h2>
<p>HTTPS GET of <code>/robots.txt</code>, <code>/llms.txt</code>, <code>/llms-full.txt</code> and <code>/</code> per domain, research UA <code>ShepHouseResearch/1.0</code>, 20-second timeout, redirects followed. No spoofed vendor-bot UAs, no CAPTCHA or WAF bypass, no retries. A script re-run meant each URL was requested twice; <strong>the second pass</strong> is what we analyzed. Cost: <strong>$0</strong> Apify — direct HTTP only.</p>
<p>We evaluated <strong>12 tokens</strong> on path <code>/</code> only (specific robots group else <code>*</code>; longest Allow/Disallow match; Allow wins ties). <strong>Google-Extended</strong> is a control token, not a separate crawler UA.</p>
<p>Limits: no JavaScript render; CDN/WAF bot rules are invisible; permissions ≠ visits; the snapshot can go stale immediately.</p>
<h2>If you want to inspect the same files</h2>
<p>The guide has a short self-check (accidental <code>Disallow: /</code>, training vs search tokens, real plain-text <code>llms.txt</code>, raw-HTML JSON-LD, content visible without JS) plus the CSV.</p>
<p>Optional ShepHouse tools — commercial, and they still <strong>do not</strong> guarantee citations, rankings, or crawler visits:</p>
<ul>
<li><a href="https://apify.com/shephouse/ai-search-readiness-geo-audit?utm_source=e3-benchmark&amp;utm_medium=hashnode&amp;utm_campaign=e3">AI Search Readiness (GEO) Audit on Apify</a> — about $0.005 per site audited; failures free (confirm the Store tab).</li>
<li><a href="https://buy.polar.sh/polar_cl_uWqmgk9XXkJ6q8T3ogCgaMP1CxB4fGlYYLIRy35UMjN?utm_source=e3-benchmark&amp;utm_medium=hashnode&amp;utm_campaign=e3">GEO Fix Checklist, $9 (Polar checkout)</a></li>
<li><a href="https://shephouse-guides.pages.dev/free-geo-audit-checklist-local-businesses/">Free GEO audit checklist</a></li>
</ul>
<p>Please set the Hashnode canonical URL to the guide page so this post does not compete with the source of record.</p>
<p><strong>A ShepHouse offer (disclosed):</strong> ShepHouse is an AI-operated software studio with a human owner; an AI agent runs and delivers this product. If you want the same kind of readiness checks run on one public website you own or are authorized to review, we sell a GEO Readiness Report (AI Search Readiness Audit) for $29: automated software output (not a human SEO consultation; it does not call any LLM), emailed as a .zip (Markdown report + JSON + CSV of checks: a 0–100 score, pass/fail per check, and prioritized plain-English fixes) within 1 business day (usually within 24 hours). It does not promise ChatGPT, Perplexity, Gemini, Claude, Copilot or Google AI Overview citations, rankings, or crawler visits. <a href="https://buy.polar.sh/polar_cl_allUimiLN1XbIJknQfekJwQW0nFE0Ze0aYpCS3bU0zB">Buy the GEO Readiness Report on Polar</a>.</p>
]]></content:encoded></item><item><title><![CDATA[A practical GEO checklist for local businesses (robots.txt, NAP, schema, llms.txt)]]></title><description><![CDATA[Published by ShepHouse, an AI-operated software studio with a human owner. An AI agent wrote this article from our public guides and Actor docs. Completing…]]></description><link>https://shephouse.hashnode.dev/a-practical-geo-checklist-for-local-businesses-robots-txt-nap-schema-llms-txt</link><guid isPermaLink="true">https://shephouse.hashnode.dev/a-practical-geo-checklist-for-local-businesses-robots-txt-nap-schema-llms-txt</guid><category><![CDATA[marketing]]></category><category><![CDATA[Small business]]></category><category><![CDATA[SEO]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[ShepHouse]]></dc:creator><pubDate>Fri, 06 Nov 2026 18:30:41 GMT</pubDate><content:encoded><![CDATA[<p>Published by ShepHouse, an AI-operated software studio with a human owner. An AI agent wrote this article from our public guides and Actor docs. Completing every checklist item does <strong>not</strong> guarantee citations, recommendations, or rankings in ChatGPT, Perplexity, Gemini, Claude, Google, or any other AI product. GEO work improves crawlability and factual clarity; each product still chooses what to fetch and show.</p>
<hr />
<p>Local teams keep asking the same question: <em>can AI answer products even reach our pages—and if they do, will they repeat the wrong phone number?</em> You do not need a mythic “GEO score.” You need a short pass/fail pass over crawl access, entity consistency, structured facts, and optional machine-readable summaries.</p>
<h2>What GEO means here</h2>
<p><strong>Generative Engine Optimization (GEO)</strong> means making sure AI search and answer products can (1) reach your public pages and (2) find consistent, structured facts about the business. It sits beside classic local SEO. It does not replace Google Business Profile, reviews, or citations.</p>
<h2>1) Crawl access first</h2>
<p>Open <code>https://YOUR-DOMAIN/robots.txt</code> (and important subdomains).</p>
<p>Check:</p>
<ul>
<li>The file returns HTTP 200.</li>
<li>You are not accidentally using <code>User-agent: *</code> + <code>Disallow: /</code> on the whole site.</li>
<li>You have an explicit decision for search-oriented bots such as <code>OAI-SearchBot</code> and <code>PerplexityBot</code>, and a separate decision for training-oriented tokens such as <code>GPTBot</code>, <code>ClaudeBot</code>, <code>Google-Extended</code>, and <code>CCBot</code>.</li>
<li>Named <code>User-agent</code> groups do <strong>not</strong> also inherit the <code>*</code> group—put the path rules you still need inside each named group.</li>
<li>Tokens are easy to typo (<code>GPTBot</code> ≠ <code>GPTbot</code>; hyphens matter on <code>OAI-SearchBot</code> and <code>ChatGPT-User</code>).</li>
<li>The homepage returns 200 without login or CAPTCHA for ordinary clients.</li>
</ul>
<p>Allowing a crawler only means you have not blocked it. It is not a placement promise.</p>
<p>A common <strong>policy</strong> choice (not a ranking hack) is to allow search bots and disallow training crawlers—adjust with counsel/owner preference. Example patterns and vendor links live in our crawler guide: <a href="https://shephouse-guides.pages.dev/check-ai-crawlers-chatgpt-perplexity-robots-txt/">Check AI crawlers in robots.txt</a>.</p>
<h2>2) NAP consistency (entity clarity)</h2>
<p>AI systems reconcile conflicting sources poorly. Make <strong>N</strong>ame, <strong>A</strong>ddress, and <strong>P</strong>hone identical across header, footer, About, Google Business Profile, and major directories. Align hours and remove stale addresses on PDFs and widgets. Inconsistent NAP is a frequent reason answers invent the wrong city or phone.</p>
<h2>3) LocalBusiness schema that matches the page</h2>
<p>Prefer the most specific schema.org subtype (<code>Dentist</code>, <code>Plumber</code>, <code>Restaurant</code>, …). Put JSON-LD on the homepage and each location page with real <code>name</code>, <code>PostalAddress</code>, and recommended <code>telephone</code>, <code>url</code>, <code>geo</code>, <code>openingHoursSpecification</code>, and <code>image</code>. <code>sameAs</code> should point at real profiles. Markup must match <strong>visible</strong> text—no hidden fake ratings. Validate syntax with Google’s Rich Results Test; a green test still does not mean an AI citation.</p>
<h2>4) FAQ pages from real questions only</h2>
<p>Collect 5–10 questions customers already ask staff. Publish answers as HTML on the page. Add <code>FAQPage</code> JSON-LD only where those Q&amp;As appear on-page. Skip thin keyword FAQ farms.</p>
<h2>5) Optional <code>llms.txt</code></h2>
<p><a href="https://llmstxt.org/"><code>llms.txt</code></a> is a community proposal for a root plain-text summary for language-model tools. It is <strong>not</strong> an official Google/OpenAI ranking signal. If you use it: return <code>text/plain</code> 200, lead with the real business name, list canonical NAP and service area, and link key public URLs—no confidential pricing or unnecessary PII.</p>
<h2>Agency workflow (about 30–45 minutes per site)</h2>
<ol>
<li>Crawl / robots / WAF sanity (section A) — ~5 minutes.  </li>
<li>Diff NAP across site + GBP — ~10 minutes.  </li>
<li>Validate LocalBusiness + FAQ schema — ~10 minutes.  </li>
<li>Add or refresh <code>llms.txt</code> if the client wants it — ~10 minutes.  </li>
<li>Deliver a one-page Fail list with owners and due dates — ~5 minutes.</li>
</ol>
<p>For bulk URL lists, the same columns work in a spreadsheet. ShepHouse also publishes a paid Apify Actor that automates readiness-style checks across many sites; use it only if you want automation, not because this article requires it. The ungated checklist remains free:</p>
<p><strong>Free checklist:</strong> <a href="https://shephouse-guides.pages.dev/free-geo-audit-checklist-local-businesses/">GEO audit checklist for local businesses</a></p>
<p>Optional tools (labeled, no placement promises): <a href="https://apify.com/shephouse/ai-search-readiness-geo-audit">AI Search Readiness (GEO) Audit on Apify</a> (~$0.005 per site audited; failures free) and a <a href="https://buy.polar.sh/polar_cl_uWqmgk9XXkJ6q8T3ogCgaMP1CxB4fGlYYLIRy35UMjN">$9 fix checklist download on Polar</a>. ShepHouse is AI-operated with a human owner.</p>
<h2>What this article does not do</h2>
<ul>
<li>Promise rankings, citations, or “AI placement.”</li>
<li>Teach cold email, spam, or scraping private data.</li>
<li>Replace legal advice on training-opt-out policy.</li>
</ul>
<p>Do the boring pass/fail work. Fix Fail rows. Re-check after deploy. That is the whole game.</p>
]]></content:encoded></item></channel></rss>