Features Integrations AI & API Pricing Blog Docs
By Daniel Andrade · · 4 min read

Why I built VitalTrends

On February 17, 2025, I launched a small health dashboard from Lisbon.

I called it My Health Dashboard, because apparently naming is the last thing I should be allowed to do. It connected to WHOOP and Withings, pulled my data into one place, and showed the things I kept trying to compare manually.

Weight next to recovery. Sleep next to strain. Resting heart rate next to the week I actually had, not the week an app assumed I had.

The first version was not ambitious. It was mostly frustration turned into code.

The problem

I had the data already. That was the annoying part.

WHOOP had recovery, strain, sleep, HRV, resting heart rate. Withings had weight and body composition. Apple Health had its own version of everything. Later, Oura and Hevy made the mess worse in the best possible way.

Each app was useful by itself. The problem is that none of them knew what the others knew.

So you do the dumb thing everyone does. Open one app. Screenshot. Open another. Screenshot. Maybe export a CSV. Maybe copy numbers into a spreadsheet for three days before remembering that maintaining a health spreadsheet is its own chronic disease.

I wanted to answer things like: did my weight change because I trained more, slept worse, traveled, or because body composition scales are noisy and I should calm down?

Not a complicated question. Also not a question one app can answer.

Scores are too small for real life

Wearables love scores. WHOOP has Recovery and Strain. Oura has Readiness. Garmin has Body Battery. Apple has rings.

Scores are useful. I am not anti-score. Green, fine. Yellow, maybe adjust. Red, ask why.

The issue starts when the score becomes the story.

A low recovery after a late flight is different from a low recovery after heavy squats. The number can look similar. The cause is not. Single-app dashboards hit a wall here. They see their own signal but not the whole context.

And if two devices disagree, most apps pretend the other one does not exist. That disagreement is often the interesting part.

If Oura thinks I am not ready but WHOOP says I am fine, I do not want a third magic score to average them. I want to know why. Did Oura see body temperature deviation? Did WHOOP weight sleep differently? Was I traveling?

That is a much better question than "which score is correct?"

A person is not a product category

The API docs reveal what each company thinks matters. WHOOP exposes cycles and recovery. Oura exposes readiness and sleep. Apple HealthKit is enormous because it is more of a data store than a coaching product. Withings gives body measurements. Hevy gives structured strength workouts.

All reasonable systems. None of them designed to answer my combined question.

A company building a ring optimizes for the ring. A company building a recovery band optimizes for recovery. A company building a scale optimizes for body composition.

But I might wear WHOOP, lift with Hevy, weigh in on Withings, travel across time zones, and have Apple Health quietly collecting the leftovers. The pattern only appears after the leftovers are no longer leftovers.

The first launch

The first Reddit post did better than I expected. People cared. That was the first surprise.

The second surprise was revenue. The first day brought a couple hundred dollars (so cool!). For a tiny side project with a bad name, that was enough signal to pay attention.

Then the product hit the WHOOP API 10-user limit and I had to stop billing. Annoying, but clarifying. A fake problem would have died there. Instead, the limit proved the pain was real enough for strangers to try the thing before it was polished.

Before that, I was building a dashboard for myself that other people might use. After that, I knew there was a small group of people with the same weird problem: more health data than ever, but no way to answer basic questions about their own bodies.

What I am not building

I am not trying to build an app that tells everyone what to do with fake certainty.

Health data is noisy. Wearables estimate a lot. Sleep stages are not magic. HRV is useful over trends and often stupid as a single-day oracle. Body composition scales can make you feel like you gained muscle because you drank water at the wrong time.

So the product has to stay humble. Show the data. Join the timelines. Point out patterns. Say when confidence is low. Avoid pretending that a dashboard can diagnose anything.

The older I get, the less interested I am in dashboards that act like priests. I want tools that help me notice things, then let me think.

Where it is going

VitalTrends started as a WHOOP + Withings dashboard. Then it became a way to store longer history. Then Apple Health, Oura, Hevy, and the AI/MCP layer made the bigger problem obvious: the value is not in copying each app into one screen. The value is in the relationships between the data.

There are obvious directions. Better recovery explanations. Travel-aware trends. Strength training context. Long-term pattern detection. Maybe a weekly health note that does not sound like it was written by a wellness brand with a ring light.

For now, I am still trying to answer the same question that started it:

What changed, and what probably caused it?

D

Written by

Daniel Andrade