All data was pulled from my personal WHOOP 4.0 account on 2026-04-23 using the whoop-ai-mcp open-source MCP server + the scripts/pull-whoop.mjs wrapper in this repository. The 45-day window captures 27 days of pre-detox baseline, the 14 days of Core Restore (with infrared sauna sessions throughout), and the immediate post-detox clean window.
Blood-work data comes from two Quest Diagnostics panels ordered through Parsley Health (January 20, 2026 baseline + April 23, 2026 post-cycle). See biomarker-results.md for the full directional summary.
During the entire 45-day case-study window (and during the June 2025 7-day cycle), the author was not using:
Natural menstrual cycles were ongoing throughout. This was a deliberate root-cause exploration of how the body responds to liver-clearance support without a hormonally suppressed baseline.
Cycle phases were confirmed two ways:
Cross-mapping to the protocol window:
| Phase | Date range | Estimated cycle days | Cycle phase |
|---|---|---|---|
| Pre-detox baseline | Mar 9 → Apr 4 | Full cycle cross-section | Mixed |
| 14-day Core Restore | Apr 5 → Apr 18 | ~cycle day 14 → 27 | Ovulation + full luteal |
| Post-detox / Lab 2 draw | Apr 19 → Apr 23 | ~cycle day 28 → menses transition | Late luteal / pre-menses |
Why this is methodologically important: baseline HRV is typically lower in luteal phase than follicular. The 14-day cycle’s HRV improvement happened during the cycle window where HRV would naturally be suppressed — meaning the protocol effect is, if anything, understated relative to a cycle-phase-controlled comparison.
See research/birth-control-context.md for full scientific rationale of why this choice matters for data interpretation, and why the protocol may behave differently for readers on hormonal contraception.
/v2/recovery — daily recovery score, HRV (rmssd), resting heart rate, SpO2, skin temperature/v2/activity/sleep — sleep stage breakdown, duration, performance, respiratory rate/v2/activity/workout — individual workouts with strain and HR zones/v2/cycle — daily physiological cycle with aggregate strainSee phases.json. Phases are date ranges I assigned based on my own calendar:
| Phase | Range | Days | Definition |
|---|---|---|---|
| Pre-detox baseline | 2026-03-09 → 2026-04-04 | 27 | Normal eating, normal training, normal life |
| Core Restore | 2026-04-05 → 2026-04-18 | 14 | On-protocol: elimination diet + supplements + 2 shakes/day + infrared sauna sessions throughout |
| Post-detox clean | 2026-04-19 | 1 | Immediate rest day following the 14-day cycle |
I did not run significance tests. The sample size is too small, phases are unequal length, and the variables are highly autocorrelated day-to-day. Running a t-test would be dressing up a case study as a trial. Instead, I report:
Confounders are listed explicitly in the main case study post.
data/daily-summary.csv. If you want to run your own analysis, the CSV is the source.# 1. Pull raw data (outputs ~/Documents/Dev Projects/diet-signal/whoop-raw.json by default)
node scripts/pull-whoop.mjs --days 45 --out /tmp/whoop-raw.json
# 2. Export anonymized daily summary
node scripts/export-csv.mjs \
--in /tmp/whoop-raw.json \
--out case-studies/001-core-restore/data/daily-summary.csv
# 3. Generate phase comparison table + daily detail
node scripts/analyze-phases.mjs \
--data /tmp/whoop-raw.json \
--config case-studies/001-core-restore/phases.json \
--detail 14
The /tmp/whoop-raw.json file contains user_id and email — it must not be committed. Only the anonymized CSV ships in this repo.
templates/reintro-tracker.md)