{
 "dataset": "Grand Rapids, MI storm events — 12-month window, 25-mile radius plus Kent records (floods and special weather statements excluded, matching the city page)",
 "license": "https://www.stormauditor.com/data-license",
 "provenance": "Consolidated by StormAuditor from public NOAA/NWS records (warnings, Local Storm Reports, NCEI Storm Events) under the published methodology at https://www.stormauditor.com/methodology",
 "refreshed_at": "2026-09-20T08:45:17.508+00:00",
 "window_days": 365,
 "schema_version": "2.0.0",
 "event_count": 208,
 "fields": {
  "id": "stable event identifier (source-derived)",
  "date": "event date (YYYY-MM-DD, local storm day)",
  "county": "county or county-equivalent (may be blank)",
  "city": "place name from the source record (LSR names may carry a distance/direction prefix)",
  "zip": "ZIP code when the source provides one (may be blank)",
  "eventType": "hazard tag: wind | hail | tornado | flood | lightning",
  "severity": "StormAuditor severity bucket (low|moderate|high|severe)",
  "evidenceLevel": "evidence level of the source record (warning|observed|...)",
  "confidence": "StormAuditor confidence score for the record (0-1, may be absent)",
  "windSpeedMph": "reported/estimated wind gust, mph (absent if n/a)",
  "hailSizeInches": "reported/estimated hail size, inches (absent if n/a)",
  "tornadoScale": "EF-scale rating when the source provides one (absent if n/a)",
  "damageTypes": "damage tags from the source narrative (may be absent)",
  "description": "source narrative excerpt (may be absent)",
  "source": "originating public record (NWS warning, LSR, NCEI, ...)",
  "sourceDetail": "issuing office / product detail for the source (may be absent)",
  "originStation": "reporting station identifier when applicable (may be absent)",
  "warningProductKey": "NWS warning product key for warning-derived rows (may be absent)",
  "lat": "event latitude (WGS84, may be blank)",
  "lon": "event longitude (WGS84, may be blank)",
  "rawWindSpeedMph": "source-reported wind value before display screening, mph (may be absent)",
  "windSpeedDisclaimer": "set when the wind value is a warning-projected figure rather than a measurement (may be absent)"
 },
 "events": [
  {
   "id": "nws-alert-a5cc70763b7ceb90.001-Allegan-wind-2026-08-10",
   "lat": 42.63,
   "lon": -85.766,
   "zip": "",
   "city": "",
   "date": "2026-08-10",
   "county": "Allegan",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 88,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Warning for Allegan. Severe Thunderstorm Warning issued August 10 at 3:39AM EDT until August 10 at 3:45AM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-119"
  },
  {
   "id": "nws-alert-b266cfb8ba300daa.001-Allegan-hail-2026-08-10",
   "lat": 42.63,
   "lon": -85.766,
   "zip": "",
   "city": "",
   "date": "2026-08-10",
   "county": "Allegan",
   "source": "NWS Weather Alert",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 88,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning for Allegan. Max hail: 0.75\". Severe Thunderstorm Warning issued August 10 at 3:15AM EDT until August 10 at 3:45AM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max hail: 0.75\".",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-119"
  },
  {
   "id": "nws-alert-a5bad776ef97e27b.001-Barry-wind-2026-08-09",
   "lat": 42.76285714285715,
   "lon": -85.32142857142857,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Barry",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 88,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Warning for Barry. Max wind: 60 mph. Severe Thunderstorm Warning issued August 9 at 4:36PM EDT until August 9 at 5:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max wind: 60 mph.",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-115"
  },
  {
   "id": "nws-alert-a5bad776ef97e27b.001-Kent-wind-2026-08-09",
   "lat": 42.76285714285715,
   "lon": -85.32142857142857,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Kent",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 88,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Warning for Kent. Max wind: 60 mph. Severe Thunderstorm Warning issued August 9 at 4:36PM EDT until August 9 at 5:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max wind: 60 mph.",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-115"
  },
  {
   "id": "nws-alert-03b1bc9b01c74a00.001-Ottawa-wind-2026-08-09",
   "lat": 42.76111111111111,
   "lon": -85.97777777777777,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Ottawa",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 88,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Warning for Ottawa. Max wind: 60 mph. Severe Thunderstorm Warning issued August 9 at 3:29PM EDT until August 9 at 4:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max wind: 60 mph.",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-112"
  },
  {
   "id": "nws-alert-03b1bc9b01c74a00.001-Ottawa-hail-2026-08-09",
   "lat": 42.76111111111111,
   "lon": -85.97777777777777,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Ottawa",
   "source": "NWS Weather Alert",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 88,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning for Ottawa. Max hail: 0.75\". Severe Thunderstorm Warning issued August 9 at 3:29PM EDT until August 9 at 4:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max hail: 0.75\".",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-112"
  },
  {
   "id": "nws-alert-93a8e0fc99b21534.001-Kent-wind",
   "zip": "",
   "city": "Kent",
   "date": "2026-08-09",
   "county": "Kent",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 72,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Watch for Kent. Severe Thunderstorm Watch issued August 9 at 1:03PM EDT until August 9 at 7:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Watch",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-A-547"
  },
  {
   "id": "nws-alert-a5bad776ef97e27b.001-Barry-hail-2026-08-09",
   "lat": 42.76285714285715,
   "lon": -85.32142857142857,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Barry",
   "source": "NWS Weather Alert",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 88,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning for Barry. Max hail: 0.75\". Severe Thunderstorm Warning issued August 9 at 4:36PM EDT until August 9 at 5:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max hail: 0.75\".",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-115"
  },
  {
   "id": "nws-alert-a5bad776ef97e27b.001-Kent-hail-2026-08-09",
   "lat": 42.76285714285715,
   "lon": -85.32142857142857,
   "zip": "",
   "city": "",
   "date": "2026-08-09",
   "county": "Kent",
   "source": "NWS Weather Alert",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 88,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning for Kent. Max hail: 0.75\". Severe Thunderstorm Warning issued August 9 at 4:36PM EDT until August 9 at 5:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Warning Max hail: 0.75\".",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-115"
  },
  {
   "id": "nws-alert-be615c07a2f9eca4.003-Kent-wind",
   "zip": "",
   "city": "Kent",
   "date": "2026-07-27",
   "county": "Kent",
   "source": "NWS Weather Alert",
   "severity": "high",
   "eventType": "wind",
   "confidence": 72,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Severe Thunderstorm Watch for Kent. Severe Thunderstorm Watch issued July 27 at 3:42PM EDT until July 27 at 8:00PM EDT by NWS Grand Rapids MI",
   "sourceDetail": "NWS Grand Rapids MI — Severe Thunderstorm Watch",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-A-520"
  },
  {
   "id": "iem-lsr-2026-07-03-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-07-03",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station AX192 WAYLAND.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-07-03-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-07-03",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202607032030-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-07-03",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 4 E Dorr, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202607032036-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-07-03",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 62 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 62,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-101-2026-07-03-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-07-03",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-07-03. Duration: 73 min. County: Kent. Storm tags: wind: 70.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #101 (73 min)",
   "windSpeedMph": 70,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-101"
  },
  {
   "id": "ww-GRR-SV-W-101-2026-07-03-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-07-03",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-07-03. Duration: 73 min. County: Kent. Storm tags: wind: 70.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #101 (73 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-101"
  },
  {
   "id": "asos-bf-GRR-2026-07-03",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-07-03",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 53 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-07-02-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-07-02",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Time estimated by radar. Mesonet station BDLM4 Bradley.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202607030354-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-07-02",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 61 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 61,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202606162008-hail-43.15--85.51",
   "lat": 43.15,
   "lon": -85.51,
   "zip": "",
   "city": "3 NE Rockford",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 3 NE Rockford, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202606162014-hail-43.17--85.51",
   "lat": 43.17,
   "lon": -85.51,
   "zip": "",
   "city": "4 SSE Cedar Springs",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 4 SSE Cedar Springs, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202606162019-hail-43.17--85.35",
   "lat": 43.17,
   "lon": -85.35,
   "zip": "",
   "city": "5 W Greenville",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 5 W Greenville, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "ww-GRR-SV-W-85-2026-06-16-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-16. Duration: 42 min. Counties: Kent, Montcalm. Storm tags: wind: 60.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #85 (42 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-85"
  },
  {
   "id": "ww-GRR-SV-W-85-2026-06-16-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-16. Duration: 42 min. Counties: Kent, Montcalm. Storm tags: wind: 60.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #85 (42 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-85"
  },
  {
   "id": "ww-GRR-SV-W-88-2026-06-16-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-16. Duration: 42 min. Counties: Mecosta, Montcalm, Kent. Storm tags: wind: 60.0, hail: 1.5\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #88 (42 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-88"
  },
  {
   "id": "ww-GRR-SV-W-88-2026-06-16-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-06-16",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-16. Duration: 42 min. Counties: Mecosta, Montcalm, Kent. Storm tags: wind: 60.0, hail: 1.5\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #88 (42 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1.5,
   "warningProductKey": "GRR-SV-W-88"
  },
  {
   "id": "iem-geo-2026-06-12T01:31:00Z-tornado-42.78--85.47",
   "lat": 42.78,
   "lon": -85.47,
   "zip": "",
   "city": "2 ESE Caledonia",
   "date": "2026-06-11",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "tornado",
   "confidence": 92,
   "damageTypes": [
    "Structural roof failure",
    "Debris penetration",
    "Complete shingle removal"
   ],
   "description": "TORNADO reported near 2 ESE Caledonia, MI. This EF-0 tornado had maximum estimated winds of 85 mph and a path of around 4.25 miles. Extensive tree damage occurred along this path with the Saskatoon Golf Club seeing the most significant tree damage.",
   "sourceDetail": "NWS GRR — NWS Storm Survey via Iowa Mesonet (GeoJSON)",
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2026-06-12T01:31:00Z-tornado-42.66--85.44",
   "lat": 42.66,
   "lon": -85.44,
   "zip": "",
   "city": "2 SSW Irving",
   "date": "2026-06-11",
   "county": "Barry",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "tornado",
   "confidence": 92,
   "damageTypes": [
    "Structural roof failure",
    "Debris penetration",
    "Complete shingle removal"
   ],
   "description": "TORNADO reported near 2 SSW Irving, MI. This EF-0 tornado had maximum estimated winds of 75 mph and a path of around 2.9 miles. Extensive tree damage occurred along this tornado path in Barry County.",
   "sourceDetail": "NWS GRR — NWS Storm Survey via Iowa Mesonet (GeoJSON)",
   "evidenceLevel": "reported"
  },
  {
   "id": "ww-GRR-SV-W-79-2026-06-11-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-06-11",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-11. Duration: 62 min. Counties: Barry, Kent. Storm tags: wind: 70.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #79 (62 min)",
   "windSpeedMph": 70,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-79"
  },
  {
   "id": "ww-GRR-SV-W-79-2026-06-11-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-06-11",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-11. Duration: 62 min. Counties: Barry, Kent. Storm tags: wind: 70.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #79 (62 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-79"
  },
  {
   "id": "iem-ww-GRR-TO-W-19-Kent-tornado-2026-06-11",
   "zip": "",
   "city": "Kent",
   "date": "2026-06-11",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "severe",
   "eventType": "tornado",
   "confidence": 0.85,
   "damageTypes": [
    "Structural roof failure",
    "Debris penetration",
    "Complete shingle removal"
   ],
   "description": "TO W for Kent.",
   "sourceDetail": "NWS GRR — TO/W",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-TO-W-19"
  },
  {
   "id": "iem-ww-GRR-TO-W-18-Kent-tornado-2026-06-11",
   "zip": "",
   "city": "Kent",
   "date": "2026-06-11",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "severe",
   "eventType": "tornado",
   "confidence": 0.85,
   "damageTypes": [
    "Structural roof failure",
    "Debris penetration",
    "Complete shingle removal"
   ],
   "description": "TO W for Kent.",
   "sourceDetail": "NWS GRR — TO/W",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-TO-W-18"
  },
  {
   "id": "iem-lsr-2026-06-10-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-06-10",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station BDLM4 Plainwell. Time estimated based on radar.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 57,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-06-10-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Time estimated.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 55,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-06-10-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202606102256-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-06-10",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 66 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 66,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202606102258-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near East Grand Rapids, MI. Peak gust: 63 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 63,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202606102304-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 59 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-70-2026-06-10-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-10. Duration: 58 min. Counties: Barry, Kalamazoo, Kent. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #70 (58 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-70"
  },
  {
   "id": "ww-GRR-SV-W-70-2026-06-10-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-06-10. Duration: 58 min. Counties: Barry, Kalamazoo, Kent. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #70 (58 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-70"
  },
  {
   "id": "asos-bf-GRR-2026-06-10",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-06-10",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 50 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "spc-2026-05-18-413-1820",
   "lat": 42.73,
   "lon": -85.72,
   "zip": "",
   "city": "Dorr",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "SPC Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 90,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Reporter also notes numerous downed tree limbs. Time estimated via radar. (GRR)",
   "sourceDetail": "Storm Prediction Center verified report",
   "windSpeedMph": 64,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-05-18-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2026-05-18",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station GW5392 ALLENDALE.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 55,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-05-18-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station AX192 WAYLAND.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 57,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-05-18-wind-42.83--85.47",
   "lat": 42.83,
   "lon": -85.47,
   "zip": "",
   "city": "Alaska",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station AV527 Caledonia.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "asos-bf-GRR-2026-05-18",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 75 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 75,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-05-18-wind-42.88--85.61",
   "lat": 42.88,
   "lon": -85.61,
   "zip": "",
   "city": "1 W Kentwood",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet recorded gust.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 81,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605181820-wind-42.73--85.72",
   "lat": 42.73,
   "lon": -85.72,
   "zip": "",
   "city": "1 N Dorr",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 N Dorr, MI. Peak gust: 74 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 74,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202605181830-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2026-05-18",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 WSW Grand Valley, MI. Peak gust: 63 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 63,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605181830-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 4 E Dorr, MI. Peak gust: 66 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 66,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605181840-wind-42.83--85.47",
   "lat": 42.83,
   "lon": -85.47,
   "zip": "",
   "city": "Alaska",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near Alaska, MI. Peak gust: 60 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 60,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605181842-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 86 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 86,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605181845-wind-42.88--85.61",
   "lat": 42.88,
   "lon": -85.61,
   "zip": "",
   "city": "1 W Kentwood",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 W Kentwood, MI. Peak gust: 93 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 93,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-05-18T18:56:00Z-wind-43.20--85.59",
   "lat": 43.2,
   "lon": -85.59,
   "zip": "",
   "city": "3 SW Cedar Springs",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 3 SW Cedar Springs, MI. Peak gust: 53 mph. Mesonet station AV534 Cedar Springs.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-05-18T18:20:00Z-wind-42.65--85.76",
   "lat": 42.65,
   "lon": -85.76,
   "zip": "",
   "city": "2 N Hopkins",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 N Hopkins, MI. Peak gust: 54 mph. Mesonet station AX249 HOPKINS.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-05-18T18:20:00Z-wind-42.64--85.68",
   "lat": 42.64,
   "lon": -85.68,
   "zip": "",
   "city": "2 WNW Bradley",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 WNW Bradley, MI. Peak gust: 55 mph. Mesonet station CW5467 Hopkins.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 55,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-62-2026-05-18-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-05-18. Duration: 36 min. Counties: Allegan, Barry, Kent. Storm tags: wind: 80.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #62 (36 min)",
   "windSpeedMph": 80,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-62"
  },
  {
   "id": "ww-GRR-SV-W-62-2026-05-18-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-05-18. Duration: 36 min. Counties: Allegan, Barry, Kent. Storm tags: wind: 80.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #62 (36 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-62"
  },
  {
   "id": "ww-GRR-SV-W-61-2026-05-18-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-05-18. Duration: 79 min. Counties: Kalamazoo, Ottawa, Barry, Allegan, Calhoun, Kent. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #61 (79 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-61"
  },
  {
   "id": "ww-GRR-SV-W-61-2026-05-18-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-05-18",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-05-18. Duration: 79 min. Counties: Kalamazoo, Ottawa, Barry, Allegan, Calhoun, Kent. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #61 (79 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-61"
  },
  {
   "id": "iem-lsr-2026-05-18-wind-42.72--85.65",
   "lat": 42.72,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-05-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 4 E Dorr",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 57,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-05-12-wind-43.03--85.69",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "1 SW Comstock Park",
   "date": "2026-05-12",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SW Comstock Park",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202605130322-wind-43.03--85.69",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "1 SW Comstock Park",
   "date": "2026-05-12",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SW Comstock Park, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "reported"
  },
  {
   "id": "asos-bf-GRR-2026-05-03",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-05-03",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 50 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202605031901-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-05-03",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-04-27-wind-43.19--85.77",
   "lat": 43.19,
   "lon": -85.77,
   "zip": "",
   "city": "2 SSW Kent City",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Kent City",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "windSpeedMph": 61,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-04-27-wind-43.03--85.69",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "1 SW Comstock Park",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SW Comstock Park",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 57,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-04-27-wind-43.18--85.74",
   "lat": 43.18,
   "lon": -85.74,
   "zip": "",
   "city": "2 NW Sparta",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station MISPN 2.0 NW Sparta (MAWN).",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-04-27-wind-43.12--85.83",
   "lat": 43.12,
   "lon": -85.83,
   "zip": "",
   "city": "1 WNW Wright",
   "date": "2026-04-27",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station MICNK 1.1 W Wright (MAWN).",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202604272044-wind-43.19--85.77",
   "lat": 43.19,
   "lon": -85.77,
   "zip": "",
   "city": "2 SSW Kent City",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Kent City, MI. Peak gust: 70 mph.",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "windSpeedMph": 70,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202604272055-wind-43.03--85.69",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "1 SW Comstock Park",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SW Comstock Park, MI. Peak gust: 66 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 66,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202604272100-wind-43.18--85.74",
   "lat": 43.18,
   "lon": -85.74,
   "zip": "",
   "city": "2 NW Sparta",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 NW Sparta, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202604272100-wind-43.12--85.83",
   "lat": 43.12,
   "lon": -85.83,
   "zip": "",
   "city": "1 WNW Wright",
   "date": "2026-04-27",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 WNW Wright, MI. Peak gust: 62 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 62,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-04-27T20:52:00Z-wind-43.13--85.68",
   "lat": 43.13,
   "lon": -85.68,
   "zip": "",
   "city": "3 SE Sparta",
   "date": "2026-04-27",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 3 SE Sparta, MI. Peak gust: 52 mph. AWOS station K8D4 Miller-Sparta Airport.",
   "sourceDetail": "NWS GRR — AWOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-04-18T05:22:00Z-wind-42.75--85.63",
   "lat": 42.75,
   "lon": -85.63,
   "zip": "",
   "city": "2 ENE Moline",
   "date": "2026-04-18",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND DMG reported near 2 ENE Moline, MI. Peak gust: 80 mph. 3 mile path of scattered damage. Roof and tree damage consistent with estimated peak winds around 80 mph. Most concentrated damage near 146th Ave and 9th St. No conclusive evidence of lofted debris.",
   "sourceDetail": "NWS GRR — NWS Employee via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 80,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2026-04-16T04:48:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-04-16",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 53 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-04-15T04:10:00Z-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-04-15",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 54 mph. Mesonet station BDLM4 Plainwell.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-50-2026-04-15-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-04-15",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-15. Duration: 66 min. Counties: Kent, Barry, Eaton, Ionia, Ingham. Storm tags: wind: 60.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #50 (66 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-50"
  },
  {
   "id": "ww-GRR-SV-W-50-2026-04-15-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-04-15",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-15. Duration: 66 min. Counties: Kent, Barry, Eaton, Ionia, Ingham. Storm tags: wind: 60.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #50 (66 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-50"
  },
  {
   "id": "asos-bf-GRR-2026-04-14",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 81 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 81,
   "evidenceLevel": "observed"
  },
  {
   "id": "spc-2026-04-14-517-0231",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "Comstock Park",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "SPC Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 90,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "(GRR)",
   "sourceDetail": "Storm Prediction Center verified report",
   "windSpeedMph": 61,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-04-14-wind-43.20--85.59",
   "lat": 43.2,
   "lon": -85.59,
   "zip": "",
   "city": "3 SW Cedar Springs",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station AV534 Cedar Springs.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "spc-2026-04-14-524-0311",
   "lat": 42.95,
   "lon": -85.63,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "SPC Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 90,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "(GRR)",
   "sourceDetail": "Storm Prediction Center verified report",
   "windSpeedMph": 60,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202604140906-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 60 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 60,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202604150231-wind-43.03--85.69",
   "lat": 43.03,
   "lon": -85.69,
   "zip": "",
   "city": "1 SW Comstock Park",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SW Comstock Park, MI. Peak gust: 70 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 70,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202604150232-wind-43.20--85.59",
   "lat": 43.2,
   "lon": -85.59,
   "zip": "",
   "city": "3 SW Cedar Springs",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 3 SW Cedar Springs, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202604150250-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 92 mph.",
   "sourceDetail": "NWS GRR — Official NWS Obs via Iowa Mesonet",
   "windSpeedMph": 92,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202604150257-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 93 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 93,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202604150311-wind-42.95--85.63",
   "lat": 42.95,
   "lon": -85.63,
   "zip": "",
   "city": "1 W East Grand Rapids",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 W East Grand Rapids, MI. Peak gust: 69 mph.",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "windSpeedMph": 69,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2026-04-15T02:58:00Z-wind-42.87--85.46",
   "lat": 42.87,
   "lon": -85.46,
   "zip": "",
   "city": "2 NNE Alaska",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND DMG reported near 2 NNE Alaska, MI. Peak gust: 81 mph. A surge of thunderstorm winds occurred from the Grand Rapids airport southeast through the Whitneyville area, where a large tree fell on a house, doing extensive damage. Time estimated from radar and the Grand Rapids ASOS, where a peak wind gust of 81 mph was measured. Tree damage in the Whitneyville area indicated winds between 70 and 80 mph.",
   "sourceDetail": "NWS GRR — NWS Storm Survey via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 81,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2026-04-14T08:56:00Z-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SSW East Grand Rapids, MI. Peak gust: 53 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "reported"
  },
  {
   "id": "ww-GRR-SV-W-43-2026-04-14-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-14. Duration: 57 min. County: Kent. Storm tags: wind: 60.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #43 (57 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-43"
  },
  {
   "id": "ww-GRR-SV-W-43-2026-04-14-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-14. Duration: 57 min. County: Kent. Storm tags: wind: 60.0, hail: 0.75\", tornado: POSSIBLE. This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #43 (57 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-43"
  },
  {
   "id": "iem-ww-GRR-TO-W-9-Kent-tornado-2026-04-14",
   "zip": "",
   "city": "Kent",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "severe",
   "eventType": "tornado",
   "confidence": 0.85,
   "damageTypes": [
    "Structural roof failure",
    "Debris penetration",
    "Complete shingle removal"
   ],
   "description": "TO W for Kent.",
   "sourceDetail": "NWS GRR — TO/W",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-TO-W-9"
  },
  {
   "id": "spc-2026-04-14-518-0250",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "Cascade",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "SPC Storm Reports",
   "severity": "severe",
   "eventType": "wind",
   "confidence": 90,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Gust at the Gerald R Ford International Airport. (GRR)",
   "sourceDetail": "Storm Prediction Center verified report",
   "windSpeedMph": 80,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-04-14-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-04-14",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-32-2026-04-13-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-04-13",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-13. Duration: 47 min. Counties: Kent, Eaton, Ionia. Storm tags: wind: 60.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #32 (47 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-32"
  },
  {
   "id": "ww-GRR-SV-W-32-2026-04-13-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-04-13",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-04-13. Duration: 47 min. Counties: Kent, Eaton, Ionia. Storm tags: wind: 60.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #32 (47 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-32"
  },
  {
   "id": "asos-bf-GRR-2026-04-12",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-04-12",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 51 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-31-wind-42.88--85.51",
   "lat": 42.88,
   "lon": -85.51,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-31",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202603310550-wind-42.88--85.51",
   "lat": 42.88,
   "lon": -85.51,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-31",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 68 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 68,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-31T09:38:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-31",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 53 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "asos-bf-GRR-2026-03-31",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-03-31",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 58 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.65--85.76",
   "lat": 42.65,
   "lon": -85.76,
   "zip": "",
   "city": "2 N Hopkins",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station AX249 HOPKINS.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near East Grand Rapids",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.64--85.68",
   "lat": 42.64,
   "lon": -85.68,
   "zip": "",
   "city": "2 WNW Bradley",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station CW5467 Hopkins.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "asos-bf-GRR-2026-03-13",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 60 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 60,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW East Grand Rapids",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202603131340-wind-42.65--85.76",
   "lat": 42.65,
   "lon": -85.76,
   "zip": "",
   "city": "2 N Hopkins",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 N Hopkins, MI. Peak gust: 59 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202603131357-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near East Grand Rapids, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202603131400-wind-42.64--85.68",
   "lat": 42.64,
   "lon": -85.68,
   "zip": "",
   "city": "2 WNW Bradley",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 WNW Bradley, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202603131400-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 67 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 67,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202603132013-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW East Grand Rapids, MI. Peak gust: 61 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 61,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202603132023-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 69 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 69,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202603132237-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW East Grand Rapids, MI. Peak gust: 67 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 67,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2026-03-13T14:00:00Z-wind-43.18--85.74",
   "lat": 43.18,
   "lon": -85.74,
   "zip": "",
   "city": "2 NW Sparta",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 NW Sparta, MI. Peak gust: 51 mph. Mesonet station MISPN 2.0 NW Sparta (MAWN).",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T14:10:00Z-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 51 mph. Mesonet station BDLM4 Plainwell.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T13:25:00Z-wind-43.00--86.10",
   "lat": 43,
   "lon": -86.1,
   "zip": "",
   "city": "6 SSW Nunica",
   "date": "2026-03-13",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 6 SSW Nunica, MI. Peak gust: 52 mph. Mesonet station DVI10249 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T13:55:00Z-wind-42.90--85.74",
   "lat": 42.9,
   "lon": -85.74,
   "zip": "",
   "city": "1 SE Grandville",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SE Grandville, MI. Peak gust: 52 mph. Mesonet station DW6683 Grandville.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T21:18:00Z-wind-43.20--85.59",
   "lat": 43.2,
   "lon": -85.59,
   "zip": "",
   "city": "3 SW Cedar Springs",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 3 SW Cedar Springs, MI. Peak gust: 52 mph. Mesonet station AV534 Cedar Springs.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T14:00:00Z-wind-43.12--85.76",
   "lat": 43.12,
   "lon": -85.76,
   "zip": "",
   "city": "3 E Wright",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 3 E Wright, MI. Peak gust: 53 mph. Mesonet station MISPT 2.7 E Wright (MAWN).",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T15:10:00Z-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 53 mph. Mesonet station BDLM4 Plainwell.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T16:35:00Z-wind-43.00--86.10",
   "lat": 43,
   "lon": -86.1,
   "zip": "",
   "city": "6 SSW Nunica",
   "date": "2026-03-13",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 6 SSW Nunica, MI. Peak gust: 53 mph. Mesonet station DVI10249 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T13:45:00Z-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2026-03-13",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 WSW Grand Valley, MI. Peak gust: 54 mph. Mesonet station GW5392 ALLENDALE.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T08:57:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 55 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 55,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-03-13T13:45:00Z-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-03-13",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 4 E Dorr, MI. Peak gust: 56 mph. Mesonet station AX192 WAYLAND.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 56,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-03-13-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2026-03-13",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW East Grand Rapids",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet",
   "windSpeedMph": 53,
   "evidenceLevel": "reported"
  },
  {
   "id": "ncei-1327116-2026-03-10",
   "lon": 212244,
   "zip": "",
   "city": "GRAND RAPIDS",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "NCEI Storm Events Database",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 0.95,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Large hail and heavy rain impacted lower Michigan on March 10-11. Between 1 to 3 inches of rain fell in a short period of time, resulting in localized flash flooding and closed interstates with trapped cars in several counties.",
   "sourceDetail": "Verified by Trained Spotter — NCEI Event #1327116",
   "evidenceLevel": "official_backfill",
   "hailSizeInches": 0.75
  },
  {
   "id": "ncei-1327119-2026-03-10",
   "lon": 212244,
   "zip": "",
   "city": "BYRON CENTER",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "NCEI Storm Events Database",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "A few shallow trees were uprooted and power outages affected the Byron Center area.",
   "sourceDetail": "Verified by Trained Spotter — NCEI Event #1327119",
   "windSpeedMph": 52,
   "evidenceLevel": "official_backfill"
  },
  {
   "id": "iem-202603110144-hail-42.94--85.62",
   "lat": 42.94,
   "lon": -85.62,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near East Grand Rapids, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202603110023-hail-42.98--85.66",
   "lat": 42.98,
   "lon": -85.66,
   "zip": "",
   "city": "2 N Grand Rapids",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 2 N Grand Rapids, MI. Hail size: 0.75\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 0.75
  },
  {
   "id": "iem-202603110059-hail-42.89--86.02",
   "lat": 42.89,
   "lon": -86.02,
   "zip": "",
   "city": "4 ESE Olive Center",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 4 ESE Olive Center, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202603110117-hail-42.91--85.88",
   "lat": 42.91,
   "lon": -85.88,
   "zip": "",
   "city": "1 SE Bauer",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 SE Bauer, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202603110119-hail-42.88--85.89",
   "lat": 42.88,
   "lon": -85.89,
   "zip": "",
   "city": "2 NW Hudsonville",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 2 NW Hudsonville, MI. Hail size: 1.75\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1.75
  },
  {
   "id": "iem-202603110128-hail-42.90--85.84",
   "lat": 42.9,
   "lon": -85.84,
   "zip": "",
   "city": "1 SSW Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 SSW Jenison, MI. Hail size: 2\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 2
  },
  {
   "id": "iem-202603110126-hail-42.89--85.87",
   "lat": 42.89,
   "lon": -85.87,
   "zip": "",
   "city": "2 NNW Hudsonville",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 2 NNW Hudsonville, MI. Hail size: 1.75\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1.75
  },
  {
   "id": "iem-202603110125-hail-42.91--85.83",
   "lat": 42.91,
   "lon": -85.83,
   "zip": "",
   "city": "Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near Jenison, MI. Hail size: 1.25\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1.25
  },
  {
   "id": "iem-202603110125-hail-42.91--85.85",
   "lat": 42.91,
   "lon": -85.85,
   "zip": "",
   "city": "1 W Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 W Jenison, MI. Hail size: 2\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 2
  },
  {
   "id": "iem-202603110131-hail-42.92--85.81",
   "lat": 42.92,
   "lon": -85.81,
   "zip": "",
   "city": "1 E Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 E Jenison, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "iem-202603110131-hail-42.91--85.82",
   "lat": 42.91,
   "lon": -85.82,
   "zip": "",
   "city": "Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near Jenison, MI. Hail size: 2\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 2
  },
  {
   "id": "iem-202603110137-hail-42.93--85.82",
   "lat": 42.93,
   "lon": -85.82,
   "zip": "",
   "city": "1 N Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 N Jenison, MI. Hail size: 1.5\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1.5
  },
  {
   "id": "iem-202603110139-hail-42.92--85.86",
   "lat": 42.92,
   "lon": -85.86,
   "zip": "",
   "city": "1 W Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 W Jenison, MI. Hail size: 1.75\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1.75
  },
  {
   "id": "iem-202603110120-hail-42.90--85.84",
   "lat": 42.9,
   "lon": -85.84,
   "zip": "",
   "city": "1 SSW Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 SSW Jenison, MI. Hail size: 2.5\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 2.5
  },
  {
   "id": "iem-202603110120-hail-42.89--85.87",
   "lat": 42.89,
   "lon": -85.87,
   "zip": "",
   "city": "2 NNW Hudsonville",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "severe",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 2 NNW Hudsonville, MI. Hail size: 2.75\".",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 2.75
  },
  {
   "id": "iem-202603110136-hail-42.93--85.82",
   "lat": 42.93,
   "lon": -85.82,
   "zip": "",
   "city": "1 N Jenison",
   "date": "2026-03-10",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "hail",
   "confidence": 92,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "HAIL reported near 1 N Jenison, MI. Hail size: 1\".",
   "sourceDetail": "NWS GRR — Public via Iowa Mesonet",
   "evidenceLevel": "reported",
   "hailSizeInches": 1
  },
  {
   "id": "ww-GRR-SV-W-12-2026-03-10-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 36 min. Counties: Kent, Ionia. Storm tags: wind: 60.0, hail: 1.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #12 (36 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-12"
  },
  {
   "id": "ww-GRR-SV-W-12-2026-03-10-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 36 min. Counties: Kent, Ionia. Storm tags: wind: 60.0, hail: 1.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #12 (36 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1.75,
   "warningProductKey": "GRR-SV-W-12"
  },
  {
   "id": "ww-GRR-SV-W-8-2026-03-10-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 43 min. Counties: Kent, Ottawa. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #8 (43 min)",
   "windSpeedMph": 50,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-8"
  },
  {
   "id": "ww-GRR-SV-W-8-2026-03-10-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 43 min. Counties: Kent, Ottawa. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #8 (43 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-8"
  },
  {
   "id": "ww-GRR-SV-W-13-2026-03-10-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 42 min. Counties: Muskegon, Ottawa, Kent, Newaygo. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #13 (42 min)",
   "windSpeedMph": 50,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-13"
  },
  {
   "id": "ww-GRR-SV-W-13-2026-03-10-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 42 min. Counties: Muskegon, Ottawa, Kent, Newaygo. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #13 (42 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-13"
  },
  {
   "id": "ww-GRR-SV-W-10-2026-03-10-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 64 min. Counties: Kent, Ottawa. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #10 (64 min)",
   "windSpeedMph": 50,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-10"
  },
  {
   "id": "ww-GRR-SV-W-10-2026-03-10-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2026-03-10. Duration: 64 min. Counties: Kent, Ottawa. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #10 (64 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-10"
  },
  {
   "id": "ncei-1327133-2026-03-10",
   "lon": 212244,
   "zip": "",
   "city": "EAST GRAND RAPIDS",
   "date": "2026-03-10",
   "county": "Kent",
   "source": "NCEI Storm Events Database",
   "severity": "high",
   "eventType": "hail",
   "confidence": 0.95,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Large hail and heavy rain impacted lower Michigan on March 10-11. Between 1 to 3 inches of rain fell in a short period of time, resulting in localized flash flooding and closed interstates with trapped cars in several counties.",
   "sourceDetail": "Verified by Public — NCEI Event #1327133",
   "evidenceLevel": "official_backfill",
   "hailSizeInches": 1
  },
  {
   "id": "iem-geo-2026-03-08T17:53:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-03-08",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 54 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2026-01-09-wind-43.09--85.56",
   "lat": 43.09,
   "lon": -85.56,
   "zip": "",
   "city": "3 ENE Belmont",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Mesonet station GW6887 ROCKFORD.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "asos-bf-GRR-2026-01-09",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 52 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "asos-bf-8D4-2026-01-09",
   "lat": 43.1274,
   "lon": -85.6791,
   "zip": "",
   "city": "Sparta",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Sparta (8D4) recorded a 52 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Sparta (8D4) [365d backfill 2026-08]",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202601090557-wind-43.09--85.56",
   "lat": 43.09,
   "lon": -85.56,
   "zip": "",
   "city": "3 ENE Belmont",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 3 ENE Belmont, MI. Peak gust: 59 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202601091155-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 60 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 60,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202601091258-wind-43.13--85.68",
   "lat": 43.13,
   "lon": -85.68,
   "zip": "",
   "city": "3 SE Sparta",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 3 SE Sparta, MI. Peak gust: 60 mph.",
   "sourceDetail": "NWS GRR — AWOS via Iowa Mesonet",
   "windSpeedMph": 60,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T13:10:00Z-wind-42.66--85.65",
   "lat": 42.66,
   "lon": -85.65,
   "zip": "",
   "city": "1 SSW Wayland",
   "date": "2026-01-09",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW Wayland, MI. Peak gust: 51 mph. Mesonet station BDLM4 Plainwell.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T11:45:00Z-wind-42.93--85.65",
   "lat": 42.93,
   "lon": -85.65,
   "zip": "",
   "city": "2 S Grand Rapids",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 S Grand Rapids, MI. Peak gust: 52 mph. Mesonet station EW7706 Grand Rapids.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T11:45:00Z-wind-42.83--85.83",
   "lat": 42.83,
   "lon": -85.83,
   "zip": "",
   "city": "Jamestown",
   "date": "2026-01-09",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near Jamestown, MI. Peak gust: 52 mph. Mesonet station CW9987 Jamestown.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T11:55:00Z-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2026-01-09",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 WSW Grand Valley, MI. Peak gust: 53 mph. Mesonet station GW5392 ALLENDALE.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T12:00:00Z-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2026-01-09",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 4 E Dorr, MI. Peak gust: 53 mph. Mesonet station AX192 WAYLAND.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T11:01:00Z-wind-42.98--86.10",
   "lat": 42.98,
   "lon": -86.1,
   "zip": "",
   "city": "5 NNW Olive Center",
   "date": "2026-01-09",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 5 NNW Olive Center, MI. Peak gust: 54 mph. Mesonet station GW3616 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T12:10:00Z-wind-42.65--85.76",
   "lat": 42.65,
   "lon": -85.76,
   "zip": "",
   "city": "2 N Hopkins",
   "date": "2026-01-09",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 N Hopkins, MI. Peak gust: 54 mph. Mesonet station AX249 HOPKINS.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T12:20:00Z-wind-42.64--85.68",
   "lat": 42.64,
   "lon": -85.68,
   "zip": "",
   "city": "2 WNW Bradley",
   "date": "2026-01-09",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 WNW Bradley, MI. Peak gust: 54 mph. Mesonet station CW5467 Hopkins.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2026-01-09T12:05:00Z-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2026-01-09",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near East Grand Rapids, MI. Peak gust: 56 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 56,
   "evidenceLevel": "reported"
  },
  {
   "id": "asos-bf-GRR-2025-12-29",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2025-12-29",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 53 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202512290704-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2025-12-29",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 61 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 61,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T07:34:00Z-wind-42.98--86.10",
   "lat": 42.98,
   "lon": -86.1,
   "zip": "",
   "city": "5 NNW Olive Center",
   "date": "2025-12-29",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 5 NNW Olive Center, MI. Peak gust: 51 mph. Mesonet station GW3616 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T07:15:00Z-wind-42.73--85.65",
   "lat": 42.73,
   "lon": -85.65,
   "zip": "",
   "city": "4 E Dorr",
   "date": "2025-12-29",
   "county": "Allegan",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 4 E Dorr, MI. Peak gust: 52 mph. Mesonet station AX192 WAYLAND.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T07:19:00Z-wind-43.05--85.91",
   "lat": 43.05,
   "lon": -85.91,
   "zip": "",
   "city": "2 ESE Coopersville",
   "date": "2025-12-29",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 ESE Coopersville, MI. Peak gust: 52 mph. Mesonet station MC109 Mi-03 Coopersville.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T08:45:00Z-wind-43.00--86.10",
   "lat": 43,
   "lon": -86.1,
   "zip": "",
   "city": "6 SSW Nunica",
   "date": "2025-12-29",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 6 SSW Nunica, MI. Peak gust: 53 mph. Mesonet station DVI10249 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T07:29:00Z-wind-42.85--85.58",
   "lat": 42.85,
   "lon": -85.58,
   "zip": "",
   "city": "1 N Dutton",
   "date": "2025-12-29",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 N Dutton, MI. Peak gust: 54 mph. Mesonet station MC154 M-6 Mile Marker 12.7.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T15:15:00Z-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2025-12-29",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 WSW Grand Valley, MI. Peak gust: 54 mph. Mesonet station GW5392 ALLENDALE.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T08:45:00Z-wind-42.81--85.98",
   "lat": 42.81,
   "lon": -85.98,
   "zip": "",
   "city": "2 E Zeeland",
   "date": "2025-12-29",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 E Zeeland, MI. Peak gust: 55 mph. Mesonet station MC155 I-196 Mile Marker 55.5.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 55,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-29T08:15:00Z-wind-43.22--85.57",
   "lat": 43.22,
   "lon": -85.57,
   "zip": "",
   "city": "1 W Cedar Springs",
   "date": "2025-12-29",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 W Cedar Springs, MI. Peak gust: 56 mph. Mesonet station MC151 US-131 Mile Marker 104.7.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 56,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-21T02:00:00Z-wind-42.94--85.61",
   "lat": 42.94,
   "lon": -85.61,
   "zip": "",
   "city": "1 SSW East Grand Rapids",
   "date": "2025-12-20",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 SSW East Grand Rapids, MI. Peak gust: 52 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2025-12-21T01:55:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2025-12-20",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 55 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 55,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-12-19T07:17:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2025-12-19",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 53 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-11-26T15:34:00Z-wind-42.81--85.98",
   "lat": 42.81,
   "lon": -85.98,
   "zip": "",
   "city": "2 E Zeeland",
   "date": "2025-11-26",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 E Zeeland, MI. Peak gust: 51 mph. Mesonet station MC155 I-196 Mile Marker 55.5.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-11-26T09:47:00Z-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2025-11-26",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 52 mph. ASOS station KGRR Gerald R Ford Intl.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 52,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-11-26T22:31:00Z-wind-42.95--85.61",
   "lat": 42.95,
   "lon": -85.61,
   "zip": "",
   "city": "East Grand Rapids",
   "date": "2025-11-26",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near East Grand Rapids, MI. Peak gust: 53 mph.",
   "sourceDetail": "NWS GRR — CO-OP Observer via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 53,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-geo-2025-11-26T22:31:00Z-wind-42.85--85.86",
   "lat": 42.85,
   "lon": -85.86,
   "zip": "",
   "city": "1 S Hudsonville",
   "date": "2025-11-26",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 1 S Hudsonville, MI. Peak gust: 54 mph. Mesonet station MC156 I-196 Mile Marker 62.3.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 54,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-11-26T14:35:00Z-wind-43.00--86.10",
   "lat": 43,
   "lon": -86.1,
   "zip": "",
   "city": "6 SSW Nunica",
   "date": "2025-11-26",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "NON-TSTM WND GST reported near 6 SSW Nunica, MI. Peak gust: 56 mph. Mesonet station DVI10249 Grand Haven.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 56,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-ww-GRR-HW-W-1-Kent-wind-2025-11-26",
   "zip": "",
   "city": "Kent",
   "date": "2025-11-26",
   "county": "Kent",
   "source": "IEM High Wind Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 0.72,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "HW W for Kent.",
   "sourceDetail": "NWS GRR — HW/W",
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-HW-W-1"
  },
  {
   "id": "asos-bf-GRR-2025-10-21",
   "lat": 42.8821,
   "lon": -85.523,
   "zip": "",
   "city": "Grand Rapids",
   "date": "2025-10-21",
   "county": "Kent",
   "source": "IEM ASOS Station",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Grand Rapids (GRR) recorded a 51 mph gust.",
   "sourceDetail": "MI_ASOS automated observation — Grand Rapids (GRR) [365d backfill 2026-08]",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202510212000-wind-42.88--85.52",
   "lat": 42.88,
   "lon": -85.52,
   "zip": "",
   "city": "2 SSW Cascade",
   "date": "2025-10-21",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSW Cascade, MI. Peak gust: 59 mph.",
   "sourceDetail": "NWS GRR — ASOS via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "ww-GRR-SV-W-58-2025-10-06-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2025-10-06",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-10-06. Duration: 43 min. Counties: Barry, Eaton, Ionia, Kent, Muskegon, Ottawa. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #58 (43 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-58"
  },
  {
   "id": "ww-GRR-SV-W-58-2025-10-06-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2025-10-06",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-10-06. Duration: 43 min. Counties: Barry, Eaton, Ionia, Kent, Muskegon, Ottawa. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #58 (43 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-58"
  },
  {
   "id": "ww-GRR-SV-W-57-2025-10-06-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2025-10-06",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-10-06. Duration: 55 min. Counties: Ottawa, Allegan, Barry, Kent, Ingham, Jackson. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #57 (55 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-57"
  },
  {
   "id": "ww-GRR-SV-W-57-2025-10-06-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2025-10-06",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-10-06. Duration: 55 min. Counties: Ottawa, Allegan, Barry, Kent, Ingham, Jackson. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #57 (55 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-57"
  },
  {
   "id": "ww-GRR-SV-W-55-2025-09-21-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2025-09-21",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-09-21. Duration: 43 min. Counties: Van Buren, Kalamazoo, Kent. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #55 (43 min)",
   "windSpeedMph": 50,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-55"
  },
  {
   "id": "ww-GRR-SV-W-55-2025-09-21-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2025-09-21",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-09-21. Duration: 43 min. Counties: Van Buren, Kalamazoo, Kent. Storm tags: wind: 50.0, hail: 1.0\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #55 (43 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 1,
   "warningProductKey": "GRR-SV-W-55"
  },
  {
   "id": "ncei-1295411-2025-09-20",
   "lon": 207748,
   "zip": "",
   "city": "BOWEN",
   "date": "2025-09-20",
   "county": "Kent",
   "source": "NCEI Storm Events Database",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.95,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Several reports of trees and wires down in Kent County.",
   "sourceDetail": "Verified by Law Enforcement — NCEI Event #1295411",
   "windSpeedMph": 52,
   "evidenceLevel": "official_backfill"
  },
  {
   "id": "iem-lsr-2025-09-20-wind-42.81--86.02",
   "lat": 42.81,
   "lon": -86.02,
   "zip": "",
   "city": "1 SW Zeeland",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SW Zeeland",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "windSpeedMph": 57,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-lsr-2025-09-20-wind-43.05--85.91",
   "lat": 43.05,
   "lon": -85.91,
   "zip": "",
   "city": "2 ESE Coopersville",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Corrects previous non-tstm wnd gst report from 2 ESE Coopersville. Mesonet station MC109 Mi-03 Coopersville.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 51,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-lsr-2025-09-20-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 0.92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "Corrects previous non-tstm wnd gst report from 1 WSW Grand Valley. Mesonet station GW5392 ALLENDALE.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 50,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202509210015-wind-42.81--86.02",
   "lat": 42.81,
   "lon": -86.02,
   "zip": "",
   "city": "1 SW Zeeland",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 SW Zeeland, MI. Peak gust: 66 mph.",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet",
   "windSpeedMph": 66,
   "evidenceLevel": "reported"
  },
  {
   "id": "iem-202509210034-wind-43.05--85.91",
   "lat": 43.05,
   "lon": -85.91,
   "zip": "",
   "city": "2 ESE Coopersville",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 ESE Coopersville, MI. Peak gust: 59 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 59,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-202509210035-wind-42.97--85.89",
   "lat": 42.97,
   "lon": -85.89,
   "zip": "",
   "city": "1 WSW Grand Valley",
   "date": "2025-09-20",
   "county": "Ottawa",
   "source": "IEM Local Storm Reports",
   "severity": "high",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 1 WSW Grand Valley, MI. Peak gust: 58 mph.",
   "sourceDetail": "NWS GRR — Mesonet via Iowa Mesonet",
   "windSpeedMph": 58,
   "evidenceLevel": "observed"
  },
  {
   "id": "iem-geo-2025-09-21T00:52:00Z-wind-43.19--85.73",
   "lat": 43.19,
   "lon": -85.73,
   "zip": "",
   "city": "2 SSE Kent City",
   "date": "2025-09-20",
   "county": "Kent",
   "source": "IEM Local Storm Reports",
   "severity": "moderate",
   "eventType": "wind",
   "confidence": 92,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Fence/screen damage"
   ],
   "description": "TSTM WND GST reported near 2 SSE Kent City, MI. Peak gust: 56 mph. 1/4 inch diameter hail also reported with the storms.",
   "sourceDetail": "NWS GRR — Trained Spotter via Iowa Mesonet (GeoJSON)",
   "windSpeedMph": 56,
   "evidenceLevel": "reported"
  },
  {
   "id": "ww-GRR-SV-W-54-2025-09-20-Kent-wind",
   "zip": "",
   "city": "",
   "date": "2025-09-20",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "wind",
   "confidence": 70,
   "damageTypes": [
    "Roof shingle lift",
    "Soffit/fascia damage",
    "Tree strike risk",
    "Hurricane wind damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-09-20. Duration: 27 min. Counties: Kent, Allegan, Kalamazoo. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #54 (27 min)",
   "windSpeedMph": 60,
   "evidenceLevel": "warning",
   "warningProductKey": "GRR-SV-W-54"
  },
  {
   "id": "ww-GRR-SV-W-54-2025-09-20-Kent-hail",
   "zip": "",
   "city": "",
   "date": "2025-09-20",
   "county": "Kent",
   "source": "IEM Watch/Warn Archive",
   "severity": "high",
   "eventType": "hail",
   "confidence": 70,
   "damageTypes": [
    "Shingle bruising",
    "Granule displacement",
    "Metal denting",
    "Vehicle damage"
   ],
   "description": "Severe Thunderstorm Warning issued by NWS GRR on 2025-09-20. Duration: 27 min. Counties: Kent, Allegan, Kalamazoo. Storm tags: wind: 60.0, hail: 0.75\". This is a warning — not a confirmed event.",
   "sourceDetail": "NWS GRR — Severe Thunderstorm Warning #54 (27 min)",
   "evidenceLevel": "warning",
   "hailSizeInches": 0.75,
   "warningProductKey": "GRR-SV-W-54"
  }
 ]
}