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
- 01Pull upstream feedsWeather, vegetation, drought monitor, fire detections, and grid load from authoritative sources. Cached with TTLs that match each feed's update cadence.
- 02Compute features per regionVPD, dry-day counts, soil moisture, wind anomalies, grid load deviation, drought category: about 40 features per component model.
- 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.
- 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.
- 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