Celebrity Death Bot: curation beats detection
Bruce Hart
I built Celebrity Death Bot because the hard part isn’t finding deaths, it’s deciding which ones are actually worth a ping.
My family has a slightly morbid tradition: when a notable celebrity dies, we text each other. Wikipedia has the raw data, but it’s noisy and constant. I wanted the updates without turning into a full-time obituary refresh person, so I built a bot to do the boring part.
It’s open source, it runs continuously, and it uses an LLM as the bouncer.
The real problem is curation, not detection
Wikipedia’s “recent deaths” list is a firehose. The bot can detect a new entry in seconds, but that is not the hard part.
The hard part is deciding: is this actually notable enough to notify humans? I care about relevance and impact, not just fame in one niche corner of the internet.
So the bot doesn’t just scrape. It asks a model to answer a very human question: is this person widely known outside a narrow community, would a reasonable person recognize the name, and is this worth a small interruption?
It’s not perfect, but it’s a lot better than a raw feed.
The prompt is where the taste lives
The LLM prompt is explicit about what “notable” means for me. It’s tuned to my family’s preferences, so the model is weighing things like mainstream recognition, impact outside a niche, and whether a name would land with people who aren’t online all day.
That’s the nice part: you could swap the prompt and get a totally different bot. A sports fan version, a local-news version, a music nerd version. Same pipeline, different audience.
It’s a Cloudflare Worker with a cron brain
Celebrity Death Bot runs as a Cloudflare Worker with a scheduled cron trigger every 15 minutes. Each run fetches https://en.wikipedia.org/wiki/Deaths_in_
There’s also a manual POST /run endpoint protected by a secret. I use it for one-off reruns, or to force reprocessing specific IDs or Wikipedia paths if the model missed something.
D1 is the memory and the deduper
Every parsed entry goes into a D1 table with wiki_path as a unique key. That’s the whole dedupe strategy: if it’s already in the DB, it’s ignored. I also keep subscriber state in D1 so I can manage Telegram chats without any extra infra.
The LLM runs via Replicate and calls back
New rows get batched and sent to Replicate for evaluation. I use openai/gpt-5-mini because it does a good job and is amazingly cost effective, under one cent per evaluation batch. The worker exposes POST /replicate/callback and can verify HMAC signatures so spoofed callbacks don’t slip in.
The callback writes the model’s decision back to D1 and moves it along the pipeline. If Replicate is down or I want to override a call, I can requeue pending items or force a “must include” via /run.
Notifications go out over Telegram and X
Telegram is the main channel. The bot runs as a webhook at /telegram/webhook, and users can subscribe via /start or /subscribe. It formats the output, strips unsafe HTML, and ships it.
X is optional. If OAuth is configured, the worker posts approved alerts to @CelebDeathBot, truncating to fit 280 chars and appending the Wikipedia link.
The LLM is an editor, not a reporter
I don’t use the model to invent facts or summarize biographies. It only acts as a filter.
That distinction matters. It keeps the system honest and reduces hallucination risk. The model’s job is to rank, not to write.
The tradeoffs are real: if I lower the bar, I get more updates but more false positives; if I raise it, I miss smaller but meaningful deaths; and if I rely on the model too much, it becomes a subjective gatekeeper.
So I tune it like a spam filter: bias toward the side of “only send what a human would thank you for.”
It’s a weird project, but it makes me happy
This is one of those side projects that’s half practical, half deeply personal. It automates a family ritual, and it scratches a very specific automation itch.
If you want to peek under the hood or fork it for your own uses, the links are here: GitHub at https://github.com/brucehart/celebrity-death-bot, the site at https://celebritydeathbot.com, and X at https://x.com/celebdeathbot.
If you build something similar, or you have ideas for making this gentler or smarter, I’d love to hear them. I’m still figuring out the right balance.