Inspiration

A forest carbon claim needs more than a boundary on a map and a claimed quantity of carbon. Reviewers need to inspect environmental evidence, understand its limitations, and check for conflicting registrations.

We built ProofOfCarbon to make that first review easier. Our guiding principle is “Evidence before assurance”: show what the available evidence supports, reveal what is missing, and preserve an inspectable record.

What it does

ProofOfCarbon is a working forest carbon claim screening prototype.

Users select a forest boundary and reporting year. The application retrieves available fire observations and historical weather context, applies transparent screening rules, and generates a report containing the result, evidence coverage, and a plain-language explanation.

Risk and evidence completeness appear separately. Missing required evidence produces “review required” rather than an unsupported clean result.

Users can download canonical claim and report JSON files with reproducible cryptographic hashes. They can optionally connect MetaMask to register those fingerprints and geographic cells on Base Sepolia.

The smart contract rejects registrations containing cells already reserved for the same reporting year. Only the record owner can retire it, and retirement preserves the reservations.

The app includes clearly labeled synthetic scenarios for demonstrating quiet conditions, elevated fire signals, and duplicate attempts.

ProofOfCarbon supports due diligence. It does not certify carbon credits, verify carbon removals, or establish additionality or permanence. Claimed carbon quantities are user supplied and unverified.

How we built it

The frontend uses Next.js, React, TypeScript, and Leaflet for the interactive map, claim inputs, screening results, and registry interface.

Next.js server routes validate inputs using Zod, process geographic boundaries, retrieve evidence, and apply deterministic scoring rules.

NASA FIRMS supplies fire observations. Open-Meteo historical ERA5 data supplies precipitation context.

Gemini explains the fixed screening findings through constrained, validated output. It does not calculate or change the score. If the provider fails or returns invalid output, the application displays a labeled fallback explanation.

Turso, accessed through libSQL, stores downloadable reports. Canonical JSON and Ethereum Keccak-256 hashes provide reproducible fingerprints.

A Solidity contract on Base Sepolia records report fingerprints and enforces submitted geographic cell reservations by reporting year. MetaMask and viem handle connection, simulation, transaction submission, and receipt confirmation.

Vercel hosts the application. API credentials stay on the server.

Challenges we ran into

One challenge was distinguishing missing evidence from an absence of detected risk. Our current live FIRMS integration covers only five days of a reporting year, which cannot support an annual fire assessment. We therefore make the coverage limitation visible and return “review required” for annual live claims.

Another challenge was keeping AI explanations consistent with the screening rules. We calculate results before calling Gemini and validate its output against the supplied findings.

Geographic conflict detection also required careful handling of polygon boundaries and cell intersections. Our conservative grid catches submitted cell conflicts, but nearby non-overlapping polygons can share cells.

Wallet connection introduced another practical issue: switching networks can change the exposed account. We fixed the connection sequence to read the account after switching and added regression tests.

Accomplishments that we're proud of

We connected environmental screening, constrained AI explanations, durable report storage, and a deployed blockchain registry in one hosted application.

We completed a hosted MetaMask walkthrough with two accounts: the first registered a report, the second received a duplicate rejection, and the owner retired the original record.

We also implemented reproducible report hashes, explicit synthetic-data labels, visible evidence limitations, and contract tests covering duplicate reservations, authorization, and retirement behavior.

What we learned

Evidence completeness and detected risk answer different questions. Presenting them separately makes results easier to interpret.

AI explanations work best when grounded in validated findings rather than allowed to invent assessments.

Blockchain records can make submitted information traceable and enforce registry rules, but they cannot independently establish that environmental claims are true. Clear trust boundaries are essential.

Testing the full browser-to-wallet workflow also revealed issues that local contract tests alone could not catch.

What's next for ProofOfCarbon

Our first priority is validated annual fire coverage.

We also want to calibrate screening rules, strengthen validation of submitted geographic cells and scores, and add production access controls, distributed rate limiting, monitoring, and backups.

A complete blockchain event index would improve registry browsing across devices. Additional evidence sources and external registry integrations could make the tool useful to reviewers, procurement teams, and auditors as a screening layer alongside existing systems.

Built With

Share this project:

Updates

Submission history