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
- Repository: private team repository
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.
More screenshots
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.





