I ran the last 1,000 Show HN posts through a TrueSkill rating system with an LLM acting as the pairwise judge. ~12,000 head-to-head comparisons, each judged twice with the order swapped to cancel positional bias. The result is a merit ranking that's independent of how many upvotes each post actually got.
The interesting part is the disagreement with HN's own ranking. The merit model rewards depth, novelty, and craft; HN's upvote system rewards screenshots, immediacy, and timing. The two rankings agree on a handful of posts and disagree wildly on the rest.
predicted upvotes: an earlier version of this report tried to predict "deserved upvotes" with a regression. That number was misleading — HN points are too noisy a signal of merit (timing, frontpage luck, and screenshot-friendliness dominate). This version drops it. Instead, every post gets two independent percentile ranks: where it stands by merit, and where it stands by upvotes. The disagreement is the story.
Top 10 by merit
Ranked by TrueSkill conservative score (μ − 3σ). The orange bar is merit percentile; the gray bar is upvote percentile.
Of the top 10 by merit, nine got below the median in upvotes. The pattern: low-level systems work, exotic data structures, weird hardware, and decade-spanning solo projects.
Buried gems — high merit, low attention
Posts in the top decile by merit but below the 25th percentile by upvotes, at least 48 hours old.
Methodology
- Source: 1,000 most recent Show HN posts via the Algolia API. Linked URLs fetched and extracted with readability-lxml; for text-only posts, links from the body were followed.
- Judge: a single Deepseek V4 Flash LLM does pairwise comparison with a rubric biased toward depth, novelty, and craft, and against marketing polish. Each pair is judged twice with order swapped — flips become draws, not wins. This is the highest-leverage error mitigation.
- Rating: TrueSkill, ~12 matchups per item, matchmade by current μ so comparisons are between near-equals (chess-style).
- Filtering: only items with σ < 3.0 enter the published lists. Posts under 48 hours old are excluded from "buried" — they may just not have been seen yet.
What this is not
It's not a replacement for HN's ranking. It's a second opinion that weighs different things. The most reliable claim I'm comfortable making: HN upvotes correlate with how easy a project is to evaluate from a screenshot. Deep technical work that requires reading the README to appreciate gets penalized.
Code, raw data, and matchup logs: github.com/kouhxp/showhn-rank. Curious to hear which "buried gems" people think the model got right and which it got wrong.