Aureon
Global climate risk modelling — wildfire, flood and wind hazard scored over H3 hexagonal grids using ERA5/CMIP6 data and graph neural networks.
Climate risk is becoming a material concern for insurance underwriting, infrastructure planning and corporate disclosure — and the available tools are either too coarse (country-level indices) or too opaque (black-box vendor scores). Aureon is an attempt to build something that is both spatially precise and methodologically transparent.
The spatial foundation is Uber's H3 hexagonal grid system, which tiles the globe at configurable resolutions without the distortion artefacts that plague rectangular grids near the poles. Each hexagonal cell carries physical variables from ERA5 reanalysis data (temperature, precipitation, wind, humidity) and from CMIP6 climate projections, giving both a historical baseline and forward-looking scenario values.
Hazard models
Wildfire uses the Canadian Forest Fire Weather Index system — a physically grounded index derived from temperature, relative humidity, wind and precipitation inputs. The FWI's component indices (FFMC, DMC, DC, ISI, BUI) are computed per-cell per-day and aggregated to seasonal risk scores.
Flood and wind hazard use graph neural networks trained on historical event data. The H3 grid naturally forms a spatial graph — cells are nodes, adjacency edges carry geographic relationships — and GNNs learn spatial autocorrelation patterns that simpler per-cell models miss. The GNN inference runs via libtorch FFI from Haskell, keeping the data pipeline in a single language without a Python subprocess boundary.
Why Haskell
The pipeline — data ingestion, grid projection, index computation, GNN inference, output aggregation — has a lot of moving parts that need to compose correctly. Haskell's type system catches the category of bug (wrong projection, wrong unit, wrong temporal resolution) that dominates errors in numerical pipelines. The functional purity also makes the computation auditable: every hazard score is a function of its inputs with no hidden state.