Skip to content
Joel Couch ← All the doors

I help small businesses stop needing me

When rain is a legal deadline

For industrial sites in California, a storm starts a compliance clock. I built the software that watches the weather so a person doesn't have to.

Status
Core loop running; still on the way to everyday customer use
When
December 2025, ongoing
An illustration: a storm coming in over an industrial yard.
An illustration: a storm coming in over an industrial yard.

Why I wanted it

If you run an industrial facility in California, rain is a legal event. When a qualifying storm hits, a clock starts. You have to inspect. You have to collect water samples within a four-hour window of discharge. You send them to a lab, compare the results against regulatory limits, and if you are over, you open a corrective action and document everything for a regulator who may audit you years later.

Most companies do this with spreadsheets, paper, and someone watching a weather app.

A compliance company asked me to build them a product for it, from nothing.

What happened

The platform watches the weather through the national weather service, notices a qualifying storm on its own, opens the right inspections and samples with the right deadlines attached, records lab results, decides whether a result crossed a line, escalates when it does, opens the corrective action, and texts and emails the people who need to know. The audit trail cannot be quietly edited.

The thing I want a non-technical friend to understand about it: compliance software has to be trustworthy before it is useful. So for months there was nothing a customer would recognise as a feature. Just the plumbing that keeps one customer’s data from ever touching another’s, real permissions, guarantees at the database level that hold even if the application code is wrong, and a record of every change that only grows. Roughly half the work is invisible.

There were three deliberate restarts. A working prototype thrown away because its data model could never carry real compliance. A rebuild re-grounded when it overran its scope. The whole interface torn out mid-build once it had become a patchwork. Each restart was a refusal to ship something worse when a better way was already in view.

And one bug got through: a background job loaded too much at once and crashed in a loop in production. It was diagnosed live and fixed by doing the work in pages. Catching things early only means something if you own the time you didn’t.

This is also where my way of working with AI is most developed: hundreds of pull requests, more than 1,500 automated tests, rules enforced by tooling rather than trust, and a build that fails when the documentation goes stale.

What it looks like

A calm screen with a list of storm events and what each one requires. Screenshots will come once the client is comfortable.

What’s next

In-app notifications, watershed-specific limits, report export, and validating the system’s judgment against an expert’s on real data.