Moosa Memon
← Index of work

Triage for dark fishing vessels, from radar return to cited brief

Bright Return: cross-references synthetic-aperture-radar vessel detections against marine protected area boundaries and vessel-risk data to produce prioritized, cited briefs for human review. The analyst layer on top of a mature detection problem.

Type
Environmental
Stack
Python / Geospatial / SAR / CLI
Status
Early build; pipeline runs end to end on generated scenes; 225 tests; architecture decisions recorded as ADRs

Problem

A “dark” vessel has switched off its AIS transponder and is invisible to conventional tracking. Radar doesn’t care: a steel hull against open water produces an unmistakable bright return on SAR. Detecting those returns is a well-benchmarked problem. What’s missing downstream is turning “there’s an unmatched radar return here” into “this return is 3.8 km inside a no-take reserve, a vessel went quiet 5 km away nine hours earlier, and here is the cited brief ranked against everything else in the queue.”

System

brightreturn demo needs no credentials, downloads or network: it generates SAR scenes, runs the full pipeline, and writes briefs, annotated radar chips, a ranked review queue, and a reproducible run manifest. The real pipeline matches detections to AIS tracks, flags the unmatched, spatially joins against protected-area boundaries, scores risk, and ranks the queue for a human analyst.

Worth knowing

The project is built around a live complication rather than pretending it isn’t happening: as of mid-2026, Global Fishing Watch’s SAR vessel-detection datasets are offline following the retirement of Sentinel-1A, pending integration of newer satellites. The pipeline is scoped so the detection input is swappable, and the docs say exactly which parts are exercised on real data and which on generated scenes.

Every design decision has an ADR. On a project this sensitive (the output is an accusation, in effect), the reasoning behind each threshold matters as much as the threshold.

Have a workflow that looks like this?

Most of these start as a messy, manual process someone got tired of. Twenty minutes is usually enough to sketch how I'd approach yours.