A derived score never pretends to be a measurement.
The raw signal, read honestly
From samples to verdicts
Recovery, strain and sleep are worked out here, against your own baseline.
Decisions
- Decision 1
Three questions for every series
I ask every decoded series: does it read back against the app, fit the day and stay possible?
- Decision 2
Three bands, shown quietly
Each reading gets a small mark: confirmed, likely or unknown. Unknown stays out of the figures.
Considered Showing every decoded series the same way
- Decision 3
Archive raw, decode later
I store every raw message before decoding, so a fixed decoder can re-run over history.
How it was made
I designed and built it with AI. The band speaks an undocumented protocol, so I read it off the wire, then checked every series before drawing anything.
- 1
Decoded
I captured the band's Bluetooth messages from its own app's traffic, then decoded them.
- 2
Designed
Bento tiles, one bold colour per metric, and a quiet provenance mark on every number.
- 3
Built with AI
I built the iPhone app, server and dashboard with Claude Code.
Made with: Swift iPhone app over Bluetooth LE, a Python server with SQLite, and a React dashboard behind a Cloudflare Worker.