Engine 1.0.0

How the verdict is computed

A compliance verdict that cannot be explained is worthless, because the moment a competent authority disagrees you have nothing to say. So this page is the whole method: the datasets, the thresholds, the arithmetic, and - importantly - the things it cannot do.

1. The question the law actually asks

Article 3(a) of Regulation (EU) 2023/1115 requires that a relevant product be “deforestation-free”: produced on land that has not been subject to deforestation after 2020-12-31. Article 2(3) defines deforestation as the conversion of forest to agricultural use, whether human-induced or not. Article 2(4) defines forest, following FAO, as land spanning more than 0.5 hectares with trees higher than 5 metres and canopy cover above 10%, excluding land that is predominantly under agricultural or urban land use.

Three consequences follow, and every one of them is a place where naive implementations go wrong:

  • Land that was not forest at the cut-off cannot be deforested. The overwhelming majority of smallholder cocoa and coffee sits on land converted decades before 2020. Those farms are compliant, and the job of the engine is to prove it cheaply rather than to hunt for a reason to fail them.
  • Not all tree-cover loss is deforestation. A rubber plantation being harvested loses tree cover on schedule. Treating every loss pixel as a breach produces a flood of false positives that a compliance team cannot defend and will eventually stop reading.
  • Standing forest is not a breach. Shade-grown cocoa under retained canopy is precisely the outcome the Regulation is designed to reward.

2. Three datasets, chosen for different reasons

Each source answers a question the others cannot, and using one for another’s job is the most common methodological error in this field.

01JRC Global Forest Cover 2020V4 (2026 release)10 mCC BY 4.0

The legal baseline. The European Commission’s own Joint Research Centre built this map for exactly one purpose: to say what was forest on the EUDR cut-off date, using the FAO definition the Regulation adopts. When an authority disputes a verdict, this is the map they reach for. Using anything else as the baseline would be technically defensible and legally useless.

02Global Forest Change (Hansen/UMD)GFC-2025-v1.1330 mCC BY 4.0

The change record. Twenty-four years of annual, per-pixel tree-cover loss with the year of loss attached - the most scrutinised deforestation dataset in existence, which matters when a verdict has to survive an audit.

03Sentinel-2 L2A (surface reflectance)sentinel-2-l2a (Earth Search, AWS Open Data)10 mCopernicus open licence

The eyewitness. Ten-metre optical imagery with a five-day revisit, which catches what the annual products miss: change since the last Hansen release, and change too small for a 30-metre pixel. It is also the only source that produces a picture a farmer recognises as their own land.

All three are open data and need no API key. That is not a convenience - it is the business model. A verification that depends on a commercial imagery licence can never be given away to the people who most need it.

3. Reading a continental-scale map without downloading it

The JRC baseline covers the globe at 4,320,000 × 1,680,000 pixels - 37.7 GB as a single Cloud-Optimised GeoTIFF, which Plotline never downloads and never opens. The Commission publishes it as 10°×10° granules as well, and those are what the engine reads: for a two-hectare cocoa farm it fetches a few kilobytes out of the middle of the 276 MB granule covering it, over an HTTP range request, in milliseconds.

The granules rather than the mosaic, for a reason we measured rather than assumed: the single global file’s header alone takes about 96 seconds to parse, because a 37.7 GB BigTIFF carries roughly 6.9 million tile offsets. A granule parses in about 1.5 seconds, and the handle is cached, so every subsequent plot in the same region costs nothing.

This is the whole reason a verification costs a fraction of a cent, which is in turn the whole reason a smallholder cooperative can be given one for nothing. The running system counts every byte it transfers and prices it at commercial cloud egress rates - deliberately conservative, since the archives are in fact free to read - so the cost figure shown in the interface is measured rather than claimed.

4. Sub-pixel geometry

A typical West African cocoa plot is 1.5 to 3 hectares. On the 30-metre Hansen grid that is between two and three pixels. Decide membership by asking “is the pixel centre inside the polygon?” and the answer for a real farm swings by ±50% depending on where the grid happens to fall. Every reported hectare figure would be noise.

So Plotline does not use a binary mask. It scan-converts the polygon at a much finer sub-grid - up to 16 samples per pixel edge, chosen adaptively so that small plots get the most care - and computes the fraction of each pixel inside the plot. Pixel areas are then integrated exactly on the sphere rather than approximated with a cosine at the pixel centre, because getting that wrong is the most common way to report a wrong hectare figure.

5. Intersecting loss with the baseline

The engine resamples the Hansen loss year onto the JRC 10-metre grid and counts a pixel as deforestation only when both conditions hold: the JRC mapped it as forest on the cut-off date, and Hansen records it as lost after 2020-12-31.

Loss on land that was already agricultural is reported separately as context and never contributes to a breach. This single intersection is what separates a usable tool from one that flags every rubber rotation and every cocoa replant.

6. Greenness is not forest

This was the most instructive thing the build taught us. The obvious high-resolution check is NDVI - the standard greenness index. Run it on a plot that was clear-felled in 2022 and replanted with cocoa, and by 2026 NDVI comes back higher than the rainforest it replaced. A greenness check does not merely miss that deforestation; it actively certifies it.

So the structural signal is NDMI, the normalised difference moisture index, which contrasts near-infrared with short-wave infrared and therefore responds to canopy water content and vertical structure. Closed tropical forest holds far more water in far more layers than any crop. When forest becomes a tree crop, NDMI falls hard and stays down even after the replacement greens up. A drop past -0.08 is treated as evidence of structural change.

And then the gate

Adding NDMI immediately produced its own false positives: three established cocoa farms whose moisture had fallen since 2020. The measurement was correct - a dry season, a pruning cycle and a replant will all do that - but the land was already agricultural in 2020, so no amount of canopy change on it is deforestation within the meaning of Article 2(3). The high-resolution line is therefore only allowed to return a breach where the baseline found forest to lose. The fix for a false positive is rarely a higher threshold; it is usually a better question.

7. Cloud, and why scene-level filtering fails

Catalogue metadata reports cloud cover over a 110 km × 110 km tile, which in the tropics is almost always 40–80%. Rejecting those scenes would leave a Ghanaian cocoa farmer with no usable imagery for months. But a scene that is 60% cloudy is very often perfectly clear over one two-hectare plot.

Plotline therefore screens cloud at the plot, using the Sentinel-2 scene classification band over the plot footprint alone, and stacks scenes from the same MGRS tile - identical pixel grid, so no resampling error creeps in - taking the per-pixel median of clear observations. The median is deliberate: it is robust to a bright cloud edge or a dark shadow that a mean would smear across the whole plot. Stacking stops as soon as roughly 92% of the window has a clear look, so an easy plot costs one scene and only difficult plots pay for more.

8. Thresholds, stated plainly

ThresholdValueWhy
Minimum forest patch0.5 haArticle 2(4). Forest below this is, by definition, not forest.
Loss detection floor0.09 haOne Hansen pixel. Below this the instrument cannot resolve the change, so the engine returns “needs review” rather than manufacturing precision.
Canopy moisture decline-0.08 NDMIClosed tropical forest sits at 0.30–0.50; crops sit well below. A drop this size is hard to explain by seasonality alone.
Negligible-risk ceiling10 / 100Article 10(1) permits placing product only where risk is negligible. There is no “acceptable risk” tier in the Regulation.

9. Disagreement is reported, not resolved

Independent datasets disagree about the same plot routinely. A tool that silently prefers one has no answer when an auditor cites the other. Plotline reports each evidence line on its own terms, and where they conflict it returns needs review and says why. That third outcome is the one most tools omit, and omitting it is how they end up either blocking compliant farmers or waving through cleared land.

Confidence is a transparent product of named penalties - sample size, dataset availability, cloud, whether the boundary was walked or inferred from a point - rather than a learned score, because an operator has to be able to explain to an auditor why a particular number appeared.

10. What this cannot do

Limitations, in full
  • It is decision support, not a compliance determination. Compliance rests with competent authorities. The European Commission is explicit that satellite tools support due diligence rather than certify it.
  • Article 3(b) legality is out of scope. Satellites cannot see land tenure, labour law or permits. Plotline flags the absence of that evidence; it cannot supply it.
  • Forest degradation is only partly addressed. Article 2(7) degradation - primary forest converted to plantation - applies to wood alone and needs forest-type classification the current engine does not perform.
  • The baseline map has its own error. The JRC product is a model of the world, not the world. Plot-level disputes need ground truth.
  • A point is not a farm. Where a producer supplies a point, the plot is modelled as a circle of the declared area. Every verdict derived that way carries the caveat.
  • Cloud sometimes wins. When it does, the engine says so and lowers confidence rather than guessing.