Stuck at Home LLC logo
← All posts
5 min read

Instrumenting the Newsletter, and a Health Dashboard That Won't Lie to Me

luckycoinstuckathome-web-healthnewsletterpaywall
Projects
4
Commits
49
Lines
+16k / −1.7k
Files
98
Claude time
28h
Tokens
34M

Commits by day

MTWTFSS

Where the work went

  • LuckyCoin100%

Two threads ran through the week. One was making the LuckyCoin newsletter measurable end to end — every click routed through our own tracker so we actually know what's happening. The other was a large, slightly obsessive build: a personal health dashboard on the studio site that refuses to make claims it can't back up. Between them there's a quieter story about measuring before optimizing, which showed up in the paywall work too.

The newsletter grew a nervous system

Until this week the newsletter went out and then… who knows. Now every outbound link routes through our own signed redirect, so we track clicks ourselves rather than trusting whatever a third party feels like reporting. That's the plumbing on both ends: LuckyCoin-Android now signs editions as Matthew, routes links through the click tracker, and logs the click payload's meta field to settle attribution once and for all.

With the data flowing, the admin side got something to show for it. The newsletter admin now charts list growth by where subscribers came from, breaks open and click rates down by reader segment, and shows live progress while a send is actually running — instead of hitting send and staring at a spinner wondering if it's alive. The send ceiling got lifted at the same time, so bigger runs don't hit an artificial wall.

There was also a batch of small copy fixes that matter more than they sound: the newsletter now names the specific coin in trending sections rather than just the series it belongs to, and gives every section somewhere to click. A newsletter you can't click through is just a nicely formatted dead end.

One unrelated but overdue Android fix landed in the same stretch: collection values had been showing $0 for every user. That's fixed now. Also the send report now says what a warning actually costs, instead of flagging something and leaving you to guess whether it matters.

Measure before you optimize — the paywall experiment

The LuckyCoin paywall work this week was deliberately unglamorous. Before touching anything, we closed four findings from a paywall audit whose entire point was to measure correctly first. We wrote down every premium-sheet trigger and what the tests actually guarantee in a PAYWALL_RULES.md, so the behavior is documented rather than folklore.

Only then did the experiment go in: an inverted paywall behind Remote Config (wall_mode), which lets us try a different wall arrangement without shipping a new build to find out if it's a mistake. The coin-distribution sampler over on the studio hub feeds this — it's the required input for setting the paywall's cap, so that's a number we now derive instead of guess.

A health dashboard that has to prove its claims

The biggest chunk of the week, by a wide margin, was a personal health dashboard living at /studio/health. This is a for-me tool, not a product, but it turned into a real engineering exercise because the whole design goal was: never claim something happened without evidence for it.

That principle shows up everywhere in the commits. The parser had to be reconciled with Helm's real v2 export contract rather than what I assumed it exported. It now takes an inventory of Apple Health data — what's actually logged and which app wrote each metric — because knowing the provenance of a number is half of trusting it. There's a separate scale-CSV path for the body-composition metrics HealthKit simply can't hold, and it'll accept CSV drops straight over iCloud Drive, plus a manual weigh-in logger and a backfill of real body history from the Health Auto Export archive.

The rule I kept enforcing on myself: the dashboard must never claim a training day was missed without evidence, and never report a workout that's clearly garbage. Forgotten-timer workouts get quarantined; it learned to detect kg-vs-lb exports, the current training era, and ramp-back lifts so it doesn't misread a comeback as a collapse. A couple of fixes were me being wrong out loud — the volume finding was miscounting fractional set credits, and a unit test for empty bars turned out to be wrong because Smith machines break the assumption behind it. One review pass closed seven findings, two of which were silent data loss, which is exactly the kind of bug this project exists to not tolerate.

On top of the data floor sits the interpretation layer: per-lift progress profiles, two-axis volume logic, per-muscle volume accounting, a Monday weigh-in ritual, concurrent-training evidence with a same-day audit, and a forward plan describing the trajectory to stay inside. There's also an interactive diet simulator — the "croissant question," i.e. what one change does to the numbers — sitting right on the page. The v2 visual pass borrowed Helm's visual language and put a central body-composition chart front and center. This week it grew a whole coached layer on top: program, phase roadmap, ledger, and diet design, each with its own anchor so I can link straight to a section.

The stuff that watches the studio

The same web repo also carries the studio's own instrumentation, and that got attention too. There's now a publish-debt ledger — a tracked list of things built but not yet released, aged automatically, with a weekly nag — surfaced as a card on the dashboard. Calling it "the membrane, on the wall" is my way of admitting the gap between built and shipped is real and worth staring at. A portfolio-shape command does quantitative cross-app analysis across the whole catalog, and a timelog fix stopped historical coding-time from decaying by merging against a monotonic baseline, so past hours stop quietly shrinking.

A recurring theme, then: this was a week about instruments. Knowing what the newsletter does, knowing the paywall's real numbers before changing them, and building a health tool whose defining feature is that it won't tell me a comfortable lie. The publish-debt ledger points the same direction — pick something off it and ship it.