Inspiration

As two computer engineering students diving into climate data, our initial curiosity started with a simple question: "When a parametric crop insurance contract triggers a payout because frost hit a farm, whose thermometer actually decides?" We started pulling daily weather records for Ankara from three globally respected sources: NASA POWER satellite data, Open-Meteo ERA5 reanalysis, and NOAA's central ground station. To our surprise, they frequently reported conflicting values on the exact same day. In 2023 alone, out of 38 days where freezing was recorded, the three sources disagreed on 13 of them ($34.2\%$). In such scenarios, if an insurer relies on one source, frost may be detected and a payout triggered; if they rely on another, the farmer could receive nothing. On top of that, we saw sensors malfunction—NOAA's central station went completely silent for 7 consecutive days in March–April 2026. Spreadsheets are constantly edited, and once climate numbers are stored in Excel, there is zero cryptographic proof that they weren't altered retroactively. We realized climate decisions don't just need more data; they need an independent, transparent trust and audit layer.

What it does

EcoProve AI bridges raw climate observations and real-world decisions across 80 months (2020-01 to 2026-08, 7,305 daily records) for Ankara, Türkiye:

  • We never silently delete data: Ground station outages are explicitly kept on the calendar as Missing, ensuring silent sensors aren't swept under the rug.
  • Dynamic AI Expected Intervals: We train a walk-forward LightGBM quantile model to estimate a 90% expected temperature band $[q_{05}, q_{95}]$ with zero same-day data leakage (achieving a $1.39^\circ\text{C}$ MAE in 2026, outperforming both Persistence and Climatology baselines).
  • Consensus Reliability Scoring: Each reading receives an objective penalty score: $$z_{\text{eff}} = z_{\text{cross}} + z_{\text{interval}} + 3 \times \text{repeat}$$ which converts to a Reliability Score $S = \text{round}(100 \times 2^{-(z_{\text{eff}}/6)^2})$. Records are grouped into Trusted ($84 \le S \le 100$), Review ($50 \le S < 84$), and Quarantined ($0 \le S < 50$, preserved with transparent reasons rather than discarded).
  • Monthly Merkle Sealing on Ethereum Sepolia: Instead of wasting gas writing thousands of daily rows on-chain, we bundle each month into a $\text{keccak256}$ sorted-pair Merkle tree and write a single 32-byte root to EcoProveRegistry.sol. All 80 months are sealed and immutable.
  • Zero-Wallet Browser Verification: Anyone can open our web app, pick any daily record, and verify its cryptographic proof against Ethereum Sepolia in one click—no wallet, token, or browser extension required.

How we built it

We divided the project into two collaborative pillars:

  1. Data Science & ML Pipeline: We built automated ingestion scripts in Python to align the three feeds. Because NASA's grid cell is at ~1128 m while Ankara station is at 891 m, we calibrated monthly elevation biases exclusively on prior training years. We implemented walk-forward LightGBM quantile regressors, synthetic fault injection benchmarks, and Merkle tree generation scripts.
  2. Web3 & Full-Stack Application: We developed and tested EcoProveRegistry.sol using Hardhat, writing 6 comprehensive unit tests to enforce write-once immutability (already stored) and tamper detection. We then crafted an interactive Streamlit dashboard with custom dark emerald styling, multi-month selectors, parallel RPC calls for live blockchain registry queries, and an interactive tamper simulation.

Challenges we ran into

  • Elevation Bias vs. Real Disagreement: Early on, NASA looked constantly "suspicious" simply because its grid is 240 meters higher than the city station. We had to implement a monthly elevation-bias correction learned strictly on historical training years so normal altitude differences wouldn't trigger false alarms.
  • The "Extreme Weather" Dilemma: One of our biggest debates was: what if all sensors report an extreme temperature because of a real heatwave? If we blindly used outlier detection, real disasters would be quarantined. We engineered EcoProve so that when all three sources rise together, the data remains Trusted. In our synthetic benchmarks, EcoProve achieves an F1 score of $0.817$ on injected faults in a single run ($0.865$ best of 10 seeds) versus just $0.148$ for a single-series threshold baseline, while preserving $98.6\%+$ of real heatwaves without false quarantine!
  • Gas Costs & Scalability: We quickly realized that writing daily weather readings directly to Ethereum is financially unviable. Discovering that a sorted-pair Merkle tree allowed us to seal an entire month in a single transaction (12 transactions per year per city, an $O(1)$ scaling profile) was our biggest breakthrough.

Accomplishments that we're proud of

  • Successfully sealing all 80 monthly roots from January 2020 through August 2026 on the Ethereum Sepolia testnet under our official Ankara label.
  • Building a genuinely useful tamper demonstration where changing a temperature by even $0.1^\circ\text{C}$ instantly causes the Ethereum smart contract to return ❌ Not Verified — Tampering Detected.
  • Keeping the verification completely accessible: our peers and judges can audit any record from their mobile phone or laptop without ever setting up a MetaMask wallet.

What we learned

  • Reanalysis models (ERA5, MERRA-2) assimilate station data, meaning sources are never 100% statistically independent.
  • Blockchain doesn't solve the "garbage in, garbage out" problem on its own—it only proves immutability after sealing. That is why pairing off-chain AI cross-validation with on-chain cryptographic proofs is the real key to environmental data trust.

What's next for EcoProve AI

  • Expanding beyond Ankara to key agricultural basins across Türkiye (Konya, İzmir, Adana).
  • Extending the schema from temperature to precipitation, solar irradiance, and wind speed.
  • Deploying the registry on an Ethereum Layer-2 (such as Arbitrum or Base) and exploring Chainlink-style oracle integrations for live, automated parametric insurance smart contracts.

Built With

Share this project:

Updates

Submission history