Inverse-distance-weighted estimates of hail size and wind gust at the property, one row per day where any report of the matching type was within 5 mi. See About for methodology and limitations.
Raw Data Files
Download the source records exactly as fetched, plus the merged combined dataset. Useful for archival and audit.
About this tool
This is a forensic-research tool for property insurance claims. It parses two storm-event sources and helps you understand which weather events occurred close to a property and when.
Data sources
NWS Local Storm Reports (LSR) — real-time, spotter-submitted reports collected by NWS Weather Forecast Offices. The tool fetches them live from Iowa Environmental Mesonet's archive (going back to ~2003). LSRs may be preliminary and contain estimation errors.
NOAA Storm Events Database (SED) — finalized, curated event records published by NCEI with a 2–4 month lag. The tool auto-fetches per-state SED CSVs from SED_BASE_URL on every search. SED_BASE_URL auto-detects from the page's URL when deployed; the data files are produced by fetch_sed.py via the bundled GitHub Action that runs monthly. SED + LSR merge via a cutoff: SED is authoritative through its latest BEGIN_DATE; LSR fills the gap after that.
County coverage
SED data is organized by county. When a property is near a county line, events in adjacent counties may still fall within the search radius. To handle this, the tool detects the property's county and the counties touching the search circle, then prompts you to download SED for all of them.
Coordinate system / projections
Distances are computed using the Haversine formula (great-circle, mean Earth radius 3,958.8 mi). For radii under ~50 mi this is accurate within tenths of a mile.
Per-day estimates (Estimates tab)
The Estimates tab emits one row per day per event type (Hail / Wind) — but only for days where at least one report of that type fell within 5 mi of the property. Each row shows multiple independent estimates side-by-side and a single Composite that combines them.
Estimate sources, in their own columns:
- IDW (inverse-distance-weighted from local LSR/SED reports). Exponent p=2; 0.5 mi epsilon. Adaptive radius: starts at 5 mi and expands to 10 → 15 → 20 mi if fewer than three reports are inside. Hover the IDW value to see the diagnostics that drive the geometry confidence — report count, closest distance, search radius actually used, whether the property was surrounded by reports (max angular gap), the inferred storm direction, the perpendicular distance from the property to the storm track ("path proximity"), and the R² of the (lat, lon) ~ time fit.
- MRMS MESH — radar-derived Maximum Estimated Size of Hail at the property's grid cell, served by our backend that fetches GRIB2 directly from the NOAA
noaa-mrms-pdsS3 bucket (with Iowa State Mesonet as historical fallback). The cell shows the 24-hour maximum; hover for the peak 6-hour window (which narrows the timing within the day) and the POSH probability sample. MRMS is independent of spotter reports — when MESH and IDW agree, that's strong corroboration; when they disagree, the spotter reports may have been overestimated or the storm passed slightly off the property. Archive begins ~2014, CONUS only. - Composite is an unweighted average of all available signals on the row. The "(N src)" badge tells you how many signals contributed: 1 source = single-signal (treat as informational), 2+ = multi-signal corroboration (treat as a stronger estimate).
Confidence (Inconclusive / Low / Medium / High) is rebuilt from signal agreement, not just IDW geometry:
- High — both IDW and MESH ≥ 1″ and within ~50% of each other (multi-signal severe-hail consensus).
- Medium — both signals exist above the noise floor (≥0.25″) and roughly agree.
- Low — signals disagree (e.g., IDW says 2″ but MESH says 0″) — something happened but magnitude is unclear.
- Inconclusive — both signals essentially say no hail (<0.25″), or only one signal exists and the IDW geometry is too sparse to commit.
For Wind rows there's no MRMS equivalent yet, so confidence falls back to the IDW-geometry ladder (closest distance, report count, surrounded, path proximity, etc.).
Causation score (0–100) ranks each candidate event by likelihood it caused / contributed to damage. Combines severity (normalized within type), the rebuilt confidence tier, whether reports surrounded the property, and proximity to the claim date when set. Events after the claim date are penalized. The table sorts by score descending by default, so the strongest candidate is the top row.
Compounding flags days where another credible damaging event (Medium+ confidence, hail ≥1″ or wind ≥50 mph) occurred within ±30 days. Useful when claim attribution may span more than one event (e.g., back-to-back storms).
📡 Radar link opens the Iowa Environmental Mesonet Time Machine at the event date so you can visually confirm what the radar saw alongside the MESH point estimate.
🔍 NEXRAD Verify (rows with MRMS MESH ≥ 1″) runs a per-row deep-dive against the actual WSR-88D Level 2 archive — the same radar data NSSL uses to compute MESH, but inspected directly at the property gate with dual-polarization. The backend picks the nearest WSR-88D within 150 mi, locks onto the storm hour using a MESH_60min scan over the day, downloads ~8 Level 2 volumes inside that hour (volume cadence is ~5 min during severe weather), parses them with Py-ART, finds the gates within ~2 km of the property at the lowest elevation tilt (0.5°), and extracts Z (reflectivity), ZDR (differential reflectivity), CC (correlation coefficient), and KDP (specific differential phase) at the peak-Z gate. A rule-based classifier maps the dual-pol fingerprint to a hydrometeor verdict using thresholds adapted from Heinselman & Ryzhkov (2006) and Park et al. (2009): high CC + high ZDR with high Z → heavy rain; low CC + near-zero ZDR with high Z → hail (Small / Large / Giant by reflectivity tier). The rendered radar image (lowest-elev reflectivity PPI cropped to ~30 mi around the property with the property pinned) is the same image type insurance adjusters expect in a CoreLogic-style hail verification report.
Why this can disagree with MRMS MESH: MESH is a reflectivity-aloft proxy — it can over-flag hail in tall heavy-rain cores. CC and ZDR are the actual hydrometeor fingerprint at the gate, so when MESH says "1″ hail" but the radar gate shows CC>0.97 and ZDR>1.5 dB, the dual-pol read is "heavy rain — no hail at this point." That contradiction is itself diagnostic. The Confidence pill rebuilds accordingly: HSDA "Large" or "Giant" promotes the row to High; HCA "Heavy Rain" on a row where MESH or IDW said ≥1″ demotes it to Low.
POSH (Probability of Severe Hail) is a separate MRMS product showing the radar-derived probability that ≥ 1″ hail is occurring at a point. It's instantaneous, not a window max, so a fixed 4-times-per-day schedule almost always reads 0% even at real hail events. The backend handles this by sampling POSH at 15-minute cadence only inside the MESH peak 6-hour window when MESH detected hail, then keeping the maximum. POSH ≥ 50% is the radar's own "severe hail probable" threshold and appears in red below the MESH value when reached; it also promotes the row to High confidence when MESH or IDW agree on severe hail (radar endorsement). On silent days (MESH 0 everywhere) POSH falls back to the cheap 4-sample schedule.
Other limitations: UTC day grouping can split a single storm across two rows when it crosses midnight UTC. CoCoRaHS volunteer hail reports are not pulled separately because they already flow into NCEI SED, so they're already represented inside the IDW signal — the only gap is very recent events (within ~60 days) before SED publishes; for those, the LSR feed remains the ground-truth source until SED catches up.
Sponsored content disclosure
When the Estimates tab surfaces a credible damaging event (≥1″ hail or ≥58 mph wind, with confidence Low/Medium/High — never on Inconclusive rows), a sponsored link to a contractor-leads marketplace may appear below the table. PropertyWX may earn a commission if you connect through that link. The link's appearance does not change any analysis above it — the same rows, scores, and confidence tiers display whether or not the affiliate program is enabled. The Inconclusive tier is intentionally excluded from sponsored links so we don't monetize uncertainty.
Output formats
- Dashboard: KPIs and charts across the full result set.
- Map: Property + radius rings (5/10/15 mi + your custom) + event markers, color-coded by type.
- Table: Sortable, filterable list with date, type, magnitude, distance, severity, source.
- Estimates: Per-day multi-source estimates (IDW + MRMS MESH + Composite) at the property for hail size and wind speed. Hover any value for diagnostics (see methodology above).
- Raw Data: Original LSR JSON, original SED CSV (passthrough), and a merged Combined CSV.
- Excel export: Multi-sheet .xlsx workbook for archival. The Estimates sheet now mirrors the on-screen layout (IDW, MRMS MESH 24h, MESH peak 6h, Composite, signal-agreement confidence, score, compounding) plus the IDW diagnostics columns at the end for the audit trail.
- Print: Browser print → PDF for one-page claim reports.
Limitations
- U.S. addresses only (Census Geocoder).
- SED isn't queried automatically — you upload the CSVs. A backend would be required for fully-automated SED.
- LSR magnitude isn't always populated (e.g., damage-only reports).
- Search history is per-browser via localStorage — not synced across devices.