Track alignment
Track 5: Community & Gamification. OneAquaHealth's citizen checks suffer from low repeat engagement: people visit once, and one-off reports are hard to trust. RiverKin makes coming back the core mechanic, and rewards usefulness instead of volume.
Inspiration
Kari walks her dog past the same stream every morning. She notices when the water turns cloudy after rain, when litter piles up by the outfall, when the bank gets cleared. Scientists never hear about any of it.
OneAquaHealth monitors 106 urban streams across Coimbra, Benevento, Ghent, Oslo and Toulouse. Expert sampling is slow and rare. Citizen observations could fill the gaps, but most volunteers check once and never return, and single reports are hard to trust. We asked: what if the app's job was to tell Kari exactly where the river needs her today, and to make her check count?
What it does
- Find where the river needs you. A live map of all 106 real OAH sites, ranked by need: how long since the last check, recent rain from Open-Meteo, and unresolved flags.
- Understand the site. Each site shows real OneAquaHealth ecology (WFD classes for macroinvertebrates, diatoms, fish) and One Health risk (pathogens, faecal indicators, antibiotic-resistance genes), plus a plain-language "why this site".
- A 5-minute check. One OAH-protocol question per screen, 1–5 live photos, a safety line on every mission, and offline support for streams with no signal.
- AI asks, humans decide. GPT-4o-mini reads all the photos together and writes an image-specific verification question for each field, with an approximate evidence region. It never fills an answer. Other people verify in 20-second rounds, and a trust model built on hidden gold items weighs every vote.
- Feel the impact. A shareable receipt: "19 → 0 days. Monitoring gap closed. Verified by 3 people."
- Come back. River Value points earned by usefulness (a neglected site after rain is worth more than a fifth check today), identity progression (Observer → Explorer → River Keeper), crews that adopt up to 3 rivers, city standings ranked by coverage, weekly challenges drawn from real site state, and notifications triggered by real events.
- Science-ready output. Every check exports as an HL7 FHIR R4 Bundle shaped to the OneAquaHealth Implementation Guide, with Provenance recording who observed, who verified, and what the AI contributed.
How we built it
Next.js 14 PWA (installable, offline queue, MapLibre on Azure Maps, Remotion and Motion for the cinematic welcome) and a FastAPI backend on PostgreSQL/PostGIS. Everything runs on Azure: Container Apps with autoscaling (1→6), Azure OpenAI GPT-4o-mini for vision, Blob Storage for privacy-processed photos, Microsoft Entra sign-in, a cron Container Apps Job for weather and need scores, and an internal HAPI FHIR server. GitHub Actions deploys via OIDC with no stored cloud passwords.
Data is real: the 106 sites, ecology and One Health risk come live from the OneAquaHealth API. One field, days since the last citizen check, is simulated (OAH doesn't publish check dates), and it's labelled in the API and UI.
Challenges we ran into
- Making gamification honest. Points and streaks usually reward volume, which degrades citizen data. We designed River Value so reward follows need and evidence quality, and a visit multiplier stops same-day grinding.
- Keeping AI in its place. Vision models are confident and often wrong. We made the AI write questions and weak priors only, show its confidence as signal strength (not accuracy), and escalate disagreements to experts instead of overriding people.
- Privacy by design. EXIF stripped, faces blurred before storage or any AI sees a photo, location coarsened to the site, no personal accounts under 16, and teacher-issued codes for school crews.
Accomplishments that we're proud of
- A live production app at riverkin.online on real OneAquaHealth data across 5 cities.
- 100 backend tests and 18 end-to-end browser tests passing; load-tested with 100 concurrent users.
- An AI pipeline verified end to end with real GPT-4o-mini, plus honest metrics (AI–human agreement, median verify time, 30-day revisit rate), each shown with its sample size.
What we learned
People don't come back for points. They come back when they can see that their check mattered. The best engagement mechanic we found is telling someone exactly why their next look is valuable.
What's next
- Pilots with OneAquaHealth Local Alliances and schools.
- Wiring GBIF biodiversity, GloFAS river discharge and real river geometry.
- A labelled dataset so AI accuracy can be measured rather than claimed.
- Sending verified checks straight into the OneAquaHealth app and Decision Support System through FHIR.
Built With
- azure
- azure-blob-storage
- azure-container-apps
- azure-maps
- azure-openai
- fastapi
- framer-motion
- github-actions
- gpt-4o-mini
- hl7-fhir
- maplibre
- microsoft-entra
- nextjs
- postgis
- postgresql
- python
- remotion
- tailwindcss
- typescript

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