A to-do board where the chores come from everywhere
I built a unified to-do board for our household. The interesting part isn't the board — it's that a typed chore, a paper bill, a photographed school agenda, and a calendar appointment all fold into one ledger, and each keeps writing back to where it came from. Four diagrams and a downloadable PRD.
I built a unified to-do board for our two-person household, and the interesting part isn't the board — it's everything that flows into it. A chore I type on my phone, a bill that arrived as paper mail, a school agenda I photographed in a hallway, a recurring task, an appointment that wants a calendar slot: they all land in one place, and each one keeps writing back to wherever it came from. Here's the architecture in four diagrams — and a full PRD you can download.
One question, four sources
The whole system is one idea borrowed from the money surface: sources feed a spine, and lenses read it. Every real to-do — typed, imported from a calendar, extracted from a photo of mail, or pulled from a money bill — normalises into a single table, todo_items. The board, the list, and the triage queue are just different reads of that one stream, so they can never disagree about what's outstanding.
The trick that makes the mail and money connections cheap: a bill is already a pay-action on a piece of mail, and the money surface's Bills lens is a view of those. So 'connect to mail' and 'connect to money' aren't two ingests — mail is the single upstream, and money is a specialization of it.
What it looks like
The board is live due-buckets — overdue, today, this week, later, recurring — with a collapsed Done column. Cards are colored by category; a bill carries an urgency flag and a deep link into /money/bills; a photographed list shows up as a single card instead of flooding the board with every line; a recurring chore carries its own completion count.
A bill bridges once, and you pay it once
The hard requirement was no double-counting between the to-do board and the money ledger. Because a bill is a mail pay-action, paying it from /todos doesn't just mark it done — it routes through the same payBill the money surface uses, which writes exactly one ledger row and completes the mail action together. The Bills lens excludes already-paid actions, so the same expense can never land twice.
Repeats, lists, and a calendar that answers back
Three more connections round it out:
- Recurrence is a single live card with a cadence — a friendly label or a full RFC 5545 RRULE (
FREQ=WEEKLY;BYDAY=MO,WE,FR). Completing it rolls the due date to the next occurrence and logs the one just finished, so the card carries its own history. - Self-authored lists — a photographed agenda — bridge as one card per list, linking back into
/mailto triage the line-items. - The calendar sync is two-way. Dated todos become events; a scheduled pull walks Google's incremental sync token and reflects edits back — move an event and the due date follows, delete it and the todo archives.
The whole thing, written up
I wrote it up as a proper PRD: the spine schema, the source-ownership and writeback rules, the quality filter that keeps the board from drowning in auto-suggested mail, the category and due glue, recurrence, the calendar loop, and the privacy posture. It's free to download.
Get the next one
An occasional note when something genuinely new ships here — essays, free tools, projects. No schedule, no filler, easy out.
Need something like this built?
I design and ship AI tools, full-stack apps, and data pipelines — end to end, to production. Tell me the problem in a sentence; I'll give you an honest read on fit within a day.
Work with me →


