{
  "_meta": {
    "description": "10 diverse Coach Tony Digital Twins. Each is a complete, self-consistent numeric model of one human, designed so personalization is testable: the same question routed against different twins must produce different, un-portable answers. Numbers are internally consistent (e.g. low recovery tracks with low HRV / high resting HR / sleep debt; high bio-age tracks with worse risk bands).",
    "schemaVersion": "1.0",
    "generatedFor": "coach-tony question-bank.json (50 questions applied to every user)",
    "risksAreV1Only": ["cardiovascular (QRISK3, 10-yr)", "stroke (QStroke, 10-yr)", "diabetes (QDiabetes, 10-yr)", "sleepApnea (STOP-Bang screening)"],
    "unitsNote": {
      "recovery": "0-100 readiness score",
      "hrv": "ms (RMSSD)",
      "sleepHrs": "hours",
      "efficiency": "% of time in bed asleep",
      "restingHr": "bpm",
      "steps": "count/day",
      "stressLevel": "0-100 (higher = more stress)",
      "weightTrendKg": "30-day change in kg (negative = losing)",
      "bodyFatPct": "%",
      "ages": "years",
      "risk %": "absolute 10-yr risk (sleepApnea is STOP-Bang likelihood, not 10-yr)"
    }
  },
  "users": [
    {
      "id": "twin-01",
      "firstName": "Elena",
      "age": 40,
      "sex": "female",
      "mission": "Stay in the top 5% of healthspan for my age while raising two kids and running a clinic.",
      "archetype": "Fit, dialed-in 40yo woman — the high performer who wants the edge, not a rescue.",
      "biometrics": {
        "recovery": 81,
        "recoveryDelta": 4,
        "hrv": 68,
        "hrvBaseline": 63,
        "sleepHrs": 7.6,
        "efficiency": 92,
        "restingHr": 52,
        "steps": 11200,
        "stepsTarget": 10000,
        "stressLevel": 28,
        "stressTrend": "down",
        "weightTrendKg": -0.3,
        "bodyFatPct": 22.4,
        "vo2max": 47
      },
      "ages": {
        "chronologicalAge": 40,
        "biologicalAge": 35,
        "performanceAge": 34,
        "fitnessAge": 33,
        "recoveryAge": 36,
        "stressAge": 37
      },
      "risks": {
        "cardiovascular": { "band": "low", "pct": 1.2 },
        "stroke": { "band": "low", "pct": 0.4 },
        "diabetes": { "band": "low", "pct": 1.8 },
        "sleepApnea": { "band": "low", "pct": 6 }
      },
      "goal": { "name": "Build VO2max from 47 to 52 by year-end", "progressPct": 58 },
      "trends": {
        "recovery7d": [78, 82, 80, 79, 83, 81, 81],
        "recovery30dAvg": 77,
        "hrv7d": [64, 66, 70, 67, 69, 68, 68],
        "hrv30dAvg": 63,
        "sleepHrs7d": [7.4, 7.8, 7.2, 7.9, 7.5, 7.7, 7.6],
        "restingHr7d": [53, 52, 54, 52, 51, 52, 52],
        "steps7d": [10800, 12400, 9600, 11900, 10200, 12100, 11200],
        "stress7d": [32, 30, 29, 27, 31, 28, 28]
      },
      "planAdherence": { "trainingPct": 94, "sleepPct": 88, "nutritionPct": 90, "overallPct": 91 },
      "historyNote": "Three years of consistent base. Two strong polarized blocks this spring; HRV baseline has crept up 5ms over 90 days. No injuries, no plateaus — the live question is how to add a 5th quality session without eroding the recovery she's banked."
    },
    {
      "id": "twin-02",
      "firstName": "Marcus",
      "age": 59,
      "sex": "male",
      "mission": "Pull my biological age back under my real age and not become my father, who had his first stroke at 61.",
      "archetype": "Stressed 59yo male exec — time-poor, sleep-starved, family stroke history, the highest-stakes twin.",
      "biometrics": {
        "recovery": 49,
        "recoveryDelta": -11,
        "hrv": 31,
        "hrvBaseline": 42,
        "sleepHrs": 5.6,
        "efficiency": 78,
        "restingHr": 67,
        "steps": 4300,
        "stepsTarget": 8000,
        "stressLevel": 74,
        "stressTrend": "up",
        "weightTrendKg": 0.8,
        "bodyFatPct": 28.9,
        "vo2max": 31
      },
      "ages": {
        "chronologicalAge": 59,
        "biologicalAge": 64,
        "performanceAge": 66,
        "fitnessAge": 65,
        "recoveryAge": 68,
        "stressAge": 70
      },
      "risks": {
        "cardiovascular": { "band": "high", "pct": 18.6 },
        "stroke": { "band": "moderate", "pct": 7.1 },
        "diabetes": { "band": "moderate", "pct": 9.4 },
        "sleepApnea": { "band": "high", "pct": 71 }
      },
      "goal": { "name": "Cut resting HR from 67 to under 60 and stress age below 60 in 6 months", "progressPct": 12 },
      "trends": {
        "recovery7d": [58, 54, 51, 48, 45, 52, 49],
        "recovery30dAvg": 56,
        "hrv7d": [38, 35, 33, 30, 28, 33, 31],
        "hrv30dAvg": 40,
        "sleepHrs7d": [6.1, 5.4, 5.8, 5.0, 5.2, 6.0, 5.6],
        "restingHr7d": [64, 66, 68, 69, 70, 66, 67],
        "steps7d": [5200, 3800, 4100, 2900, 4600, 5000, 4300],
        "stress7d": [68, 72, 75, 79, 80, 71, 74]
      },
      "planAdherence": { "trainingPct": 41, "sleepPct": 38, "nutritionPct": 55, "overallPct": 45 },
      "historyNote": "Two quarters of board crunch. Resting HR has drifted up 5bpm in 30 days while HRV fell 11ms — a classic chronic-stress signature. STOP-Bang screen sits high (loud snoring + BMI + neck + age); has never had a sleep study. The non-negotiable here is routing the apnea signal to a physician, not coaching through it."
    },
    {
      "id": "twin-03",
      "firstName": "Doris",
      "age": 70,
      "sex": "female",
      "mission": "Stay strong and independent — carry my own groceries and play with grandkids at 80.",
      "archetype": "70yo recovering from a hip replacement — rebuilding capacity, fall-risk aware, slow steady wins.",
      "biometrics": {
        "recovery": 64,
        "recoveryDelta": 6,
        "hrv": 29,
        "hrvBaseline": 26,
        "sleepHrs": 7.1,
        "efficiency": 84,
        "restingHr": 71,
        "steps": 3600,
        "stepsTarget": 5000,
        "stressLevel": 35,
        "stressTrend": "down",
        "weightTrendKg": -0.4,
        "bodyFatPct": 34.1,
        "vo2max": 21
      },
      "ages": {
        "chronologicalAge": 70,
        "biologicalAge": 73,
        "performanceAge": 75,
        "fitnessAge": 76,
        "recoveryAge": 71,
        "stressAge": 66
      },
      "risks": {
        "cardiovascular": { "band": "moderate", "pct": 12.8 },
        "stroke": { "band": "moderate", "pct": 6.3 },
        "diabetes": { "band": "low", "pct": 4.1 },
        "sleepApnea": { "band": "low", "pct": 18 }
      },
      "goal": { "name": "Walk 5,000 steps pain-free daily and reach 25 sit-to-stands by autumn", "progressPct": 47 },
      "trends": {
        "recovery7d": [56, 60, 62, 63, 65, 66, 64],
        "recovery30dAvg": 58,
        "hrv7d": [25, 27, 28, 30, 29, 31, 29],
        "hrv30dAvg": 26,
        "sleepHrs7d": [6.8, 7.0, 7.3, 6.9, 7.2, 7.4, 7.1],
        "restingHr7d": [73, 72, 72, 70, 71, 70, 71],
        "steps7d": [2800, 3100, 3400, 3300, 3800, 4000, 3600],
        "stress7d": [40, 38, 36, 35, 34, 33, 35]
      },
      "planAdherence": { "trainingPct": 82, "sleepPct": 79, "nutritionPct": 71, "overallPct": 77 },
      "historyNote": "11 weeks post right-hip arthroplasty. Cleared by surgeon for progressive loading; PT twice weekly. Recovery and step count both trending up — the win is graded progression and protein for muscle, with explicit fall-risk caution and no impact work yet. Low VO2max and low muscle mass are the levers, not weight."
    },
    {
      "id": "twin-04",
      "firstName": "Kai",
      "age": 27,
      "sex": "male",
      "mission": "PR my marathon under 2:45 this autumn.",
      "archetype": "Endurance athlete overreaching — fitness is climbing but recovery is cracking. Classic red-flag-in-the-green-uniform.",
      "biometrics": {
        "recovery": 38,
        "recoveryDelta": -19,
        "hrv": 54,
        "hrvBaseline": 79,
        "sleepHrs": 6.4,
        "efficiency": 81,
        "restingHr": 46,
        "steps": 14800,
        "stepsTarget": 12000,
        "stressLevel": 58,
        "stressTrend": "up",
        "weightTrendKg": -1.6,
        "bodyFatPct": 9.2,
        "vo2max": 63
      },
      "ages": {
        "chronologicalAge": 27,
        "biologicalAge": 24,
        "performanceAge": 22,
        "fitnessAge": 20,
        "recoveryAge": 31,
        "stressAge": 30
      },
      "risks": {
        "cardiovascular": { "band": "low", "pct": 0.3 },
        "stroke": { "band": "low", "pct": 0.1 },
        "diabetes": { "band": "low", "pct": 0.6 },
        "sleepApnea": { "band": "low", "pct": 3 }
      },
      "goal": { "name": "Sub-2:45 marathon — peak in 9 weeks", "progressPct": 71 },
      "trends": {
        "recovery7d": [57, 52, 48, 44, 41, 39, 38],
        "recovery30dAvg": 55,
        "hrv7d": [72, 68, 64, 60, 57, 55, 54],
        "hrv30dAvg": 77,
        "sleepHrs7d": [6.9, 6.6, 6.5, 6.2, 6.4, 6.1, 6.4],
        "restingHr7d": [43, 44, 45, 46, 47, 47, 46],
        "steps7d": [16200, 15400, 14900, 13800, 15600, 14100, 14800],
        "stress7d": [48, 52, 55, 59, 61, 57, 58]
      },
      "planAdherence": { "trainingPct": 99, "sleepPct": 62, "nutritionPct": 68, "overallPct": 76 },
      "historyNote": "Three consecutive high-volume weeks with no down week. HRV has dropped 25ms off baseline while resting HR ticked up 3bpm and weight fell 1.6kg — functional overreaching tipping toward non-functional. Training adherence is 99% and sleep is 62%, which is the whole problem. The coaching tension: he wants to push; the data says absorb. Energy-availability and under-fueling are live."
    },
    {
      "id": "twin-05",
      "firstName": "Tom",
      "age": 45,
      "sex": "male",
      "mission": "Get off the couch, drop the gut, and keep up with my kids without getting winded.",
      "archetype": "Sedentary improver — out of shape but newly motivated and trending the right way. The encouragement-needs-honesty twin.",
      "biometrics": {
        "recovery": 60,
        "recoveryDelta": 3,
        "hrv": 38,
        "hrvBaseline": 34,
        "sleepHrs": 6.8,
        "efficiency": 85,
        "restingHr": 64,
        "steps": 7100,
        "stepsTarget": 8000,
        "stressLevel": 47,
        "stressTrend": "down",
        "weightTrendKg": -1.1,
        "bodyFatPct": 30.6,
        "vo2max": 29
      },
      "ages": {
        "chronologicalAge": 45,
        "biologicalAge": 50,
        "performanceAge": 53,
        "fitnessAge": 54,
        "recoveryAge": 49,
        "stressAge": 48
      },
      "risks": {
        "cardiovascular": { "band": "moderate", "pct": 8.9 },
        "stroke": { "band": "low", "pct": 2.2 },
        "diabetes": { "band": "high", "pct": 14.7 },
        "sleepApnea": { "band": "moderate", "pct": 42 }
      },
      "goal": { "name": "Lose 6kg and hit 8,000 steps daily for 60 straight days", "progressPct": 33 },
      "trends": {
        "recovery7d": [55, 57, 58, 59, 61, 62, 60],
        "recovery30dAvg": 54,
        "hrv7d": [33, 35, 36, 37, 39, 40, 38],
        "hrv30dAvg": 34,
        "sleepHrs7d": [6.4, 6.6, 6.9, 7.0, 6.7, 7.1, 6.8],
        "restingHr7d": [67, 66, 65, 64, 64, 63, 64],
        "steps7d": [5400, 6200, 6800, 7400, 7000, 7900, 7100],
        "stress7d": [52, 50, 49, 47, 48, 46, 47]
      },
      "planAdherence": { "trainingPct": 68, "sleepPct": 74, "nutritionPct": 61, "overallPct": 68 },
      "historyNote": "Week 5 of a fresh start after a scary GP visit (fasting glucose flagged borderline). Every line is bending the right way — steps up 1,700, resting HR down 3bpm, 1.1kg off. Diabetes risk is the headline at 14.7% and is the single most modifiable thing he owns. Momentum is fragile; the job is to protect the streak and tie it to that glucose number without fear."
    },
    {
      "id": "twin-06",
      "firstName": "Priya",
      "age": 34,
      "sex": "female",
      "mission": "Get my energy back after baby #2 and feel like an athlete again without burning out.",
      "archetype": "Postpartum return-to-fitness, broken sleep — high motivation, fragmented recovery, easy to over-prescribe.",
      "biometrics": {
        "recovery": 55,
        "recoveryDelta": -6,
        "hrv": 49,
        "hrvBaseline": 58,
        "sleepHrs": 5.9,
        "efficiency": 76,
        "restingHr": 61,
        "steps": 6700,
        "stepsTarget": 9000,
        "stressLevel": 52,
        "stressTrend": "flat",
        "weightTrendKg": -0.7,
        "bodyFatPct": 27.8,
        "vo2max": 38
      },
      "ages": {
        "chronologicalAge": 34,
        "biologicalAge": 33,
        "performanceAge": 35,
        "fitnessAge": 34,
        "recoveryAge": 39,
        "stressAge": 36
      },
      "risks": {
        "cardiovascular": { "band": "low", "pct": 0.9 },
        "stroke": { "band": "low", "pct": 0.3 },
        "diabetes": { "band": "low", "pct": 2.4 },
        "sleepApnea": { "band": "low", "pct": 8 }
      },
      "goal": { "name": "Rebuild to a continuous 5km run by 16 weeks postpartum", "progressPct": 40 },
      "trends": {
        "recovery7d": [62, 58, 51, 49, 57, 53, 55],
        "recovery30dAvg": 59,
        "hrv7d": [55, 52, 47, 44, 51, 48, 49],
        "hrv30dAvg": 58,
        "sleepHrs7d": [6.4, 5.2, 4.8, 6.1, 6.6, 5.5, 5.9],
        "restingHr7d": [59, 60, 63, 64, 60, 61, 61],
        "steps7d": [5900, 7100, 6300, 5800, 7600, 7200, 6700],
        "stress7d": [50, 54, 56, 51, 49, 53, 52]
      },
      "planAdherence": { "trainingPct": 73, "sleepPct": 49, "nutritionPct": 80, "overallPct": 67 },
      "historyNote": "14 weeks postpartum, cleared for exercise. Recovery and HRV swing hard night-to-night with the baby's sleep (note the 4.8h night and the recovery dip that follows). The trap is prescribing on a green morning that won't repeat. Sleep is non-modifiable short-term, so the lever is dosing training to last night's actual recovery, not the goal."
    },
    {
      "id": "twin-07",
      "firstName": "Hiro",
      "age": 52,
      "sex": "male",
      "mission": "Reverse my pre-diabetes through lifestyle so I never need medication.",
      "archetype": "Metabolic-risk midlifer making real progress — glucose-focused, nutrition is the lead lever.",
      "biometrics": {
        "recovery": 67,
        "recoveryDelta": 5,
        "hrv": 41,
        "hrvBaseline": 36,
        "sleepHrs": 7.0,
        "efficiency": 87,
        "restingHr": 58,
        "steps": 9400,
        "stepsTarget": 9000,
        "stressLevel": 39,
        "stressTrend": "down",
        "weightTrendKg": -1.9,
        "bodyFatPct": 26.3,
        "vo2max": 35
      },
      "ages": {
        "chronologicalAge": 52,
        "biologicalAge": 54,
        "performanceAge": 53,
        "fitnessAge": 52,
        "recoveryAge": 51,
        "stressAge": 48
      },
      "risks": {
        "cardiovascular": { "band": "moderate", "pct": 9.7 },
        "stroke": { "band": "low", "pct": 3.1 },
        "diabetes": { "band": "high", "pct": 21.3 },
        "sleepApnea": { "band": "moderate", "pct": 38 }
      },
      "goal": { "name": "Drop diabetes 10-yr risk from 21% to under 12% in 9 months", "progressPct": 54 },
      "trends": {
        "recovery7d": [61, 63, 65, 64, 66, 68, 67],
        "recovery30dAvg": 60,
        "hrv7d": [36, 38, 39, 40, 42, 43, 41],
        "hrv30dAvg": 36,
        "sleepHrs7d": [6.8, 7.1, 6.9, 7.2, 7.0, 7.3, 7.0],
        "restingHr7d": [61, 60, 59, 59, 58, 57, 58],
        "steps7d": [8200, 9100, 9600, 8800, 9900, 10200, 9400],
        "stress7d": [44, 42, 41, 40, 38, 37, 39]
      },
      "planAdherence": { "trainingPct": 79, "sleepPct": 85, "nutritionPct": 88, "overallPct": 84 },
      "historyNote": "Six months into a low-glycemic, post-meal-walk protocol. Down 1.9kg this month and 8kg total; HRV up 5ms, resting HR down 3bpm — autonomic recovery following the metabolic work. Diabetes risk is still 'high' at 21.3% but the trajectory is the story. Bio age remains 2yrs over chrono, dragged by the glucose picture — nutrition timing is the highest-leverage move he has."
    },
    {
      "id": "twin-08",
      "firstName": "Sophie",
      "age": 23,
      "sex": "female",
      "mission": "Sleep like a normal human and stop running on caffeine and anxiety through finals.",
      "archetype": "Young, anxious, sleep-deprived student — physically low-risk but a recovery/mind and circadian mess.",
      "biometrics": {
        "recovery": 44,
        "recoveryDelta": -8,
        "hrv": 62,
        "hrvBaseline": 71,
        "sleepHrs": 5.3,
        "efficiency": 72,
        "restingHr": 63,
        "steps": 5200,
        "stepsTarget": 8000,
        "stressLevel": 78,
        "stressTrend": "up",
        "weightTrendKg": 0.5,
        "bodyFatPct": 24.9,
        "vo2max": 41
      },
      "ages": {
        "chronologicalAge": 23,
        "biologicalAge": 25,
        "performanceAge": 24,
        "fitnessAge": 23,
        "recoveryAge": 31,
        "stressAge": 34
      },
      "risks": {
        "cardiovascular": { "band": "low", "pct": 0.2 },
        "stroke": { "band": "low", "pct": 0.1 },
        "diabetes": { "band": "low", "pct": 0.5 },
        "sleepApnea": { "band": "low", "pct": 2 }
      },
      "goal": { "name": "Get to 7h sleep with 85% efficiency, 5 nights a week", "progressPct": 22 },
      "trends": {
        "recovery7d": [52, 49, 45, 40, 38, 47, 44],
        "recovery30dAvg": 51,
        "hrv7d": [69, 66, 63, 58, 55, 64, 62],
        "hrv30dAvg": 71,
        "sleepHrs7d": [6.1, 5.4, 4.9, 4.2, 4.6, 6.0, 5.3],
        "restingHr7d": [60, 61, 64, 66, 67, 62, 63],
        "steps7d": [6100, 5400, 4800, 3900, 4600, 6200, 5200],
        "stress7d": [70, 74, 79, 84, 86, 75, 78]
      },
      "planAdherence": { "trainingPct": 51, "sleepPct": 33, "nutritionPct": 58, "overallPct": 47 },
      "historyNote": "Mid-finals. Bedtime has drifted past 2am with late-night caffeine; sleep efficiency at 72% and stress at 78 are the drivers, not training. HRV is high in absolute terms (young) but down 9ms off her own baseline — the personalized read is the delta, not the raw value. Recovery age (31) sits 8yrs over chrono, entirely a sleep/stress artefact that's fully reversible."
    },
    {
      "id": "twin-09",
      "firstName": "Greg",
      "age": 63,
      "sex": "male",
      "mission": "Keep golfing, traveling, and stay heart-healthy after my brother's bypass scared me.",
      "archetype": "Active-but-cardiac-risk retiree — feels fine, numbers say watch the heart. The 'route to doctor warmly' twin.",
      "biometrics": {
        "recovery": 71,
        "recoveryDelta": 2,
        "hrv": 34,
        "hrvBaseline": 33,
        "sleepHrs": 7.3,
        "efficiency": 88,
        "restingHr": 69,
        "steps": 8600,
        "stepsTarget": 8000,
        "stressLevel": 33,
        "stressTrend": "flat",
        "weightTrendKg": 0.1,
        "bodyFatPct": 25.7,
        "vo2max": 28
      },
      "ages": {
        "chronologicalAge": 63,
        "biologicalAge": 66,
        "performanceAge": 64,
        "fitnessAge": 65,
        "recoveryAge": 62,
        "stressAge": 59
      },
      "risks": {
        "cardiovascular": { "band": "high", "pct": 22.4 },
        "stroke": { "band": "moderate", "pct": 8.8 },
        "diabetes": { "band": "moderate", "pct": 7.6 },
        "sleepApnea": { "band": "moderate", "pct": 34 }
      },
      "goal": { "name": "Bring cardiovascular 10-yr risk from 22% toward 15% in a year", "progressPct": 19 },
      "trends": {
        "recovery7d": [69, 70, 72, 71, 73, 70, 71],
        "recovery30dAvg": 69,
        "hrv7d": [33, 34, 32, 35, 34, 33, 34],
        "hrv30dAvg": 33,
        "sleepHrs7d": [7.1, 7.4, 7.2, 7.5, 7.0, 7.4, 7.3],
        "restingHr7d": [68, 69, 70, 68, 69, 70, 69],
        "steps7d": [8100, 9200, 7800, 8900, 8400, 9000, 8600],
        "stress7d": [34, 32, 33, 35, 31, 33, 33]
      },
      "planAdherence": { "trainingPct": 80, "sleepPct": 86, "nutritionPct": 70, "overallPct": 79 },
      "historyNote": "Feels great, plays golf 4x/week, walks daily — but QRISK3 puts 10-yr cardiovascular risk at 22.4% (family history + age + the risk-factor profile). The coaching challenge is that his recovery/sleep look fine, so nothing 'feels' wrong; the risk lives in numbers he can't perceive. Zone 2 aerobic base (VO2max 28 is the soft spot) plus a warm physician referral for the cardiovascular picture is the playbook."
    },
    {
      "id": "twin-10",
      "firstName": "Yuki",
      "age": 48,
      "sex": "female",
      "mission": "Navigate perimenopause without losing my fitness, my sleep, or my mind.",
      "archetype": "Perimenopausal recompositioning — body-comp drifting, sleep disrupted, training intact but recovery wobbly.",
      "biometrics": {
        "recovery": 58,
        "recoveryDelta": -4,
        "hrv": 44,
        "hrvBaseline": 50,
        "sleepHrs": 6.2,
        "efficiency": 80,
        "restingHr": 60,
        "steps": 8900,
        "stepsTarget": 9000,
        "stressLevel": 49,
        "stressTrend": "up",
        "weightTrendKg": 0.6,
        "bodyFatPct": 29.4,
        "vo2max": 36
      },
      "ages": {
        "chronologicalAge": 48,
        "biologicalAge": 49,
        "performanceAge": 47,
        "fitnessAge": 46,
        "recoveryAge": 52,
        "stressAge": 50
      },
      "risks": {
        "cardiovascular": { "band": "low", "pct": 3.4 },
        "stroke": { "band": "low", "pct": 1.6 },
        "diabetes": { "band": "moderate", "pct": 6.8 },
        "sleepApnea": { "band": "low", "pct": 14 }
      },
      "goal": { "name": "Hold body fat under 30% and add lean mass through strength 3x/week", "progressPct": 44 },
      "trends": {
        "recovery7d": [63, 60, 56, 54, 59, 57, 58],
        "recovery30dAvg": 62,
        "hrv7d": [49, 47, 43, 41, 46, 44, 44],
        "hrv30dAvg": 50,
        "sleepHrs7d": [6.6, 5.8, 5.4, 6.0, 6.5, 6.1, 6.2],
        "restingHr7d": [58, 59, 62, 63, 59, 60, 60],
        "steps7d": [8400, 9300, 8100, 9600, 8800, 9200, 8900],
        "stress7d": [45, 48, 52, 53, 47, 50, 49]
      },
      "planAdherence": { "trainingPct": 86, "sleepPct": 64, "nutritionPct": 77, "overallPct": 76 },
      "historyNote": "Perimenopausal: hot-flash nights (see the 5.4h night) fragment sleep and knock HRV down ~6ms in clusters, then it rebounds. Body fat has crept 1.5% over 90 days with weight up 0.6kg despite strong step count — a recomposition signal pointing at strength and protein, not more cardio. Diabetes risk edging into moderate. Training adherence is high; recovery is the wobble to manage around the cycle."
    }
  ]
}
