The Build
Every number from this experiment is public. Here's the schema, the methodology, and exactly how to access the data — no API key required.
Accountability requires visibility. If the numbers aren't public, it's just a journal. Publishing everything — the bad weeks, the stalled progress, the failed experiments — is what makes this a real experiment rather than a highlight reel.
The data is also useful. Other builders can use the schema, the methodology, or the correlation analysis as a starting point. N=1 data is limited — but it's honest, and the infrastructure for collecting it is open.
Two static JSON files are regenerated daily by the Life Platform pipeline and served via CloudFront. No authentication, no rate limiting, no API key.
public_stats.json
Updated daily ~11am PT
The primary public feed. Aggregated daily vitals, weight journey, training load, and platform stats. This is the file that powers the homepage ticker, sparklines, and Day 1 vs. Today comparison.
| Field | Type | Description |
|---|---|---|
| vitals.weight_lbs | number | Most recent weigh-in in pounds |
| vitals.hrv_ms | number | HRV in milliseconds (Whoop overnight) |
| vitals.hrv_trend | string | Human-readable HRV trend (7d avg vs 30d) |
| vitals.rhr_bpm | number | Resting heart rate in BPM |
| vitals.recovery_pct | number | Whoop recovery score 0–100 |
| vitals.sleep_hours | number | Total sleep last night in hours |
| journey.start_weight_lbs | number | Starting weight (Feb 22, 2026) |
| journey.goal_weight_lbs | number | Goal weight (185 lbs) |
| journey.progress_pct | number | Percent of total weight-loss goal achieved |
| journey.projected_goal_date | string | ISO date of projected goal attainment at current rate |
| training.ctl_fitness | number | Chronic Training Load (fitness signal, 42d EMA) |
| training.atl_fatigue | number | Acute Training Load (fatigue signal, 7d EMA) |
| training.zone2_this_week_min | number | Zone 2 cardio minutes in current week |
| training.zone2_target_min | number | Weekly Zone 2 target (150 min) |
| platform.mcp_tools | number | Total MCP tools currently registered |
| platform.data_sources | number | Active data source integrations |
| platform.lambdas | number | Lambda functions deployed |
| trends.weight_daily | array | 30-day weight readings: [{date, lbs}] |
| trends.hrv_daily | array | 30-day HRV readings: [{date, ms}] |
| trends.recovery_daily | array | 30-day recovery scores: [{date, pct}] |
| _meta.generated_at | string | ISO timestamp of last pipeline run |
character_stats.json
Updated daily ~10am PT
Character Sheet data — gamified health scoring across 7 pillars. Used by the /character/ page. See the full scoring methodology on the Character Sheet page.
View raw JSON →| Field | Type | Description |
|---|---|---|
| character.level | number | Overall character level (1–50+) |
| character.tier | string | Named tier: Foundation / Momentum / Discipline / Mastery / Elite |
| character.xp | number | Total XP accumulated |
| character.days_active | number | Days the platform has been tracking |
| pillars[*].name | string | Pillar name: sleep · movement · nutrition · metabolic · mind · relationships · consistency |
| pillars[*].level | number | Pillar-level score (1–10) |
| pillars[*].raw_score | number | Computed raw score 0–100 before level mapping |
| pillars[*].trend | string | 7-day trend: up / stable / down |
| pillars[*].xp_delta | number | XP change from previous day |
Every score, correlation, and algorithm is documented. If you're going to use this data, you should understand how it's computed.
All normalized metrics are stored in a single DynamoDB table using a composite key pattern. Raw JSON payloads live in S3.
This is one person's data. Correlations in this dataset are not universal truths — they describe patterns in my physiology during a specific period of intentional change. Statistical significance thresholds (p < 0.05 with FDR correction) are noted on all correlation findings, but small n limits generalizability.
Use this data as a methodology reference, not a prescription. If you're building something similar, the schema and architecture are worth borrowing. The specific numbers are mine.
The Measured Life
Real numbers from 26 data sources. No highlight reel. Every win and every failure, in your inbox on Wednesdays.
See a sample issue →