AeroLeaf
Satellite-Assisted Environmental Verification
Carbon credits depend on a claim about a place: that trees were planted there and are still growing. AeroLeaf explores whether that claim can be checked from public satellite imagery — tracking vegetation indices across a site over time, estimating sequestration from the trend, and attaching verification to specific observable milestones rather than to a self-reported document.
- Python
- NDVI
- Sentinel / Landsat
- React
- Node.js
- Geospatial
The problem
Verifying a carbon credit usually means trusting a report about a location most parties will never visit. That is expensive to audit, slow to repeat, and structurally easy to overstate. Satellite imagery covers the same sites continuously and publicly, which suggests a different approach — but converting raw imagery into a defensible claim about vegetation growth is not straightforward. Cloud cover removes observations unpredictably, vegetation indices swing with the season regardless of whether anything was planted, and the relationship between a spectral index and actual carbon is an estimate with real error bars.
The approach
Treat verification as a signal problem over time rather than a single measurement. A site is defined by its boundary, imagery for that boundary is collected across a multi-year window, NDVI is computed per scene, and the resulting series is examined for trend after accounting for seasonality. Sequestration is estimated from that trend and presented as an estimate with its assumptions stated, not as a settled figure. Verification milestones are tied to observable changes in the series, so the artefact being trusted is the imagery record rather than an attestation.
Architecture
Imagery in, vegetation signal out, with the trend — not any single scene — carrying the claim.
- Site boundarySourcepolygon geometry
- Project recordStore
- Sentinel / Landsat scenesSource
- Cloud + quality filteringProcess
- NDVI computationProcessred / NIR bands
- Per-site aggregationProcess
- NDVI time seriesStore
- Seasonality vs trendProcess
- Sequestration estimateModelmodelled, with stated assumptions
- Geographic viewOutput
- Imagery timelineOutput
- Verification milestonesOutput
A project is registered as a geographic boundary. Everything downstream is computed within that polygon.
Technical decisions
Public imagery over commercial imagery
Commercial satellites offer far better resolution, but a verification method that depends on paid imagery inherits a gatekeeper and cannot be independently reproduced. Sentinel and Landsat are free, global and archived for years back, which means a claim can be re-checked by anyone and the historical baseline already exists. Resolution is the cost — individual saplings are invisible at these pixel sizes, so the method reads canopy-scale change and cannot say anything about small plots.
NDVI as the starting signal
NDVI is well understood, decades old, computable from bands both programmes carry, and directly interpretable. That makes it the right place to start even though it saturates over dense canopy and responds to any green vegetation — including crops or seasonal grass rather than planted trees. Treating it as a first signal rather than the final answer is what keeps the conclusions honest.
Trend over snapshot
A single high-NDVI image proves almost nothing; vegetation is green in the growing season whether or not anyone planted it. Only a multi-year trajectory separates real establishment from seasonal noise, which is why the series — and its irregular, cloud-driven sampling — is the primary artefact rather than any one scene.
Blockchain scoped to verification records, and left unbuilt
The defensible use of a ledger here is narrow: anchoring a verification record so it cannot be quietly revised after the fact. It does nothing to make the underlying measurement more trustworthy, which is where the actual difficulty is. The contracts and issuance flow were specified but deliberately not built — the measurement problem was worth solving first, and claiming an unbuilt chain integration would be the exact overstatement this system exists to reduce.
System capabilities
4 of 7 implemented. The rest are labelled with what they actually are.
Satellite imagery analysis
ImplementedPublic Sentinel and Landsat imagery is retrieved and processed for a defined site boundary.
NDVI computation
ImplementedVegetation index calculated per scene from spectral bands and aggregated across the site.
Time-series tracking
ImplementedIndex values assembled into a multi-year series so change is read from trend rather than a single observation.
Geographic visualisation
ImplementedSites and their imagery history are rendered on an interactive map.
Sequestration estimation
In progressCarbon sequestration estimated from the vegetation trend. A modelled figure with meaningful uncertainty, not a measurement.
On-chain verification records
Designed, not builtDesigned approach for anchoring verification milestones to a public ledger via smart contracts. Specified, not built.
Credit issuance and marketplace
Designed, not builtDesigned flow for issuing and transferring verified credits. Specified, not built.
Technology stack
Analysis
- Python
- NDVI computation
- Time-series analysis
- Sequestration estimation
Imagery
- Sentinel imagery
- Landsat imagery
- Scene selection
Application
- React
- Vite
- Node.js
- Express
Data
- Firebase / Firestore
- Map visualisation
Challenges
The parts that were genuinely hard. Pretending everything went smoothly makes the rest less believable.
Clouds make the time series irregular
Optical satellites cannot see through cloud, so observations arrive at unpredictable intervals and some months are simply missing. Any trend analysis has to work on an unevenly sampled series rather than assuming a regular cadence.
Seasonality masquerades as growth
The seasonal swing in vegetation index is large enough to swamp the multi-year signal being looked for. Separating the two is the core analytical difficulty, and getting it wrong produces confident, wrong conclusions in both directions.
Index to carbon is a modelled leap
There is no direct conversion from a spectral index to tonnes of carbon. Every estimate depends on assumptions about species, density and biomass that carry substantial uncertainty — which is why the output is framed as an estimate with its assumptions visible.
Current status
A research prototype. Imagery retrieval, NDVI computation, time-series tracking and geographic visualisation are implemented. Sequestration estimation is in progress. The blockchain verification and credit issuance components are designed and specified but have not been built.
Next steps
- Validate estimates against ground-truth measurements from known sites
- Quantify and surface uncertainty rather than reporting point estimates
- Test additional spectral indices where NDVI saturates over dense canopy
Have a difficult problem worth building?
We’re interested in ambitious software, AI systems, research collaborations and real problems where careful engineering actually changes the outcome.