Every health app wants to coach you, but none of them know you. They do not know your baseline. They do not know that your blood pressure spikes after certain meals, or that your ketones tank when you are 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 am 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 am 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 would miss.
How Claude Fits In#
This is not 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 are 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 are 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 does not just acknowledge the number. It puts it in context:
“Ketones 2.2, up from your 7-day average of 1.9. You have been consistently above 2.0 for three days now. Whatever you are doing is working.”
Or:
“Blood pressure 128/82. That is 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 is 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 is 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 is 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 am Tracking#
- Meals: Natural language descriptions, AI-estimated macros, stored for correlation
- Blood ketones: Morning measurements to verify I am 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 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 could not easily export.
Even when the apps survive, they are silos. You have 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 do not 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 API does not retain prompts or use them for training. That is 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 has 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 meal to tomorrow ketone reading. The feedback is immediate, personal, and relevant.
If you are interested in running Claude on your own infrastructure, I wrote about setting up Claude Code with local LLMs via vLLM.