Table of contents
- The test your homepage might be failing without knowing it
- The human grunt test: a quick recap
- Why B2B homepages keep failing the human version
- The 2026 addition: AI crawlers run their own version
- How to diagnose your site in two minutes
- The BrandingLab story: we failed our own AI grunt test
- What to do about it
- The original principle still holds
The test your homepage might be failing without knowing it
Your homepage might pass every human usability standard and still show up as a blank page to ChatGPT.
That's not a hypothetical. It's what happened to brandinglab.io — a site built intentionally, designed carefully, and completely invisible to AI crawlers until we caught it and fixed it. More on that in a moment.
First, the original grunt test. Because it still matters, and most B2B homepages still fail it.
The human grunt test: a quick recap
Donald Miller, founder of StoryBrand, identified something about the way the brain works: it filters aggressively. Faced with information overload, it doesn't try harder — it disengages.
Miller's Grunt Test is a corrective. It says your homepage should communicate three things within five seconds of first view, without the visitor having to read carefully:
- What does this company offer?
- How does it benefit me?
- How do I get it?
The name is intentional. Even someone with minimal context — someone who could only grunt their comprehension — should walk away with those three answers. If they can't, the homepage is working against you, regardless of how much you spent on the design.
The test sounds obvious. It's harder to pass than it looks, especially in B2B.
Why B2B homepages keep failing the human version
The failure mode is consistent. A company knows their product deeply, knows the problems they solve, and writes a homepage from that vantage point. The result is usually a headline that means everything to insiders and nothing to a first-time visitor.
"Empowering teams to unlock operational excellence" is not a tagline. It's a placeholder. It tells the visitor nothing about what you do, who you do it for, or why they should stay.
In our work with B2B clients, we see three failure patterns repeatedly:
The vague headline. Any company in any industry could claim it. The visitor's brain registers "generic" and starts looking for the exit.
The service list instead of a value proposition. Eight service categories on the homepage isn't communication — it's a menu without context. Visitors don't arrive knowing which category applies to them. They need the outcome named first.
The technically-present-but-invisible CTA. Small, gray, below the fold, competing with four other buttons of equal visual weight. If it takes effort to find the CTA, the page has failed before the visitor gets there.
None of these are design problems. They're messaging problems that show up in the design. A visual rebrand won't fix them.
The 2026 addition: AI crawlers run their own version
Here's where the test extends in a way that most websites haven't caught up with.
AI search tools — ChatGPT, Perplexity, Google AI Overviews, Bing's AI answers — index your site by fetching and parsing your pages. When a buyer asks "best B2B website agencies for mid-market companies," those tools pull from what they've been able to read on your site.
The problem: they fetch the page the way a browser does, but they don't execute JavaScript.
If your site is a client-rendered single-page application — React, Vue, or similar — what the crawler receives in that single fetch is the HTML shell. The actual content lives in JavaScript bundles that run after load. A human visitor never sees the problem because their browser executes the JavaScript. The crawler sees an empty <div>. It has nothing to read, so it has nothing to cite.
You can pass the human grunt test — clear headline, prominent CTA, well-designed page — and fail the AI version simultaneously. The human sees your site. The crawler sees a blank.
How to diagnose your site in two minutes
Run this in a terminal:
curl -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" https://yourdomain.com | grep -i "<h1\|<title\|<meta name"
If the output contains your headline, title tag, and meta description, you're likely fine. If it returns empty tags or nothing meaningful, AI crawlers are seeing the same thing — a shell.
You can also run curl without a specific user agent and compare the output to your rendered page. If the raw HTML is dramatically shorter than the full page content, the gap is what AI crawlers can't see.
This is a two-minute diagnostic. It doesn't require a developer. The results either give you confidence or show you exactly where to focus.
The BrandingLab story: we failed our own AI grunt test
When we rebuilt brandinglab.io, we chose a Lovable-generated React application for the frontend. The design worked. The messaging was clear. Human visitors landed on a well-structured homepage that passed the grunt test easily.
Then we started noticing that AI search tools weren't surfacing brandinglab.io in answers for queries squarely in our category. We ran the curl diagnostic against our own homepage.
What came back was an unhydrated shell. The title tag was present. The meta description was there. The <div id="root"> was there, waiting for JavaScript to fill it in. The headline, the value proposition, the service descriptions, the CTAs — all of it lived in JavaScript bundles that the AI crawler never executed. To every bot that fetched the page without running JavaScript, our homepage was empty.
It was a clean case of passing the human grunt test and failing the AI one.
The fix was a Cloudflare Worker deployed in front of the site. The Worker inspects the incoming user agent on every request. If the request comes from a known bot — GPTBot, ClaudeBot, Bingbot, Perplexity's crawler, and a list of others — the Worker intercepts it and routes the request to a headless Chrome prerender service. The prerender executes the JavaScript, waits for the content to load, and returns the fully-rendered HTML to the crawler. Human visitors get the React app as before. Bots get the prerendered HTML with real content.
The result: AI crawlers can now parse everything on the page. The implementation took less than a day and required no changes to the frontend codebase.
This is the same class of fix available to any JavaScript-heavy site. It's not a full rebuild. It's a routing layer that gives crawlers what they need without changing what humans see.
What to do about it
Step 1: Run the human grunt test. Open your homepage. Give yourself five seconds — no scrolling. Close your eyes. Answer: What does this company do? Who does it help? What should I do next? If any of those is unclear, the messaging needs work before anything else.
Step 2: Run the AI grunt test. Use the curl command above against your own site. If the output is an empty shell, you have an AI visibility problem regardless of how well the human version passes.
Step 3: Fix the human version at the messaging layer. Rewrite the headline to name what you do and who it's for, plainly. Make the CTA the most visible element in the first viewport. Cut anything on the homepage that doesn't directly serve the visitor's decision in the first five seconds.
Step 4: Fix the AI version with a rendering layer. For client-rendered JavaScript applications, the options are server-side rendering (rendering content on the server before sending HTML), static site generation (pre-building HTML at deploy time), or dynamic prerendering (a middleware layer like the Cloudflare Worker approach above). Which is right depends on your stack. The point is that one of them needs to be in place.
Step 5: Verify, then re-verify. After implementing fixes, run both tests again. The curl diagnostic should return meaningful content. A human running the five-second test should be able to answer all three questions cleanly.
The original principle still holds
Donald Miller's insight from 2014 hasn't aged. The brain still filters. Visitors still arrive with limited attention and no prior context about your company. Clarity in the first five seconds still determines whether they stay.
What's changed is that websites now have a second audience with different constraints. AI crawlers don't scroll, don't execute JavaScript, and don't give you multiple chances. They fetch once. What they see in that fetch is what they use to decide whether you exist in their index.
Running both versions of the grunt test is now part of basic website maintenance. Neither is optional.