The news feed with a p-value. Every story must reject the null hypothesis.
Live Mastodon + Bluesky + RSS · Bonferroni-corrected ·
Significant watches 15 public topic feeds on the open social web (Mastodon + Bluesky + RSS, via the Surf API) and admits a story to the feed only when the discussion burst is statistically significant against that feed's own history.
Feeds run at wildly different speeds (politics ≈ 4 posts/day, news ≈ 3,400/day). So each term's burst is measured as a proportion of posts: it appeared in x of the last n posts, against a baseline proportion p₀ estimated from everything older (Laplace-smoothed). Both feeds face the same gate.
Computed exactly (log-gamma), not approximated, for every window size we actually see.
Every cycle tests thousands of terms across all topics. Testing many hypotheses and reporting the best one is how junk science — and every trending-topics algorithm — works. So the gate is corrected for every term we looked at:
Separately from term bursts, each topic's posting rate is tested: posts in the last hour vs. a Poisson expectation from that feed's own same-UTC-hour history (diurnal-corrected, ≥48 h of history required). These tests count toward m and face the same corrected gate — they catch "something is happening" before we know what.
A term must also appear in ≥ 4 posts from ≥ 3 distinct authors. One loud account is not news. Topics without ≥ 30 baseline posts spanning ≥ 3 h are marked calibrating and not tested at all.
Claude writes the one-line neutral headline for events after they pass the gate (one batched call, cached forever). The statistics contain no AI. If no key is set, deterministic template headlines are used — the feed is identical.