Renato Cordeiro Ferreira
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab
Building an ML-Enabled System
for the Maritime Domain
https://renatocf.xyz/jads26-slides
2026
Renato Cordeiro Ferreira
Institute of Mathematics and Statistics (IME)
University of São Paulo (USP) – Brazil
Jheronimus Academy of Data Science (JADS)
Technical University of Eindhoven (TUe) / Tilburg University (TiU) – The Netherlands
OCEAN GUARD
Former Principal ML Engineer at Elo7 (BR)
4 years of industry experience designing, building, and operating ML products with multidisciplinary teams
B.Sc. and M.Sc. at University of São Paulo (BR)
Theoretical and practical experience with Machine Learning and Software Engineering
Scientific Programmer at JADS (NL)
Currently participating of the MARIT-D European project, using ML techniques for more secure seas
Ph.D. candidate at USP + JADS
Research about SE4AI, in particular about MLOps and software architecture of ML-Enabled Systems
Renato Cordeiro Ferreira
https://renatocf.xyz/contacts
This talk describes
challenges and lessons learned
on building OCEAN GUARD:
a system for anomaly detection in the
maritime domain
System
Specification
Actors
Investigator
Anomaly
Detection
Engine
Ocean Guard
Metadata
(User retrieves more info if available)
Vessel ID
MMSI
---
Lat / Lon
Heading
COG / SOG
Date + Time Selector
(show clues of which data is available)
| 1 |
|---|
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 1 |
|---|
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 13 |
| 15 |
| 16 |
| 17 |
| 18 |
| .. |
months
days
hours
Vessel
Trajectory
Known
Vessel
(AIS)
Known
Vessel
(LRIT)
Known
Vessel
(VMS)
Known
Structure
Piraeus Sea
(35.86, 23.03)
(37.95, 23.76)
Move to another
Area of Interest
AoI Selector
(indicates where the map is zoomed in currently)
Unknown
Vessel
(AIS)
Unknown
Vessel
(Satellite)
Known
Vessel
(AIS + Radar)
See geolocations of marine objects in a map
Filter geolocations by area of interest, date and time
I2
Discern different types of marine objects (vessels, etc.)
I3
Retrieve geolocations from different data sources.
I4
Check metadata associated with a given marine object
I5
Highlight the trajectory of a marine object
I6
See anomalies identified by the tool in a map
I7
Filter anomalies by area of interest, date and time
I8
Inspect why an anomaly was considered so by the tool
I9
I1
Ocean Guard
Metadata
(User retrieves more info if available)
Vessel ID
MMSI
---
Lat / Lon
Heading
COG / SOG
Date + Time Selector
(show clues of which data is available)
| 1 |
|---|
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 1 |
|---|
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 13 |
| 15 |
| 16 |
| 17 |
| 18 |
| .. |
months
days
hours
Vessel
Trajectory
Known
Vessel
(AIS)
Known
Vessel
(LRIT)
Known
Vessel
(VMS)
Known
Structure
Piraeus Sea
(35.86, 23.03)
(37.95, 23.76)
Move to another
Area of Interest
AoI Selector
(indicates where the map is zoomed in currently)
I3
Unknown
Vessel
(AIS)
I3
I7
I1
I6
I3
I3
I2
I8
Unknown
Vessel
(Satellite)
I7
Known
Vessel
(AIS + Radar)
I4
Detect anomalies related to a marine object
List anomalies by area of interest, date and time
Explain why an anomaly can be
considered so
A2
A3
A1
Architecture
Software Architecture in Practice - ICSA 2026
Reusability in MLOps:
Leveraging Ports and Adapters
to Build a Microservices Architecture
for the Maritime Domain
Delta Architecture
Reactive
Machine Learning
Data Product
Doctoral Symposium - CAIN 2025
A Metrics-Oriented Architectural Model
to Characterize Complexity on
Machine Learning-Enabled Systems
Core Dev Team
Scientific Programmers
Research Team
MSc Students
Innovation Team
PDEng Trainees
Core Dev Team
Scientific Programmers
Ui Dev Team
Hired Developers
Core Dev Team
Scientific Programmers
Research Team
MSc Students
Innovation Team
PDEng Trainees
Published at SADIS @ ECSA 2025
Making a Pipeline Production-Ready:
Challenges and Lessons Learned
in the Healthcare Domain
Contains Ports & Adapters reusable by all services
Cross-cutting concerns
get reused in every service
Specialized dependencies
are reused by connected services
Contract-Based
Development
Research
Team
Innovation
Team
Core Dev
Team
UI Dev
Team
Exploration of
state-of-the-art
techniques
Exploration of
state-of-the-practice
techniques
Back-end development
and infrastructure management
Front-end development
and user interface
design
Experimentation and Training Pipelines
Experimentation and Training Pipelines
API, Databases,
Model Repository
WebApp
Master
Students
EngD
Trainees
Scientific
Programmers
Assistant
Programmers
Document the expected formats of data exchange between two services or pipelines, which interact as consumer and producer via a data storage
Document the expected protocol of behavior between two services,
which interact synchronously or asynchronously via the network
Document the expected input and output between a trainer and a server, which interact by storing and loading models in a model registry
Code Contracts
Data Contracts
Model Contracts
This talk about OCEAN GUARD
illustrates how established
software engineering practices
can be applied to successfully build
Machine Learning-Enabled Systems
Building an ML-Enabled System
for the Maritime Domain
https://renatocf.xyz/jads26-slides
2026
Renato Cordeiro Ferreira
Institute of Mathematics and Statistics (IME)
University of São Paulo (USP) – Brazil
Jheronimus Academy of Data Science (JADS)
Technical University of Eindhoven (TUe) / Tilburg University (TiU) – The Netherlands
OCEAN GUARD
By Renato Cordeiro Ferreira
In this talk, I'll share our challenges and lessons learned on building Ocean Guard (OG): a Machine Learning–Enabled System (MLES) for anomaly detection in the maritime domain. In particular, I'll highlight how we designed an MLOps architecture to allow multiple JADS Masters and EngDs to work in a single project. Finally, I'll present how we incrementally developed the tool through multiple practical pilots, allowing us to go beyond TRL-6 (Technical Readiness Level #6).
Scientific Programmer @ JADS | PhD Candidate @ USP | Co-founder & Coordinator @CodeLab