Catch Traceability for a Senegalese Fishing Cooperative
Designed and built a clickable plant console for a Dakar fishing cooperative that exports tuna, snapper and octopus to the EU: every lot traced back to the vessels, trips and landings behind it, histamine results checked against the cooperative's policy, and catch certificate data built from recorded landings with a balance check that refuses to export more than was landed.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Plant dashboard, lots, lot detail with 6 tabs (origin, lineage, quality, storage, documents, activity), catch certificates and certificate detail. A Scan lot panel opens any lot by its number or trace code.
Landing balance, licence valid on the catch dates, licence numbers present, every lot traced to a declared landing, and estimated live weight. Draft CC-26-0044 fails the balance check by 30 kg and the screen shows which landing.
Each tuna lot shows 9 histamine samples against a 50 mg/kg internal action limit and receiving temperatures against a 4.0 °C limit, both labelled as the cooperative's own policy (version 7).
18 landings from 8 vessels, 22 lots including 3 frozen loin lots from processing runs, 12 catch certificates covering every status, 5 orders and 12 shipments to 4 EU buyers.
Ndaw Mbaar's catch data lived in paper logbooks that got wet or were filled in on the quay from memory, a landing ledger kept by one clerk and spreadsheets at the plant. When an EU importer asked which vessel and area a carton came from, the answer took days or could not be given, because lots from several boats were mixed on the line without a record. Catch certificates were typed by hand from the ledger, weights did not always match, and one shipment was held at an EU border post while the paperwork was corrected.
Catchlog follows every fish lot from the haul at sea to the EU shipment. In the plant console, a lot shows the vessels, trips and landings behind it with each one's share of the weight, its full lineage through processing runs, its lab and temperature results against policy, and the certificates and shipments it appears on. Catch certificate data is built from those recorded landings rather than typed by hand.
About 120 member vessels, mostly motorised pirogues, land catch at several sites around Dakar. The cooperative's plant cuts, mixes and freezes it, and EU buyers need a catch certificate and safe, traceable product for every consignment.
Tuna loins are cut from whole fish landed by several boats on different days. Once lots were combined on the processing line, nobody could say which vessel, trip or FAO area a finished box came from, or in what share.
Under Council Regulation (EC) No 1005/2008, fish imported into the EU must carry a catch certificate, filled in by the exporter and validated by Senegal's competent authority, and since 10 January 2026 sent through the EU's CATCH system. Typing weights by hand let the same landing be counted on more than one certificate.
EU hygiene rules, including histamine criteria for species such as tuna, set the bar for chilling, freezing and testing. The cooperative tests every tuna lot before export, with a sampling plan and action limit stricter than the legal criteria, and a lot that fails must not reach an order.
Senegal's Maritime Fisheries Code sets who may fish, where and with what gear, and the authority announces closures, protected zones and species allocations. These change, so the cooperative has to enter them from the notices and see in time when a vessel's permit expires or its allocation runs out.
Mapped 12 roles from skipper and landing clerk to lab technician, export officer and the buyer with no login, and 49 screens across an offline-first skipper app, a quay landing app, the plant console, the cooperative admin area and a public trace page. Defined the data model for vessels, licences, trips, hauls, landings, lots with origin shares and parents, processing runs, lab tests, orders, shipments and catch certificates, and wrote down the rules the design follows: the EU IUU Regulation and CATCH, EU hygiene and microbiological criteria, the Senegal Maritime Fisheries Code, ICCAT and FAO area codes, and Senegal's Law No. 2008-12 on personal data.
Built the plant console's 5 key screens on a production dashboard kit: the dashboard with KPI cards, a live chain from hauls to shipment, holds with age, incoming lots and orders at risk; the lots list with status, species and lab filters and a quick view panel; lot detail with print label, hold and release, allocate to order and a lineage graph; and catch certificates with validation checks, vessel and catch blocks, the landing balance, export for CATCH and recording the authority's validation. Actions run on local state.
The skipper app that works offline for days at sea with Iridium satellite summaries and offline maps, the landing app with Bluetooth scales and Zebra label printers, temperature loggers in the plant, mobile money member payments in XOF through Wave or Orange Money, and SMS alerts. The remaining plant screens (receiving, processing runs, cold storage, lab tests, orders, shipments), the cooperative admin area with licences, quotas, zones, trips, member payments, ministry reports and an audit log, staff access by role, the public trace page, and a check of the exact CATCH data fields before go-live.
A mixed loin lot such as LT-26-004809 lists both vessels, their trips and landing declarations, gear, catch dates and FAO subarea 34.3.1, with each vessel's share of the weight. The lineage graph shows every parent lot and processing run behind it.
Catch certificate data comes from the recorded landings, not from a typist. The balance check adds up the weight each landing has already given to earlier certificates and flags any certificate that would export more than was landed, before it goes to the authority.
The temperature limit, histamine sampling plan and action limit are shown as the cooperative's own policy with a version number. The certificate screen states that validation belongs to the flag state's competent authority; Catchlog only prepares and checks the data.
Allocate to order shows whether a lot is eligible for an EU order: lab result passed, origin complete and no hold. Lots on hold for a lab result, a temperature breach or documents appear on the dashboard with their reason and age.

Designed and built a clickable port call planning console for a multipurpose port at Walvis Bay: every call from pre-arrival notification to departure, a berth planning board that refuses windows breaking length, draft, cargo or dangerous goods rules, and an anchorage queue that records why each ship is waiting.

Designed and built a clickable crewing platform for a Mumbai ship manager running 45 tankers and bulk carriers: a relief timeline per vessel, a seafarer register with document status, reliefs due with proposal and approval rules by rank, and crew changes planned at a port with readiness, travel, letters and a cost sheet against budget.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab