- Technical SEO for SaaS now serves five machine readers, not one. Googlebot renders JavaScript; OAI-SearchBot, PerplexityBot, and ClaudeBot do not.
- Vercel and MERJ measured 569M GPTBot and 370M ClaudeBot requests and found no standalone AI crawler executes JavaScript, so client-side SPAs are invisible.
- Most 50-page audits are waste. Ethan Smith narrows real impact to internal links and whether the engine can read the page.
- Internal linking is the controllable lever. Atlassian gained 160% organic traffic in 12 months after flattening 13-click-deep pages.
- Schema is parsing hygiene, not a ranking lever. Google retired FAQ rich results on May 7, 2026, and does not use llms.txt.
- Report rendering parity, AI bot fetch success, share of voice, and AI-referred pipeline. Semrush values AI-search visitors at 4.4 times organic ones.
Q1. What does technical SEO for SaaS mean now that ChatGPT, Perplexity, and Gemini also read your site?
Technical SEO for SaaS is the work of making a software platform's revenue pages, which means pricing, features, integrations, comparisons, and docs, fetchable, renderable, indexable, and quotable by search crawlers and AI retrieval bots alike. The audience changed. The discipline did not. Ethan Smith, CEO of Graphite, still narrows impact to two levers: your internal links, and whether the engine can read the page.
🔍 Five readers, not one
Your marketing site now has five separate machine readers. Googlebot crawls and renders. OAI-SearchBot fetches pages for ChatGPT search. PerplexityBot indexes for Perplexity, and Perplexity-User fetches live when a person asks something, as set out in OpenAI's crawler documentation and Perplexity's crawler documentation.
Each one sees a different version of your site. Google's AI Overviews run on a customized Gemini model tied into core ranking and the Knowledge Graph, which Google Search Central's AI features guidance describes directly. ChatGPT's retrieval layer is a separate pipeline with its own crawler token and its own robots.txt rules. Our complete guide to AI crawlers breaks down each bot in turn.
⚙️ Where technical work actually bites
Think of an AI answer as five stages: crawl, index, retrieve, re-rank, then synthesize with citations. Technical SEO governs the first two stages completely. Content quality only starts mattering at stage three.

That is the part most teams miss. A brilliant comparison page that never gets fetched is not a weak competitor in the answer. It is absent from the answer. There is no page two in a ChatGPT response, so the gap between fetched and unfetched is binary.
📊 Crawlable is the floor, not the goal
Here is my honest position after years of running this work. The best practices of SEO have become the basics for Answer Engine Optimization (AEO), which means optimizing content to be the cited answer inside AI engines rather than a blue link. Clean HTML, sane canonicals, and sensible internal links are the foundation floor. Being quotable is the building on top.
Quotable means something specific. It means each section stands alone when an engine lifts it out of context. AI engines index and re-rank passage chunks of roughly 256 to 512 tokens, which is about 100 to 300 words, so the unit of retrieval is the block, not the page.
💰 The revenue frame
Traditional agencies still report this work as a health score. Health score rose from 72 to 91, crawl errors down, job done. That number has never survived a board meeting.
The honest frame is narrower. Which revenue templates can five engines fetch, parse, and quote today, and which cannot? Semrush's clickstream research values the average AI-search visitor at 4.4 times an organic one, which is the entire business case for doing this work on pricing and comparison pages first.
MaximusLabs AI audits against five retrieval engines rather than one, because what ChatGPT treats as important is not what Google or Perplexity treat as important. That divergence decides which of the 5 to 10 vendors an engine actually names, and we scope technical SEO and website audit work around the pages that influence pipeline before touching the blog.
Q2. Which technical SEO fixes are quietly wasting your engineering sprint?
Most of them. A standard 50-page audit lists missing alt tags, absent H1s, HTTPS header nits, and Core Web Vitals deltas, which are fixes Ethan Smith says he has not seen drive impact in 15 years. Usually one finding on the list matters. The rest consumes sprints that could have shipped server-side rendering on your pricing and comparison templates.
📋 The scene every growth lead knows
The audit lands as a PDF on a Tuesday. There are 212 findings, colour-coded red, amber, and green. Someone turns it into a Jira epic, and engineering gets a ticket called "SEO fixes, phase one."
Two quarters later, the technical health score looks great. Pipeline from organic has not moved. Nobody can say which of the 212 items was supposed to change that.
⚠️ Why the Core Web Vitals story keeps repeating
Smith is blunt about the mechanism. Much of SEO best practice is true but not impactful, and Core Web Vitals is his standard example. He has never seen it drive impact, yet practitioners still report twenty percent lifts from speed work, which he reads as bad analysis repeated until it sounds like consensus. Google's own page experience guidance is similarly measured about what these metrics do.
I think he is right about the direction and possibly too absolute about the degree. Speed has a real floor effect, and a page that times out gets nothing. Above that floor, the evidence for incremental gains is thin, which is why we treat Core Web Vitals optimization as hygiene rather than strategy.
✅ Split the list before you ticket anything
| Finding type | Retrieval gating? | Where it belongs |
| Client-side rendered pricing page | Yes, content is invisible to AI bots | Sprint one |
| AI bot blocked by WAF or robots.txt | Yes, zero fetches | Sprint one |
| Money page with no internal links | Yes, crawl and equity starved | Sprint one |
| Thousands of indexed zero-traffic URLs | Partly, wastes crawl and dilutes entity signal | Sprint two |
| LCP at 2.8s instead of 2.4s | ❌ No | Backlog, batch it |
| Missing alt text sitewide | ❌ No | Backlog, batch it |
| Missing H1 on archive pages | ❌ No | Backlog, batch it |
🎯 The three-question filter
Before any technical ticket gets written, I run it through three questions. Does the fix change whether an engine can fetch, parse, or quote the page? Does it sit on a revenue template, meaning pricing, comparison, integration, or docs? Can I prove the change in server logs or Search Console within 30 days?
Two no answers means the finding goes in a quarterly hygiene batch. Three no answers means it is backlog decoration, and I say so plainly to the client.
💡 Apply the vanity-metric test to the audit itself
Operators already know clicks and impressions are vanity metrics. The same test belongs on audit findings. An error count that falls without a retrieval change is a vanity metric wearing a technical costume.
MaximusLabs AI sequences technical work bottom-of-funnel first and skips top-of-funnel entirely, because AI engines already answer "what is" queries without us. Pricing, comparison, and integration templates get fixed in sprint one, and sitewide alt-text cleanup never blocks a release. That sequencing comes straight out of our GEO strategy framework.
Q3. Can AI crawlers actually read your SaaS pages, and which rendering stack fixes it?
Not if your site is a client-side React, Vue, or Angular single-page application. With one exception, Gemini, which rides Googlebot infrastructure, no standalone AI crawler executes JavaScript. Vercel and MERJ measured 569 million GPTBot and 370 million ClaudeBot requests: GPTBot fetched JavaScript files in 11.5% of requests, ClaudeBot in 23.84%, and neither executed them. MaximusLabs AI tests rendering parity before any content ships.
🧪 What disappears, exactly
Turn JavaScript off and reload your own pricing page. On a client-rendered site, the price table, the plan comparison grid, the integration list, and the embedded review widget usually vanish together. Our AI crawlability checker runs the same test without DevTools.
Ethan Smith found this at MasterClass. With JavaScript disabled, course details and reviews on product pages were gone, because they loaded through asynchronous calls. A site:domain snippet check confirmed Googlebot was reading roughly half the page until server-side rendering shipped.
⏰ The five-minute test to run today
Open your top pricing page, disable JavaScript in Chrome DevTools, and reload. Screenshot what survives.
Right-click, choose View Source, then Ctrl-F for your actual price number and your H1 text. If either is missing from the raw HTML, AI crawlers are missing it too.
Repeat on one comparison page, one integration page, and one docs page. Those four templates cover most of a SaaS site's revenue surface.
Check your server logs for OAI-SearchBot and PerplexityBot hits on those URLs, and confirm a 200 status.
Raw HTML is the contract. Anything that appears only after hydration is invisible to ChatGPT, Perplexity, and Claude's crawlers, which is consistent with Vercel's crawler measurement.

⚙️ The stack ruling, and the part people get wrong
Server-side rendering (SSR), where HTML is built on the server per request, and static site generation (SSG), where HTML is built at deploy time, both clear the bar. So does incremental static regeneration. Webflow, a headless CMS with SSG, and Next.js with SSR are all fine. Platform specifics sit in our Webflow SEO guide.
What does not clear the bar is a bespoke client-side build with a custom markdown transformation layer bolted on for "LLM readability." Smith's objection stands: these are companies worth hundreds of billions with excellent engineers, and they can parse HTML and CSS.
✅ Three tests for any stack
Does it serve the full page content in the first HTTP response, with no hydration required?
Can marketing publish and edit a landing page without an engineering deploy?
Does it output clean semantic HTML, with real headings and real tables rather than nested divs?
Velocity is a technical decision, not a convenience preference. Smith's framing is that velocity beats any CMS claiming special LLM-readable parsing, and engineers often resist Webflow because when you have a hammer, everything looks like a nail. A stack where every page needs a sprint caps your share of voice.
📊 What this looks like when it works
MaximusLabs AI fixed retrievability alongside content structure for Oliv AI, which reached a 64% AI citation rate in 6 months, vs ~30% for billion-dollar incumbents. The full numbers sit in the Oliv AI case study. No engine cites text it never received, and rendering parity is the first gate we check, not a line item near the end.
Q4. Are you accidentally blocking the engines you want to be cited by?
Possibly, and robots.txt is only half of it. OpenAI runs OAI-SearchBot for ChatGPT search and GPTBot for training as separate tokens, so disallowing OAI-SearchBot removes a site from ChatGPT search answers, and robots.txt changes take roughly 24 hours to propagate, per OpenAI's crawler documentation. Perplexity runs PerplexityBot and Perplexity-User, with published IP ranges for verification. A JavaScript challenge from your firewall is functionally a block.
🤖 The access matrix

| Bot | Operator | Purpose | robots.txt token | How to verify |
| Googlebot | Crawl, render, index | Googlebot | Search Console URL Inspection | |
| OAI-SearchBot | OpenAI | ChatGPT search results | OAI-SearchBot | OpenAI's published IP ranges, server logs |
| GPTBot | OpenAI | Model training | GPTBot | Separate decision, separate token |
| PerplexityBot | Perplexity | Index for citations | PerplexityBot | perplexitybot IP JSON, logs |
| Perplexity-User | Perplexity | Live fetch on a user query | Perplexity-User | Logs at query time |
| ClaudeBot | Anthropic | Crawl for Claude | ClaudeBot | Logs by user agent |
The training-versus-search split matters commercially. You can decline to feed model training while staying fully visible in ChatGPT search, because the tokens are independent. We walk clients through that choice in understanding and managing AI crawlers.
⚠️ The silent block nobody audits
Your robots.txt can say Allow while your edge still says no. Bot-management rules in Cloudflare and AWS WAF frequently serve CAPTCHAs, JavaScript challenges, or 403s to datacenter IP ranges, and AI crawlers live on datacenter IPs.
The crawler cannot solve a challenge. Perplexity publishes WAF guidance and IP ranges precisely so operators can allowlist the right agents instead of guessing. I have seen teams spend a quarter on content while their edge quietly returned 403s to every AI fetch.
📊 Crawl waste is the new technical KPI
ChatGPT's crawlers burn 34.8% of their fetches on 404 pages, against Googlebot's 8.22%, because their URL pre-scoring is less efficient. Every dead URL fetched is a fetch not spent on your comparison page.
That makes two numbers worth reporting monthly: AI bot fetch success rate by user agent, and the share of AI fetches landing on 404s. Neither appears in a standard audit deliverable, which is exactly why it is a differentiator. Our measurement and metrics in GEO breakdown shows where these sit alongside pipeline reporting.
✅ Monday morning actions
Add explicit Allow lines for OAI-SearchBot, PerplexityBot, Perplexity-User, and ClaudeBot. Decide GPTBot separately.
Allowlist the published IP ranges for OpenAI and Perplexity in your WAF, and exempt those agents from JavaScript challenges and CAPTCHAs.
Grep 30 days of access logs by user agent. Count hits, status codes, and the 404 share per bot.
Fix the top 20 AI-fetched 404s with redirects, since those are URLs the engines already believe exist.
💡 The sample-set logic, applied at the HTTP layer
Krishna's point about AI answers is that only 5 to 10 brands make the list, and if you are not in it, you are not in the evaluation. Blocked at fetch is the earliest possible way to lose that seat.
MaximusLabs AI checks bot access and log-level fetch success before commissioning a single article, because publishing into a firewall-blocked site is how agencies produce reports instead of pipeline. We re-run that check after every infrastructure change, since one WAF rule can undo a quarter of content work. If you want that check run on your stack, talk to our team.
Q5. How do you run a SaaS technical audit in 90 minutes that engineering will actually act on?
Audit templates, not URLs. Crawl with Screaming Frog in text mode and JavaScript-rendering mode, then diff the two to expose rendering gaps in twenty minutes. Next, verify indexation in Search Console, bot access in robots.txt and your firewall, canonicals and parameters, internal links to money pages, index bloat on docs and app subdomains, and schema validity. Re-run quarterly, plus a targeted crawl after every release or migration.
🧩 Why templates beat URLs
A SaaS site usually runs on eight or nine templates. Marketing landing page, pricing, feature page, comparison, integration page, blog post, docs article, changelog, and login. Those templates generate thousands of URLs.
Fix the template and you fix every URL it produces. Audit URL by URL and you will still be triaging in March. This single reframe is what turns a two-week audit into a 90-minute one, and it is the backbone of our technical SEO website audit.
⏰ The nine steps, with the decision at each
Crawl twice (20 min). Screaming Frog in text mode, then JavaScript-rendering mode. Diff the word counts per template. Any gap is a rendering gap.
Check indexation (10 min). Search Console URL Inspection on one URL per template. Decision: indexed, discovered but not crawled, or excluded.
Check bot access (10 min). Read robots.txt line by line. Then grep logs for OAI-SearchBot and PerplexityBot status codes, using OpenAI's crawler documentation and Perplexity's crawler documentation as the reference for each token.
Canonicals and parameters (10 min). Confirm self-referencing canonicals on money pages. List every parameter that generates a crawlable URL.
Internal links to money pages (10 min). Count unique inbound contextual links per pricing, comparison, and integration page.
Index bloat (10 min). Site queries on your docs subdomain, app subdomain, and programmatic directories. Flag anything with zero impressions.
Sitemaps (5 min). Confirm the XML sitemap only lists indexable, canonical, 200-status URLs.
Schema validity (5 min). Rich Results Test on one URL per template. Fix errors, ignore warnings.
Server response (10 min). Time to First Byte on four templates. Anything over 600ms goes on the list, not at the top.
⚠️ Where the checklist stops helping
Eli Schwartz makes a point I keep returning to. Every audit ultimately diverges, because the auditor follows the site's own architecture rather than a generic list. He is also direct that JavaScript is simply not as effective for SEO as HTML, a position he sets out in Product-Led SEO.
So treat these nine steps as the map, not the territory. On a product-led site with 40,000 programmatic pages, steps 6 and 4 will eat most of the 90 minutes. On a ten-page Series A site, step 1 is almost the whole job. Our technical SEO guide covers the per-architecture variations in more depth.
📋 The one-page output that gets shipped
| Finding | Template | Engine impact | Effort | Owner |
| Price table renders client-side | Pricing | ChatGPT, Perplexity, Claude cannot see it | 1 sprint | Frontend lead |
| PerplexityBot getting 403 at edge | Sitewide | Zero Perplexity fetches | 2 hours | DevOps |
| Comparison pages have 2 inbound links | Comparison | Weak crawl priority, weak equity | 1 week | Content lead |
Five columns, one page, ranked by pipeline impact. That is the deliverable, not a 50-tab spreadsheet with 212 colour-coded rows.

💡 Cadence that survives a release schedule
Full audit quarterly. Steps 1, 3, and 7 after every deploy that touches templates or routing. A full re-crawl after any migration, including a CMS swap or a docs platform change.
MaximusLabs AI runs this audit as stage zero of a three-stage pipeline, meaning deep research, writing, then quality assurance. Retrievability and content structure ship together, so clients are not publishing into a site the engines cannot read. That sequencing is set out in our technical GEO implementation breakdown.
Q6. How should you architect internal links across a SaaS platform?
Treat internal links as your authority budget. Kevin Indig ranks internal link optimization above title tags in practical impact, because it is the one lever you fully control. At Atlassian, app version pages buried 13 clicks deep were surfaced by flattening the graph, and organic traffic rose 160% over 12 months. Target 5 to 10 contextual links per money page, and 10 to 20 to move rankings.
🗺️ The situation every SaaS growth lead inherits
Your navigation shows seven products. Your sitemap holds 4,000 URLs. Those two facts are the whole problem in one sentence.
Everything not in the nav depends on contextual links to exist. Integration pages, comparison pages, and feature sub-pages usually end up orphaned or buried. The crawler treats depth as a signal of importance, so buried means unimportant.
📉 The complication: 13 clicks deep
Indig found Atlassian's app version pages sitting 13 clicks from the homepage. Nobody designed that. It accumulated through product launches, each one adding a layer. Reorganizing the graph and flattening depth produced the 160% lift over twelve months.
At Shopify, he proved the positive case. Adding 10 to 20 contextual internal links from high-authority pages moved target page rankings, with no backlink spend. That is the part I find most useful commercially. Internal linking is free, controllable, and reversible.
⚖️ Incoming equity versus outgoing equity
Indig splits this into two measures. Incoming link equity is the familiar one. Outgoing distribution is the one teams forget, which he calls KirRank.
Look for what I think of as the broke billionaire page. It has 40 outgoing links and zero inbound contextual links. It spends authority it never received. Docs index pages and blog category pages are the usual culprits on SaaS sites.
✅ What to actually measure
Unique inbound contextual links per money page (target 5 to 10)
Click depth from homepage per template (flag anything past 4)
Orphan count, meaning pages with zero inbound internal links
Outgoing link count on your highest-authority pages
🛫 The resolution: build the Southwest route map
Schwartz offers the analogy that fixed this for me. The weakest internal link graph looks like a national flag carrier, where every route terminates at the capital hub, meaning your homepage. The strongest looks like a budget carrier that thrives on point-to-point connections, as he argues in Product-Led SEO.
His line is worth keeping on a sticky note.
"Build your internal-link architecture like the Southwest Airlines route map, and you will never have an orphaned page again."
Eli Schwartz, author of Product-Led SEO
⚠️ Where practitioners genuinely disagree
Eric Enge and Schwartz both argue for flatness, keeping pages within three to four clicks of the homepage to maximize crawl efficiency, a position documented in The Art of SEO. Schwartz also warns that forced flatness distorts categorization, because pages get linked for proximity rather than relevance.
My read, and I hold this loosely, is that depth is the constraint and relevance is the goal. Flatten until nothing important sits past four clicks. After that, link point to point on topical relevance, not on hierarchy. Pure flatness on a 4,000-URL site produces link farms in your footer, which is why we design GEO topic clusters around relevance rather than depth alone.
MaximusLabs AI builds 5,000 to 8,000 word hubs with 2,500 to 4,000 word spokes, each with a distinct job and no cannibalization. That structure is how money pages accumulate link equity without a single outreach email, and it is why we treat link architecture as content architecture.
Q7. How do you control indexation across app, docs, and programmatic pages?
Curate it deliberately. De-index or canonicalize programmatic pages with zero impressions, keep staging and app routes out entirely, and decide consciously whether docs sit on a subdomain or a subfolder. Google's Martin Schmidt and John Mueller are explicit that most 404s and non-indexed canonicals in Search Console are expected behavior, as the page indexing report documentation sets out. Clicking "Mark as Fixed" on an intentional 404 manufactures work, not rankings.
🔍 Three places bloat comes from
Programmatic templates are the first. One integration template times 600 partners equals 600 URLs, and perhaps 40 of them ever earn an impression. Scaling those pages safely is the whole subject of our programmatic SEO work.
Parameterized filter URLs are the second. Sort order, pagination, and tracking parameters multiply a single page into dozens. The third is leakage: staging subdomains, app routes behind login, and preview URLs that escaped into the sitemap.
💸 Why this costs you citations now
Crawl waste used to be an efficiency concern. With AI retrieval, it has a direct cost. ChatGPT's crawlers burn 34.8% of their fetches on 404 pages, against Googlebot's 8.22%, because their URL pre-scoring is weaker.
Every dead URL fetched is a fetch not spent on your comparison page. Ethan Smith's pruning rule applies cleanly here: de-index or canonicalize programmatic pages that receive zero impressions, because low-quality bloat drags on the whole domain.
⚠️ The Search Console trap
Here is where teams waste a week. Search Console lists thousands of excluded URLs, labelled as errors, and someone panics. Schmidt and Mueller have explained that these are usually expected: intentional 404s, correct canonicals, and deliberately noindexed pages.
Marking them as fixed re-queues the crawl and changes nothing. I have watched a team spend five days on that loop. Read the report by cause, not by count.
✅ The keep, prune, or canonicalize ruling
| Page type | Default decision | Why |
| Pricing, features, comparisons, integrations with demand | ✅ Index | Revenue templates, cite-worthy |
| Docs articles that answer real queries | ✅ Index | Strong AI citation surface |
| Programmatic pages with zero impressions in 90 days | ❌ Noindex or canonicalize | Dilutes entity picture, wastes crawl |
| Parameterized filter and sort URLs | ❌ Canonical to parent | Duplicate content at scale |
| App routes, account pages, staging | ❌ Block and noindex | Should never have been crawlable |
| Thin changelog or tag archives | ⚠️ Consolidate | Better as one page than forty |
📊 Cadence and the subdomain question
Run the pruning pass quarterly, right after the audit in step 6. Pull every URL with zero impressions in 90 days, then rule on it. Do not automate the deletion, because some pages are new rather than dead.
On docs placement, I lean subfolder for most Series A and B companies, since it keeps authority consolidated. Subdomain becomes defensible once docs have their own search demand and their own team. There is no universally correct answer here, and anyone who tells you otherwise has not migrated one.
💡 Index curation is an entity signal
This is the part most checklists miss. Thin pages do not just waste crawl budget. They blur the picture an engine builds of what your company is and what it is good at, which is why entity optimization and index curation belong in the same sprint.
MaximusLabs AI scores every asset on a 10-dimension quality scorecard with a 70 of 100 publication floor, and 80 for hub pages. That gate is why our clients are not de-indexing their own archive a year later, and it keeps the entity picture sharp.
Q8. Does schema markup still matter, and is llms.txt worth shipping?
Schema aids content understanding and rich-result eligibility. It does not directly cause rankings or AI citations. Google retired FAQ rich results on May 7, 2026, and Search Central states that llms.txt is not used by Google Search. Ship Organization with a sameAs loop, SoftwareApplication, Article with real author credentials, BreadcrumbList, and HowTo where visible steps match. Skip the rest.
📋 The situation: a vendor checklist nobody audits
Every technical SEO proposal includes a schema line item. It rarely explains what the schema is supposed to achieve. So teams ship FAQ markup on 200 pages, add llms.txt because a newsletter said to, and tick the box. If you still want one for non-Google agents, our llms.txt generator produces a valid file in seconds.
Then the SERP feature disappears, as FAQ rich results did in May 2026, and the work evaporates with it. Nobody runs the post-mortem.
⚔️ The complication: two defensible positions
The hygiene view. Structured data is parsing support for entity disambiguation, not a ranking or citation factor. Google's own structured data documentation never promises position gains, only eligibility and understanding.
The eligibility view. Schema is how machines learn that your Organization, your Product, and your author are the same entities referenced elsewhere. That understanding is a prerequisite for being represented correctly, even if it is not a direct lever. Our schema markup basics walkthrough covers the implementation order.
Both are right about different things. The disagreement is really about expected value, not mechanism.
❌ Where the over-engineering goes wrong
Ethan Smith's objection lands hard here. His framing is that these are companies worth hundreds of billions with the smartest engineers in the world, and they can parse HTML and CSS. Building a custom markdown transformation layer so an LLM can read your article solves a problem the engines do not have.
Google's AI features guidance says the same thing in flatter language. There is no AI-specific technical requirement beyond standard snippet eligibility, and no special schema type unlocks AI Overviews. If your content is in clean HTML and indexable, you have cleared the bar.
✅ The five types that earn a sprint
Organization with a sameAs loop pointing to your LinkedIn, Crunchbase, G2, and X profiles. This is the single highest-value piece for a SaaS brand.
SoftwareApplication on the product and pricing pages, with real category and offer data.
Article with a credentialed author, meaning a real person with a real bio page and real sameAs links.
BreadcrumbList for hierarchy, which also helps engines understand site structure.
HowTo, only where visible numbered steps genuinely exist on the page.
🔗 How the sameAs loop actually works
Mark up your Organization with sameAs URLs for every external profile you control. Then make those profiles link back to your domain. The loop is bidirectional, and that is the whole point.
It tells an engine that the company on G2, the company in the press release, and the company on your pricing page are one entity. I cannot prove a citation lift from this in isolation, and I would not trust anyone who claims a clean number. What I can say is that entity confusion is a real failure mode, and this removes it.
💡 The resolution, stated plainly
Schema earns a sprint when it disambiguates an entity. It never earns a sprint when it decorates a SERP feature, because features get retired, as FAQ rich results just were.
MaximusLabs AI ships schema as entity work, meaning Organization sameAs loops, credentialed author profiles, and product entities, because trust signals decide which source an engine believes. Disambiguation yes, decoration no. If you want that work scoped against your stack, speak to our team.
Q9. How fast can a new SaaS page get crawled, indexed, and cited?
Faster than waiting. Host an IndexNow key file at yourdomain.com/[key].txt, then POST changed URLs to api.indexnow.org/indexnow. First Bingbot crawl typically lands in 3 to 6 hours, and ChatGPT citation eligibility compresses to 24 to 72 hours. Keep Time to First Byte, meaning the time your server takes to send the first byte of a response, under 200ms to earn higher re-crawl frequency from AI reindexers such as Perplexity's. MaximusLabs AI wires IndexNow into the publish workflow on every client engagement.
⏰ The launch-day problem
You ship a comparison page on a Tuesday. It is the page sales asked for, aimed at your biggest competitor. Then nothing happens for two weeks.
Googlebot finds it eventually. ChatGPT and Perplexity find it later, or not at all, because nothing told them it exists. That lag is the gap between publishing and earning pipeline, and it is almost entirely avoidable. Our technical GEO implementation playbook closes it at the deploy layer.
🛠️ The IndexNow runbook
Generate a key. A 32 to 64 character alphanumeric string. Save it.
Host the key file. Place a text file at yourdomain.com/[your-key].txt containing only that key, as specified in the IndexNow documentation.
POST on publish. Send a JSON payload to api.indexnow.org/indexnow with your host, key, and the changed URL list. One submission covers Bing, Yandex, Seznam, and Naver, since the protocol is shared.
Wire it to the webhook. Trigger the POST from your CMS publish event, so nobody has to remember.
Verify in logs. Grep for Bingbot hits on the new URL. First crawl usually arrives in 3 to 6 hours.
🔗 Why Bing matters more than people expect
ChatGPT's retrieval layer has historically leaned on Bing's index, and OAI-SearchBot does its own fetching on top of that, per OpenAI's crawler documentation. So a fast Bing crawl is a shortcut into ChatGPT's candidate set. Our guide to Bingbot and AI search crawl optimization covers the mechanics.
Perplexity works differently. PerplexityBot indexes on its own schedule, while Perplexity-User fetches live when a person asks a question, as Perplexity's crawler documentation sets out. That second agent is the one that rewards a fast server.
⚡ The server-speed threshold that actually matters
Here is the distinction worth holding. Core Web Vitals, which measure rendering experience for humans, show weak evidence of ranking impact. Time to First Byte, which measures server responsiveness for machines, affects how often reindexers come back.
Keep TTFB under 200ms on templates you publish to frequently. I would not spend a sprint shaving 2.8 seconds of Largest Contentful Paint down to 2.4. I would spend one moving TTFB from 800ms to 180ms, because that changes crawl economics.
✅ What to check seven days after launch
| Check | Where | Healthy signal |
| Bingbot first crawl | Server logs | Within 3 to 6 hours of the IndexNow POST |
| OAI-SearchBot fetch | Server logs, filter by user agent | 200 status, not 403 or a challenge |
| Google indexation | Search Console URL Inspection | Indexed, or crawled and queued |
| Citation test | Ask ChatGPT and Perplexity your target question | Brand or URL appears within 24 to 72 hours |
💡 Velocity compounds, slowly then obviously
My working hypothesis, held with real uncertainty, is that trust in AI retrieval is built through repeated, fresh, retrievable publication rather than any single page. Late movers fight retrieval patterns that have already settled around incumbents.
MaximusLabs AI wires IndexNow into the publish workflow because 15 to 50 assets a month only becomes citations if each one reaches the retrieval index the week it ships. We check the log evidence rather than assuming submission equals discovery, which is how our GEO automation work is scoped.
Q10. How should you structure pages so AI engines can quote them?
Write for the chunk, not the page. AI search engines index and re-rank passages of roughly 256 to 512 tokens, which is about 100 to 300 words, so each section must survive extraction alone. Lead every question-style heading with a 30 to 60 word direct answer, then expand. MaximusLabs AI scores citation-worthiness as one of ten quality dimensions, and a block that only makes sense after the three above it gets rewritten.
📦 Why good narrative loses to plain blocks
A well-written feature essay builds. Paragraph four depends on paragraph three. That is excellent for a human reader and useless for retrieval.
An engine lifts one passage. No title, no byline, no preceding context. If your paragraph opens with "This is why that approach fails," the engine has nothing to work with, so it picks a competitor's cleaner block instead. Our AEO answer structure standards exist to prevent exactly that.
🧱 The three structural rules
One idea per block. Keep sections at 100 to 300 words, since that matches how passages get chunked and re-ranked. Longer blocks get split at arbitrary points.
Answer first, always. Put a 30 to 60 word direct answer immediately under the heading. Google's AI Overviews work by corroborating claims against top web results, so an unambiguous claim near the top is easier to verify and quote.
Headings as real questions. Use the question your buyer actually types or speaks, not a noun phrase. "How much does X cost per seat" beats "Pricing." Our query fan-out generator surfaces those real variants.
🔄 A before and after, from a real SaaS pricing page
❌ Before: "Our pricing is designed to scale with your team. As described above, the Growth tier builds on everything in Starter, with additional seats available. Contact us to learn more about what works for you."
An engine extracting that learns nothing. No price, no seat count, no entity, and two references to context that is gone.
✅ After: "Acme's Growth plan costs $49 per seat per month, billed annually, with a 5-seat minimum. It adds SSO, audit logs, and API access to everything in Starter. Teams over 50 seats move to Enterprise pricing, quoted on request."
Same information, 42 words, fully self-contained. That block can be cited verbatim and still be accurate.
📊 Tables are extraction-friendly, prose walls are not
| Structure | Extraction behavior |
| Comparison table with labelled rows | ✅ Lifted intact, often cited as a unit |
| 40 to 80 word answer block | ✅ Quoted verbatim in AI answers |
| Numbered steps with bold labels | ✅ Reproduced as a list |
| 600-word unbroken narrative | ❌ Split mid-argument, often skipped |
| Content behind a tab or accordion | ❌ Frequently never fetched |
⚠️ What I am still unsure about
Chunk boundaries are not published. The 256 to 512 token range reflects MaximusLabs AI's own measurement work and common embedding defaults, and I hold it as a working model rather than a documented fact. Engines may chunk semantically rather than by token count.
The practical advice survives either way. Self-contained blocks win under any chunking scheme, so you are not betting on the exact number. The formatting rules sit in our content formatting for AI search breakdown.
MaximusLabs AI tunes structure per engine, since ChatGPT rewards conversational depth, AI Overviews reward answer-first structure, and Perplexity rewards recency with visible sourcing. We score every asset on those dimensions before it ships, which is the part most content programs skip.
Q11. How do you prove technical SEO moved revenue, and what does the first 90 days look like?
Report four things, not crawl errors fixed: rendering parity across revenue templates, AI bot fetch success from server logs, share of voice across ChatGPT, Perplexity, Gemini, and AI Overviews, and AI-referred pipeline. Semrush's clickstream research values the average AI-search visitor at 4.4 times an organic one. MaximusLabs AI reports share of voice and citation rate rather than impressions, and measures every engagement on pipeline.
📉 The report that dies in the board meeting
You know the slide. Technical health score moved from 72 to 91. Crawl errors down 64%. Indexed pages up.
Then the CFO asks one question. Which deal came from that? Nobody in the room can answer, because the metric was never connected to revenue in the first place. That is a reporting failure, not an execution failure. Our approach to GEO revenue attribution starts from the opposite end.
🔄 What changed, and why the old metrics stopped working
Buyers do not browse ten blue links anymore. They ask ChatGPT, Perplexity, Gemini, or Google AI Overviews, and they get one answer naming five to ten brands. You are in that answer or you are invisible, and roughly 60% of searches now end without a click, according to Semrush's 2026 AI SEO statistics.
Mentions alone are still a vanity metric. A citation that never produces a conversation is a trophy. The honest measure is whether AI-sourced visitors become pipeline, which is why we track search referral traffic decline alongside citation counts.
📊 The four metrics and where they come from
| Metric | Source | Cadence |
| Rendering parity by template | Screaming Frog text vs JS crawl diff | Monthly, plus post-deploy |
| AI bot fetch success and 404 share | Server logs, filtered by user agent | Monthly |
| Share of voice across engines | Prompt-set testing, 50 to 200 buyer questions | Weekly |
| AI-referred sessions and pipeline | GA4 referrer segments joined to CRM | Monthly |
Share of voice replaces rank position, because there is no single rank in an AI answer. What matters is how often you appear across hundreds of question variants. The full metric set sits in our measurement and metrics in GEO reference.
⏰ The 90-day sequence
Days 1 to 30, retrievability. Rendering parity on pricing, comparison, integration, and docs templates. Bot access fixed in robots.txt and the firewall. Baseline log analysis by user agent.
Days 31 to 60, architecture. Internal links to money pages brought to 5 to 10 contextual links each. Click depth capped at four. Zero-impression programmatic pages pruned or canonicalized.
Days 61 to 90, extraction and entity. Answer blocks added under every heading on revenue pages. IndexNow wired into publish. Organization sameAs loop, SoftwareApplication, and credentialed author schema shipped.
⭐ What the proof looks like
MaximusLabs AI runs Answer Engine Optimization (AEO) as the flagship service with SEO as the foundation underneath, as strategy and execution in one team. Oliv AI reached a 64% AI citation rate in 6 months, vs ~30% for billion-dollar incumbents, and 30 to 40% of inbound now AI-sourced.
The pipeline number is the one I care about. Oliv AI produced 27 qualified leads, $47K+ pipeline, 26% close rate in 4 months, documented in the Oliv AI case study. Nidra Goods ranked first simultaneously on Google, ChatGPT, and Perplexity for its category term, as the Nidra case study records.
💡 What I am watching next
Agentic retrieval is the next shift. Agents will not just read your page, they will act on it, and the technical requirements for that are not documented yet. My guess is that clean HTML and stable URLs matter even more, not less. We are tracking that in agentic AI and the future of search.
If you are staring at a technical audit and cannot tell which findings touch pipeline, send me the four templates that carry your revenue. I will tell you which three fixes I would run first, and which forty I would ignore. Get in touch or email krishna@maximuslabs.ai.
Frequently asked questions
What is technical SEO for SaaS, and which parts actually affect pipeline?
Technical SEO for SaaS is the work of making a software platform's revenue pages, meaning pricing, features, integrations, comparisons, and docs, fetchable, renderable, indexable, and quotable by search crawlers and AI retrieval bots alike. The audience changed. The discipline did not. Ethan Smith of Graphite narrows real impact to two levers: your internal links, and whether the engine can read the page. Everything else, including page speed, alt tags, and H1 hygiene, is usually true but not impactful. The parts that touch pipeline are narrow: • Rendering parity on pricing, comparison, and integration templates • Bot access in robots.txt and at your firewall edge • Internal links pointing at money pages • Index curation across docs, app, and programmatic URLs • Passage structure so blocks survive extraction MaximusLabs AI audits against five retrieval engines rather than one, because what ChatGPT treats as important is not what Google or Perplexity treat as important. We scope every technical SEO and website audit around the templates that influence pipeline before touching the blog. Crawlable is the floor. Being the cited answer is the goal.
Do AI crawlers like ChatGPT, Perplexity, and Claude execute JavaScript?
No. With one exception, Gemini, which rides Googlebot infrastructure, no standalone AI crawler executes JavaScript. They fetch raw HTML and stop. Vercel and MERJ measured 569 million GPTBot and 370 million ClaudeBot requests. GPTBot fetched JavaScript files in 11.5% of requests and ClaudeBot in 23.84%, and neither executed them. Applebot renders; OAI-SearchBot, PerplexityBot, ClaudeBot, and Claude-SearchBot do not. What that means in practice: • Anything that appears only after hydration is invisible to those engines • Price tables, plan comparison grids, integration lists, and review widgets are the usual casualties • Content behind tabs or accordions is frequently never fetched at all The five-minute test: disable JavaScript in Chrome DevTools, reload your pricing page, then View Source and search for your actual price. If the number is missing from raw HTML, AI crawlers are missing it too. Our AI crawlability checker runs the same diagnostic without DevTools. The fix is server-side rendering, static site generation, or incremental static regeneration on every public template. MaximusLabs AI tests rendering parity before any content ships, because no engine cites text it never received.
How often should a SaaS company run a technical SEO audit?
Run a full technical audit quarterly, plus a targeted crawl after every release, template change, or migration. SaaS sites break between audits because deploys ship new URL patterns, and staging or app routes leak into the index. A practical cadence looks like this: • Quarterly: the full nine-step pass, covering crawl, indexation, bot access, canonicals, internal links, index bloat, sitemaps, schema, and server response • Every deploy touching templates or routing: re-crawl, re-check robots.txt, and re-validate the sitemap • Any migration: a full re-crawl, including CMS swaps and docs platform changes Audit templates, not URLs. A SaaS site usually runs on eight or nine templates that generate thousands of URLs, so fixing the template fixes every URL it produces. That reframe is what turns a two-week audit into a 90-minute one. MaximusLabs AI runs this audit as stage zero of a three-stage pipeline, meaning deep research, writing, then quality assurance, so retrievability and content structure ship together rather than six months apart. The sequence is documented in our technical SEO guide.
Which technical SEO fixes are a waste of engineering time?
Most items on a standard 50-page audit. Missing alt tags, absent H1s on archive pages, HTTPS header nits, and small Core Web Vitals deltas rarely change retrieval or pipeline. Ethan Smith is blunt about the mechanism. Much of SEO best practice is true but not impactful, and Core Web Vitals is his standard example: he has not seen it drive impact in 15 years, while practitioners keep reporting twenty percent lifts that he reads as bad analysis repeated until it sounds like consensus. Before any ticket gets written, run three questions: • Does the fix change whether an engine can fetch, parse, or quote the page? • Does it sit on a revenue template, meaning pricing, comparison, integration, or docs? • Can you prove the change in server logs or Search Console within 30 days? Two no answers means a quarterly hygiene batch. Three no answers means backlog decoration. MaximusLabs AI sequences technical work bottom-of-funnel first and skips top-of-funnel entirely, because AI engines already answer "what is" queries without us. That prioritisation logic sits inside our GEO strategy framework, where pipeline impact outranks error counts.
How many internal links should a SaaS pricing or comparison page have?
Target 5 to 10 unique contextual internal links per money page, and 10 to 20 when you are trying to move rankings on a competitive term. Kevin Indig ranks internal link optimization above title tags in practical impact, because it is the one lever you fully control. At Atlassian, app version pages sat 13 clicks deep from the homepage; flattening the link graph produced a 160% organic traffic increase over 12 months. At Shopify, adding 10 to 20 contextual links from high-authority pages moved target page rankings with no backlink spend. What to measure on your own site: • Unique inbound contextual links per money page • Click depth from homepage per template, flagging anything past four • Orphan pages with zero inbound internal links • Outgoing link counts on your highest-authority pages Watch for pages with 40 outgoing links and zero inbound equity. Docs index pages and blog category pages are the usual culprits. MaximusLabs AI builds 5,000 to 8,000 word hubs with 2,500 to 4,000 word spokes, each with a distinct job and no cannibalization, so money pages accumulate equity without outreach. We design these as GEO topic clusters rather than isolated posts.
Does schema markup still matter for SaaS, and is llms.txt worth shipping?
Schema aids content understanding and rich-result eligibility. It does not directly cause rankings or AI citations. Google retired FAQ rich results on May 7, 2026, and Search Central states that llms.txt is not used by Google Search. Ship five types and skip the rest: • Organization with a sameAs loop pointing to LinkedIn, Crunchbase, G2, and X profiles • SoftwareApplication on product and pricing pages, with real category and offer data • Article with a credentialed author who has a real bio page • BreadcrumbList for hierarchy • HowTo, only where visible numbered steps genuinely exist The sameAs loop is the highest-value piece for a SaaS brand. Mark up your Organization with every external profile you control, then make those profiles link back. That bidirectional loop tells an engine the company on G2, in the press release, and on your pricing page are one entity. MaximusLabs AI ships schema as entity work rather than SERP decoration, because trust signals decide which source an engine believes. The implementation order is in our schema markup basics walkthrough, and if you still want a file for non-Google agents, our llms.txt generator produces a valid one.
How fast can a new SaaS page get crawled, indexed, and cited by AI engines?
Faster than waiting for discovery. Host an IndexNow key file at yourdomain.com/[key].txt and POST changed URLs to api.indexnow.org/indexnow. First Bingbot crawl typically lands in 3 to 6 hours, and ChatGPT citation eligibility compresses to 24 to 72 hours. The runbook: • Generate a 32 to 64 character alphanumeric key and host it as a text file • POST a JSON payload with host, key, and changed URLs, which covers Bing, Yandex, Seznam, and Naver • Trigger the POST from your CMS publish webhook so nobody has to remember • Verify Bingbot hits in server logs rather than assuming submission equals discovery Keep Time to First Byte under 200ms on templates you publish to frequently, since server responsiveness affects how often AI reindexers return. That matters more than shaving Largest Contentful Paint from 2.8 seconds to 2.4. MaximusLabs AI wires IndexNow into the publish workflow on every client engagement, because 15 to 50 assets a month only becomes citations if each one reaches the retrieval index the week it ships. The deploy-layer detail sits in our technical GEO implementation playbook.
