Building Plexo: Why I'm Aggregating All My Health Data

My Garmin watch, Eight Sleep mattress, MacroFactor nutrition logs, and Concept2 PM5 rowing data all lived in separate apps that had no idea the others existed. The Garmin knew my resting heart rate was elevated but didn’t know about last night’s four hours of sleep. MacroFactor knew about the caloric deficit but not the brutal VO2max session that morning. Each app had a piece of the picture. None had the whole thing.

Apple Health and Google Health Connect aggregate some data, but they’re storage layers. They collect numbers without helping you understand what those numbers mean together. What I wanted was something that understood the specific frameworks I trust: Matthew Walker’s sleep research, Andy Galpin’s exercise science, Peter Attia’s longevity protocols.

Three layers

Plexo starts with data collection. An Android app reads from Health Connect on a multi-layered sync schedule: alarm-based at 7 AM, hourly checks, and a background fallback. The server side also pulls directly from the Garmin API. Everything funnels into a single backend where sleep, heart rate, HRV, nutrition, activity, and workout data live together.

On top of that sits a pre-computed analytics layer. Rather than dumping raw numbers on a dashboard, the data runs through deterministic analysis pipelines: sleep scores, HRV trend analysis, training load calculations comparing recent effort to long-term averages, and recovery scoring. These aren’t generated by an LLM. They’re straightforward computations that produce consistent, reliable metrics.

The third layer is AI coaching via Telegram. A conversational coach powered by Claude has access to all the pre-computed analytics through tool calls. When I message the bot, it can pull my sleep insights, nutrition data, and training load before responding. The difference from generic health chatbots is the domain expertise built in. The system is grounded in the specific frameworks I mentioned. When it tells me to prioritize sleep consistency over total duration, or that my VO2max should be treated as the most predictive marker of all-cause mortality, those aren’t opinions. They’re specific, research-backed positions from domain experts.

Proactive alerts and memory

The coaching isn’t only reactive. A proactive alert engine with deterministic rules monitors for warning signs: HRV dropping significantly below baseline, consecutive nights of poor sleep, training load spiking, or extended inactivity. When something triggers, the system reaches out through Telegram before I ask.

Every conversation also runs through a memory extractor that pulls out facts: “Kerry is training for a 2K rowing test,” “Kerry tends to undereat on rest days,” “Kerry’s left shoulder has been bothering him.” These get stored and loaded into future conversations, so the coach builds a cumulative understanding over time. Three months in, my Plexo coach knows more about my training patterns, sleep habits, and nutrition tendencies than any human coach I’ve worked with. It never forgets and it sees all the data.

The dashboard

The web dashboard gives a bird’s-eye view: sparkline charts for sleep, heart rate, recovery, nutrition, and training load trends. Insight summaries generated from the pre-computed analytics. Dark theme only, because I usually check it first thing in the morning or late at night.

The data pipeline is the hard part

Building Plexo taught me that the hard part isn’t the AI. It’s the data pipeline. Getting reliable, consistent data from Garmin’s API. Handling the quirks of Health Connect on Android. Normalizing timestamps across devices that all think they know what timezone you’re in. Dealing with missing data when you forget to wear your watch or charge your mattress pad.

The AI coaching is the visible part, but it’s only as good as the data feeding it. Far more time went into the sync infrastructure than into the prompt engineering.

The other lesson is that deterministic beats probabilistic for health metrics. The LLM’s job is to interpret pre-computed calculations in context and communicate them clearly. Not to calculate training load itself. Keeping that separation clean has been important.

Current state

Plexo is Android-only right now, since Health Connect requires it. Garmin is the primary wearable integration. I wrote about the training side of this in how much time you should invest in training.