Inspiration
Storm overflows may only release sewage in heavy rain. Even so, water company figures obtained by The Times show almost 15,000 spills on dry days in England in 2025, about 40 a day. The overflow feeds and the rainfall data are both public and live, yet nobody joins them while a spill is still happening.
What it does
Every 15 minutes Sentinel reads around 13,000 overflows from 8 water companies alongside the Environment Agency's rain gauges. A spill starting on day $d$ is flagged when
$$\max_{g \,:\, \text{dist}(g) \le 10\,\text{km}} \text{rain}_g(t) < 0.25\ \text{mm}, \quad t \in {d-1,\ d-2}$$
Each flagged case then goes to a team of agents. Claude builds the case, and gpt-oss-120b on Databricks argues for an innocent cause such as a faulty sensor or rain the gauges missed. We chose a different model family for the skeptic so it would not simply agree. Linkup searches the web for evidence on both sides, an adjudicator weighs it, and a drafter writes the report to the Environment Agency for a person to approve. Finally, every cited page is reopened to confirm it says what we claim.
Our best example is the Carnon River in Cornwall, which had been spilling for 21 hours with 0.0 mm of rain at both nearby gauges. The skeptic scored it 0.42. Linkup then found a drought in the area the week before and a history of spills there in dry weather, which lifted the verdict to 0.62, "needs review", with all 9 citations verified.
How we built it
Everything runs on Databricks: bronze, silver and gold Delta tables written with MERGE, a scheduled Job, AI Gateway serving the skeptic, and MLflow Tracing on every agent and tool call with the citation score logged as feedback. Results feed an AI/BI dashboard and a Genie space, so anyone can ask which company has the most dry spills right now. Search, full page reads and the citation checks all go through Linkup.
Challenges
Rain gauges go silent, and offline monitors made spills look days long, so both now count as unknown rather than dry. Early runs cited an events listing as a weather source, which is why the verifier exists. At first the skeptic rejected every case, until we gave the final call to an adjudicator.
What we learned
A spill on a dry day is a lead, not proof. Most of the work was being honest about uncertainty: missing data is not dry weather, and nothing reaches a regulator without a person signing it off.
Built With
- anthropic
- claude
- databricks
- databricks-ai-gateway
- databricks-genie
- databricks-jobs
- deck.gl
- delta-lake
- environment-agency-api
- esri
- gpt-oss
- javascript
- linkup
- maplibre
- mlflow
- pandas
- postcodes.io
- python
- unity-catalog
- vercel