Wellbeing: what my body tells Station

Wellbeing: what my body tells Station

● As at 5 September 2026, AEST

I built Station to hold the things I’d otherwise forget. For a long time the one category it held nothing about was me — which is odd, because that’s the category I forget most.

My health numbers lived in five places that had never met: a watch, a medication app, a water tracker running in the house, a new set of bathroom scales, and years of history in a fitness app I’d stopped opening. None of it was in Station, so none of it could sit next to anything Station already knew — a week of meetings, a run of late nights, the evening I wrote down that I felt wrecked.

On 7 August 2026 I started putting it in. This page is what came out, and — more interesting to me — the long list of things it deliberately refuses to work out.

← Back to the Station overview.

Prefer to watch? Here it is in 82 seconds, narrated, with captions.

A narrated walkthrough of Wellbeing — 82 seconds, in my own cloned voice, with captions.
🫀 Why a second brain got into this

Five apps that had never met

Steps and sleep were on the watch. Medications were in an app that is a walled garden — no export worth having, so the entire list had to be typed in again by hand, which tells you something about how much these apps want you to leave. Water was being counted by the house. The scales were three weeks old. The fitness history was years deep and going nowhere.

Each of them was perfectly happy on its own. None of them could answer the only question I actually had, which is whether any of this lines up with anything else in my life.

The part I don’t say out loud very often

There’s a second reason, and it isn’t technical. Every one of those apps compared me to an average that isn’t mine. My normal is not the population’s normal, and being quietly marked down against someone else’s every single morning is not motivating — it’s just a small daily helping of guilt. That’s most of why the data had scattered in the first place: I stopped opening the things that told me off.

So the rule I wrote first, before any of the code, was: the only thing a number is ever compared against is my own history. That sentence is still printed at the top of the page.

It’s called Wellbeing, not Health, on purpose. "Health" in my house already means whether the servers are alive — and a second brain whose whole job is helping me find things again should not have two of anything.

The top of Station's Wellbeing page: a heading, a one-line description saying it is not a diet app and that the only thing a number is compared against is your own history, and below it a card headed "Outside" giving last night's sunset, tomorrow's first light and how much daylight there was.
The top of Station’s Wellbeing page: a heading, a one-line description saying it is not a diet app and that the only thing a number is compared against is your own history, and below it a card headed “Outside” giving last night’s sunset, tomorrow’s first light and how much daylight there was.

And, yes, forgetting

Three separate pieces of this exist because I forgot something.

I forgot a dose, because the reminder had been arriving on Saturdays for something I don’t take on Saturdays — and a notification that is wrong twice a week is one you stop reading, so the one that mattered went the way of the rest. I forgot another dose because the reminder arrived while I was doing something else, got swiped away in about three seconds, and that was that. And I kept meaning to write down what I’d eaten and then not doing it until hours later.

Every one of those turned into a design rule further down this page.

📥 What it tracks, and how it gets there

The whole thing is one page with six parts, which is deliberate — a dimension of my life should not need a menu.

The Wellbeing page with every part folded shut, so only the six headings show: metrics, weight, rhythms, medications, conditions and constraints, and events — each with a count of how many records it holds and how far back it looks.
The Wellbeing page with every part folded shut, so only the six headings show: metrics, weight, rhythms, medications, conditions and constraints, and events — each with a count of how many records it holds and how far back it looks.

Nothing here is typed in twice

The watch numbers — steps, sleep hours, exercise, resting heart rate — arrive from my phone every hour, and it backfilled a year of history when I first connected it. Water comes from the house. Weight comes from the scales over Bluetooth. Medications are the one exception, and are hand-kept, for the walled-garden reason above.

Then there’s the category I like best, because it cost nothing: rhythms the house already knew about. My home automation had years of sensor history sitting in it — when I was out, when I was at the desk, sitting or standing, on the couch, gaming. No new hardware and no clever model was needed to turn that into "how long was I away from home this week". A session is just an interval, and a week is arithmetic over intervals.

That mining had to be taught what a real thing looks like, which is most of the work. A movement sensor in the study flipped 96 times in 48 hours, so short gaps get merged. An eight-second "trip out of the house" was recorded on 6 August 2026, so a trip now has a floor of fifteen minutes. A naive reading of couch time said 4 hours 22 across two evenings; the corrected one said 2 hours 27, and the corrected one is right.

Meals, in words, and after the fact

I wanted to log a meal by writing what it was — "leftover pasta, and I finished the kids’ chips" — rather than searching a database of branded products for something that isn’t in it. A photo is optional, not required. And because I never remember in the moment, it can be logged up to two weeks late, with "yesterday" and "earlier today" as one tap.

I give the meal a score out of five. Station gives its own, separately, and — this is the bit that matters — it doesn’t get to see mine first. Mine is the record; its is a second opinion. The interesting artefact isn’t either number, it’s the gap between them.

The form for logging a meal in words: a text box asking what you ate, a note that words are enough on their own and a photo is optional, a choice of meal or snack, a "when" list offering times up to a fortnight back, and a line explaining that you score the meal yourself and Station forms its own read separately so its number cannot colour yours.
The form for logging a meal in words: a text box asking what you ate, a note that words are enough on their own and a photo is optional, a choice of meal or snack, a “when” list offering times up to a fortnight back, and a line explaining that you score the meal yourself and Station forms its own read separately so its number cannot colour yours.

Where each number came from, on the face of it

Every tile says where its number came from and how fresh it is: from the phone, from the house, mined out of history, or typed by me. Underneath that is a strip listing each source, how often it’s meant to arrive, and when its job last actually succeeded — because a schedule tells you when something was meant to run, which is not evidence that it did.

🚫 What it refuses to work out

This is the longest section on the page, and it’s the one I’d keep if I had to delete the rest. Almost every rule here exists because the software got it wrong once, in a way that looked completely fine.

An unlogged week is unknown, not zero

On a fresh install, every earlier week was empty, every empty week totalled zero, and the page announced — with total confidence — "your usual is 0.0 over the last few weeks." A baseline derived from no data at all. 8 August 2026.

A week where I logged my meals and none of them were junk is a real zero and counts. A week where I simply didn’t use the feature is not evidence about my eating. Those are different facts and they’re now stored differently.

The same distinction runs all the way down. When the house’s water counter answers and hasn’t moved, that’s a measured zero. When nothing usable comes back at all, the answer is unknown — because a guessed zero is indistinguishable from a measured one, and once you can’t tell them apart you can never trust either.

A day’s water is the highest it ever reached

The tap counter resets at midnight, so a day’s total is the high-water mark it hit, not whatever it happened to read at the moment Station looked. Reading it the obvious way got 3 of 8 days wrong — and every single error was flattering, which is exactly the direction a bug in a health app must never be allowed to go. Fixed 10 August 2026.

It will not invent a number no device ever produced

The scales broadcast weight and an electrical impedance. They do not broadcast a body-fat percentage, so Station doesn’t show one. Working it out from a formula would be inventing a measurement that nothing ever measured.

The same rule retired a few numbers I was already being shown elsewhere. A proprietary "sleep score", graded against a population that isn’t me, is hidden; the hours stay. The verdict goes, the measurement stays.

A baseline from three readings is noise wearing a number’s clothes

Your own typical is the middle of your own last 28 days, and it needs at least seven readings. Below that the tile shows nothing at all, because a confidently wrong baseline is worse than none.

It refuses rather than rounding

The formula for wind chill is only valid below 10 °C and above about 5 km/h. Outside that range it returns nonsense — numbers warmer than the actual air. So outside that range Station says nothing, rather than clamping the answer to something plausible. A clamped number is a lie with a plausible shape.

It won’t put words in my mouth

Two labels got deleted for claiming knowledge the system doesn’t have. One said "12 min walk up" — up to where? It knows no destination. The other had decided a walk must involve the dog. It had no way of knowing who, or what, came along. A system that fills in the details of my walk for me is putting words in my mouth, and it went.

It asks instead of guessing

When Station scores a photo of a meal, the details it can’t see change the answer. A breakfast where it guessed the bread and the juice scored 2, then 3. With the actual facts stated, it scored 4 — the same score I’d given it. The entire disagreement had been an artefact of a guess, and a gap manufactured by a wrong guess is the feature generating noise and calling it insight. So now it asks the question instead. And if no model can see the photo at all, the meal gets no score rather than one made up from the caption.

No targets, no streaks, no grades

There is no recommended range anywhere in here, and nothing turns red. The medication figure is a count of what happened, not an adherence score, because a streak is a grade. Weight is shown as a seven-day average over six months; a rise is drawn exactly the same way as a fall, with only the little arrow differing, and the long-term number is never put on the screen — a "so many kilos to go" isn’t hidden, it’s never calculated at all. The gentleness is structural rather than tonal: there isn’t a single comforting adjective on the page.

There’s exactly one meter that fills up, for water, and it’s labelled against my own typical — because a bar that fills reads as a target no matter what the label next to it says.

There’s even a list of words the code won’t let through: should, earn, burn off, cheat, willpower. Not softened — dropped, because rewording a judgement leaves a judgement behind, and because a rule written into the prompt drifts while a rule written into the tests does not.

🌇 One nudge a day

An opportunity, never an accusation

The first thing in here that actually helps me decide something rather than recording what already happened shipped on 8 August 2026: getting outside. Late afternoon, if there’s a good window before sunset, my phone gets one line — sunset time, what it’ll feel like, when to leave, and what to take.

It is an opportunity notice, never an absence one. It never says "you haven’t been outside today". It never uses the word "should".

It stays quiet when the window has already gone, when it’s more than 45 minutes away, when it’s raining, when it’s outside the temperatures I said I’m happy in, before 7am, when I’m not home, or when something I’ve registered as a current physical limitation makes the suggestion a bad one. In that last case it disappears rather than softening itself, because a gently-worded suggestion is still a suggestion.

One a day. At most. That’s proved rather than hoped: the test runs a simulated day 144 times, ten minutes apart, and asserts exactly one message goes out. The function that decides also has to say why not when it stays quiet, because "why not" is the only way to tell a working quiet day from a broken one when you read the logs a month later.

The thing it can’t honestly say

Station cannot tell whether I actually went outside, and it doesn’t pretend to. The "home" zone is a circle 30 metres across, so on 8 August 2026 one real walk was recorded as two separate excursions with a five-minute gap that never happened — and a walk on the path behind the house may never leave the circle at all. Until that’s honest, the feature offers opportunities and stays silent about attendance.

From 13 August 2026 that same advice also appears on a wall panel in the house. What it deliberately does not put there is where I am, or any physical limitation I’ve recorded — those show up on my page, for me. A kitchen screen has a different audience, and putting them there is a disclosure nobody agreed to.

💊 The reminder that doesn’t give up

Name and dose, nothing else

A medication reminder says what to take and how much. It does not say "you’re late", it does not keep a streak, and it does not score me. If the dose is already logged, the reminder simply doesn’t arrive.

The empty form for adding a medication, headed "hand-kept — no import exists": blank boxes for name, dose, purpose, start date, notes and stock left, then a schedule row with a time field and seven day-of-the-week toggles, above a note explaining that a day a dose does not run only silences the reminder.
The empty form for adding a medication, headed “hand-kept — no import exists”: blank boxes for name, dose, purpose, start date, notes and stock left, then a schedule row with a time field and seven day-of-the-week toggles, above a note explaining that a day a dose does not run only silences the reminder.

It learned the days of the week

22 August 2026. I missed a dose, and the reason was embarrassing: the reminder had been arriving every day including Saturdays, for something I don’t take on Saturdays. Two wrong notifications a week is enough to teach you to ignore all of them. Now a schedule is written the way a person says it — 07:00 weekdays, 20:00, 12:00 mon/wed/fri — and the reminder only turns up on the days it’s true.

It follows the phone, not the house

23 August 2026. Reminders now keep the time on my phone, so a tablet due at 8pm is due at 8pm wherever I’ve flown to. If the phone goes quiet for 48 hours the house’s clock takes over again.

It repeats until the dose is answered

Also 23 August 2026, from the other missed dose. The distinction I landed on is this: a calendar nudge you dismiss is information you have received; a medication reminder you dismiss without taking the dose is a decision you never made.

So it repeats. A quiet notification at the due time, then every fifteen minutes, and every second one is a full-screen alarm — every second, not every one, because a phone that rings every quarter hour is a phone you turn off, and a reminder you’ve turned off is worse than one you dismissed.

It stops on two things, and both are decisions rather than accidents: logging the dose as taken or as skipped — skipped counts, it’s an answer — or that dose’s own midnight. "Never gives up" must not mean a seven-o’clock tablet ringing the house at three in the morning.

This is the only thing in Station allowed to break the one-nudge-a-day rule, and it took a written argument to earn the exemption.

🔒 Where this data goes

Short version: it stays here. Longer version, because the short version has exactly one exception and I’d rather tell you than have you find it.

  • No AI reads my health numbers. Not to summarise them, not to search them, not to "understand" them. They are numbers in a database on a machine in my house, and every rhythm and every baseline on this page is arithmetic. That’s deliberate: a wrong answer from arithmetic is a bug somebody can fix, and a wrong answer from a model is an opinion you can’t argue with.
  • Notifications never leave the network. The reminders reach my phone and my watch over my own network, with no cloud messaging service in the middle.
  • The exception, stated plainly: a photo of a meal does leave. When I choose to photograph what I’m eating, that photo goes to a model that can describe it. I decided food was worth that trade. The line was drawn around food on purpose and is not extended to anything more medical.
  • Nothing here is about anyone else. This is one person’s data. No one else in this house appears in it, on this page, or in any screenshot on it — and that isn’t a policy I intend to revisit.

The screenshots on this page were taken from a copy rather than the live page, and they were chosen to show the shape of the thing — an empty form, a piece of advice about the weather, the list of parts — rather than its contents. My medications, my weight, my sleep and my conditions are not on this page and won’t be.

🚧 What this isn’t

It isn’t a diet app, and it says so in its own subtitle. There is no calorie count, no daily budget, no deficit, no goal weight and no bar that fills up to congratulate me.

It isn’t medical advice, it isn’t a diagnosis, and it isn’t a product. It’s one person’s software, running on hardware in his own house, built because scattered data was making a real problem worse.

It isn’t finished. As at 3 September 2026 the data collection and the reminders are done; the rhythm mining, the day-so-far view and the corrections work are all still in progress, and the genuinely clever part — anything that looks at all of this together and tells me something I didn’t know — hasn’t been built at all. It’s the last item on the list, not the first, which is the opposite of how I’d have planned it a year ago.


More in this series: The homelab Station watches over → and Station builds itself →.

(A note on names, since two things here are called "health": the servers in this house have a health page of their own, and that one lives on the homelab page. This page is only ever about a person.)