◇ CM ~/builds/concorde
← BUILDS
§B03 CASE STUDY 2026.02
LIVE · DEPLOYED

Concorde

The Cloudflare Worker that runs my household's reminders — birthdays, anniversaries, and advance gift nudges — straight from Notion to Discord.

Cloudflare WorkersNotion APIDiscord WebhooksCron Triggers
$ cat concorde.spec
DATE
February 15, 2026
STATUS
LIVE · DEPLOYED
TAGS
cloudflare · workers · notion · discord · automation

What it is

Concorde is the automation brain of my home setup. Once a day it reads a Notion “People” database and posts two kinds of message to Discord: day-of celebrations to a family channel, and advance gift reminders — fourteen and seven days out — to a private reminders channel. The data lives in Notion where it’s easy to edit; Concorde just makes sure nothing slips.

Why I built it

I was tired of the failure mode where you remember a birthday the day after. I wanted one source of truth I’d actually keep updated, and a system that nudged me before the date with enough lead time to do something about it — then never needed touching again. Set-and-forget, or it doesn’t count.

How it works

A Cloudflare Worker on a daily cron trigger. It pulls everyone from the Notion database, figures out who has an event today (and who has one coming up at each lead interval), formats the messages, and posts them through Discord webhooks. There’s a manual test route guarded by a shared secret so I can fire a run on demand without waiting for the cron.

The one genuinely tricky part is “today.” A cron fires in UTC, but my events are in Eastern time — so naïve date math posts a birthday on the wrong day near midnight. Concorde derives the local date from Intl.DateTimeFormat parts instead of raw UTC, so “today” is always Athens’s today.

What I learned

Two things. First, timezones will silently embarrass you: the bug isn’t loud, it just fires a day early or late and you don’t notice until someone does. Second, the value of a set-and-forget system is entirely in the boring reliability — graceful handling of an empty day, a missing field, a webhook hiccup — not in the feature list.

What’s next

Concorde is stage one of a larger household automation system. The birthday engine proved the pattern — Notion as the source of truth, Workers as the scheduler, Discord as the surface — and the next stages build on the same spine.