Caellum Buys
All work

BlueNet: Ocean Watch

Ranks suspicious vessel activity across Mauritian waters in plain code, then drafts a case file on the device.

Status
Prototype24-hour build
Built for
Build with Gemma: Blue Mauritius & Beyond
When
July 2026, a 24-hour build at Middlesex University Mauritius
Team
Team of five
My role
Marine protected area and zone data
Built with
Python and FastAPI, React, TypeScript, Vite, Leaflet, Gemma 4 on-device (WebGPU), React Native and Expo
Links
Triage queue with the top priority vessel, F/V Sirius Star, scored 12.0 high, and counts of high, medium and low events.
The triage queue, highest severity first (demo data).

The problem

Mauritius is responsible for about 2.3 million km² of ocean across its EEZ, the Chagos EEZ and a joint zone with Seychelles. A queue of vessel-tracking alerts isn’t actionable by itself. A small operations team needs to know which events to look at first, and why.

How it works

  • Pulls pre-computed Global Fishing Watch events (tracking gaps, encounters, loitering, fishing) and turns them into three flags.
  • Plain Python checks each event against marine protected areas and jurisdiction zones, matches nearby community tips, and computes a weighted severity score with its reasons.
  • Selecting a vessel hands Gemma, running in the browser, the fixed facts and the score’s reasons. A tool loop runs four lookups (owner, sanctions, port history, licence) and drafts a case file.
  • A mobile app lets fishers send photo tips with GPS, queued offline and synced later.
  • Kreol tips are glossed in place by a fixed glossary, so an officer can still read the original words.

Design decisions

  • Gemma never calculates severity, decides the ranking or makes an enforcement decision. The score stays in plain, inspectable code.
  • The ranked queue keeps working if the model can’t load.
  • Seeded demo data is labelled as demo data and never presented as a real allegation.

My part

  • Marine protected area and zone data, credited in the app as “MPA / Zone Data”. The severity score checks every event against these zones.

Not done yet

  • A hackathon prototype: demo-grade logins, open CORS, SQLite.
  • On-device species ID needs a phone with about 8 GB of RAM and a 5 GB model download.
  • The pollution heatmap is a labelled mock.