Inspiration

River pollution is often discovered after the damage has already become visible or after someone reports it. I wanted to explore a different approach: could satellite observations and community reports work together as an early-warning layer for rivers?

That idea led to River Sentinel, a river intelligence platform where satellite intelligence meets citizen reporting to reveal emerging threats to our rivers.

Rather than claiming that a satellite image can prove pollution on its own, River Sentinel is designed as a screening and decision-support system. It looks for unusual changes in satellite-derived water signals, places those observations in temporal and environmental context, and gives people a way to report what they observe on the ground.

What it does

River Sentinel brings several perspectives on river health into one platform:

  • Satellite monitoring — retrieves Sentinel-2 imagery through Google Earth Engine and calculates water-related spectral indices such as NDTI, NDWI, and MNDWI.
  • Temporal anomaly screening — compares recent observations against the historical behavior of the same location to identify unusual changes.
  • Machine-learning anomaly detection — uses an Isolation Forest model as an independent unsupervised anomaly signal.
  • Rainfall context — incorporates recent precipitation so that rainfall-driven changes are not automatically interpreted as pollution signals.
  • Citizen reporting — provides a way for people to submit observations of potential river incidents and contribute ground-level evidence.
  • Evidence-aware results — distinguishes between stronger corroborated signals, single-source signals, normal-range observations, and insufficient data instead of presenting every result as a pollution detection.
  • Location-based screening — allows users to investigate a river location using coordinates and satellite imagery.

The goal is not to replace laboratory water testing or environmental inspectors. It is to help identify where and when further attention may be warranted.

How I built it

River Sentinel is built as a Python/Streamlit application, with Google Earth Engine providing access to live Sentinel-2 satellite imagery.

The pipeline first retrieves and quality-checks available Sentinel-2 observations for a selected river location. From the imagery, it derives water-related spectral features including NDTI, NDWI, and MNDWI. For example:

NDTI = {Red - Green}/{Red + Green}

These observations are then analyzed in two complementary ways.

First, the system performs temporal anomaly screening. Recent observations are compared with the historical behavior of the same location to determine whether the current signal is unusual.

Second, River Sentinel incorporates an Isolation Forest anomaly-detection model as an independent machine-learning signal. Rather than training the model to recognize a fixed visual definition of "pollution," I use unsupervised anomaly detection to identify observations that appear unusual within the available feature space.

This is important because there is no simple universal satellite signature for every type of river pollution. An unsupervised model allows me to ask a different question:

Does this observation look unusually different from the other observations I have seen?

The ML signal is treated as independent evidence, rather than as a definitive pollution classifier. This lets the system compare the model's anomaly signal with the temporal screening result and environmental context instead of allowing one algorithm to make the final claim by itself.

Rainfall data is also incorporated as contextual evidence. Recent precipitation can naturally change river reflectance and turbidity, so the system reports rainfall alongside an anomaly rather than automatically interpreting the anomaly as pollution.

The final result combines these evidence streams into an interpretable screening outcome. Instead of returning a misleading probability of "pollution," River Sentinel communicates whether the available evidence is within the expected range, shows an elevated signal, has corroborating evidence, or is insufficient for a meaningful conclusion.

The application then exposes these results through different workflows, including research analysis and citizen-oriented reporting.

Challenges I ran into

One of the biggest challenges was that water-quality monitoring from satellites is fundamentally different from visually obvious problems such as deforestation. A spectral anomaly does not automatically mean pollution.

Cloud cover, limited usable observations, river width, seasonal changes, rainfall, vegetation, and differences between river locations can all affect satellite-derived signals.

I had to be careful about how the system communicates uncertainty. Instead of turning one unusual value into a definitive pollution claim, River Sentinel reports the available evidence and its limitations.

Another challenge was making the system work with live locations rather than only a precomputed demonstration dataset. I built and tested live Sentinel-2 retrieval and rainfall-context paths so that users can investigate locations beyond the original study area.

Finally, I had to balance scientific transparency with usability. A system can be technically sophisticated and still be difficult for a citizen to understand, so I designed the results to explain why a signal was produced rather than simply displaying a number.

Accomplishments that I'm proud of

I am proud that River Sentinel evolved from a research concept into a working interactive application with a live satellite-analysis pipeline.

Some of the parts that I'm particularly proud of are:

  • Live Sentinel-2 analysis for user-selected locations rather than relying entirely on static examples.
  • A temporal anomaly framework that evaluates observations against the behavior of the same location over time.
  • An Isolation Forest machine-learning signal that provides an independent unsupervised anomaly perspective.
  • Rainfall-aware interpretation rather than treating every satellite anomaly as evidence of pollution.
  • A deliberate evidence-strength framework that communicates uncertainty instead of producing misleading confidence percentages.
  • Integration of citizen reporting with remote-sensing analysis.
  • A working interface that makes a technically complex satellite workflow accessible to different types of users.
  • A validated Yamuna-based analytical workflow that helped me test and refine the methodology before exposing the live location workflow.

Most importantly, I built the system to be transparent about what it can and cannot conclude.

What I learned

I learned that building an environmental monitoring system is not just about finding a mathematical indicator that changes.

The harder problem is determining what that change actually means.

I learned how cloud filtering, water masking, temporal baselines, rainfall, spatial context, and data availability can fundamentally change the interpretation of satellite observations.

I also learned an important product lesson: scientific uncertainty does not have to make a tool unusable. It can instead become part of the interface. Clearly communicating normal, elevated, single-source, and insufficient-data states can be more useful than pretending the system has certainty that the underlying data cannot provide.

Building River Sentinel also taught me how much work is involved in turning an analytical pipeline into something that a real person can interact with.

What's next for River Sentinel

The current version is a working screening and decision-support prototype, but there is significant room to expand it.

Next, I want to:

  • Develop more robust automatic upstream/downstream detection so spatial comparisons can generalize beyond the currently validated river geometry.
  • Expand validation across additional rivers, climates, and seasons.
  • Investigate additional remotely sensed indicators and stronger calibration against field measurements.
  • Expand and validate the machine-learning feature space using larger, more representative datasets.
  • Build a stronger system for aggregating and prioritizing citizen reports for environmental inspectors.
  • Develop a persistent monitoring and alerting layer that can identify recurring anomalies over time.
  • Connect satellite signals, citizen observations, rainfall, land-use context, and verified incidents into a broader river-risk intelligence system.

The long-term vision is for River Sentinel to become more than a satellite dashboard: a shared intelligence layer connecting what satellites observe with what people experience on the ground.

Built With

  • anomaly
  • citizenscience
  • datascience
  • datavisualization
  • environmentalmonitoring
  • gee
  • geospatialanalysis
  • gis
  • isolationforest
  • ml
  • python
  • sentinel-2
  • streamlit
  • waterquality
Share this project:

Updates

Submission history