August 2026

Observation Synthesis

A prototype observation platform for Avalanche.org that reads a winter's worth of scattered field reports alongside the published forecast and puts what matters most in front of a forecaster first. Hono on Workers, Postgres, and a streaming synthesis from Claude.

ai · experiments

We’re building a prototype observation platform for Avalanche.org, where field observations from across the country come to land. Snowpit profiles, cracking and collapsing, avalanches spotted from the road, notes typed on a phone in a parking lot at dusk.

Collecting them was never the hard part. Reading them is. By midwinter a single zone holds hundreds of observations across any window a forecaster actually cares about, and the signal is in there somewhere, spread thin across a lot of people’s afternoons.

So: pick a zone, pick a date range, or draw a polygon on the map around the terrain you’re actually thinking about. The platform pulls every observation inside it and writes a synthesis. Avalanche activity, cracking and collapsing, snowpack, trend. It streams in as it’s written, so you watch it think rather than watching a spinner.

What matters, first

The synthesis doesn’t read the observations in a vacuum. It reads the official published forecast for that same zone and window alongside them, so it knows what’s already been said and can lead with what’s new or significant against current conditions. A forecaster gets the important signal first, not a flat summary of everything.

It never writes a forecast of its own. That’s not the job, and building it that way would be the wrong thing to hand a forecaster. It reads the field and the forecast together and surfaces the signal. The forecaster decides what it means.

Forecasters will be testing it through the 2026–27 season, and that winter of real mornings is what will shape it next.

Underneath

Hono on Cloudflare Workers, a React SPA, Postgres on Neon through Drizzle. MapLibre for the map, because in this domain nearly every question is really a spatial one. The syntheses come from Claude, streamed over SSE.

Ingestion mirrors the upstream schema and keys on upstream IDs, so re-running it costs nothing and changes nothing. The same observation lands in the same row every time, which matters when you’re backfilling a season at a time.

Read the full case study →