The demo video is coming soon.
Vitaly reads your Apple Watch ECG beat by beat to find premature ventricular contractions (PVCs): early, extra heartbeats that start in the heart’s lower chambers. A few are normal. Frequent PVCs, or several in a row, are worth a cardiologist’s look, especially after a heart attack. Vitaly tells you in plain English which you have.
or drop the PDF here. On iPhone: Health › Browse › Heart › Electrocardiograms (ECG) › pick a recording › Export a PDF for Your Doctor.
Send it with the PDF. It says what the software measured and how sure it is, so a clinician can check it in seconds.
Vitaly learned from 2.0 million heartbeats (103k of them PVCs) recorded from 2,161 people in seven public research databases, then was scored once, with every setting locked in advance, on 496 recordings from 238 patients it had never seen, against beat labels from cardiologists. On the standard benchmark for heartbeat software it finds PVCs more accurately than the frontier AI models reading the same ECGs, Claude Opus 5.5 and Claude Fable 5.1, and within the range published for a specialist.
The MIT-BIH Arrhythmia Database is the reference test for heartbeat software. Every beat was labelled independently by two or more cardiologists, with disagreements resolved by consensus; their PVC labels are the red V. These patients were never used in training. Pick a strip, then run Vitaly on it in this page.
MIT-BIH Arrhythmia Database, the reference test for heartbeat software. 100% means every PVC found and nothing else called a PVC. Whiskers: 95% interval from resampling patients.
Vitaly minus Opus: +1.6 points (95% interval -2.3 to +6.8), so the fair reading is level with the frontier or slightly ahead, at a tiny fraction of its size: Vitaly is about 4 million parameters, while Anthropic does not publish its models' sizes (1T+ is a rough outside estimate for frontier models). Claude Fable 5.1 read all 496 held-out strips under the same protocol and scored below Opus (89.6% against 91.5% across all three sets); Vitaly leads Fable by +3.9 points there (95% interval +1.2 to +7.2). Cardiologist range: an estimate from published studies, not measured on these strips (notes below).
Vitaly is a domain expert system. Its core is a deterministic state machine built from the bedside criteria cardiologists use: a beat that comes early, is wide, is shaped unlike your usual beat, and is followed by a pause. On its own that sets a predictable, auditable floor (78.7%). A small learned System 1 decision model, fifteen tiny networks, then re-judges each beat the way an expert's quick intuition would, and raises that ceiling to 95.3%. It stays mechanistically interpretable: every call traces back to measurements you can see, and the same recording always gives the same answer.
Below, a simulated ECG from a published heart model (McSharry et al., 2003) streams in real time. On the left, the electrical wave crosses the heart; on the right, the state machine scores each beat in the open. Press Inject PVC to start a beat in the ventricle instead of the heart's pacemaker, and watch it arrive early, wide and followed by a pause.
The live simulator starts when it scrolls into view.
Medical software has to be predictable: the same recording must always give the same answer, and a clinician must be able to see why. So every decision here is made by fixed rules and small saved networks. A language model is only ever an optional explainer, marked as AI, and it never changes the result.
Beat detection follows Pan and Tompkins (1985), the basis of most heartbeat detectors. The measurements are the bedside criteria for a PVC: a wide beat, early, with a pause after it, shaped unlike your usual beat.
Rules alone score 78.7%. Fifteen networks of 109k parameters each, which compare every beat with your usual beat and the rest of the strip, lift it to 95.3%: 4M parameters in all, small enough for a watch.
The level comes from a fixed table written from cardiology guidelines (AHA/ACC/HRS 2017, ESC 2022): a run of three or more, a 10% or 20% share of beats, bigeminy, trigeminy, pairs. Same beats, same words, every time.
We tested a private language model as the explainer: Gemma 4 (26B), running on a laptop in about 1.6 s per answer. Given the fixed-rule result, it kept the rule's level on 58/58 test cases, never used a number that was not in its input and never diagnosed. Left to choose the level on its own, it matched the guideline rules on only 61% of cases, and every miss was milder than the rules (Claude Opus 5.5, choosing alone: 92%). So the rules set the level, and a model only explains it, labelled as AI.
Hearts differ from person to person, so Vitaly already judges every beat against your own usual beat in the same recording. That is why it can spot a PVC whose shape would look normal in someone else. Next it will learn your normal beat from earlier recordings, the way a cardiologist compares a new ECG with your last one. Our first version helped on training patients but did not yet beat the single-recording model on held-out patients, so it stays switched off until it does.
PVC detection score (F1) on each held-out test set: hospital Holter, the lead a watch records, and a chest patch worn by 200 new patients.
Ahead of both frontier models on all three sets. On the cleanest lead-I strips alone (67 of the 96), Opus leads, 92.3% to 87.0%.
On every held-out strip, the readout from Vitaly's calls against the same readout from the cardiologists' labels.
Most disagreements sit on the 10% line (3 PVCs in 39 beats against 4). The two clear misses on lead I are long runs where every beat is a PVC: the hardest case left.
The whole reader is about 4 million parameters and a few megabytes, and it already runs offline in a phone browser. That makes an air-gapped health box at home realistic: a Raspberry Pi on your own network serving this page, with recordings that never touch the internet.
Our estimate for a Raspberry Pi 4 is a second or two per 30-second recording, against well under a second on a laptop. Not yet measured.