{
  "_comment": "Bloodwork, transcribed from lab PDFs. Add a panel each time you get results, commit, push \u2014 Netlify redeploys and the timeline picks it up. Each marker's what/high/low text is what the info icon on its card shows; delete any marker you don't track and the site stops rendering it. The shaded band on each chart is the lab's own reference range from the most recent panel, except LDL, where the widely used desirable threshold of 100 is shaded instead of the lab's 130. Nothing here is medical advice \u2014 it is background for a conversation with a doctor.",
  "markers": {
    "cholesterol": {
      "label": "Total cholesterol",
      "units": "mg/dL",
      "optimal": [
        0,
        200
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "Every cholesterol particle in the blood added together \u2014 LDL, HDL and the rest. Useful as a headline, poor as a verdict, because it lumps the particle that causes plaque in with the one that clears it.",
      "high": "High total cholesterol driven by LDL raises cardiovascular risk over decades. High total driven by unusually high HDL means something quite different, which is why the split below matters more than this line.",
      "low": "Very low total cholesterol is rarely a target in itself and can point to malabsorption, hyperthyroidism or liver disease."
    },
    "ldl": {
      "label": "LDL cholesterol",
      "units": "mg/dL",
      "optimal": [
        0,
        100
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "The cholesterol-carrying particle that deposits into artery walls, and the number most cardiovascular risk models are built on. The band shaded here is the widely used desirable threshold of 100; the lab's own flag sat at 130.",
      "high": "Higher LDL drives atherosclerotic plaque, and the damage is cumulative \u2014 years spent elevated matter far more than any single reading.",
      "low": "Very low LDL is generally not a problem and is the explicit target of lipid-lowering therapy."
    },
    "hdl": {
      "label": "HDL cholesterol",
      "units": "mg/dL",
      "optimal": [
        40,
        100
      ],
      "better": "higher",
      "group": "Lipids",
      "system": "heart",
      "what": "The particle that carries cholesterol away from tissue and back to the liver.",
      "high": "Very high HDL is not protective in the way it was once assumed. Above roughly 90 mg/dL the association with benefit flattens, and in some studies reverses.",
      "low": "Low HDL tracks with insulin resistance and higher cardiovascular risk. It responds to exercise and weight loss considerably more than to diet."
    },
    "nonHdl": {
      "label": "Non-HDL cholesterol",
      "units": "mg/dL",
      "optimal": [
        0,
        130
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "Total cholesterol minus HDL \u2014 everything left that can deposit into an artery wall. A better single number than LDL alone, and it does not require fasting.",
      "high": "Elevated non-HDL means more plaque-forming particles in circulation, regardless of how the LDL calculation came out.",
      "low": "Low non-HDL is the direction of travel for anyone managing cardiovascular risk."
    },
    "triglycerides": {
      "label": "Triglycerides",
      "units": "mg/dL",
      "optimal": [
        0,
        150
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "metabolic",
      "what": "Fat circulating in the blood. Reads more as a metabolic marker than a cholesterol one, and it swings with what you ate and drank in the days before the draw.",
      "high": "Persistently high triglycerides track with insulin resistance and fatty liver. Very high levels are a pancreatitis risk in their own right.",
      "low": "Low triglycerides are generally a good sign and rarely a concern on their own."
    },
    "apob": {
      "label": "Apolipoprotein B",
      "units": "mg/dL",
      "optimal": [
        0,
        90
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "A direct count of the plaque-forming particles, since every one of them carries exactly one ApoB molecule. Where LDL estimates how much cholesterol is being carried, this counts the vehicles.",
      "high": "The best single predictor of cardiovascular risk in this panel. When ApoB and LDL disagree, the evidence favors ApoB.",
      "low": "Low ApoB means few plaque-forming particles, which is the point."
    },
    "cholHdlRatio": {
      "label": "Cholesterol / HDL ratio",
      "units": "ratio",
      "optimal": [
        0,
        5
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "Total cholesterol divided by HDL. A crude but durable summary of how the lipid panel is balanced.",
      "high": "A high ratio means the plaque-forming side outweighs the clearing side.",
      "low": "A low ratio is favorable, though ApoB is the more informative number now that it is routinely measured."
    },
    "lpa": {
      "label": "Lipoprotein(a)",
      "units": "nmol/L",
      "optimal": [
        0,
        75
      ],
      "better": "lower",
      "group": "Lipids",
      "system": "heart",
      "what": "An inherited, largely fixed cardiovascular risk factor. Diet and exercise barely move it, which is why it is normally measured once rather than tracked. Both readings came back as <10 \u2014 below the assay's reporting floor \u2014 so the plotted value is that floor, not a measurement.",
      "high": "High Lp(a) raises cardiovascular risk independently of LDL and is a reason to be more aggressive about everything else in this panel.",
      "low": "Low Lp(a) removes one inherited risk factor from the picture. It is genetic, so it will stay low."
    },
    "a1c": {
      "label": "Hemoglobin A1c",
      "units": "%",
      "optimal": [
        0,
        5.7
      ],
      "better": "lower",
      "group": "Metabolic",
      "system": "metabolic",
      "what": "An average of blood sugar over roughly the previous three months, read from how much glucose has stuck to haemoglobin. Immune to what you ate that morning.",
      "high": "Rising A1c is the earliest routine signal of insulin resistance, years before fasting glucose moves.",
      "low": "Low A1c is normal. Unusually low values can reflect a short red-cell lifespan rather than low blood sugar."
    },
    "fastingGlucose": {
      "label": "Fasting glucose",
      "units": "mg/dL",
      "optimal": [
        65,
        99
      ],
      "better": "lower",
      "group": "Metabolic",
      "system": "metabolic",
      "what": "Blood sugar after an overnight fast. A single snapshot, and a noisier one than A1c \u2014 poor sleep or stress the night before will move it.",
      "high": "Repeatedly elevated fasting glucose points toward insulin resistance. One high reading points toward the morning it was taken.",
      "low": "Low fasting glucose is usually benign in someone who feels fine."
    },
    "alt": {
      "label": "ALT",
      "units": "U/L",
      "optimal": [
        9,
        46
      ],
      "better": "lower",
      "group": "Liver",
      "system": "liver",
      "what": "A liver enzyme that leaks into the blood when liver cells are stressed. The more liver-specific of the two transaminases.",
      "high": "Elevated ALT most often reflects fatty liver, alcohol, or a recent hard workout. Persistent elevation is worth investigating.",
      "low": "Low ALT is not a problem."
    },
    "ast": {
      "label": "AST",
      "units": "U/L",
      "optimal": [
        10,
        40
      ],
      "better": "lower",
      "group": "Liver",
      "system": "liver",
      "what": "The other transaminase. Less liver-specific than ALT \u2014 it also lives in muscle, so intense exercise before a draw raises it without anything being wrong with the liver.",
      "high": "Elevated AST with a normal ALT usually points at muscle rather than liver, especially in someone who trains.",
      "low": "Low AST is not a problem."
    },
    "alkPhos": {
      "label": "Alkaline phosphatase",
      "units": "U/L",
      "optimal": [
        36,
        130
      ],
      "better": "lower",
      "group": "Liver",
      "system": "liver",
      "what": "An enzyme from the liver's bile ducts and from bone.",
      "high": "High alkaline phosphatase points at bile flow or bone turnover, and the other liver markers usually say which.",
      "low": "Low alkaline phosphatase is uncommon and can accompany zinc deficiency or low thyroid function."
    },
    "bilirubin": {
      "label": "Total bilirubin",
      "units": "mg/dL",
      "optimal": [
        0.2,
        1.2
      ],
      "better": "lower",
      "group": "Liver",
      "system": "liver",
      "what": "The pigment left over when red blood cells are broken down, cleared by the liver. It is what makes bruises yellow on the way out.",
      "high": "Mildly raised bilirubin with entirely normal liver enzymes is the classic pattern of Gilbert's syndrome \u2014 a common, harmless inherited variation in how fast the liver conjugates it. It rises with fasting, illness and hard exercise, which is why the value on a fasted morning draw runs higher.",
      "low": "Low bilirubin is not a concern."
    },
    "ggt": {
      "label": "Gamma-GT",
      "units": "U/L",
      "optimal": [
        3,
        90
      ],
      "better": "lower",
      "group": "Liver",
      "system": "liver",
      "what": "A bile-duct enzyme, and the marker most sensitive to alcohol. Its main use is telling apart the causes of a raised alkaline phosphatase.",
      "high": "High GGT points at alcohol or bile flow. It is the single most alcohol-sensitive number in a standard panel.",
      "low": "Low GGT is a good sign and needs no explanation."
    },
    "albumin": {
      "label": "Albumin",
      "units": "g/dL",
      "optimal": [
        3.6,
        5.1
      ],
      "better": "higher",
      "group": "Liver",
      "system": "liver",
      "what": "The main protein the liver makes, and the one that keeps fluid inside blood vessels. A broad marker of liver synthesis and nutritional status.",
      "high": "High albumin usually means dehydration at the time of the draw rather than anything about the liver.",
      "low": "Low albumin can reflect liver disease, kidney loss, inflammation or malnutrition, and is worth taking seriously."
    },
    "totalProtein": {
      "label": "Total protein",
      "units": "g/dL",
      "optimal": [
        6.1,
        8.1
      ],
      "better": "higher",
      "group": "Liver",
      "system": "liver",
      "what": "Albumin plus all the globulins \u2014 the total protein content of blood serum.",
      "high": "High total protein can reflect dehydration or, less commonly, an excess of immune proteins worth following up.",
      "low": "Low total protein accompanies the same causes as low albumin."
    },
    "creatinine": {
      "label": "Creatinine",
      "units": "mg/dL",
      "optimal": [
        0.6,
        1.26
      ],
      "better": "lower",
      "group": "Kidneys",
      "system": "kidney",
      "what": "A waste product of muscle metabolism that the kidneys filter out, used as a proxy for kidney function. The proxy has one large assumption behind it: that the amount of muscle producing it is average.",
      "high": "<strong>I take 7.5 g of creatine daily.</strong> That alone is expected to raise serum creatinine \u2014 creatine breaks down into creatinine at a roughly fixed daily rate, so supplementing raises the number without the kidneys doing anything differently. Published studies put the effect somewhere in the region of 0.1\u20130.3 mg/dL, which spans the entire distance between my readings and the top of the reference range. Heavy training, high muscle mass, a high-protein diet and a dehydrated fasted morning all push the same direction. None of that rules out reduced filtration \u2014 it just means this number cannot distinguish between the two. Cystatin C can, because it is not produced by muscle and is unaffected by creatine.",
      "low": "Low creatinine usually reflects low muscle mass."
    },
    "egfr": {
      "label": "eGFR",
      "units": "mL/min",
      "optimal": [
        60,
        120
      ],
      "better": "higher",
      "group": "Kidneys",
      "system": "kidney",
      "what": "An estimate of how fast the kidneys are filtering, in mL/min normalized to a standard body surface area, calculated from creatinine, age and sex. Estimated is the operative word \u2014 it inherits every one of creatinine's assumptions, including that you have an average amount of muscle.",
      "high": "A high eGFR is not a concern.",
      "low": "A falling eGFR is the number to watch \u2014 but it is calculated <em>from</em> creatinine, so it inherits every reason creatinine might be high for non-kidney reasons, including the 7.5 g of creatine I take daily. An eGFR derived from cystatin C instead would settle it. Below 60 sustained for three months is the threshold that prompts investigation."
    },
    "bun": {
      "label": "Blood urea nitrogen",
      "units": "mg/dL",
      "optimal": [
        7,
        25
      ],
      "better": "lower",
      "group": "Kidneys",
      "system": "kidney",
      "what": "Urea in the blood \u2014 the nitrogen left over from breaking down protein, cleared by the kidneys.",
      "high": "High BUN tracks with high protein intake and dehydration at least as often as with kidney function. I eat a lot of protein, which is the boring explanation and probably the right one. Read it alongside creatinine rather than alone.",
      "low": "Low BUN can reflect low protein intake or liver disease."
    },
    "tsh": {
      "label": "TSH",
      "units": "mcIU/mL",
      "optimal": [
        0.4,
        4.5
      ],
      "better": "lower",
      "group": "Hormones",
      "system": "hormones",
      "what": "The pituitary's instruction to the thyroid. It moves opposite to thyroid output: when thyroid hormone is low, TSH rises to demand more.",
      "high": "High TSH means the pituitary is pushing hard, the classic sign of an underactive thyroid.",
      "low": "Low TSH suggests the thyroid is running ahead of demand \u2014 an overactive thyroid."
    },
    "testosterone": {
      "label": "Testosterone, total",
      "units": "ng/dL",
      "optimal": [
        250,
        1100
      ],
      "better": "higher",
      "group": "Hormones",
      "system": "hormones",
      "what": "All the testosterone in circulation, most of it bound to carrier proteins and not immediately usable. It varies by time of day, so morning draws are the only ones worth comparing.",
      "high": "High total testosterone in someone not supplementing is uncommon and worth a conversation.",
      "low": "Low testosterone tracks with poor sleep, overtraining, excess body fat and age. The reference range is very wide, so the trend matters more than the position within it."
    },
    "testosteroneFree": {
      "label": "Testosterone, free",
      "units": "pg/mL",
      "optimal": [
        46,
        224
      ],
      "better": "higher",
      "group": "Hormones",
      "system": "hormones",
      "what": "The fraction not bound to carrier proteins \u2014 the part actually available to tissue. Often the more useful of the two numbers.",
      "high": "High free testosterone is uncommon without supplementation.",
      "low": "Free testosterone can be low while total looks fine, if carrier protein is high. That is exactly the case measuring both is meant to catch."
    },
    "wbc": {
      "label": "White blood cells",
      "units": "K/mcL",
      "optimal": [
        3.8,
        10.8
      ],
      "better": "lower",
      "group": "Blood count",
      "system": "blood",
      "what": "The immune system's cell count. A broad, non-specific readout of whether the body is fighting something.",
      "high": "High white cells usually mean an active infection or inflammation. Persistent elevation without an obvious cause needs investigating.",
      "low": "Low white cells can follow a viral illness, or reflect a longer-standing issue with bone marrow production."
    },
    "rbc": {
      "label": "Red blood cells",
      "units": "M/mcL",
      "optimal": [
        4.2,
        5.8
      ],
      "better": "higher",
      "group": "Blood count",
      "system": "blood",
      "what": "The count of oxygen-carrying cells.",
      "high": "High red cell counts can reflect dehydration, altitude, sleep apnoea or a marrow disorder.",
      "low": "Low red cell counts are anaemia, and the cell-size markers below usually indicate the cause."
    },
    "hemoglobin": {
      "label": "Hemoglobin",
      "units": "g/dL",
      "optimal": [
        13.2,
        17.1
      ],
      "better": "higher",
      "group": "Blood count",
      "system": "blood",
      "what": "The protein inside red cells that actually carries the oxygen. The number that defines anaemia.",
      "high": "High haemoglobin most often means dehydration on the day, or a sustained response to low oxygen availability.",
      "low": "Low haemoglobin is anaemia \u2014 commonly iron deficiency, blood loss or chronic inflammation."
    },
    "hematocrit": {
      "label": "Hematocrit",
      "units": "%",
      "optimal": [
        38.5,
        50.0
      ],
      "better": "higher",
      "group": "Blood count",
      "system": "blood",
      "what": "The proportion of blood volume made up of red cells. Moves in step with haemoglobin.",
      "high": "High haematocrit thickens the blood. Endurance athletes run high; so do people who are dehydrated.",
      "low": "Low haematocrit accompanies anaemia."
    },
    "platelets": {
      "label": "Platelets",
      "units": "K/mcL",
      "optimal": [
        140,
        400
      ],
      "better": "lower",
      "group": "Blood count",
      "system": "blood",
      "what": "The cells that form clots.",
      "high": "High platelet counts often follow inflammation or infection and settle afterwards.",
      "low": "Low platelets raise bleeding risk and warrant a repeat before anyone reads much into a single value."
    },
    "mcv": {
      "label": "MCV",
      "units": "fL",
      "optimal": [
        80,
        100
      ],
      "better": "lower",
      "group": "Blood count",
      "system": "blood",
      "what": "The average size of a red blood cell. Its value is diagnostic rather than absolute: it points at *why* a count is off.",
      "high": "Large red cells point toward B12 or folate deficiency, alcohol, or thyroid problems.",
      "low": "Small red cells point toward iron deficiency or an inherited haemoglobin variant."
    },
    "rdw": {
      "label": "RDW",
      "units": "%",
      "optimal": [
        11.0,
        15.0
      ],
      "better": "lower",
      "group": "Blood count",
      "system": "blood",
      "what": "How much red blood cell sizes vary from each other. A rising RDW is often the earliest sign that something is disrupting red cell production.",
      "high": "High RDW means the cells are an inconsistent mix of sizes, which typically precedes an obvious anaemia.",
      "low": "Low RDW means uniform cells and needs no explanation."
    },
    "calcium": {
      "label": "Calcium",
      "units": "mg/dL",
      "optimal": [
        8.6,
        10.3
      ],
      "better": "lower",
      "group": "Electrolytes & minerals",
      "system": "muscle",
      "what": "Blood calcium, held in an extremely tight range by the parathyroid glands. It reflects that regulation, not how much calcium is in your bones or your diet.",
      "high": "High calcium is worth following up \u2014 the usual causes are parathyroid overactivity or excess vitamin D.",
      "low": "Low calcium can cause muscle cramps and tingling, and often accompanies low vitamin D or magnesium."
    },
    "sodium": {
      "label": "Sodium",
      "units": "mmol/L",
      "optimal": [
        135,
        146
      ],
      "better": "lower",
      "group": "Electrolytes & minerals",
      "system": "kidney",
      "what": "The main electrolyte outside cells, and the number that governs how much water the body holds.",
      "high": "High sodium generally means dehydration rather than eating too much salt.",
      "low": "Low sodium can follow overhydration during long endurance efforts, and matters more the faster it drops."
    },
    "potassium": {
      "label": "Potassium",
      "units": "mmol/L",
      "optimal": [
        3.5,
        5.3
      ],
      "better": "lower",
      "group": "Electrolytes & minerals",
      "system": "heart",
      "what": "The main electrolyte inside cells, and the one the heart's rhythm is most sensitive to.",
      "high": "High potassium can affect heart rhythm. It is also the most common lab artefact in this panel \u2014 cells damaged in the tube release potassium and fake a high result.",
      "low": "Low potassium causes weakness and cramping and can disturb heart rhythm."
    },
    "bicarbonate": {
      "label": "Bicarbonate",
      "units": "mmol/L",
      "optimal": [
        20,
        32
      ],
      "better": "lower",
      "group": "Electrolytes & minerals",
      "system": "kidney",
      "what": "The blood's main buffer, and a readout of overall acid\u2013base balance.",
      "high": "High bicarbonate can follow vomiting, diuretics or chronic breathing problems.",
      "low": "Low bicarbonate means acid is accumulating \u2014 from kidney function, uncontrolled diabetes or severe diarrhoea."
    }
  },
  "panels": [
    {
      "date": "2023-09-21",
      "source": "Prior lab (not named in the export)",
      "note": "Different lab, so several reference ranges differ from the two panels after it.",
      "results": {
        "cholesterol": 224,
        "ldl": 137,
        "hdl": 59,
        "nonHdl": 165,
        "triglycerides": 141,
        "cholHdlRatio": 3.8,
        "a1c": 5.1,
        "fastingGlucose": 100,
        "alt": 53,
        "ast": 50,
        "alkPhos": 58,
        "bilirubin": 1.5,
        "albumin": 4.8,
        "totalProtein": 7.4,
        "creatinine": 1.2,
        "egfr": 81,
        "bun": 26,
        "tsh": 1.51,
        "testosterone": 536,
        "wbc": 6.12,
        "rbc": 4.85,
        "hemoglobin": 14.8,
        "hematocrit": 44.7,
        "platelets": 244,
        "mcv": 92.2,
        "rdw": 12.1,
        "calcium": 9.9,
        "sodium": 140,
        "potassium": 4.9,
        "bicarbonate": 27
      }
    },
    {
      "date": "2024-11-11",
      "source": "Quest Diagnostics",
      "note": "First panel with ApoB and Lp(a) added.",
      "results": {
        "cholesterol": 198,
        "ldl": 108,
        "hdl": 71,
        "nonHdl": 127,
        "triglycerides": 96,
        "apob": 83,
        "cholHdlRatio": 2.8,
        "lpa": 10,
        "a1c": 5.3,
        "fastingGlucose": 97,
        "alt": 26,
        "ast": 29,
        "alkPhos": 46,
        "bilirubin": 2.3,
        "ggt": 34,
        "albumin": 4.7,
        "totalProtein": 7.0,
        "creatinine": 1.31,
        "egfr": 73,
        "bun": 25,
        "tsh": 0.99,
        "testosterone": 543,
        "testosteroneFree": 94.3,
        "wbc": 4.4,
        "rbc": 4.78,
        "hemoglobin": 14.7,
        "hematocrit": 44.5,
        "platelets": 221,
        "mcv": 93.1,
        "rdw": 11.9,
        "calcium": 9.8,
        "sodium": 138,
        "potassium": 4.4,
        "bicarbonate": 28
      }
    },
    {
      "date": "2025-11-13",
      "source": "Quest Diagnostics",
      "note": "Most recent. Creatinine, eGFR and BUN all read against a daily 7.5 g creatine habit \u2014 see the note on each.",
      "results": {
        "cholesterol": 181,
        "ldl": 94,
        "hdl": 64,
        "nonHdl": 117,
        "triglycerides": 126,
        "apob": 80,
        "cholHdlRatio": 2.8,
        "lpa": 10,
        "a1c": 5.1,
        "fastingGlucose": 96,
        "alt": 23,
        "ast": 24,
        "alkPhos": 47,
        "bilirubin": 1.4,
        "albumin": 4.8,
        "totalProtein": 7.1,
        "creatinine": 1.33,
        "egfr": 71,
        "bun": 30,
        "tsh": 1.61,
        "testosterone": 593,
        "testosteroneFree": 98.5,
        "wbc": 5.5,
        "rbc": 4.85,
        "hemoglobin": 15.0,
        "hematocrit": 45.7,
        "platelets": 249,
        "mcv": 94.2,
        "rdw": 12.2,
        "calcium": 10.1,
        "sodium": 137,
        "potassium": 4.7,
        "bicarbonate": 27
      }
    }
  ]
}