Powered by the EarthChain engine.
BAKUNAWA helps people investigate how a place on Earth changed over time using Earth observation data. EarthChain determines what the evidence actually supports, and prevents unsupported conclusions.
Entry for the 2026 NASA International Space Apps Challenge (14–15 November 2026).
On 5 November 2025 — the day after Typhoon Kalmaegi's flash flood killed roughly 71 people in Cebu — NASA's MODIS flood product over Cebu was 100.00% "insufficient data". Not "no flood". No usable observation at all.
Most tools would render that as an empty map. BAKUNAWA renders it as UNKNOWN, explains that
the satellite looked and saw cloud, and computes that a 12-hour flash flood against a 12-day
revisit had roughly a 4% chance of being caught in the first place.
Missing data is never evidence that nothing happened. That is the one invariant this repository enforces as a test rather than an intention.
Phase 2, evidence pack. No application code yet — deliberately. The web app is hackathon-day work; the evidence pack is the part that cannot be built in 48 hours.
packages/earthchain/ claim-validity engine (TypeScript, zero dependencies)
scripts/ingest/ evidence pack builders (Python, standard library only)
data/ledger/ committed observation ledgers, built from the live NASA archive
docs/limitations.md every verified constraint, written before the code
Requires Node 22+ (for native TypeScript) and Python 3. No install step.
npm test # 19 tests, including against the real ledgers
python3 scripts/ingest/observation_ledger.py # rebuild ledgers from CMR and ASFNot provenance metadata. Provenance says "this pixel came from granule X". EarthChain changes what the product is allowed to say:
- Typed gaps —
NO_MISSION,NO_OVERPASS,SENSOR_BLIND,PRODUCT_GAP,BELOW_RESOLUTION,CONFOUNDED,FETCH_FAILURE,OUTSIDE_CLAIM_WINDOW. Eight different reasons an answer is missing, each of which reads differently to a user. The last one matters most: over Cebu the satellites saw the ground at 99.99% coverage and still could not answer the flood question, because they arrived a day after the water drained. Good data at the wrong time is still insufficient evidence. - Sufficiency rules — a claim declares the evidence it requires and cannot render without it. During research, one dry-season date per epoch produced a clean 7.32% → 58.55% "drowning" curve over the Bulacan delta that vanished entirely under proper resampling. These rules exist so that curve can never be published.
- Confound registry — in coastal Bulacan, fishponds grew from 3,109 ha (1976) to 17,995 ha (2013), about +400 ha/yr of deliberate land-to-water conversion, and a 2,500 ha airport reclamation sits inside the frame. No land-to-water claim there is self-explaining.
- Sampling adequacy — the probability an event was observable at all, given its duration and the sensor's revisit.
Claims resolve to SUPPORTED, POSSIBLE / INCONCLUSIVE, or UNKNOWN, and every SUPPORTED
claim is tagged OUR_ANALYSIS or PUBLISHED_LITERATURE. Cited subsidence rates are never
presented as our own computation.
NASA: OPERA DSWx-S1 and DSWx-HLS, HLS L30/S30, NISAR GUNW/GCOV, GPM IMERG, GRACE/GRACE-FO, GIBS, NASADEM, SEDAC GPW, MCDWD_L3.
Non-NASA, labelled as such in-product: Sentinel-1 (ESA sensor, NASA ASF DAAC archive), JRC Global Surface Water, peer-reviewed subsidence studies, Philippine government boundaries.
See docs/limitations.md for what each of these cannot do.