Skip to content

Build1 publisher3 min readPublished

8,664 indexed pages, nine clicks: programmatic SEO now fails at ranking, not indexing

One developer's Search Console data shows the crawl budget arrived and the traffic did not. A median position of 58 is not an indexing problem, and no amount of schema fixes it.

The Engineer · Build desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

Illustration accompanying 8,664 indexed pages, nine clicks: programmatic SEO now fails at ranking, not indexing
Generated illustration

What happened

  • The author runs a small tech-interview-prep site with 8,664 individual pages, one per concept, each containing a question, what it tests, a model answer and the common candidate mistake.
  • 28 days of Google Search Console data showed nine clicks in a month from nearly nine thousand pages.
  • The author concludes the pages are not missing from the index; they are in the index, ranked below anything a human will scroll to.
  • The author's working theory for weeks was that Google was not indexing the pages, the standard programmatic-SEO failure story in which thousands of pages sit under 'Discovered - currently not indexed'.
  • A few weeks earlier, only 6 pages had ever received an impression.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

A developer running a small tech-interview-prep site published 8,664 pages, one per concept, and reported nine clicks from Google over 28 days [1][2]. The useful part is not the failure but where it sits: Google indexed the pages and then ranked them at a median position of 58 [3][8], which is a different problem with a different budget line than the one most volume plans are written against.

The standard programmatic SEO post-mortem blames crawl budget, and the author says that was his working theory for weeks [4]. It was briefly true: a few weeks ago only 6 pages had ever received an impression [5]. That figure is now 1,575, with Google working through the corpus on its own schedule and no new intervention [6][7]. So roughly 18 percent of the pages have been shown to someone at least once [1], and 7,089 have not [6]. The indexed subset produced 6,511 impressions across 1,206 distinct queries [8][9]. Nine clicks against 6,511 impressions is a click-through rate of about 0.14 percent [2], or one click per 963 pages published [3].

The query list explains the shape. The top queries by impressions were "component team" at 11 impressions and position 52.2, "post mortem template" at 11 and 85.8, and "error budget" at 8 and 94.9 [11]. Those eight top queries account for 64 impressions, about 1 percent of the total [4]; the remainder is a tail averaging 5.4 impressions per query [5]. The pages that ranked best were narrow comparatives: "blockers vs impediment" at 28.8 and "prerendering vs ssr" at 33.6 [12].

The technical checklist was clean, which matters because it is the work most teams actually fund. Pages are server-rendered HTML under Next.js App Router with ISR, and curl returns full content [13]. Every page is reachable from a topic hub linked from the homepage [14]. There is one canonical per concept, with near-duplicate titles collapsed to the oldest published version [15]. Sitemaps and structured data (hasPart, FAQPage, isAccessibleForFree) are valid, submitted and parsing [16]. Each page carries a distinct answer and a distinct failure mode rather than a template with a noun swapped in [17]. According to the author, none of it moved the needle and he could have skipped weeks of it [18].

His diagnosis is that position 60 on "error budget" is an authority problem, not a markup problem: a new domain with no inbound links loses to pages that have accumulated citations for ten years [19]. His own table puts that query at 94.9 rather than 60 [11], but both numbers are off-screen. Every fix that lives inside the codebase, he argues, operates on a variable that is not binding [20].

The operating consequence is narrow and specific. A content-volume plan justified by "Google will eventually index it" has lost its justification, because indexing is the part that worked. The author's rule is to stop generating pages for terms that already have a definitive answer: the corpus needed "error budget" for completeness, and search did not [21]. He now targets comparative and recent queries instead [22].

Watch the 1,575 figure, since it was still climbing when he wrote [6][7]: if median position stays near 58 as coverage grows, the impression count rises while clicks do not, and the dashboard keeps producing numbers that resemble progress [10]. Watch also whether the comparative pages at 28 to 33 cross into the first page as they age [12]. And treat the sample for what it is: one undisclosed domain reporting its own Search Console panel, with no independent verification [1].

Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories