I take sleep and fitness more seriously than most people consider normal. I play badminton for six to seven hours and strength train for another four to five hours every week. I also get eight hours of sleep every night.
WHOOP has therefore been one of my best health investments. It helped me fix my sleep discipline and consistency, which had become a mess because of cross-time-zone meetings. Its daily recovery score also helps me figure out whether to push hard or take it easy.
But it’s not perfect. WHOOP doesn’t know what I eat, what is on my calendar or what I am training towards. I had to triangulate all of this across multiple apps, and it wasn’t always practical. So I figured it would be fun to fix this.
You are probably thinking, “Oh god, here comes another health assistant.” And… you would be right.
My health assistant, Anira, runs on a server and is reachable through Telegram. It brings together data and context that were previously fragmented across different places. It periodically pulls my WHOOP data and my daily calories and macros from CalWise (Android and iOS), another personal project of mine, and writes them to a lightweight database. It can read my calendar, while my longer-term health context, including lab reports, scans and body composition, persists on the server. This way, Anira is just another chat on my phone, always on and reachable from anywhere. And when there’s anything actionable, it pings me.
Context is everything in the world of AI. You can throw all the shiny new models at a problem, but they just won’t work if the context and plumbing are not fixed first. In this setup, my health context is durable, portable and updates itself automatically. That allows the underlying models to be useful without waiting for me to ask. A couple of nudges I particularly liked:
“You trained hard this morning and you are well short of your carb target. This is a three-day trend. Consider having a carb-heavy meal this evening, and take a 15-minute walk to help blunt the glucose spike.”
“You have an early trip to Chennai tomorrow. Given your declining recovery, don’t try to squeeze in badminton. Skip it and catch up on sleep.”
Because the data and logic live on my server, the system can also keep evolving. I can move from WHOOP to Oura or another wearable, swap the underlying model, add a new source such as CGM data, or write a new rule without losing the context accumulated so far. Of course, a setup holding this much personal data needs tight security. I have treated that as a non-negotiable part of the build (thank you, Fable). Read the detailed technical write-up on GitHub →
It is super cool that building software no longer needs to make sense for a market. It only needs to make enough sense for me. What a world we live in!