Fourteen URLs on my job site. Thirteen of them have 9 to 18 links to other pages in the served HTML.

The fourteenth has zero. It is /pricing.

Not a broken template — the browser shows the nav, because the nav is React and it hydrates. But the document that comes off the wire contains no route out of the page at all, and six words of body text.

The measurement

I pulled all 14 sitemap URLs with curl, then counted three things per response: words of visible text after stripping script and style content, hrefs pointing to other pages on the same host, and Question nodes in JSON-LD versus the same text appearing in the delivered HTML.

Page Words Links FAQ Qs Qs in HTML
/guide/limits/ 2,879 15 12 12
/guide/how-long-do-job-postings-stay-up/ 1,806 15 5 5
/guide/recently-posted-jobs/ 1,544 15 5 5
/guide/new-grad-jobs-2027/ 1,504 15 5 5
/terms 1,494 4 0 0
/privacy 1,456 4 0 0
/guide/how-many-jobs-should-i-apply-to/ 1,455 14 5 5
/guide/h1b-sponsorship-jobs/ 1,359 14 6 6
/guide/best-job-aggregator-sites/ 1,057 15 5 5
/about 457 9 3 3
/ (home) 433 10 0 0
/contact 230 5 0 0
/guide/ 174 18 0 0
/pricing 7 0 8 0

All 14 answered 200. No retries needed.

What is on the page instead

Three price tiers, and they are written better than anything else on the site:

  • 30 AI fit analyses, $4.99
  • 80, $9.99
  • 200, $19.99
  • browsing, filtering, saving jobs and opening the employer's own posting stay free
  • points never expire

That copy lives in the meta description, in og:description, and in a React Server Components payload — one self.__next_f.push call — that paints after hydration.

It does not live in the body. And there is no Product schema, no Offer, no price property. The only JSON-LD block on the page is an FAQPage.

Eight FAQ entries: where the jobs come from, whether you need an account to buy points, what one point buys, whether refunds exist. Average answer 36 words. None of the eight question strings appears anywhere in the HTML a client receives without running JS.

Across all 14 pages there are 54 Question nodes and 46 of them are backed by real visible text. All 8 orphans sit on this one page.

Three conclusions, one of them uncomfortable

The page was never broken for humans. It renders correctly. If I had only ever looked at it in a browser I would have found nothing — and for eight days I didn't.

A page with zero outbound internal links is a sink. Whatever authority reaches /pricing stops there. It cannot pass anything to the guides, and a visitor who lands from a search result for "job site pricing" has no path into the product except the back button.

Structured data is claiming content the document does not contain. Not maliciously, and not cloaking — the text really is on the page once JS runs. But FAQ markup on an FAQ that isn't in the response is markup a validator will flag and a rendering crawler may or may not reconcile.

Limits of this audit

I measured the HTTP response, not Googlebot's rendered DOM. Google executes JavaScript on a deferred budget; whether it ends up seeing those eight answers is something I cannot prove without Search Console, which I did not open for this post.

Same for Bing and every other engine. No webmaster account, no claim.

And no conversion data. Whether a dead-end pricing page costs revenue is a question for analytics, not for curl.

Disclosure

JobRadarly is one of mine — jobradarly.com. It filters job postings against your role, city and salary floor and shows you the handful that clear the bar instead of a feed. The numbers here come from my own server.

Correction to an earlier internal note: it said this page returns four words server-side. It returns six, plus an em dash. The number moved. The finding did not.