Contact

Computing a personal HRV baseline that a coach can act on

Engraved anatomical plate showing a human heart from several angles, whole and in section.
Anatomical study of the heart, Pieter van Gunst, 1685. Rijksmuseum, public domain.

Heart-rate variability is the measurement people most want to build on and the one that punishes a careless pipeline. On CardioMood we built the analytics that turn a continuous stream of beat-to-beat intervals into a personal baseline and, when the baseline moves, an alert a coach can act on. Most of the work is in deciding what to leave out.

Why population norms fail

HRV differs enormously between healthy people. A night-time value that is unremarkable for one person in their thirties would be a steep drop for another of the same age, and the spread widens with age, fitness and genetics. A chart that colours a value green or red against a population range will be wrong for a large share of users in both directions: alarming the person whose normal is low and missing the slide of the person whose normal is high.

It also differs within a person by time of day, posture and breathing. A reading taken standing at a desk cannot be compared with one taken lying down at three in the morning. The only comparison that holds up is a person against their own history, measured under the same conditions every time.

Choosing the window

The window we use is the night. During sleep the person is lying down, silent, hours from their last coffee, and their autonomic nervous system is as close to a controlled condition as a free-living measurement gets. HRV is also higher at night than during the day, so the signal is larger relative to the noise.

Within the night there are choices. The first hour of sleep carries whatever happened in the evening and the time it took to fall asleep. The last hour carries waking. We take a stable stretch in between, defined by the device’s sleep detection and by low motion, and compute the nightly value from that. If the stretch is too short, because the person slept badly or took the device off, the night does not get a value.

Resting heart rate from the same window goes alongside HRV. The two move together in illness and overtraining and separately in other cases, and a coach reads the pair more reliably than either alone.

How many nights

One night is weather. A baseline needs enough nights to show the spread, because the deviation that matters is measured in units of that spread. In our experience somewhere between ten and fourteen valid nights is the minimum before a baseline is worth showing at all, and the band keeps tightening for a few weeks after. During that period the app shows the nightly values and says plainly that the baseline is still forming. Showing a baseline after three nights and then moving it every day teaches the user to ignore it.

Valid nights are rarer than calendar nights. A person who wears the device five nights a week and has one night flagged for quality will take three weeks to reach fourteen. We tell people this up front.

Exclusions and quality flags

The pipeline has to recognise and exclude a nightly value before it enters the baseline, and the reasons are specific. Motion corrupts the optical signal, so stretches with high accelerometer activity are dropped before the intervals are computed. A device off the wrist or on charge produces no signal, or a signal that looks nothing like a pulse, and both arrive as gaps. Ectopic and missed beats produce intervals that are physiologically impossible, and those are filtered before any variability statistic is computed. A low ratio of good intervals to total intervals makes the whole night suspect.

Then there are the nights that are real and still should not enter the baseline. Alcohol lowers night-time HRV and raises resting heart rate for a night or two. A cold does the same for a week. A long-haul flight shifts the sleep window and the autonomic rhythm with it. A very hard training session produces a dip the next night that is expected. The device cannot see any of these. The user can tell us, through a two-tap check-in or a note, and the coach can mark a night after the fact. A flagged night is shown but excluded from the baseline, and the flag travels with the value so the chart can explain itself.

Illness is the interesting one, because the dip that looks like noise is sometimes the signal. We keep the flagged values visible for that reason. The baseline ignores them; the coach does not.

Rolling windows and seasons

A baseline that never moves will be wrong within a season. Fitness changes, weight changes, the clocks go forward. We compute the baseline over a rolling window of valid nights, long enough to be stable and short enough to follow real change, which for most people is several weeks. Alongside the rolling baseline we keep a longer reference, so a slow drift over months is still visible as a drift and is not absorbed into the new normal.

Day of the week matters more than people expect. Weekend nights differ from weekday nights for most adults, through later bedtimes and alcohol, and a baseline that mixes them carelessly will read every Monday as a bad night.

motion off alert baseline hrv nights
Nightly HRV values build a personal band over several weeks, flagged nights stay out of it, and a sustained dip crosses the threshold.

Thresholds without alert fatigue

The deviation that triggers an alert is measured against the person’s own spread. A single night below the band is common and is not an alert. Several consecutive nights below, or a sustained downward trend across a week or two, is. The number of nights and the width of the band are tuned against what coaches acted on, and the aim is a small number of alerts that each turn into a conversation.

Alert fatigue arrives fast when any single bad night fires. A coach with thirty clients cannot read thirty notifications a week, and after a month of noise they turn them off. Fewer, later, more certain alerts are worth more than early ones. Each alert should say in plain language what moved, for how long, and which nights in the period were flagged, so the coach can judge whether the slide is real.

Showing gaps

When nights are missing or excluded, the chart shows a gap. Interpolating across a gap produces a smooth line that looks like data. A coach who sees a stable week through a period when the client was ill or the device was off will make the wrong call, and after one such call they will distrust every smooth line. A visible gap with a reason underneath is a better product.

From baseline to early warning

The baseline is the foundation for everything the coach sees. The platform compares each new valid night to the band, accumulates deviations, and raises an alert when the pattern crosses the threshold. The alert names the metric, the direction and the duration, and links to the chart with the flagged nights marked. The coach decides whether the slide is a project deadline, a bad month or the start of something worse, and has that conversation early.

If you are building a product on continuous HRV and want a baseline that coaches or clinicians will trust, the wearables and health tech page covers what we build, and you can write to us about your data.

Technology partner

CardioMood

A physiological early-warning system for executive coaching with continuous medical-grade stress, recovery and performance data. We built the platform and apps.

About CardioMood

More writing

  1. AI customer support automation: what to automate first, and what to keep

    AI customer support automation in order: triage, drafted replies, cited answers, account lookups, what stays with people, and measuring real resolution.

  2. Keeping a fleet of wearables synced through phones that want to sleep

    BLE reconnection, iOS background modes and Android Doze, device buffering, idempotent uploads, clock drift, and fleet monitoring that catches a quiet device.

  3. Building an evaluation set from past cases, and keeping it alive

    How we build and keep an evaluation set for an LLM feature: choosing cases, labelling with the people who do the job, size, and growing it from production.