The news feed with a p-value. Every story must reject the null hypothesis — and we tell you which ones the press hasn't covered yet.
Live Mastodon + Bluesky + RSS · Bonferroni-corrected · press-subtracted ·
Significant watches 20 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:
Link fragments are stripped before tokenizing (a URL is not a word). A burst whose posts ≥70% link to the same domain is rejected as aggregator echo — forty bots mirroring Hacker News is one source, not a discussion. A burst where one account wrote >50% of the posts is rejected as a curator flood, with the account named in the noise floor. And every burst must pass a deterministic story-coherence gate: at least half its posts must share a second, companion term. A real story travels with companions; an umbrella word ("firms", "Hidden") over unrelated posts doesn't — those go to the noise floor with their coherence score, not into the feed.
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.
A burst that clears the gate but matches what the Associated Press already published is just the wire, amplified by mirror bots — detecting it proves the machinery works, and nothing more. So every passing event is checked against two keyless public indexes: Google News (≥3 items in the last 48h) and Hacker News (any story with ≥10 points in the last 48h). Matches become confirmations, filed in gray below. Non-matches are ✦ EARLY precursors — the network knows something the press doesn't yet. Precursors are re-checked every 4 hours for 72 hours; when coverage appears, the card records exactly how early it was. If the indexes are unreachable, the event is honestly labeled unknown — no badge.
Claude writes the one-line neutral headline for events after they pass the gate (one batched call, cached forever). The statistics and the press checks contain no AI. If no key is set, deterministic template headlines are used. The AI holds one extra power — a veto, never an admission: if the posts behind a statistically valid burst don't actually tell one story, the event is dropped and logged rather than dressed up with a hedge headline. AI can only ever remove things from this feed.