DEV Community

付小花
付小花

Posted on

I scanned 38 products that launched on Hacker News this month. A language model could name 3 of them.

Every month a few hundred products get posted to Show HN. Most of them are technically alive and commercially invisible. I wanted a number for "invisible", so I ran a scanner over 40 of them.

A language model could name 3.

What I actually measured

I took every Show HN story from the last 30 days through the HN Algolia API — 400 stories, 227 unique non-platform domains after dropping GitHub, YouTube, Notion and similar links. Then I scanned the top 40 by HN score.

Each scan fetches the public surface of the site (robots.txt, sitemap.xml, llms.txt, the home page) and checks eight things, then asks one language model one question: "Do you know this product, and what is it?"

The model was deepseek-v4-flash, queried through a single provider on a single day. Other assistants may answer differently, so read everything below as a one-model reading.

38 of the 40 could be fetched and scored. Two returned nothing I could read.

Results

Check Failed Share of 38
Model could not name the product 35 92%
Title / description missing or broken 23 61%
No JSON-LD structured data 20 53%
No /llms.txt 18 47%
Sitemap missing or unreachable 12 32%
No single h1 11 29%
Site blocked or unreadable to plain HTTP 3 8%
robots.txt blocks an AI crawler 1 3%

Zero products passed all eight checks. The average product passed 5 of 8.

The three the model could name were pypi.org (an infrastructure project most developers have typed into a terminal), sparkjs.dev and greenvitriol.com. Two of those three are things a model has seen a thousand times in code and docs.

The part that surprised me, and then didn't

My assumption going in was that the products with more HN points would score better — that the ones people actually looked at would be the ones described well enough for a machine to quote.

The data says the opposite, weakly:

  • Pearson r between HN points and pass rate: -0.21 (n=38).
  • Average pass rate of the top 10 by points: 56.5%. Everyone else: 61.7%.
  • The three highest-scoring posts this month (81, 42, 38 points) scored 1/5, 3/8 and 3/8.

I want to be careful here. n=38 from a single source is not enough to claim anything causal, and r=-0.21 is weak. What I can say is narrower and still useful: in this sample, human attention and machine readability point in different directions. Getting upvotes does not mean an assistant can describe you when someone asks for a tool like yours.

That is not surprising once you look at what the two channels reward. HN rewards a good story and a live demo. An assistant quoting you needs a sentence on your site that states what the thing is, in a form that survives being lifted out of context. Those are different artifacts, and most companies only make the first one.

What the 7-out-of-8 products had in common

The six products that scored 7 of 8 had all of: a title under 60 characters with the category noun in it, a description that names who it is for, at least one JSON-LD block, a sitemap declared in robots.txt, and exactly one h1. That is a checklist rather than a strategy, yet it is the difference between "a model can describe you" and "a model does not know you exist."

The single most common failure among otherwise healthy sites was no llms.txt (18 of 38) and no structured data (20 of 38). Neither is exotic. Both are an afternoon.

What this does not prove

  • One model, one prompt, one day. A different assistant may answer differently. I did not test ChatGPT, Claude, Perplexity or Gemini, partly because their web sessions block automated use and I was not going to buy four API keys to write a blog post.
  • Single GET, no JavaScript execution. Sites that render everything client-side look empty to me and get marked as unreachable. Three of the 40 fall in that bucket, and that is a limitation of my crawler as much as a property of theirs.
  • Show HN is a biased sample: technical, self-serve, mostly small teams.
  • Knowing the name is the floor; a recommendation is the ceiling. This scan measures the floor.

Why I did this at all

I run a one-person company. My site has the same problem as most of the 38 — I scanned it and scored 7/8, with the model unable to name it. That is the honest version: I am selling a check I also fail.

The scanner is free, no signup, no card: https://www.saasclerk.app/aeo-scanner?utm_source=devto&utm_medium=article

If you want the raw data to check my work, the per-domain rows (every check, every piece of evidence, every model reply) are what the report is built from, and I am happy to hand over the JSON to anyone who asks in the comments.

One question I would actually like answered: if an assistant cannot name your product, does that show up anywhere in your analytics, or is it invisible by construction? I suspect the second, and that is why nobody fixes it.

Top comments (0)