Certifying vital-sign measurement, from the inside.
I was part of the engineering team at I-Virtual that built Caducy — contactless vital-sign measurement from a 30-second selfie, using rPPG (remote photoplethysmography): reading a pulse from ordinary camera footage instead of a contact sensor. In January 2023, Caducy became the first medical device in the world to receive CE Class IIa certification for vital-sign measurement via webcam.
Caducy's measurement pipeline runs remotely: a CDN-delivered React module and an Angular module capture and stream camera frames over WebSocket to a backend service doing MediaPipe-based face tracking and rPPG extraction. Saphere is that engine — heart rate, respiratory rate, HRV, and stress from a plain camera feed — packaged as an API and SDK (Saphere Core) so other products — insurers, wellness platforms, connected devices — could integrate the same measurement without building it themselves.
Five years there as a software engineer, in a medical environment held to strict requirements for reliability, quality, traceability, and validation (QMS). Day to day, that broke down into four areas:
Where the rigor comes from.
I come from electronics and signal processing — a Master's degree in Electronics and Automation, specializing in Data Analysis and Signal Processing — but what stuck wasn't the theory, it was the moment a noisy signal turns into a number you can actually trust. That's been the throughline of everything I've built since.
I'd rather understand why something works than get it working by trial and error, and I'd rather validate an assumption than build around it — whether that's a physiological signal, a test that fails intermittently, or a metric that looks too good to be true. Same standard for the product as for the code: I don't want to ship something I wouldn't trust myself.
What's actually under the hood.
Native & Capture
- Capacitor native plugin architecture
- MediaPipe Face & Pose Landmarker
- Real-time camera-frame streaming (WebSocket)
Application
- Angular (zoneless, signals) & React
- Ionic / Capacitor & React Native
- TypeScript
Backend & Infra
- NestJS, Node.js
- JWT auth, class-validator
- Nx monorepo
- GitLab CI/CD → fastlane → Play Store
- GitLab CI/CD → Portainer → server
Quality & DevOps
- Custom test framework, built from scratch
- Jest — unit & performance testing
- Docker, containerized dev environments
- Regulated software validation (QMS)