Voke

How the morning summary is written

Our code picks the readings and works out your last two weeks, and an AI model only writes the sentence and the suggestions.

After you wake up and your night syncs, Voke posts a short note in your Feed, marked Ask Voke. It has a few readings from last night, each with a small line showing your last two weeks, then one sentence about the night and two or three suggestions for the day.

An AI model writes part of it. Here’s which part, and why the rest isn’t left to it.

When it’s written

Each time Voke finishes working out your scores after new data arrives, it waits a minute, so a burst of uploads leads to one summary instead of several. Then it checks three things:

If the answers are yes, yes and no, it writes one. There’s never more than one per morning.

Code picks the readings

The readings come from our code, not from the model. It looks for these, in this order, and keeps the ones you have:

  1. Sleep, in hours
  2. Resting heart rate
  3. Heart rate variability
  4. Respiratory rate
  5. Temperature deviation
  6. Blood oxygen

Google and Apple measure heart rate variability differently, so Voke uses one kind and never mixes the two.

For each reading, the code takes this morning’s value and the 14 days ending this morning, leaving any day without a reading as a gap. That’s the line you see beside each row. From those days it works out the median, the middle value. If you have none of these readings, there’s no summary.

The model only writes the words

The model never sees your charts, your sleep stages, your chats or anyone in your circles. It gets a short list, one line per reading: the name, this morning’s value, the unit, the two-week median, and how many of the 14 days had a reading.

For example: sleep 6.2 hours against a median of 7.3, resting heart rate 61 against 57, heart rate variability 38 ms against 46, from 14 days each.

From that, it writes one sentence of up to 280 characters, and two or three suggestions of up to 160 characters each. It’s told to use only the numbers it was given and never make one up, to compare with the last two weeks, and that it isn’t a doctor: if something looks worrying, it should suggest seeing one.

The numbers on the card don’t come from the model’s text. The app shows the readings our code picked, so a bad answer can word something poorly, but it can’t put a wrong number on your screen.

The request is handled the same way as an Ask Voke chat, by a provider that deletes it after answering. How Voke keeps your health data private has the details.

Why the last two weeks

A single night is noisy. Two weeks is long enough that one rough night doesn’t set the bar, and short enough to keep up with you when life changes: a new job, a training block, a trip, a cold. We use the median rather than the average for the same reason. One bad night or one sensor glitch barely moves it.

It’s also the stretch the line beside each reading shows, so the sentence and the line describe the same days. Last night counts as one of the fourteen.

Your readiness score works differently. It compares against a longer, 28-day baseline. The morning summary is about how you’ve been lately.

Why it’s plain text

The model sends back two fields of plain text: the sentence and the list of suggestions. No formatting, links, emoji or all caps. A check rejects anything that doesn’t fit that shape or runs too long, and it also refuses one vague word for “normal”, so the sentence has to point at the last two weeks instead.

That keeps the card the same every morning: the readings, then the sentence, then the suggestions. Nothing the model writes can add a link, a button or a heading, or make itself louder than the rest of the card.

When a night syncs late

Watches and phones don’t always sync the moment you wake.

If you turn off “Use AI features”, Voke stops writing morning summaries and deletes the ones it has written.