Every health app wants to coach you, but none of them know you. They don’t know your baseline. They don’t know that your blood pressure spikes after certain meals, or that your ketones tank when you’re stressed. They offer generic advice based on population averages and call it personalized.
So I built my own. It runs on my infrastructure, stores everything in a time-series database I control, and uses Claude to understand what I’m eating, estimate the macros, and give me context on every measurement I log. Not generic advice. Insights based on my data.
Why Build This?
For years, my lab results have told the same story: HDL too low, LDL too high, triglycerides elevated. The kind of numbers that make doctors reach for the prescription pad.
A decade ago, I tried keto and saw good results. My labs improved dramatically. But life happened, I fell off, and the numbers crept back. Now I’m trying again, but this time I want data. Real data. Not scattered across six apps, but unified, queryable, and analyzed by something smart enough to spot patterns I’d miss.
How Claude Fits In
This isn’t just a database with a chatbot bolted on. Claude is woven into every interaction.
Meal Tracking Without the Tedium
Traditional calorie tracking is tedious. You either scan barcodes (hope you’re eating packaged food), search through databases (is this “grilled chicken breast” or “chicken breast, grilled, skinless”?), or give up and guess.
I just describe what I ate:
“Breakfast: 3 eggs scrambled with cheese and butter, 4 strips of bacon, coffee with heavy cream”
Claude parses that, estimates the macros (protein, fat, carbs, calories), and records everything to InfluxDB. Then it responds with a summary:
“Logged breakfast: ~640 cal, 48g fat, 42g protein, 2g net carbs. Solid keto-friendly start. You’re at 640/1800 calories for the day.”
No searching. No scanning. Just natural language and an AI that understands food.
Context on Every Measurement
When I log my morning ketones or blood pressure, Claude doesn’t just acknowledge the number. It puts it in context:
“Ketones 2.2, up from your 7-day average of 1.9. You’ve been consistently above 2.0 for three days now. Whatever you’re doing is working.”
Or:
“Blood pressure 128/82. That’s higher than your recent trend. Yesterday was 118/76. Anything different today?”
The feedback is immediate. When I can see that my ketones dropped after a particular meal, I think twice about eating it again. That’s the behavior change that apps promising “insights” never delivered.
Ask Questions, Get Answers
Claude has access to query the database directly. So I can ask:
“How’s my blood pressure trending this month?”
“What did I eat last time my ketones dropped below 0.5?”
“Show me my average daily carbs for the past week.”
It pulls the data, analyzes it, and responds in plain English. No dashboards to click through. No exports to spreadsheets. Just a conversation with something that has my complete health history.
The Rest of the Stack
Claude handles the intelligence. Here’s what handles the plumbing:
Matrix for Input
I use Element as my daily chat client anyway. Rather than building a separate app, I set up a bot that accepts health data via natural conversation. Quick, frictionless, always accessible.
n8n for Routing
n8n is a self-hosted workflow automation tool. Think Zapier, but on your own infrastructure. It receives messages from Matrix, routes them to Claude for processing, and handles the database writes. It also manages weekly summaries and could easily add anomaly alerts.
InfluxDB for Storage
All metrics land in InfluxDB, a time-series database. Perfect for health data: everything has a timestamp, queries are usually by time range, and calculating rolling averages is trivial.
Grafana for Visualization
When I want the big picture (trends over weeks or months, overlaid metrics, drill-downs into specific periods), Grafana turns the raw data into dashboards. The 7-day moving averages smooth out daily noise and make real trends visible.
What I’m Tracking
- Meals: Natural language descriptions, AI-estimated macros, stored for correlation
- Blood ketones: Morning measurements to verify I’m staying in ketosis
- Blood pressure and pulse: Watching for improvements as weight drops
- Weight: Weekly, to track trends without daily obsession
- Lab work: Periodic lipid panels via OwnYourLabs, which lets you order tests without a doctor’s visit
Why Not Just Use Apps?
The health app graveyard is full of services that customers depended on until the plug got pulled. Jawbone went bankrupt and bricked thousands of fitness trackers. Pebble got acquired and shut down. Google keeps retreating from health features. Every one of these left users with devices that no longer served their purpose and data they couldn’t easily export.
Even when the apps survive, they’re silos. You’ve got one app for meal tracking, another for weight, a third for workouts, and none of them talk to each other. Want to correlate your food intake with your lab results? Most health apps don’t even have a place to store lab data. You end up juggling multiple services, manually cross-referencing, and hoping none of them get acquired or discontinued.
With my setup, everything flows into one database I control. If a tool stops working, I replace it. The data stays.
On Data and Privacy
Health data is personal. I want it consolidated, not scattered across a dozen app companies with a dozen privacy policies.
With this architecture, the data lives on my servers. Claude processes it during conversations, but Anthropic’s API doesn’t retain prompts or use them for training. That’s a meaningful difference from apps that permanently store your data and mine it for their own purposes.
For those who want complete sovereignty, the architecture works with local LLMs too. I wrote about running Claude Code with local models via vLLM. The same infrastructure powers this system, and swapping to a fully self-hosted model should be a simple configuration change.
Early Results
It’s been a few weeks, and having an AI that actually knows my history changes behavior more than any notification ever did. It can connect today’s meal to tomorrow’s ketone reading. The feedback is immediate, personal, and relevant.
If you’re interested in running Claude on your own infrastructure, I wrote about setting up Claude Code with local LLMs via vLLM.