Skip to content

Blog

I scraped 15,428 Hacker News posts to find out why my Show HN got 3 upvotes

factmeasuredDat Do

On 27 August I posted Knowl Cloud to Show HN. The title was "Show HN: Knowl — agent memory with write-time supersession, 0.90 on MAB". Behind it: OAuth 2.1 with dynamic client registration, subscription billing with proration, 28 routes, around 260 automated tests, a live domain processing real payments.

It got 3 points. One of those is the upvote Hacker News casts automatically on your own submission.

So I pulled a year of Hacker News to work out what actually gets attention there. The Show HN half of that dataset holds every Show HN post that cleared 50 points in twelve months — 1,338 of them.

Mine isn't in it. It is 47 points below the floor of the dataset I built to explain it.

That is the joke I could not get past, and this post is what was underneath it. Including the parts that argue against me.

TL;DR

  • The corpus is 15,428 stories above 100 points, 2025-09-02 to 2026-08-28, plus 1,338 Show HN posts above 50.
  • Category barely predicts score. Eleven keyword buckets, and every median sits between 181 and 262 against a corpus median of 216. Category tells you how often you can post, not how well it does.
  • 69.1% of the corpus matches no technology bucket at all. What is up there instead is mostly grievance — though when I tried to measure that rather than assert it, the measurement came back weak.
  • Show HN gets 0.379 comments per point. The rest of HN gets 0.596. Admiration is upvotes. Arguments are unresolved problems, and that is where products live.
  • I had a nice theory about title shape. I tested it and it did not survive, in either direction.

Category doesn't predict score

Eleven keyword buckets over titles. A story counts in every bucket it matches. c/p is comments ÷ points, summed across the bucket.

category posts median max c/p
ai/llm 1245 249 3346 0.58
languages 800 181 2214 0.53
hardware 518 212 2186 0.56
devtools 503 222 3521 0.48
infra/ops 438 197 2432 0.51
web/frontend 385 237 1897 0.49
science 361 188 1802 0.58
privacy/policy 348 262 1747 0.64
career/meta 332 225 2320 0.76
security 277 252 2210 0.51
opensource 219 217 996 0.43
(nothing matched) 10660

The table looks like it is telling you to write about AI. It is not. The corpus median is 216, and every category median lands between 181 and 262 — a spread of ±20% around the whole dataset, for categories whose volumes differ by 5.7×.

ai/llm has 5.7 times the volume of opensource and a median 32 points higher. What that buys you is frequency: more chances to post, not better odds per post. The variance that decides whether a given post does well lives inside categories, not between them. Picking the hot one is the single thing this table appears to say and doesn't.

The one column that does move is c/p. career/meta at 0.76 and privacy/policy at 0.64 are not better-scoring categories, they are more-argued ones — and hold that thought.

Two-thirds of it isn't about technology

10,660 of 15,428 stories — 69.1% — matched none of the eleven buckets.

I had eleven categories covering 31% of the corpus and I was one paragraph away from calling that a taxonomy. It isn't one. It is a minority report.

Here is the top of the unmatched pile, verbatim:

4229  1668c  Don't post generated/AI-edited comments. HN is for conversation between humans
3406  1470c  Slack has raised our charges by $195k per year
3158  2314c  Statement on US government directive to suspend access to Fable 5
2935   360c  Show HN: I replaced a $120k bowling center system with $1,600 in ESP32s
2752  1207c  The struggle of resizing windows on macOS Tahoe
2693   889c  Keep Android Open
2645   841c  We Will Not Be Divided
2532   396c  Bose has released API docs and opened the API for its EoL SoundTouch speakers
2487   951c  It's hard to justify Tahoe icons

Almost none of that is a technology. It is somebody being charged too much, somebody leaving a platform, somebody defending a thing that is being taken away, somebody fixing what a vendor wouldn't. Even the good news is shaped by the grievance it resolves: Bose scores 2,532 points for opening an API on hardware it had already abandoned.

Then I tried to measure it, and it mostly refused. A conflict-word regex over titles fires on 15.6% of the top 1% against an 11.3% base rate — a lift of 1.38×. That is a real effect and a small one, and it moves when you change the word list, which means it is partly measuring my word list.

Reading the top 25 by hand, I count roughly 16 as conflict-shaped. The hand-read is much stronger than the regex and I cannot close the gap, because HN grievance is written in deliberately level language. "Keep Android Open" is a protest with no protest words in it. So the pattern is clearly visible and only weakly measurable, and I would rather publish it that way than go looking for the word list that makes the number decisive.

HN admires Show HN. It argues about everything else.

Comments per point, aggregated:

  • Show HN: 0.379
  • Everything else: 0.596

An upvote is admiration, and it is cheap. A comment is an unresolved question, and unresolved questions are where products live. Show HN gets the applause; the rest of the site gets the argument.

The distribution underneath is harsher than the medians suggest. Of 1,338 Show HN posts clearing 50 points in twelve months, the median is 111 points, and only 62 cleared 500 — 4.6%.

The very top is not business-shaped:

1680  415c  Show HN: Elevators
1557  363c  Show HN: Jmail — Google Suite for Epstein files
1325  241c  Show HN: isometric.nyc — giant isometric pixel art map of NYC
1278  209c  Show HN: I built a synth for my daughter
1032  323c  Show HN: I recreated Windows XP as my portfolio
 804   78c  Show HN: Strange Attractors
 786  240c  Show HN: Brutalist Concrete Laptop Stand (2024)

Toys, art and craft. In the whole Show HN top 20, the entries with a business behind them are Homebrew 6.0.0 (already famous) and "I replaced a $120k bowling center system with $1,600 in ESP32s" — which at 2,935 points is a grievance story wearing a Show HN hat, and the second-highest-scoring story in the entire corpus.

One more, and it is the one I keep coming back to: github.com is the largest single domain in the corpus at 1,100 of 15,428 stories, with a c/p of 0.420 — well under the 0.596 site average. The most-submitted artefact on Hacker News is free code that people upvote and don't discuss.

My own category, isolated

Show HN posts whose titles match memory, context, forget, recall or MCP: 47 of 1,338 — 3.5%. A few of those are false positives (a piano memory game, a C allocator), so the real figure is slightly lower. It is a small slice, and the names in it repeat: Recall, Recall again, Total Recall, Mnemo, Hippo, Atomic, Atomic again, ThoughtDAG, MCP Memory, Moltis.

The infrastructure subset is where it stopped being funny:

73pts   0c  Show HN: MCP-stama — an ultra-fast Rust MCP server with no dependencies
59pts  25c  Show HN: Metorial (YC F25) — Vercel for MCP
59pts   8c  Show HN: HyprMCP — Analytics, logs and auth for MCP servers
50pts   5c  Show HN: mcpc — Universal command-line client for MCP

A YC-backed company launching "Vercel for MCP" scored 59 points and 25 comments. Metorial presumably has customers; it did not get them here. That is evidence about the channel, not about the market — and I had been reading my own 3 points as evidence about the market.

It also puts a ceiling on the thing I was hoping to fix. Even the successful version of my launch, in my category, in this channel, is a 59-point post. The gap between 3 and 59 is worth closing. It is not worth building a company on.

The hypothesis I killed

Sitting in that set is one clear standout: Show HN: Stop Claude Code from forgetting everything — 202 points, 225 comments, c/p 1.11. It is the only post in the niche that clears 1.0, and its ratio is about 1.3× the next highest. Everything around it leads with a product name. Mine led with a product name and a benchmark score.

So: obvious theory. In this niche, a title that states the problem beats a title that states a name. I ran it. Name-led means the title opens with a product name and a separator; the rest is everything else. Medians are per-post.

narrow set (memory|context|forget|recall|mcp), n=47
  name-led      n=20   median 130 pts   median c/p 0.43
  rest          n=27   median  98 pts   median c/p 0.41

broad set (+ agent), n=161
  name-led      n=85   median  99 pts   median c/p 0.46
  rest          n=76   median 104 pts   median c/p 0.38

The hypothesis is not supported, and the test cannot even settle which way it fails. Narrow the set and name-led titles win by 32 points. Widen it by one keyword and the ranking on points flips to a 5-point loss. With 20 to 85 posts per side, that gap is inside the noise, and the only thing stable across both cuts is that name-led titles get argued with slightly more — which was not the claim.

So I cannot tell you my title was the wrong shape, because I tested exactly that and got nothing. What I can say without the data is narrower and harder to argue with: "0.90 on MAB" requires you to already know what MemoryAgentBench is. "Stop Claude Code from forgetting everything" requires you to have used Claude Code. One of those audiences is very much larger than the other, and I wrote for the smaller one on the one occasion where that was expensive.

That standout post is not an instance of a pattern I can name. It is an outlier, and I wanted it to be a pattern because I had a product that would have benefited from it being one.

One metric I had to throw out

Before trusting comments-per-point anywhere, I looked at what it actually ranks. Of the 50 most-argued posts above 100 points, 19 are Ask HN threads — 38%:

3.95   292pts  1154c  Ask HN: What Are You Working On? (July 2026)
3.90   142pts   554c  Ask HN: Who wants to be hired? (February 2026)
3.70   325pts  1203c  Ask HN: What are you working on? (August 2026)

Nobody is arguing in those. People are posting entries, and the format guarantees a high ratio. It is a real measurement of a thing I did not mean to measure. Every c/p figure in this post is computed with those rows left in, because they are part of the corpus — but c/p as a proxy for controversy only means something once Ask HN is filtered out, and I would rather say that than quietly drop rows.

The comment I found, and what it actually says

The last part of the scrape searched a year of comments for fifteen unmet-need phrases — I wish there was, I'd pay for, why is there no, someone should build. It returned 854 comments from 789 unique authors.

Filtering to comments carrying both a payment phrase and a developer-tooling keyword left 43. I read all of them. About 8 were real unmet needs; the rest were pricing complaints about products that already exist, or rhetoric.

One of them, item 47539657, is the exact thesis Knowl was built on:

Agents don't work. You have to compose your own context.

A stranger, unprompted, in public, on a thread about coding budgets. I wanted that to be the tidy ending. It is — just not the ending I first read into it. Here is the sentence with what surrounds it:

When I'm in the mood to code I'd pay for API request to guarantee I get a response right away. No subscription usage limit is holding me back from making progress. Agents don't work. You have to compose your own context, which means you need to send the raw request. Not have assistant figure out.

The money in that comment is for API credits. And the context sentence is not a request for something that manages context — it is an argument that the managing is the part you should be doing yourself, by hand, on the raw request.

That is the finding, and it took the full quote to see it. The problem is real and widely felt. The demand is for the problem, not for a thing that solves it on your behalf. The hundred-plus memory servers on the MCP registry, near-identical in positioning and none with visible revenue, are the same fact counted a different way. So is the most-argued memory post of the year sitting on top of a category with no money in it.

What I take from this

Not "pick a better category" — the medians say category is nearly inert. Not "write problem-shaped titles" — I tested that and it came back null.

What the corpus says is narrower and less comfortable. HN reliably rewards a grievance with a receipt attached, and a thing somebody made for love. It gives a polite median of 111 points to everything else, including a YC company standing on exactly the shelf I was standing on. And in this niche specifically, the thing people are loudly agreeing about is the problem, in a category where a hundred teams have already shipped a solution and none of them appear to be getting paid for it.

Three points is not a distribution failure that better posting fixes. The honest reading is that I launched a paid product into a channel that pays attention to grievances and gifts, in a category whose measured demand is demand to keep doing it yourself, with a title addressed to the few hundred people who already know what MemoryAgentBench is.

The repo has picked up six stars in the weeks since, which is a trickle rather than a launch, and I mention it only so nobody thinks the three points turned into something later.

I don't have the second half of this — the part where I say what I changed and whether it worked. That one needs a few more months of evidence before it is worth anybody's time. This is just the measurement.


Corpus: Hacker News stories ≥100 points and Show HN posts ≥50 points, 2025-09-02 to 2026-08-28, via the Algolia HN API using search_by_date over 15-day windows, plus a comment search across fifteen demand phrases. 15,428 stories, 1,338 Show HN posts, 854 comments. Every figure here was recomputed from the raw CSVs while writing; where a number moved between the first analysis and this one, the recomputed number is the one printed.