I Just Want to Know What Happened
Most of a news feed is about things that haven't happened. Someone plans to, vows to, may, could, is expected to. I wanted the other part: who did what, already, for certain. So I built a reader that kept only that, and bought a domain for it, whathappened.dev.
What I was after
A short list I could read in a minute and trust. No speculation, no threats, no promises, no celebrity filler. If a story said someone signed, voted, was arrested or released a report, it stayed. If it said someone would, it went.
How it was made
I built and deployed the first version in one day, July 11, 2025: Next.js on Vercel, a Postgres database on Supabase, and a job that ran every six hours to pull RSS feeds from the AP, Reuters and the BBC.
Each headline went to a language model (OpenAI's GPT-4 Turbo) with a short set of rules: accept completed actions and confirmed events; reject plans, speculation, threats, ongoing investigations without a conclusion, and entertainment. For anything it accepted, it broke the headline into who, action, object and context, so the page could show a table of plain sentences instead of headlines written to be clicked.
A week later I added sign-in and started planning a $2 a month subscription. That's where the work stopped.
What happened to it
The scheduled job kept going for fifteen months after I stopped looking. Its database has 28,230 articles, and every one of them is from the BBC: the AP and Reuters feed addresses had stopped working, and nothing told me.
Of the articles the model actually judged, it accepted 974 and rejected 2,248, about three in ten kept. The other 25,008 never got judged. The calls to the model started failing in August 2025 and failed every time after early October, and the job kept fetching and saving them anyway, marked "processing failed."
So the filter worked, roughly, when it ran. What didn't work was everything around it. Nothing checked whether the sources were alive or the model was answering, and the only person who would have noticed had stopped reading.
What I'd keep
The rule itself: show what happened, leave out what might.
I've taken the site down. The domain isn't set to renew and runs out in July 2027.
ニュースフィードの大半は、まだ起きていないことについてです。誰かが計画している、誓っている、かもしれない、可能性がある、見込まれている。私が欲しかったのはその反対側でした。誰が何を、すでに、確かにしたのか。そこで、それだけを残すニュースリーダーを作り、そのためのドメイン whathappened.dev も買いました。
求めていたもの
一分で読めて、信頼できる短いリスト。憶測も、脅しも、約束も、有名人の埋め草もなし。記事が、誰かが署名した、投票した、逮捕された、報告書を公表した、と言っていれば残す。誰かがこれからする、と言っていれば外す。
どう作ったか
最初のバージョンは2025年7月11日の一日で作ってデプロイしました。Vercel 上の Next.js、Supabase の Postgres データベース、そして6時間ごとに AP、Reuters、BBC の RSS フィードを取ってくるジョブです。
見出しはひとつずつ、短いルールと一緒に言語モデル(OpenAI の GPT-4 Turbo)に渡しました。完了した行動と確認された出来事は受け入れる。計画、憶測、脅し、結論の出ていない捜査、エンターテインメントは外す。受け入れたものは「誰が」「何をした」「何を」「状況」に分解し、クリックさせるために書かれた見出しの代わりに、平易な文の表をページに出せるようにしました。
一週間後にサインイン機能を加え、月2ドルのサブスクリプションを計画し始めました。作業が止まったのはそこです。
その後どうなったか
私が見なくなってからも、定期ジョブは十五か月動き続けました。データベースには28,230件の記事があり、一件残らず BBC のものです。AP と Reuters のフィードのアドレスは使えなくなっていて、それを知らせるものは何もありませんでした。
モデルが実際に判定した記事のうち、受け入れたのは974件、外したのは2,248件で、残ったのは十件に三件ほどです。残りの25,008件は判定されないままでした。モデルの呼び出しは2025年8月に失敗し始め、10月上旬からは毎回失敗していました。それでもジョブは記事を取ってきて保存し続け、「processing failed」と印をつけていました。
つまりフィルター自体は、動いているときはだいたい機能していました。機能しなかったのは、そのまわりのすべてです。情報源が生きているか、モデルが応答しているかを確かめるものは何もなく、気づくはずだったただ一人は、もう読むのをやめていました。
残しておきたいもの
ルールそのもの。起きたことを見せて、起きるかもしれないことは外す。
サイトは閉じました。ドメインは更新しない設定にしてあり、2027年7月に期限が切れます。
Want the next one?
New posts by email, now and then. Nothing else.