HN gets 500+ stories a day. The front page is ranked by votes - which surfaces popular content, not necessarily the best discussions. A post about a Google outage will outrank a thread where infrastructure engineers are quietly sharing how they handle failover.
sift tries to find the second kind.
What "practitioner depth" means
The scoring algorithm looks at five signals in the comment tree:
Depth breadth (30% weight) - Not max depth. The fraction of comments at 3+ levels of conversation. A thread where 20% of comments are three replies deep means real back-and-forth happened.
Practitioner markers (25%) - Comments containing experience phrases ("I built," "we used," "in production"), code blocks, specific tool names, or hedging language like "FWIW" and "YMMV" that correlates with practitioners.
Score velocity (15%) - Points per hour. Sustained interest over time, not a spike.
Author diversity (15%) - Unique authors relative to comment count, weighted by thread size. High diversity at depth 3+ means different people are engaging with each other's thinking.
Reference density (15%) - Comments with external links. Citation culture.
Before these signals run, threads pass through quality filters: flame detection (hostile short comments at depth), comment length IQR (catches pile-ons), temporal spread (catches flash-in-the-pan), and a discussion density band-pass.
What comes out
10-12 discussions per day. 6 above the fold, rest behind a tap. Each with a context paragraph explaining why it was picked. Updated 4x/day. Yesterday's picks are gone.
The boring stack
Astro static site. Zero client JS. Self-hosted fonts (Newsreader + JetBrains Mono). Cloudflare Pages. GitHub Actions for the pipeline (fetch from Algolia, score, build, deploy). Cloudflare KV for cross-run state so repeated threads get decayed.
Total cost: $0/month on free tiers. Total page weight: ~18KB HTML, ~7KB CSS, ~320KB fonts.
Top comments (2)
The practitioner markers weighting is brilliant — "I built", "we used", "in production" are exactly the signals that separate war stories from armchair opinions. I've noticed the same pattern on Dev.to: posts with personal experience ("I did X, here's what happened") consistently get deeper engagement than generic advice posts.
The $0/month stack is impressive too. Astro + Cloudflare Pages + KV is becoming the default for this kind of tool. 18KB HTML is chef's kiss.
One thing I'm curious about: does the flame detection filter catch the subtle kind — where someone technically doesn't use hostile words but keeps replying with one-line dismissals? That pattern kills threads just as effectively as outright flames.
Not yet. The flame filter catches hostile threads and low-effort pile-ons. A thread where every reply is under 10 words but stays polite passes both checks.
Depth breadth catches some of it indirectly - those threads don't generate 3+ level conversations. But a direct signal for reply-length decay at depth would be sharper.