Overview
How neccessory measures the pulse from a camera and which wellness metrics it derives.
How the camera measures a pulse
With every heartbeat, blood volume in the small vessels of the face rises and falls. That subtly changes how much light the skin reflects, producing tiny fluctuations in the camera image that are invisible to the eye. By tracking the face across many frames and analysing that color signal, neccessory reconstructs the pulse waveform — the same kind of signal a fingertip pulse oximeter produces, recovered without any contact.
From that single waveform, the metrics follow:
- The rhythm of the pulse gives the heart rate.
- The tiny beat-to-beat timing differences give heart-rate variability (HRV).
- The slow rise and fall of the pulse over several seconds encodes the breathing rate.
- The pattern of variability is condensed into a single stress index.
- The shape of the pulse feeds experimental blood pressure and SpO2 estimates.
The metrics
Heart rate
Beats per minute, with confidence.
HRV
SDNN, RMSSD, pNN50.
Breathing rate
Breaths per minute.
Stress
A 0–100 stress index and level.
Blood pressure (Beta)
Experimental systolic / diastolic estimate.
SpO2 (Beta)
Experimental blood-oxygen estimate.
Two tiers: where the analysis runs
The pipeline above is the same in both tiers. What differs is which machine executes it, and therefore what travels over the network.
| On-device | Cloud | |
|---|---|---|
| Face tracking, pulse recovery, metrics | On the phone or in the browser | On our servers |
| What is transmitted during a measurement | Nothing | Cropped images of the face |
| What the REST API is for | Submitting a finished result | Nothing — cloud results are stored as they are computed |
| Latency | Real time | One network round-trip per event |
| Result attested | No | Yes |
| Access | By application | Self-serve |
On-device
The entire analysis — face tracking, computer vision, and neural networks — runs locally. Raw camera frames never leave the device and there is no cloud video processing at all. The REST API is used only to submit a completed measurement result and attribute it to your account, never to upload video.
Three practical consequences:
- Latency is real-time. A heart rate stabilizes within about 10 seconds; a full measurement runs roughly 30–35 seconds.
- Privacy is structural. There is no video to leak, because there is no video upload.
- Quality depends on the capture, not on bandwidth. Good lighting and stillness matter far more than a fast network — see Requirements & limitations.
Cloud
The cloud tier does upload images of the face
In cloud mode the client detects and crops the face, and sends those crops to our servers, where the metrics are computed. Frames live only in the memory of the running session and are never written to disk, logs, or storage — but they are transmitted, which the on-device tier never does. The statements about frames not leaving the device apply to on-device only. See Cloud overview and Cloud privacy.
What you get in exchange: nothing to download beyond a face tracker (~6.9 MB instead of ~45 MB), a result the client cannot fabricate, batch processing of recorded video, and self-serve access with no approval step.
Where the numbers come from
The same computer vision and neural networks detect the face, recover the pulse signal, and derive each metric in both tiers — locally on-device, server-side in the cloud. You do not configure the underlying models; you receive a single, structured measurement result with a signal-quality rating attached to every capture.
Next: How it works.