-
-
AquaForensics turns citizen water observations into evidence-guided investigations, competing states, and next-best evidence.
-
Expected Information Gain ranks feasible observations by how much uncertainty they can remove from competing investigation states.
-
Competing W/L/N states and EIG scores make uncertainty explicit while comparing the value of possible evidence.
-
A human selects and records evidence with observer reliability, elapsed time, and provenance—keeping the investigation human-in-the-loop.
-
An immutable investigation timeline preserves observations, assessments, evidence collection, and state updates for auditability.
Inspiration
Citizen observations can tell us that something looks wrong in an urban water ecosystem, but an observation alone rarely tells us what to investigate next.
I wanted to explore a different role for AI in environmental monitoring: instead of asking AI to guess the cause of an anomaly, can it help determine which evidence would be most useful to collect next?
That question became the foundation of AquaForensics.
What it does
AquaForensics is an evidence-guided environmental investigation engine for citizen-reported freshwater anomalies.
When an observation is submitted, the system:
- Represents competing investigation states instead of assuming a single cause.
- Evaluates the current evidence and uncertainty.
- Computes Expected Information Gain (EIG) for feasible follow-up observations.
- Recommends the next-best evidence to collect.
- Keeps a human in the loop for evidence collection and decisions.
- Updates the investigation when new evidence is recorded.
- Preserves an auditable timeline and structured, FHIR-oriented export.
The system deliberately does not claim to diagnose pollution, identify a polluter, or prove causality.
How we built it
I built AquaForensics as a full-stack prototype with a Next.js and TypeScript frontend and a Python/FastAPI backend.
The reasoning engine uses Bayesian updating, entropy-based Expected Information Gain, feasibility filtering, observer reliability, and sensitivity analysis.
The frontend provides the complete investigation workflow: citizen observation, competing states, evidence-gap analysis, candidate-action comparison, evidence recording, reassessment, audit timeline, and structured export.
The prototype is deployed with Vercel for the frontend and Render for the backend.
Challenges we ran into
The biggest challenge was making the system useful without creating false scientific certainty.
A conventional AI interface could easily produce a convincing explanation from limited environmental evidence. I instead separated the deterministic reasoning engine from natural-language explanation and explicitly labelled the numerical model parameters as expert-elicited and uncalibrated.
I also had to preserve provenance when connecting the investigation workflow with OneAquaHealth-aligned concepts, avoiding claims that AquaForensics extensions were official OAH fields.
Accomplishments that we're proud of
I built a working end-to-end investigation loop rather than only a dashboard or conceptual mockup.
The prototype can move from an initial citizen observation and near-tie between investigation states to a human-selected evidence collection step, update the model with that observation, identify a new next-best action, and preserve the entire process in an audit timeline.
I am especially proud that the system can demonstrate why more evidence is needed, rather than simply producing an answer.
What we learned
I learned that responsible AI in environmental systems is often less about producing a confident prediction and more about representing uncertainty honestly.
Expected Information Gain gave me a way to turn uncertainty into an actionable question: what should I observe next?
I also learned that provenance, human oversight, and explicit scientific boundaries are essential when AI-supported systems operate in environmental and public-health-adjacent contexts.
What's next for AquaForensics
The next step is to replace the current expert-elicited demonstration parameters with empirically calibrated likelihoods using real-world observations and validated environmental datasets.
I also see opportunities to integrate additional OneAquaHealth data sources, expand anomaly types, support richer spatial and temporal evidence, and strengthen interoperability with validated FHIR profiles.
The long-term goal is to make AquaForensics a reusable evidence-guidance layer between citizen observations and environmental investigation workflows.
Built With
- bayesian-inference
- expected-information-gain
- fastapi
- fhir
- next.js
- open-meteo
- pydantic
- python
- react
- render
- rest-api
- sqlalchemy
- sqlite
- tailwind-css
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.