Platform Updated 2026-08-01 View as Markdown

Analytics

Most of the analysis happens before you ask for it. Background workers compute correlations, records, summaries and statistical models on a schedule, and the coach reads the result.

That ordering is deliberate. Deriving statistics inside a conversation means deriving them from whatever slice of data happened to be in context, which produces answers that are confidently wrong — a "personal best" that is only the best of the last thirty days. Computing ahead of time against the full history removes that class of error entirely.

The correlation engine

Runs nightly across every module at once: habits, nutrition, wearables, bloodwork, genetics.

Known physiology is tested against your data. Rather than asserting that sleep drives recovery, the engine checks whether it does for you, and labels the result confirmed, contradicted, or confounded. A contradiction is often the more useful finding.

Statistical controls are applied. Partial correlation controlling for time trend and sleep, so a relationship that is really just "both improved over six months" does not present as causal. Autocorrelation-adjusted significance, because consecutive days are not independent samples. Multiple-testing correction, because testing forty metrics against each other will produce spurious hits by construction.

Results are stored as a graph. Edges carry the coefficient, the partial coefficient, lag, p-value, sample size, tier and provenance. Depth-2 traversal assembles mechanistic chains — sleep to recovery to next-day strain capacity — instead of asserting them.

Behaviour-to-marker links. Daily behaviours are tested against bloodwork markers over a biologically plausible exposure window, so a marker that responds over eight weeks is not correlated against yesterday's meals.

You can also ask for a pair nobody precomputed. On-demand analysis applies the same guards, and the result is always labelled a hypothesis regardless of how strong the coefficient looks — a single fished pair has no multiple-testing protection.

Precomputed models

The insights engine maintains a set of statistical models, queryable in the app and via get_insights over MCP:

Model What it answers
Readiness scoring How prepared you are today, composited across inputs
Lead-lag relationships Which metric moves first when two move together
Goal ETA Projected arrival with Monte Carlo confidence bands
Streak survival The probability a streak of a given length continues
Training load Accumulated load against capacity
HRV baseline Your personal baseline and deviation from it
Momentum Whether you are building or slipping right now
Dose-response Whether more of a behaviour keeps helping, or plateaus
Changepoints Dates where a metric's regime actually shifted
Behavioural archetypes Recurring patterns in how you operate

Facts and records

An all-time fact index per metric: first and last recorded day, minimum, maximum, lifetime total where a total is meaningful, current and best streak, and 30- and 90-day rolling averages.

Coverage is derived from the metric registry rather than hand-maintained, which is what stops it from silently omitting a group of metrics — an earlier hand-written version omitted every WHOOP column, and the coach reported bests that were nowhere near the true maxima.

Direction is declared per metric, because it is not inferable. Lower is better for resting heart rate and mile time. Higher is better for HRV. Weight is deliberately neither, because whether up or down is better depends on your goal, not on the metric.

Summaries

Narrative rollups written by the summarization pipeline: weekly, monthly, quarterly and yearly reviews, lab and methylation interpretations, mission analysis, personal records, and a cross-module correlation narrative.

These are embedded alongside individual days, so a question about a period retrieves the period rather than reassembling it from ninety rows.

Charts

Trends, distributions and comparisons over any tracked metric, rendered in the app. Bloodwork markers get sparklines against their reference ranges.

When things run

Worker Schedule (UTC) Does
Summaries and insights 01:00, 05:00, 10:00, 14:00, 17:00, 21:00 Records, period summaries, mission analysis, meal enrichment, insights, labs and methylation pipelines
WHOOP sync 03:30, 13:00, 18:00 Timezone-aware pull for connected accounts
Embeddings 06:00 Batch-embeds anything flagged during the day
Learning maintenance 04:00 Decay, expiry, consolidation

Days are also embedded inline as you save them; the cron pass is a fallback for anything that failed or was written while the embedding service was unavailable.

Data quality

Analysis is only run on values that can carry it. WHOOP recovery from the calibration period and sleep stages from a night with a significant sensor gap are suppressed for analysis while remaining visible in the ledger exactly as reported. See quality gating.