Open reconstruction · public data only
Two glucose days can share every summary number and be nothing alike.
Your CGM app reduces each day to an average and a time-in-range. This model reads the shape of the whole day instead — 2 MB, running in your browser tab, with your readings never uploaded. It is an open reconstruction of Google’s GlucoFM, a foundation model published as a paper with no code and no weights.
No file needed — sample days are built in. Or drop in your own Dexcom or Libre export; it never leaves your browser.
Cardiovascular health and blood glucose management are critical to health, and I follow the field closely. GlucoFM was the most interesting recent model in this space, and Google published no code, so I rebuilt it on public data and published everything — the weights, the failures, and the decisions the paper left open.
These are the first findings I’ve published openly. They won’t be the last. A PPG-to-glucose pilot is already in the paper, and a research studio app for that work is next.
Stephane Fourdrinier — independent researcher
Founder, Track Our Hearts
What it does
A CGM sensor reports every five minutes, so one day is 288 readings. The model compresses that day into 128 numbers, and gives days that behaved alike nearly the same numbers — even when the raw traces look different.
Training used no diagnoses. Between half and 60% of each day was hidden and the model was trained to predict the hidden hours from what remained. Labels came later, to test whether the resulting representation carried clinical information.
It does, modestly. Averaged over 18 clinical questions, a simple classifier reading the model’s numbers beats one reading the standard summary metrics — time in range, mean, variability — by 0.027 ROC-AUC. The point estimate is ahead on 13 of the 18, and no single question shows a gap large enough to be significant on its own. The advantage is an average, and this site treats it as one.
What you actually get out of it
The model returns 128 numbers for a day. On their own they mean nothing; what matters is what can be read off them. Small classifiers fitted on top were trained to answer seven questions, and how well each one works was measured on people it had never seen:
| Question | What it means | Best accuracy |
|---|---|---|
| How steady the day is | Which of the glucose-variability patterns this day resembles — the smooth kind, or the kind that swings. | 0.88moderate |
| Signs of insulin resistance | Whether the day looks like someone whose body has stopped responding well to its own insulin. | 0.87moderate |
| Raised diabetes risk | Whether the day looks like someone already diabetic or heading that way, rather than someone who is not. | 0.78moderate |
| Body-mass category | Which BMI band the person falls in — inferred from the shape of the day alone. | 0.76moderate |
| Reduced insulin production | Whether the pancreas looks like it is making less insulin than it should, which is a different problem from resisting it. | 0.69weak |
| Raised blood fats | Whether cholesterol and triglycerides are elevated. Three of the four classifiers for this never beat chance; one did, barely. | 0.65weak |
| Dips below the safe range | Whether the person has episodes of low glucose. The weakest of the seven, and only just above chance. | 0.57very weak |
Accuracy is ROC-AUC on held-out people: 0.5 is a coin flip, 1.0 is perfect. Nothing here reaches the accuracy of a clinical test, and the site never shows these as percentages — see below for why. Alongside the seven, the model gives you three things that need no classifier at all:
The day split into slow and fast
A backward-looking filter separates the slow drift (green) from the spikes on top of it (rust). Meals and exercise land in the fast part. Useful on its own, needs no classifier, and is the only part of the design the ablations show to matter.
Your days compared to each other
Days that behaved alike land close together in the 128 numbers. With a couple of weeks of data you can see which days were unlike the rest — again with no classifier involved.
A ranking against 20,000 days
For each question the classifiers can answer for a given day — at most seven, fewer when readings are missing — where it sits among days from the training cohorts, with that classifier’s measured accuracy printed next to it, so you can weigh how much the answer is worth.
And a refusal, when that is right
If a day has too many missing readings, the classifiers decline to score it rather than extrapolate. And no result is ever shown as a probability: the raw scores pile up near 0 or 1 whatever you feed them — 0.996 can describe a thoroughly ordinary day — so every answer is a rank among 20,000 real days. No forecast, no diagnosis. A research tool, not a medical device.
The analysis runs entirely in your browser; your readings are not sent to any server. Dexcom, Libre, or any CSV with a time column and a glucose column.
All of it, on one real week
6 days from one volunteer’s sensor, on one shared scale. Every complete day is at least 92% inside the 70–180 mg/dL range a clinician would target, with averages between 98 and 110. By the numbers a CGM app reports, these days are interchangeable.
The model reads them differently. It puts two of these days almost on top of each other (0.996 similar) despite peaks 16 mg/dL apart, and separates out the day that climbed to 218. Time in range barely distinguishes any of them. The shape of the day does.
The worked example takes one of these days all the way through
The day split into slow and fast, the 128 numbers it becomes, which days the model reads as alike, every classifier that would answer for it and every one that refuses — and, using two of these days, why a raw score of 0.996 can mean almost nothing.
Results
ROC-AUC across 18 task-cohort combinations, five seeds, split by person into folds so nobody appears in both halves. 0.5 is chance; 1.0 would be perfect.
ROC-AUC. The axis starts at 0.50 — chance — not at zero.
Against clinical metrics the margin is +0.0269 ROC-AUC, 95% CI [0.0222, 0.0316]. All five seeds are positive. CGM-JEPA, measured the same way on the same folds, comes in at 0.0000 with a confidence interval spanning zero.
A margin of 0.027 is small. All five training runs land positive and the interval excludes zero, so the average advantage is real. It does not concentrate anywhere: ahead on 13 of 18 questions, significant on none of them individually.
Method from GlucoFM, arXiv:2605.30865v2. Comparator ported from the CGM-JEPA authors’ released code.