RiskMesh

Quiet seasons deserve honest numbers

RiskMesh is a compound climate-risk forecaster for four California regions. It estimates how fire, grid, and drought will interact over the coming days. The fire and grid components are calibrated model probabilities; the compound score that ranks the regions is a weighted index and is not calibrated; the intervals around every prediction are conformal.

How we hold the numbers

Precise about what is calibrated
The fire and grid component scores are calibrated model probabilities. The compound score is a weighted index over those components: it ranks regions, it is not a probability and it is not calibrated. Prediction intervals are conformal, so their coverage comes from the method rather than from a claim we make about it.
Compound, not single-hazard
Fire, grid stress, and drought interact. RiskMesh trains a separate model for each component, then combines the three into one weighted index that rises when more than one hazard is elevated at the same time. That combined view is the one that matters when it matters.
Explainable, not magic
Every prediction has receipts: which features moved the score, by how much, and what the inputs looked like. SHAP attributions, not vibes.
Honest about novelty
If the inputs look unlike anything the model trained on, the OOD flag fires. The score still renders; you simply know to be skeptical of it.

How it works

  1. 01Pull upstream feedsWeather, vegetation, drought monitor, fire detections, and grid load from authoritative sources. Cached with TTLs that match each feed's update cadence.
  2. 02Compute features per regionVPD, dry-day counts, soil moisture, wind anomalies, grid load deviation, drought category: about 40 features per component model.
  3. 03Score with three component modelsFire, grid, and drought each get their own XGBoost regressor. Conformal residuals from the last few thousand predictions become the interval.
  4. 04Combine into the compound indexThe three component scores are folded into a single weighted index. It is the number that fronts the dashboard, and it is a ranking rather than a calibrated probability.
  5. 05ReceiptsTop-3 SHAP features and raw inputs are stored alongside the score. Anyone can audit any prediction at /receipts/{id}.

Built on open data and open source

Component models
XGBoost · gradient-boosted trees
Compound score
Weighted index over component scores
Intervals
Split conformal · 80% and 90%
OOD
Mahalanobis distance · 99th-pctile cutoff
Explainability
TreeSHAP · per-prediction attributions
Backend
FastAPI · Postgres · Railway
Frontend
Next.js 14 · React 18 · Vercel
Data
NOAA · USDM · FIRMS · EIA · Open-Meteo
Code
Repository withheld

RiskMesh is a research project. Not for emergency response, evacuation, or operational decision-making. Component calibration and interval coverage are checked statistically, not certified.

Back to forecast