Cases

Vastmindz

Finding a pulse in the camera's noise

For Vastmindz, a 15-person It-Jim team built rPPG (remote photoplethysmography) technology: it reads the pulse from tiny colour changes in the skin of the face, filmed by the phone's selfie camera. Vastmindz sells it as an SDK that insurers, telemedicine and corporate wellness apps build into their own products.

Key results
  • A selfie camera app that measures heart rate almost as accurately as a finger pulse oximeter, along with blood oxygen, breathing rate, heart rate variability and stress
  • Sold B2B as an SDK to insurers, telemedicine providers and corporate wellness programmes
  • Built to handle millions of users
Face with a heat map of the three skin regions the camera reads the pulse from: forehead and both cheeks
Client
Vastmindz, United Kingdom
Industry
Health tech, wellness
Team
15 people
Duration
31 months
Model
Extension of client's R&D
Platforms
iOS, Android, server, web

In short

In 2020, telemedicine needed patients' vitals without shipping a device to every home. Vastmindz, a London health-tech startup, bet on the camera already in their pocket. The hard part: the pulse in a face video is a colour change smaller than the camera's own pixel noise, and every phone, room and lamp makes it worse. Over 31 months, a 15-person It-Jim team turned that signal into rPPG (remote photoplethysmography) technology: one C++ library that reads heart rate, SpO2, respiration, HRV and stress on iOS, Android, server and web.

Remote photoplethysmography (rPPG) measures the pulse with a camera. Each heartbeat changes how much light the skin of the face reflects, and an algorithm reads that rhythm from the colour of the skin in a video. On a phone, it needs no extra hardware: only the front camera and software.

What it gives the business

  • SDKsold B2B to insurers, telemedicine providers and corporate wellness programmes
  • Millionsof users the platform can now handle, per the client's Clutch review
  • 98%+accuracy on the client's own metrics, per the same review
  • 3markets build the SDK into their apps: insurance, telemedicine and corporate wellness

Have a camera in your product and want it to measure the body?

We start with a two-week technical research on your data and tell you whether it will work on your hardware. Shall we look at your case?

Book a two-week technical research

About the client

Vastmindz

Vastmindz is a London health-tech startup founded in 2019 by Nikhil Sehgal, with a team of fewer than ten people. Its goal is to cut the cost of healthcare and make good diagnostics available to anyone with a consumer device. The product: a vitals check with the phone's camera, with no cuff, finger clip or wearable. Insurers, telemedicine providers and corporate wellness programmes embed it in their own apps. It positions the scan as a wellness tool and does not market it as a medical device.

The company has since raised $2 million, partnered with AirAsia and the reinsurer Gen Re on health assessments, and received a Microsoft for Startups Partner of the Year award in 2022.

2019
Founded in London
$2M
Raised since
AirAsia · Gen Re
Partners on health assessments
2022
Microsoft for Startups Partner of the Year

Main challenges the customer faced

Three problems to solve at once

Business

Vitals without extra hardware, ready for telemedicine

Vital-sign checks usually need dedicated hardware: a pulse oximeter, a chest strap, a smartwatch. Vastmindz wanted a check that needs nothing beyond the phone a person already has.

The timing was set by 2020. COVID-19 moved consultations online, and telemedicine providers needed a way to check a patient's vitals without anyone in the room. Vastmindz was also researching how to spot COVID-19 noninvasively with a smartphone. It needed the technology itself, good enough for partners to put their name next to it.

Technical

A pulse weaker than the camera's noise, on an ordinary phone

rPPG reads the pulse from tiny colour changes in facial skin as blood volume shifts with each heartbeat. That signal is far weaker than pixel noise. The public datasets the team started from used lab cameras and seated subjects, but Vastmindz needed the same accuracy on consumer phones in ordinary rooms, where a weak signal gets weaker:

  • the person moves, and the light changes;
  • phones record at uneven frame rates;
  • each phone's own compression erases the small colour changes rPPG needs;
  • a bright window behind or a lamp in front of the face can wipe it out.

The library also had to tell a live face from a photo held up to the camera.

Delivery

A product to show while the science was still open

Vastmindz needed a working product for partners and investors while the method behind each vital was still a research question. SpO2 had to be ready for an investor demo in month 9. Each number in the demo had to match a contact sensor recorded at the same moment as the video.

What we did

Research-level signal processing, shipped as code that runs on a phone

Vastmindz came to It-Jim for computer vision and signal processing at research level, combined with the ability to ship code that runs on a phone. The founder worked directly with our CEO, Ievgen Gorovyi, who holds a PhD and leads an R&D team that works from published research to production code.

The project started with a technical baseline. Within a month the team had tested several face detectors, tracking approaches and channel-mixing methods against a public benchmark with contact-sensor ground truth. The work then ran in sprints, with a written report for every research step: over 200 pages by month 7.

Timeline, in months from the start of the engagement.

Solution

A four-step rPPG pipeline, tested against alternatives at every step

With each heartbeat, blood volume in facial tissue changes, and so does the light the skin reflects. We built the pipeline in four steps and compared competing approaches at each one.

  1. Where to look. A face detector finds the face, and a tracker keeps the regions of interest on the same patch of skin. The final tracker weighs facial landmarks against optical flow, so the regions on the forehead and both cheeks stay put when the head turns.
  2. How to get the heart signal. We combine the red, green and blue channels with weights chosen to maximise the heart-rate line on the spectrogram. Later the team added the plane-orthogonal-to-skin (POS) method from Wang et al., 2017 and skin segmentation.
  3. Where the beats are. We compared spectral, wavelet, comb-filter and direct peak-detection methods. Heart rate comes from the spectrum; individual beats come from peak detection, with a check that rejects false peaks. Beat intervals give heart rate variability and a stress index.
  4. Respiration, SpO2, blood pressure. Respiration rate comes from the same video. SpO2 uses the different light absorption of blood with and without oxygen, calibrated against a contact oximeter. For blood pressure, neural networks trained on raw pulse waves did not generalise, so the team moved to models built on HRV and pulse-shape features. The blood pressure value stays an experimental wellness estimate.
Face with a dot mesh and the three tracked skin regions marked: forehead and both cheeks
Only the compact colour signal crosses from the phone to the server. Blood pressure stays an experimental wellness estimate.

Solution

Quality metrics, real frame timing and a liveness check

We sorted every failed scan in client iPhone 11 recordings by cause: bright light in front, backlight, artificial light. Those causes became quality metrics. The library measures illumination, sharpness, face size and orientation, and the signal-to-noise ratio of the pulse itself. When the instant SNR drops below about 5 dB, that stretch of the reading is marked unreliable and left out of the result.

Phones deliver frames at uneven intervals, so the library stopped assuming a fixed frame rate. It reads the real timestamp of every frame and computes the vitals from the actual timing.

In side-by-side testing, both Vastmindz and the market-leading rPPG app returned a heart rate for a photo held in front of the camera. We added liveness detection based on eyelid motion: the library detects blinks from the speed of eye-landmark changes and rejects a static photo.

Each real-world problem and its fix:

  • Movement and changing light: landmarks weighed against optical flow keep the regions in place; illumination, sharpness, face size and orientation are scored on every scan.
  • Uneven frame rate: vitals are computed from the real timestamp of every frame.
  • Backlight or a lamp in front: stretches where the pulse SNR drops below about 5 dB are marked unreliable and left out.
  • A photo held to the camera: the blink-based liveness check rejects a static photo.

Solution

One library for phone, server and browser

The measurement runs on the phone's front camera, and partners can embed it in their own products. The first production pipeline processed video on the server: a Java service with our C++ library inside Docker, on Kubernetes in AWS, with monitoring and load tests.

Later we split the library in two. On the phone, it tracks the face and extracts the colour signal; Android used Google ML Kit landmarks. Only that compact signal goes to the server, which computes the vitals, so the video never leaves the device and the server load stays small as users grow. In the final year, the same C++ library was compiled for the browser as a web SDK.

Solution

Our own reference data and a sprint before the investor demo

The team collected its own data where public datasets fell short: recordings with a DSLR and an iPhone filmed in parallel, with a finger oximeter and a blood pressure cuff as reference; a controlled desaturation test for SpO2; recordings at rest, after exercise and in different poses.

Before the investor demo in month 9, a 10-day SpO2 sprint ran experiments daily on two datasets: one recorded in near-ideal conditions to validate ideas, one from real users to show results.

Key results

Almost as accurate as a contact sensor

We checked the camera against the devices doctors and athletes already trust: a finger pulse oximeter, medical monitors in hospitals, smartwatches and the market-leading camera app. Each test was harder than the one before. The camera kept up.

  1. 1
    In the lab

    Lab-grade accuracy

    In the lab, the camera read the pulse almost exactly like a sensor attached to the skin: less than one beat per minute apart. Its blood-oxygen reading followed a finger oximeter closely too.

  2. 2
    On an ordinary iPhone, in ordinary rooms

    The same reading as a finger oximeter, give or take one beat

    We ran 24 face scans on an iPhone 11 with a finger pulse oximeter on at the same time. Three of them side by side:

    Finger oximeter76.5
    Selfie camera76.3
    Finger oximeter68.4
    Selfie camera67.9
    Finger oximeter92.1
    Selfie camera91.5
    Difference from the oximeter in all 24 scans, beats per minute
    −10−50+5+10 or more

    Green band: the error a medical heart-rate monitor is allowed under the ANSI/AAMI EC13 standard (±5 BPM at these rates). 22 of 24 scans landed inside it.

    Inside the medical-monitor tolerance in 22 of 24 scans About as accurate as a smartwatch, with nothing on the wrist
  3. 3
    Head to head with the market leader

    Performs better than the leading competitor in low light, and matches it at rest

    Both apps measured at the same time as a finger oximeter. At rest, 18 of 20 readings from each app matched the oximeter. In a dim room, Vastmindz failed 1 scan in 6, the leader failed 3 in 6. The leader coped better when people moved, which set our next round of work.

    At rest18/20Vastmindz18/20Market leader
    Low light, successful scans5/6Vastmindz3/6Market leader
    On par at rest Ahead in low light Behind when people move
  4. 4
    In hospitals, on 463 patients

    Confirmed in a medical setting

    In a peer-reviewed clinical study, patients aged 18 to 83 in hospitals in India and at Leeds Teaching Hospitals in the UK took a 60-second scan next to standard medical monitors. The readings stayed within about 3 beats per minute and 1 point of oxygen of the hospital monitors, on iPhone, Android, iPad and a laptop webcam.

    Works on any phone or laptop camera

Business results

A measurement Vastmindz sells to other businesses

Vastmindz does not sell to patients directly. It licenses the vitals scan as an SDK: insurers, telemedicine providers and corporate wellness programmes build it into their own apps, so their customers and employees can check their vitals with the phone they already have.

In its Clutch review, Vastmindz says the work let it accelerate and scale: the platform can now handle millions of users, and the company consistently sees accuracy rates of 98% or above on its own metrics.

The technology also moved into clinical and enterprise use. The Canadian public company Ehave licensed it for G20 countries. Leeds Teaching Hospitals NHS Trust began a study of the Vastmindz app on adult and child in-patients, and Vastmindz launched Visix inside Microsoft Teams, where employees check their vitals with the laptop camera in under a minute.

SDKBusiness model: licensed to insurers, telemedicine and corporate wellness apps
MillionsUsers the platform can handle, per the client's Clutch review
98%+Accuracy on the client's own metrics, per the same review
G20Licence to Ehave, a Canadian public company
NHSIn-patient study sponsored by Leeds Teaching Hospitals
TeamsVisix app for employee health checks inside Microsoft Teams

Features delivered

What we shipped

  • C++ rPPG library: heart rate, HRV, stress index, respiration rate, SpO2, experimental blood pressure estimate
  • Phone and server builds, so video stays on the device
  • Android integration with ML Kit through JNI, and iOS builds
  • Server pipeline on Docker, Kubernetes and AWS, with monitoring and load testing
  • Quality metrics and a blink-based liveness check
  • Web SDK of the same library
  • Reference datasets with contact-sensor ground truth, and a report for every research step

The technology we used

Stack

Algorithms
C++PythonOpenCV
Computer vision
Haar face detectionLBF facial landmarksOptical flow with thin-plate splinesGoogle ML Kit
Signal processing
Channel balancingPOSSpectral analysisComb and wavelet filtersPeak detection
Mobile and web
Swift (iOS)Java with JNI (Android)C++ compiled to JavaScript
Back end and infrastructure
JavaDockerKubernetesAWSGrafanaPrometheus

Let’s Talk About Building AI That Works in the Real World

No vague promises. No pressure. Just a real conversation with our technical leadership to understand your needs and explore the best next steps.

Tell us about your project
Chat on WhatsApp
File upload (optional, up to 15 MB)

By submitting this form, you agree with our Privacy Policy

What Happens Next?
  1. Your message goes straight to our core team – not a sales department.
  2. You’ll talk directly with our CEO, CTO, or a domain expert for a consultation-style first call.
  3. We’ll ask the right technical questions to understand your challenge and scope.
  4. If we’re a fit, we’ll follow up with a proposed path forward.

More Projects Like This

Hockey tracking camera

Hockey tracking camera

Player tracking and a virtual camera that frame a live amateur hockey game with no one filming, on one desktop per rink, within a 30 ms frame budget.

Fanaty

Fanaty

A C++ stitcher that joins two sideline cameras into one full-pitch 4K panorama at 30 FPS on a CPU, after a consultation that made Fanaty’s processing eight times faster.

Tennis rally detection

Tennis rally detection

Computer vision that finds the rallies in amateur tennis matches and cuts the video by about 70%, on a cloud server with no GPU.

Postround

Postround

It-Jim built a cross-platform mobile app for Postround that detects and reads golf scorecards to keep player statistics

Doug Labs

Doug Labs

The solution assists medical practitioners with neurological patient diagnostics; it automates, records, and secures neurological test results within an iPhone app

Speech Therapy Platform

Speech Therapy Platform

A custom speech recognition system for children’s therapy, built with phoneme-level modeling, fine-tuned datasets, and production-ready deployment.