Inspiration

Urban streams are monitored by citizens, but citizen observations can be inconsistent and error-prone. A "clear" water report may come with a photo that looks brown. A "natural" channel may be reported with concrete banks. Experts end up spending their time double-checking submissions instead of using them. We wanted to help with that without replacing human judgment.

What it does

AquaSense AI is an AI-assisted moderation and screening layer for citizen stream observations. For each observation it:

  • Validates the structured answers (missing fields, invalid values, coordinates, contradictory combinations, duplicate IDs)
  • Extracts visual consistency signals from an optional photo (brown/green proportion, brightness, saturation)
  • Flags potential inconsistencies in neutral wording. It never says the citizen is wrong, only "Potential inconsistency detected, please review."
  • Produces a preliminary screening label (Lower, Moderate or Higher concern) with every piece of evidence listed
  • Routes flagged observations to an expert dashboard, where a reviewer sees the raw inputs, image, flags and evidence and sets a status (Pending, Needs review, Validated, Rejected, Corrected by reviewer)

Citizen data is never silently modified. Reviewers change only the review status.

How we built it

Python and Streamlit, with pandas, NumPy and Pillow. The core is deliberately deterministic and explainable:

  • A rule-based validation engine. Each rule has a name, trigger, explanation, severity and recommended action.
  • An image-signal module that reports colour statistics as consistency signals, not measurements.
  • An assessment engine where the score is a base value plus explicit, configurable weights: score = base + sum of evidence weights, all defined in one config file.
  • Unit tests for the validation and assessment logic.

Track 3 alignment

Challenge: inconsistent, error-prone citizen observations. Our response: validation checks, visual consistency signals, explainable assessment, consistency flags, and human-in-the-loop review.

One Health relevance

Observed environmental pressures may be relevant to ecosystem monitoring and may warrant further investigation by environmental or public-health authorities. The prototype makes no health, safety or disease claims.

Challenges

The hardest part was staying scientifically honest. The screening score is an unvalidated prototype heuristic, and colour statistics from a photo are not water-quality measurements, since lighting, shadows, soil and vegetation all affect them. We labelled both clearly in the interface and in the docs, and kept an LLM out of the scoring so the logic stays auditable.

What i learned

  • Explainability is easier to get from simple rules plus listed evidence than from a black box.
  • Neutral wording ("potential inconsistency") matters when you flag citizen contributions.
  • Working out what not to claim took as much thought as building the features.

Data and provenance

  • User-generated: form submissions, held in session memory only
  • Synthetic: demo data we invented
  • Official-format fixture: one hand-written sample modelled on example values from public OneAquaHealth FHIR material. It was not fetched from any live API.

Limitations and what's next

No live OneAquaHealth API or FHIR integration yet, and the form vocabulary still needs mapping to official codes. Next steps are a FHIR adapter against the public implementation guide, persistent storage, expert-calibrated weights, and an optional LLM used only for explanation wording.

AquaSense AI is a hackathon prototype designed to complement the OneAquaHealth citizen-science ecosystem. It is not an official OneAquaHealth product.

Built With

Share this project:

Updates

Submission history