-
-
AquaSentinel pipeline from environmental data ingestion and validation to ML risk assessment and human verification.
-
Live Zwalm Catchment overview with environmental status, risk level, monitoring stations, and data freshness.
-
Multi-source water, rainfall, and Sentinel observations unified in one operational monitoring view.
-
Risk Assessment — interpretable hypoxia-risk probability with the environmental factors driving the model’s assessment.
-
Out-of-time 2023–2024 validation comparing model predictions with measured dissolved oxygen observations.
-
Transparent data lineage across VMM, RMI/KMI, and Copernicus sources from ingestion to model-ready features.
Project Story
AquaSentinel started with a simple question:
What happens between two water-quality measurements?
Freshwater monitoring often depends on periodic observations. But environmental conditions can change much faster. Rain can fall, temperature can rise, and streamflow can change between scheduled measurements.
By the time the next measurement is collected, an important change may already have happened.
The Idea
We wanted to explore whether existing environmental data could be combined to identify early signs of dissolved-oxygen risk and provide monitoring teams with an additional signal for investigation.
AquaSentinel brings together multiple environmental sources:
- Water-quality observations from VMM Waterinfo
- Rainfall data from RMI/KMI
- Sentinel-1 SAR satellite observations
- Sentinel-2 optical satellite observations
Instead of looking at each source separately, AquaSentinel aligns and validates these signals before using them for risk assessment.
How We Built It
We first collected and audited historical observations from the Zwalm catchment.
Our resulting dataset contains 1,913 observations across 21 columns.
The prediction target is based on dissolved oxygen:
$$ DO < 6.0\;mg/L $$
The model uses environmental variables including water temperature, conductivity, turbidity, pH, flow, rainfall accumulation, satellite-derived water extent, NDWI, MNDWI, and season.
An important design decision was to keep the measured dissolved oxygen value separate from the prediction inputs. The measured value is used as ground truth for evaluating the model rather than being given to the model as an input.
We also used a strict temporal split:
- 2018–2022: Training data
- 2023–2024: Unseen temporal holdout
This allowed us to evaluate the system on a later period rather than randomly mixing observations across time.
From Machine Learning to an Operational System
One of the biggest things we learned was that training a model is only one part of the problem.
A real monitoring system needs to continuously receive new environmental observations.
So we built a multi-source ingestion pipeline connecting:
Water observations → Rainfall → Satellite observations → Data validation → Feature construction → ML inference
Incoming observations are normalized, checked for quality and freshness, converted into the model's feature contract, and then passed to the inference API.
The system also has a simulation mode for demonstrating environmental scenarios without presenting simulated data as live observations.
What the Model Shows
On the 2023–2024 temporal holdout, the selected model detected:
27 of 30 measured high-risk dissolved-oxygen events
This corresponds to:
$$ Recall = \frac{27}{27+3} = 90.0\% $$
The precision was 18.49%, which means the system produces false warnings as part of its high-sensitivity early-warning strategy.
Because of this, AquaSentinel does not automatically diagnose pollution or take enforcement action.
Instead, the intended workflow is:
Model Warning → Field Team Alert → Verify Observation → Consider Field Sampling
What We Learned
The project taught us that building an environmental AI system is not simply about achieving a high model score.
We had to think about:
- Temporal data leakage
- Different update frequencies between data sources
- Missing and stale observations
- Data provenance
- Ground-truth separation
- False alarms
- Model explainability
- Human verification
- The difference between historical validation and future forecasting
One particularly important lesson was that our current system should not be described as a 24–72 hour forecasting system.
Our current validation demonstrates detection of high-risk conditions in an unseen temporal holdout period. Explicit 24-, 48-, or 72-hour forecasting would require a separate lead-time forecasting experiment.
The Challenge
The hardest part was combining environmental datasets that were never designed to work together.
Water observations, rainfall measurements, and satellite imagery have different temporal resolutions and update schedules. We therefore had to carefully align timestamps and enforce:
$$ T_{feature} \leq T_{prediction} $$
This prevents information from the future from accidentally entering a prediction.
Where AquaSentinel Is Today
AquaSentinel has evolved from a historical machine-learning experiment into a working operational prototype with:
- Multi-source environmental data ingestion
- Data-quality validation
- Feature engineering
- Real-time inference APIs
- Historical temporal validation
- Model explanations
- Simulation scenarios
- Data provenance tracking
- Operational monitoring dashboards
- Automated verification and audit tests
Our goal is not to replace environmental scientists or field monitoring teams.
AquaSentinel is designed to help them see the signals between measurements — so they can decide when an observation deserves closer attention.
Built With
- artificial-intelligence
- climate-tech
- data-engineering
- data-science
- environmental-monitoring
- fastapi
- geospatial
- machine-learning
- predictive-analytics
- python
- remote-sensing
- rest-api
- satellite-imagery
- water-quality
Log in or sign up for Devpost to join the conversation.