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:
- Is there a main night, not a nap, that ended in the last 12 hours?
- Is that night’s sleep total ready?
- Has a summary already been written for this morning?
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:
- Sleep, in hours
- Resting heart rate
- Heart rate variability
- Respiratory rate
- Temperature deviation
- 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.
- Your night arrives a few hours late. The summary is written when it lands, as long as the night ended less than 12 hours before. Its time on the card is when it was written.
- Your night arrives more than 12 hours after you woke. There’s no summary for that morning. Voke never goes back and writes summaries for past mornings, so catching up on a week of data, or connecting Voke for the first time, won’t fill your Feed with old notes. The night itself still shows in your Feed.
- The night arrives but its sleep total isn’t ready yet. Voke waits, and checks again the next time it finishes your scores.
- One reading comes in after the summary. Say heart rate variability syncs an hour later. The summary is written once and isn’t redone, so it uses the day before’s reading for that row, or leaves the row out. The reading still shows in your charts, and it counts towards tomorrow’s two weeks.
- The AI model is down or fails. Voke tries again later. Your data, scores and Feed carry on without it.
If you turn off “Use AI features”, Voke stops writing morning summaries and deletes the ones it has written.