Inspiration

In East Africa, flood insurance and many alerts rest on satellite rainfall, because rain gauges are few and station data is often locked. Those satellites tend to miss the heaviest rain. When a trigger is wrong, one operator usually decides, and the farmer who flooded sees neither the reading nor the reason they were unpaid.

We wanted a decision that nobody can quietly rewrite after the flood — not the insurer, not the data desk, not us. That is a trust and accountability problem, not a smarter forecast.

Aetheris is a verification layer for one named flood: the Nyando basin in western Kenya, 4–6 May 2024. It is not a certified insurance product, not a catastrophe model, and not machine learning.

What it does

For each named place that week, Aetheris records whether radar and rainfall agreed, who signed, and whether anything was disputed.

The rule (frozen before this week was scored). A claim can open only when both of these fire:

  1. Radar must sign. Sentinel-1 looks at the place’s land. Permanent water is removed. The land must show enough new open water (VV below −16 dB on at least 5% of land pixels). No radar signature means no claim. Silence counts as no.
  2. Rainfall must also sign. CHIRPS over the upstream catchment must reach 40 mm in three days. Rainfall alone can never open a claim. It is a second instrument, not a payout rule. On this week, rain signed everywhere (about 57 mm on one catchment reading, applied to every place). Radar signed in one place. So rainfall-only would have paid 7. This rule paid 1 (Kabonyo-Kanyagwal). The other 6 news-named floods stay in the record as misses. We do not publish an accuracy percentage. There are no “did not flood” labels, so we do not publish a false-trigger rate.

What the chain does (Sepolia testnet, unaudited). Each claim id is a hash of the place, the week, the rule, and the frozen thresholds file. Each signer uses its own key and posts a small bond with an evidence hash. Anyone can stake a challenge in a short window. The resolver is one named key, not a committee. It can only uphold or reject a live challenge. It cannot open a claim or sign as an attester. If nobody challenges, or the resolver stays silent, the claim can finalize. A finalized claim can release testnet ETH once, only to beneficiaries committed before the season. The M-PESA step is a Daraja sandbox record. It does not send shillings.

What each person sees (the desks).

  • Insurer / aggregator: rain-would-have-paid versus this rule, per place, plus the backtest (agreements, disagreements, found, missed, false triggers left at zero). For trigger design. Not a product they can sell as-is.
  • Reinsurer: the same week layered like an event they already know — hazard, stand-in exposure, indicative JRC damage, modeled loss, unmodeled residual. One event. No AAL, no EP curve, no return period. Depth is “waist-high at Ahero,” taken as 0.9 m and borrowed at the other six, labelled adapted or assumption. Radar fraction is not used as depth.
  • Responder / county: a second instrument before a release or an alert, and a public record. Not the official forecast. Unknown is not dry.
  • ICPAC / Kenya Met: the files — pixels, rain, which names have no outline.
  • Research: the method, the counts, the commands. No model to retrain.
  • Farmer / community: one page in plain language an insurer or officer can show them.

Enter is a labelled desk gate. There is no password and no accounts. Live site: https://aetheris-ashen.vercel.app

How we built it

Python reads one Sentinel-1 scene (6 May 2024) and one CHIRPS catchment total. Place outlines are the four OpenStreetMap boxes we will stand behind. Three news names have no outline, so radar was not run there. We do not invent a box.

The rule lives in one file, config/rule.yaml. Its hash is inside every claim id. The lines were not fitted on this week.

Two Solidity contracts on Sepolia (FloodTrigger, PayoutEscrow) enforce radar-required quorum, bonds, the challenge window, one payout per place-week-rule, and a resolver who cannot attest. The visitor site is a Vite app: landing, enter, method, claims, backtest, and a desk per role. /api/desk repeats the same CSVs the scorer already wrote. It does not invent a radar yes or no. Wallet writes (challenge, finalize, release) are meant to go through the visitor’s own wallet. We hold no visitor keys. Hosted on Vercel. Local server still runs the same files.

There is no machine learning.

Challenges we ran into

Radar sees open water. It misses flood under crops, trees, and roofs. Sentinel-1A’s 2024 revisit is about twelve days; a week with no pass is a miss. A ward box mixes dry and wet land and can pull the fraction down.

Radar and rainfall look at the same storm. They are not two independent witnesses. On this week they disagree on three of the four places we could measure, because rain is yes everywhere and radar is yes in one.

Ground gauges are gated, so we do not treat radar as ground truth. Labels are news reports. They favour places reporters could reach. Unknown is not “no flood.” One week is a small sample. We have not interviewed an insurer, a reinsurer, or a county officer.

The resolver in this demo is one key. Dispute resolution is the weakest part of the design.

Accomplishments that we're proud of

We turned “who do you trust?” into a rule that was fixed before this week was scored, and a record anyone can re-run. We show the disagreement in public: rain would have paid seven, this rule paid one, six reported floods stay unmodeled. We did not hide that in an accuracy figure or a trained model.

What we learned

Checking a decision is not the same as checking that the data is true. The chain can stop any one party, including us, from quietly changing the payout rule or paying twice. It cannot make Sentinel-1 or CHIRPS true, and it cannot see a flood the satellite missed.

What's next for Aetheris

A real gauge attester (TAHMO or Kenya Met), more seasons and more basins, a resolver that is a vote rather than one key, and sitting with an insurer to see whether this record is something they would actually use to design a trigger. Not a stochastic cat model on this one week. Not a guarantee of accuracy.

Built With

Share this project:

Updates

Submission history