Four Hours of Warning, Eight Days of Signal: How the 2018 Woolsey Fire Was Visible in Public Data
On November 8, 2018, the Woolsey Fire ignited in the Santa Susana Mountains and reached Malibu in under four hours. Fire crews had four hours of lead time. Evacuation orders went out as flames were cutting Kanan Road, the main Malibu escape route. By the time it burned out, Woolsey had consumed 97,000 acres, destroyed 1,600 structures, and killed three people.
Eight days of signal were sitting in public NOAA weather data. Nobody looked. The alert systems in place that day couldn't see it.
The Threshold Trap
Every fire weather alert system in Southern California watched November 8, 2018. Wind gusted above 40 mph. Humidity dropped below 15%. Temperature spiked. The alerts fired. They fired correctly. They fired too late.
Threshold systems watch each station in isolation. Each reading evaluated in the moment. No memory of yesterday. No awareness of what's happening 50 miles upwind. That's how they're built. Isolation. Snapshots. No memory.
Fires that build over days across regions are invisible to threshold systems until the moment of ignition. Woolsey wasn't an exception. It was the design.
Why a Combined Pattern Sees What a Single Reading Can't
Twenty public weather stations span greater Los Angeles — Sandberg up in the mountains at 4,500 feet, Palmdale out in the desert, LAX on the coast, plus seventeen more across the basin. Seven years of hourly readings: temperature, humidity, wind, pressure, visibility. Over 1.1 million individual observations.
We combined them into three-day pattern snapshots that catch three signals single-reading alerts miss:
Change over time
Not "humidity is 23% right now." Humidity was 53% three days ago, 35% yesterday, 23% today. The trend, not the snapshot.
Where the drying starts
Not "Sandberg is dry." The mountain station dried out 18 hours before the coastal station did, and the drying cascaded from desert to ocean at the speed of the dry Santa Ana winds. Fire doesn't ignite uniformly. It starts where the cascade lands first.
Every station moving together
On a normal day, 2 or 3 out of 7 stations in a neighborhood trend the same direction. Normal daily variation. Seven out of seven moving in lockstep is the kind of alignment you see once in roughly 300 days. When every sensor in a region says the same thing at the same time, something real is happening.
50,938 three-day snapshots. Seven years of public NOAA data. 20 stations.
Eight Weather Patterns. Only One Preceded Every Fire.
We fed the 50,938 snapshots to a pattern-discovery algorithm. No labels. Nothing about fire. Nothing about dry winds. One question: what patterns exist?
It returned eight distinct weather patterns. Clean groups. Only 1.6% of snapshots didn't fit any pattern. Coastal fog, inland heat waves, fog-bank approaches, storm approaches, seasonal transitions — and two more.
One of those two was a group of 4,211 snapshots sharing a specific combination: a three-day humidity drop starting in the mountains and cascading to the coast, wind shifting from out-to-sea to in-from-desert, every station across the region moving together. It appeared 847 times across seven years. Every time, weather got worse.
We called it Pattern 3. Nobody had told the algorithm this was dangerous. It surfaced the pattern because it was genuinely, mathematically different from everything else in the LA region.
The Eight Days
October 28, 2018. Humidity across the region was normal. Sandberg (mountains) at 53%. LAX (coast) at 76%.
October 30. Mountain stations cracked. Sandberg dropped to 35%. Palmdale (desert) to 37%. LAX still at 64%. One-station view: one dry day in the mountains. Nothing to flag.
October 31. The cascade hit. Sandberg crashed to 23%. San Bernardino (inland) to 30%. The coast fell to 44% — still above any single-reading alarm. But the pattern across the region said something else: 7 out of 7 stations in every neighborhood trending together. Every neighborhood drying in sync.
October 31, 2018. Eight days before the fire ignited.
Coherany's algorithm, trained on seven years of patterns, would have flagged October 31 as Pattern 3 — the same pattern that preceded every major dry-wind fire in the training data. Eight days. Enough time to pre-position fire crews. Enough time to start phased evacuation orders. Enough time to close the main Malibu evacuation route before it became a one-way deathtrap.
November 4, the region partially recovered. Single-reading alerts would have stood down.
November 8, the second crash arrived. Deeper. Sandberg at 8% humidity. San Bernardino at 10%. Even the coast fell. Every station moving together, region-wide. Same pattern as October 31, doubled. NOAA records confirm wind and humidity thresholds crossed that morning. The fire ignited that evening.
Three Fires, Two Patterns, Zero Labels
The algorithm had never seen any of these fires. None of them existed in the training data. We tested it against three LA wildfires spanning three years, lined up against CALFIRE ignition records:
- •Woolsey (November 2018) — 100% of the run-up days matched Pattern 3
- •Saddleridge (October 2019) — 92.5% matched Pattern 3, the same pattern eleven months later
- •Bobcat (September 2020) — 80% matched Pattern 4, a different pattern entirely
Bobcat was heat-driven, not wind-driven. The algorithm correctly separated the two. Pattern 3 is the dry-wind fire pattern. Pattern 4 is the heat-dome fire pattern. The data split them apart without anyone telling it the two were different things.
Three fires. Three years. Two warning patterns. Both surfaced automatically. Both held up against real events. Neither required a single hand-written rule.
The Same Approach, Anywhere Sensors Track Things Over Time
The stations in this story happen to measure weather. The method doesn't care.
A factory compressor doesn't fail in a moment. It fails at the end of a three-day pattern: the vibration rises, then a seal starts leaking, then the temperature climbs. Each change small enough to miss on its own. The maintenance system fires an alert when the bearing hits 185°F. By then the seal has been failing for 72 hours. The machine was telling you for three days.
A hospital's building system: 20 zones reporting temperature, humidity, airflow, and fan speed every five minutes. One zone running hot is a thermostat problem. Three neighboring zones drifting warm over 48 hours while the fans work harder is the chiller losing capacity. The building system fires an alert when a zone hits 78°F. A combined pattern across zones catches the three-zone drift two days earlier — before an operating room overheats during surgery.
Insurance claims build up a pattern before the fraud ring breaks. Compliance events build up a pattern before the audit finding. Manufacturing telemetry builds up a pattern before the recall. The specifics change. The approach does not.
The question is always the same: what combined patterns across your sensors precede your worst failures? The answer is almost always already in the data you're collecting. If you combine the right signals and let pattern-discovery do the work.
What Coherany Does With This
Seven years of public weather data. One hour of AI pattern discovery. Zero labels. Zero rules. Zero experts telling it what to look for.
That's the Coherany loop: group the data into patterns, surface the patterns a human should see, let the human approve them, then apply every new record against the approved library at roughly 400,000 decisions per second. No AI model making real-time decisions. Every match has a named approver and a similarity score.
The single-reading alerts worked on November 8. The fire still won.
What combined patterns precede your worst failures?
Source data: NOAA's public hourly weather archive, 2017–2023, 20 stations across the LA region. CALFIRE ignition records. Reproducible end to end.
Stay ahead on accountable AI
Get insights on AI governance, classification best practices, and product updates. No spam, unsubscribe anytime.
Want to see accountable AI in action?
Book a Demo