Seaseek
The problem
Marine researchers were drowning in reef images, and a model’s guess isn’t ecological data until a person has checked it.
Murky water, ambiguous categories and the same fish seen across neighbouring frames make manual labelling slow, and make raw predictions unsafe to trust.
Two review lines, one interface
Each expert gets the workflow their job needs, on shared navigation, states and components.
- Line A, detections.Technicians accept, reject, reclassify or redraw each box, or draw one the model missed.
- Line B, benthic points.Ecologists label sampled points as coral, sand or unknown, override the model, and see coverage update.
- Provisional by default.Model output arrives as a proposal, keeping its confidence and where it came from, until someone reviews it.
- Honest states.Review status is always visible, and loading, empty and failed requests each say what happened.
Where the human sits
AI services detect, classify and track; the review interfaces are where those predictions become reviewed annotations, and only reviewed annotations go downstream.
We followed a six-stage Design Science Research process with iterative prototypes, and drew the boundary early so every screen had one job: let an expert accept, correct, reject or create.

My part
I owned the frontend: the review dashboard in Next.js, React and TypeScript with Tailwind and a shared component library, plus a CLIP and FAISS semantic search that finds images by meaning, not filename.
I worked with the ML and backend subteams to agree the API contracts early, which is what let us ship a working end-to-end prototype on FastAPI.
made withTeam Seaseek

Result
- ~2×{b:47,100}
- images reviewed per person per day (≈80 → 170)
- 2
- review workflows on one shared frontend
- 2
- rounds of formative user testing
A working, non-production prototype. The throughput figure is the team’s own estimate; the thesis didn’t formally measure annotation time or model accuracy.
