This one is built. fridge-door is a household app I built for my own household. The dates below come from the repository’s commit history. The repo is private, so there’s no link.
September 30: a board and a passcode
Next.js, Tailwind and Convex. The first version was a board: seven day buttons with chores, meals, to-dos and school items, repeats by week or weekday, and a list of undated things that need doing. A due date pins an item to its day.
The same day it got a passcode. Every query and write needs a device token, only the token’s hash is stored, and logins lock for 15 minutes after 10 wrong tries.
October 1: Kroger, households and Claude
The grocery list learned Kroger. Kroger sign-in through OAuth, a store picker, product search and pushing the list to the cart. The tokens stay in Convex.
Then the passcode went away. Magic-link sign-in replaced it, so any household can sign up. Every row carries a household id, and the database each function sees only holds that household’s rows. Caregivers can’t see the money tables.
Flyer scanning arrived in the same change. Upload a flyer or a PDF, Claude suggests what to add, and nothing lands until a person approves it.
Later that day, a cost check. Every read now records its calls and tokens per household, per day, per model. A compare command reads one waiting scan with three Claude models so the reading model gets picked on real flyers, not a guess.
Deploys run from main through Vercel. A merge pushes the Convex functions and schema, then builds the app against them. Other branches never touch production data.
October 2: every household gets an email address
Forward an email to the household’s address and it arrives through a Resend webhook, signed, and Claude reads it into the same approve-first inbox as the flyers.
- One budget of 20 reads a day covers uploads and emails.
- The same email arriving twice is read once. Each address takes 30 emails an hour at most.
- Gmail’s forwarding confirmation shows up as a link to tap. It never goes to Claude.
October 4: the daily briefing
An hourly scheduled job sends each member a briefing at the hour they pick: what’s on today, what’s overdue, what’s coming. By email, by push notification, or both. Households store a timezone, so 7 AM means their 7 AM. A day with nothing on the board sends nothing. Caregivers’ briefings leave out money.
What carries over to a business
Information arrives in email and paper, and a person retypes it. That’s true in my kitchen, and it’s the pattern I’d use for vendor emails and invoices at a grocery store. The machine reads and drafts. A person approves. Claude reads on a budget, and duplicates get read once.
The finished app is written up on the fridge-door page.