A Voting Assistant, a Coach, and a Newsletter That Stopped Lying About Links
- Projects
- 7
- Commits
- 146
- Lines
- +46k / −10k
- Files
- 203
- Claude time
- 17h
- Tokens
- 14.6M
Commits by day
Where the work went
LuckyCoin100%
This was a week almost entirely on the studio's own web hub — the private /studio instruments that live behind a login rather than in any app store. The bulk of it built out a ballot decision tool for the fall elections, a training-and-diet coach, and a set of self-tracking dashboards. The user-facing shipping happened on LuckyCoin's newsletter and win-back email. So: a lot of tools for an audience of one, and a bit of actual outreach for everyone else.
The ballot tool learned to have opinions and grade them
The biggest single thread was a personal election-research tool that briefs each race on your ballot and then holds itself accountable. It now treats write-ins as first-class citizens — tracking their campaigns, votes, and the specific strategy for getting one counted (there's copy distinguishing an empty-line floor from a disputed printed-line bar, which is the kind of detail you only write after reading the rules twice). Each office gets a brief explaining what the job actually does, each race gets "deciding questions" to separate the candidates, and the race card was rebuilt as a side-by-side comparison matrix instead of a stack of prose that kept accreting.
The part that makes it more than a glorified voter guide: it registers win probabilities per race and scores itself with a Brier score once results come in. There's an adversarial verify pass, an election close-out and calibration step, and a certified-results path — with a dry run proven against September 2. It's wired to real dates too, via a launchd schedule pointed at August 28, September 2, September 5, and November 4, so the thing wakes itself up when the calendar says it matters. Somewhere in there fifteen code-review findings got applied in one pass and another six in another, which is roughly the tax you pay for building a tool that makes falsifiable predictions.
A coach that reviews what you actually did
The health side grew a coaching layer. It now does a set-by-set session review — prescribed versus performed — plus a progression engine, a prediction lab, and a program-proposal engine that learns your meal-slot shares. There's a "coach's note" rendered as a paper artifact, population context (where a given man sits among others his age), and a staleness nudge for the Strong app after automation there was verified to be impossible, so a polite reminder it is. A couple of the fixes are the unglamorous kind that save you from data loss: CSV imports now merge with stored history instead of overwriting it, and a refresh job re-materializes iCloud files that got evicted before it reads them.
Dashboards, radars, and a fetcher that was eating its own history
The cognition and "brain" pages turned into instrument panels for a self-iteration experiment — a real event calendar (swapped to FullCalendar), node-and-edge diagrams of the mechanics, and a stats page with radar charts, SEM rings, and comparator norms, tucked behind a double wall. Two privacy and correctness fixes stand out: private activity data is now read at runtime instead of committed to the repo, and three feed fetchers were caught destroying irreplaceable history on fetch and told to stop.
LuckyCoin: the newsletter and the win-back run
The shipping-to-users work landed on LuckyCoin's email. The newsletter now leads with our own sections ahead of the hobby news, and two links that pointed somewhere other than where they claimed were corrected. The win-back campaign got real: it drops the artificial deadline, paces the re-engagement send like an actual send rather than a firehose, makes its case with real numbers, and starts measuring the batch. List hygiene stopped removing people outright and started counting more than the open pixel. The admin dashboard picked up matching plumbing — separate win-back batch reporting, windowed headline rates that exclude untracked editions, and a "Needs you" strip so it's clear what's waiting on a human.
Mostly a week of building gauges to read our own dials — with LuckyCoin's inbox work as the reminder that some of us do still have users.

