Max Krehbiel

All projects

Storm Lead Engine

After a hailstorm, the useful question isn't where it hailed. It's which roofs took enough hail to be worth an inspection. This reads NOAA's radar hail estimates, maps where 1, 1.5 and 2 inch hail fell, and records the hail each property has taken since its current roof went on.

Each property gets a score where every point is visible, and contractors are ranked so a 5.0 from three reviews doesn't beat a 4.8 from four hundred.

Storm Lead Engine: example output

View the code (opens in a new tab)Read the README (opens in a new tab)Open the live map (opens in a new tab)

The problem

After a storm, decide which roofs took enough hail, on the roof that's there now, to justify an inspection.

What I built

An engine that traces hail footprints from NOAA's MRMS radar product, pins each property to a radar cell, records every hit since the roof was last replaced, and ranks properties and service providers.

What it produces

A ranked property list, a provider ranking, hail footprints as GeoJSON, a run summary and an interactive map.

First built for a roofing client. This version uses a made-up storm season and town.

Hail grids follow NOAA's public MRMS format. The demo storms, properties and providers are synthetic.

In pictures

The synthetic storm season on one map: maximum hail size in blue, leads colored by score, and the summary and top-leads panel.
One storm on its own: the July 8 to 9, 2022 hail swath outlined across the fictional town, with the layer list open.
Zoomed out to show the synthetic storm tracks and each service provider's coverage area as a dashed circle.

How it works

  1. Ingest. Storm-day hail grids from NOAA's public archive or the bundled synthetic season.
  2. History. Storm days are merged into events and every hit on each property's current roof is recorded.
  3. Swaths. Cells above 1, 1.5 and 2 inches are traced into exact footprint polygons.
  4. Scoring. Hail confidence, the property lead score and each provider's shrunk rating.
  5. Ranking. Eligible properties are ranked and matched to a provider that covers them.
  6. Report. A ranked CSV, provider ranking, GeoJSON footprints, a run summary and a map.

Where to look in the code

README sections

Files