The Algorithm
Full transparency · generated from the constants the wire runs on
The whole point of this wire is that you can see how it works. Every number below is imported from the same file the pipeline reads — when we tune the wire, this page changes with it. Nothing here is a press release.
01 · Compiling
One story, not fifteen copies
Every ~15 minutes the wire pulls its sources. Exact duplicates — the same article arriving from different feeds — collapse first: links are stripped of tracking noise and reduced to one canonical address, so a story can only enter once.
Then coverage of the same story is threaded together. Each new report is compared against every thread born in the last 72 hours using word-overlap similarity, with headline words counted 2× — the headline is the story’s identity. Score at least 0.3 against a thread and the report joins it; otherwise it starts a new one.
Inside a thread, the original is simply the earliest published report — even one that arrives late. Follow-ups nest under it. That’s the de-noising promise: the source first, the echoes beneath.
02 · Sorting
Coverage × independence × freshness × velocity
score = log2(1 + reports) × √sources × e^(−hours since last report / 24) × breaking boost
breaking boost = min(1 + 0.6 × log2(1 + sources per hour since first report), 3)
Coverage — how much reporting a story has drawn, log-dampened so forty reports isn’t worth forty times one. Independence — how many different outlets are on it. Sixteen outlets covering one event is news; sixteen posts from one outlet is a live-blog. This is the heart of the ranking. Freshness — scores decay on a 24 hour curve from the last new report; fresh coverage resets the clock, silence sinks the story. Velocity — how fast a story is gathering independent sources. Three sources in thirty minutes is breaking; three sources in a day is not. Fast-gathering stories get a boost (weight 0.6, capped at 3×, with threads younger than 15 minutes scored as that age) that fades naturally as a thread ages — so brand-new news can reach the top ranks while it is still news.
| Story shape | Reports | Sources | First report | Last report | Score |
|---|---|---|---|---|---|
| Big story, running all day | 22 | 20 | 12h ago | 1h ago | 35.9 |
| Big story, quiet for a day | 22 | 20 | 36h ago | 24h ago | 10.3 |
| Brand new, 3 sources in 30 minutes | 3 | 3 | 30m ago | 6m ago | 9.3 |
| Single fresh report | 1 | 1 | 1h ago | 1h ago | 1.5 |
Computed by the live scoring function, not typed in.
03 · Showing
What makes the page
Threads with activity in the last 48 hours are ranked; the top 100 make the page and the top 10 get the full treatment — original on top, up to 4 follow-ups nested under it, at most one per outlet so a thread shows breadth, not one outlet’s volume. Scores recompute after every pull, roughly every 15 minutes. Above the ranks, the Breaking strip shows up to 6 of the newest threads born within the last 1 hour that aren’t already ranked up top — regardless of score, so a story that broke minutes ago is visible before the ranking has anything to measure.
No engagement weighting. No click optimization. No personalization — yet. What you see is coverage, independence, and time.
04 · Accounts
What an account stores
Signed out, the ✕ and 👍 live only in your browser: they change what you see and feed nothing else. Nothing is tracked.
Signed in, three things are stored against your account, each timestamped: headlines you click through on the story lists (the breaking strip is untracked), stories you 👍, and stories you ✕. That is the whole reading-data list; the account itself adds the operational minimum every sign-in system carries — your email, session records, and short-lived sign-in-link timestamps. It exists so your history and controls follow you across devices, and it is yours to see on your history page (the free tier views the window below; Pro views all time). Free accounts view the last 30 days; everything is kept regardless, so upgrading unlocks your past instantly rather than starting over. Removing an interaction removes it server-side too — with one v1 honesty note: a second signed-in device that still holds the old state can re-sync it back until full tombstone sync ships.
The honest part about aggregate data: what the whole readership clicks and skips is a real future ranking signal (everyone engaging = a boost; everyone skipping = a demote), and if we ever feed it into ranking, the formula on this page will say so explicitly — the same way every other number here is public. Today it feeds nothing.
05 · Next
These controls become yours
The plan is for readers to own this page: source toggles, tunable weights, and a view of your own reading model — user-controlled, fully visible, always explained. Transparency isn’t a feature of this wire; it’s the point.