{
  "report_rows": [
    {
      "kpi": "Total revenue (Q2'26)",
      "prediction": "BEAT",
      "answer": "pred ~$3.28B vs. cons $3.23B",
      "confidence": "MEDIUM"
    },
    {
      "kpi": "Non-GAAP EPS (Q2'26)",
      "prediction": "BEAT",
      "answer": "pred ~$5.00 vs. cons $4.85",
      "confidence": "MEDIUM"
    },
    {
      "kpi": "JOURNAVX (suzetrigine) revenue",
      "prediction": "MISS",
      "answer": "pred ~$48M vs. cons ~$62M",
      "confidence": "LOW"
    }
  ],
  "guide_rows": [
    {
      "kpi": "FY26 total revenue guide",
      "prediction": "UNCHANGED",
      "answer": "guide ~$12.95-13.1B vs. cons ~$13.0B (FY26, ex-Crinetics until Q3 close)",
      "confidence": "MEDIUM"
    },
    {
      "kpi": "FY26 non-GAAP EPS (Crinetics dilution)",
      "prediction": "LOWER",
      "answer": "guide ~$16.4 vs. cons ~$17.01 (FY26, once Crinetics folds in)",
      "confidence": "LOW"
    },
    {
      "kpi": "FY26 non-CF product revenue target",
      "prediction": "UNCHANGED",
      "answer": "guide ~$500M+ vs. cons ~$500M (FY26)",
      "confidence": "MEDIUM"
    },
    {
      "kpi": "FY26 combined non-GAAP OpEx",
      "prediction": "UNCHANGED",
      "answer": "guide ~$5.65-5.75B vs. cons ~$5.70B (FY26, pre-deal)",
      "confidence": "MEDIUM"
    }
  ],
  "day1_residual_pct": -2.5,
  "day1_confidence": "LOW",
  "day5_residual_pct": -3.5,
  "day5_path": "FOLLOW-THROUGH",
  "day5_rationale": "Headline is a modest beat/reiterate that's largely priced in a range-bound, low-beta (~0.19) name, so the reaction hinges on the JOURNAVX revenue-vs-script gap and Crinetics dilution overhang. A soft JOURNAVX print keeps the 'show-me' H2 inflection unproven and pressures out-period pain-franchise estimates, while Crinetics (accretive only in 2029) drags FY EPS revisions lower \u2014 implicit cuts pull estimates down even after a top-line beat, so an initial dip should modestly follow through rather than reverse. CF durability limits the downside but isn't enough to spark a rebound.",
  "day5_confidence": "LOW"
}