Inspiration

I live in Lucknow, and the Gomti River flows through my city — dying in plain sight. Dissolved oxygen as low as 0.9 mg/L (fish need 5+), BOD at 10× the safe limit, faecal coliform near 100,000 MPN/100mL, and only 10–15% of sewage treated before entering the river. The data proving this exists — in UPPCB advisories, peer-reviewed papers, CPCB reports — but it's scattered across PDFs and portals no citizen, officer, or researcher can use at a glance.

The OneAquaHealth mission — connecting ecosystem health, biodiversity, and human well-being through citizen science — gave me the frame: what if messy, scattered stream data became actionable One Health intelligence that a ward officer could act on and a citizen could understand?

What it does

StreamPulse is a Track 2: Data-to-Insight dashboard that turns verified water-quality data into decisions:

  • 🗺️ 9 Gomti monitoring sites + 106 real OneAquaHealth registry sites (Coimbra, Ghent, Benevento, Oslo, Toulouse) on an interactive map
  • 🔬 Transparent 0–100 Stream Health Score anchored to CPCB bathing-water thresholds — missing params are skipped, never guessed
  • 🩺 One Health Brief per site: ecosystem 🐟 + human 🧍 + animal/vector 🐾 risks plus ✅ suggested actions, in plain language (+ Hindi summary 🇮🇳)
  • 🌧️ Live 7-day rainfall context per site (storms flush sewage into rivers)
  • 📈 Verified timelines — dots only, no interpolation; gaps honestly mean "no open data"
  • ⚖️ Side-by-side comparison with overlay trends and an auto-generated verdict
  • ⬇️ Brief export (Markdown download + copy) for officers and researchers
  • 🌱 Field logging with photo evidence + 📤 CSV upload — every citizen reading scores instantly
  • 🔍 Every number cited. Zero synthetic data. Each reading carries a source chip linking to its publication.

How we built it

Stack: React + Vite + Tailwind + Leaflet/OpenStreetMap + Recharts + PapaParse — 100% client-side, zero API keys, deployed static on Vercel.

Real-data pipeline (the hard part):

  1. Pulled all 106 OAH research sites from the public api.enora-oah.eu registry (bundled — the API blocks browser CORS; observation endpoints need auth, so registry cities honestly show "no data yet")
  2. Hand-extracted and cross-validated 12 verified readings from 5 published sources: UPPCB 2023–24 seven-site study, UPPCB Nov 2025 advisory, MDPI Water 2023 campaign, BioOne 2025 peer-reviewed study, UPPCB 2022 aggregates
  3. Rejected two papers whose data couldn't be honestly placed (one was groundwater mislabeled as river data)
  4. Wired Open-Meteo for live rainfall per selected site

Scoring (explainable, CPCB Class B):

$$\text{Score} = \frac{\sum w_i \cdot s_i}{\sum w_i}, \quad w = {DO: 0.30,\ BOD: 0.25,\ pH: 0.15,\ turb: 0.15,\ coli: 0.15}$$

computed only over available parameters — so a DO-only reading still scores honestly instead of being punished for missing data.

Briefs are rule-based (no black boxes): threshold crossings → risk sentences → actions, each traceable to the reading that triggered it.

Challenges we ran into

  • India's open water data is a maze. CPCB download links returned 404, India-WRIS services timed out, data.gov.in water APIs need keyed requests, and GEMStat needs manual approval. I pivoted to verified published science instead of fake density.
  • A paper almost fooled me. A promising site-wise table turned out to be groundwater (handpumps), not river water — I caught it in the methods section and excluded it. That save became our core principle: if it can't be honestly placed, it doesn't go in.
  • Designing for sparse data. One dot per site looks "empty" — so I designed honest gap states ("Be the first to sample here 🌱"), visible dots, and made filling gaps live the demo's best moment.
  • Solo + part-time + 8 days. Ruthless scoping: no backend, no login, no fake ML — everything that shipped had to earn its place. (Also: our first map provider started demanding API keys mid-build, so we migrated to OpenStreetMap.)

Accomplishments that we're proud of

  • 🏆 A dashboard with zero synthetic data in a hackathon world full of mock data — and we turned that constraint into the product's identity
  • 📚 9 sites, 12 readings, every one clickable back to its source publication
  • 🌐 Full English/Hindi bilingual UI so Lucknow's citizens can actually use it
  • ⚖️ Comparison mode whose verdict ("Pipraghat scores 73 points lower, driven by…") writes the policy argument itself
  • 🎨 A poster-grade animated UI (giant display hero, bubbles, marquee, count-ups) built solo in days

What we learned

  • Open data ≠ accessible data. The numbers to save a river exist but are buried; the last mile (interpretation + plain language + mobile UI) is where impact lives.
  • CPCB/WHO water-quality science: what DO, BOD, COD, and coliform actually mean for fish, bathers, and livestock — and how to explain them without jargon.
  • Honesty is a feature. Researchers (and judges) trust sparse-but-cited over dense-but-fake. "Insufficient evidence" states beat hallucinations.
  • One Health thinking: every reading now automatically raises three questions — what does this mean for the ecosystem, for people, for animals? That lens changed how I build.

What's next for StreamPulse — One Health Stream Intelligence

  • 🔌 FHIR R4 export + OneAquaHealth sandbox integration — push verified citizen readings into the OAH ecosystem (Track 7 crossover)
  • 🛰️ Plug into City Dashboards, Resilience Map & GEOSSIP as an insight layer
  • 🔔 Early-warning alerts: rainfall + falling-DO rules that notify ward officers (Track 6 crossover)
  • 📸 Community photo verification + offline-first PWA field mode for low-connectivity ghats
  • 🗣️ Hindi voice briefs for non-literate citizen scientists
  • 🌍 Expand verified datasets to all 5 OAH cities with local university partners — starting with whichever city shares data first

Built With

  • citizen-science
  • cpcb
  • csv
  • data-visualization
  • environmental-monitoring
  • gomti-river
  • india
  • javascript
  • leaflet.js
  • localstorage
  • one-health
  • open-data
  • open-meteo
  • openstreetmap
  • papaparse
  • public-health
  • react
  • recharts
  • social-good
  • sustainability
  • tailwind-css
  • vercel
  • vite
  • water-quality
Share this project:

Updates

Submission history