serif
a consumer-health causal inference engine
Wearable and biomarker data in, dose-aware recommendations out, and a causal model in between that knows what it does not know.
problem
Wearables and blood panels produce a stream of numbers and almost no guidance about what to change. Generic advice ignores the only thing that matters: how your outcomes respond to your behaviors, at your doses.
approach
serif begins with a causal DAG: sleep and training load act on biomarkers, biomarkers act on outcomes, and every arrow is a commitment that can be checked, not a decoration. The model was written down in Stan before the first data point was trusted, and Bayesian posteriors are fit over the edges of the graph, so each recommendation carries a dose and an uncertainty, never just a direction.
theta[c] ~ normal(mu_pop, tau); // cohorts share strength
effect[n] ~ normal(dose_curve(theta[cohort[n]], dose[n]), sigma);
the update
When a new biomarker draw arrives, serif does not start over. The fresh draw enters as the likelihood, everything believed the day before stands as the prior, and their product, renormalized, is the posterior the next recommendation is built on.
the update serif runs for every participant, at every draw.
result
The engine has run for 1,188 participants across 3 cohorts, turning raw wearable and biomarker streams into recommendations that are personal, dose-aware, and honest about what the data can and cannot support.