inspiration
Fieldday Events is a five-person team that won Riverside: a three-day riverfront festival with up to 15,000 people a day and 300 volunteers. Their rosters live in a group chat, incidents come in over the radio and vanish once spoken, and if they aren’t on track two weeks out, paying for a takeover would wipe out the company. We asked: what would let five people run an event that size efficiently, safely, and without handing safety decisions to a machine?
What it does
Bird is a mobile app for Mo, the safety lead, his volunteer coordinator, and the volunteers on the ground.
- Plan and roster: turns the event’s operating plan into shifts, then assigns volunteers automatically, respecting first-aid certificates, availability and fair hours, and showing gaps honestly. Nothing reaches volunteers until a coordinator reviews and publishes.
- Live operations: volunteers check in on their phones. No-shows are flagged, and Bird recommends qualified replacements, which Mo approves.
- Incident reporting: volunteers report by text or voice in their own words. Reports are saved immediately, then AI interprets them, links related reports and surfaces emerging risks.
- Crowd cameras: computer vision counts people in a camera’s view, estimates density (people per m²) and detects opposing crowd flows. Sustained crowding raises a single explainable alert.
- Human-approved response: AI drafts a response grounded in the event’s own procedures; Mo reviews it, chooses who to send and approves. Volunteers receive one clear instruction and confirm when they’re en route and when they’ve arrived.
- Closeout: every report, decision and dispatch is recorded in a timeline, so the next-morning write-up is already done.
How we built it
- App: Expo / React Native with TypeScript and Expo Router, so one codebase serves coordinators and volunteers on any phone.
- Backend: Supabase, using Postgres with row-level security, server-side functions, private storage for certificates and voice recordings, and Edge Functions for background AI work.
- AI: Gemini, run only on the backend, for document extraction, certificate reading, incident interpretation and response drafting. Every AI output is validated against the event’s real locations, procedures and qualifications before it’s saved.
- Rostering: a deterministic search engine (not AI), so staffing decisions are predictable and explainable.
- Computer vision: a Python pipeline using DM-Count (a crowd-counting neural network, via lwcc and PyTorch) for density, and OpenCV optical flow for movement and counterflow. It sends only numbers to the database, never images.
Challenges we ran into
- Counting heads, not feet. Crowd-counting models place each person at their head. Our first counting region covered the ground and counted 1 person instead of 23. On our real street footage, the model also mistook tree leaves for heads, which inflated the count by over half, until we outlined only where heads appear.
- AI isn’t always available. Gemini sometimes timed out during testing. We designed for it: reports are stored before any AI runs, failures stay visible, and they can be retried.
- Parallel work in one database. Several of us changed the same database functions at the same time. Merging our migrations safely, and finding a naming bug that broke response drafting, taught us to test every migration together against real Postgres.
- One alert, not a flood. A crowd spike shouldn’t wake Mo up. Alerts fire only on sustained readings, update one alert per place, and can escalate but never quietly downgrade. ## Accomplishments that we’re proud of
- Every safety action requires a person’s approval, and that’s enforced in the database, not just in the interface.
- An end-to-end flow from roster → no-show → incident → camera alert → approved dispatch → closeout.
- On real street footage, Bird’s camera counted about 52 people and detected opposing crowd flows (a counterflow score of 0.72) as people crossed in both directions.
- Privacy by design: cameras count people and never identify them. Frames are processed in memory and discarded.
- Automated tests across the app, background workers and real Postgres scenarios, including permissions, rollbacks and role isolation.
What we learned
- “AI everywhere” is the wrong goal. Algorithms are better for hard constraints like rosters; AI is better for messy human input like reports; and people must own decisions about safety.
- Honest uncertainty builds trust: showing estimates, stale cameras and failed AI steps beats pretending everything is certain.
- With computer vision, the details of the setup, such as camera angle, region and area, matter as much as the model itself.
What’s next for Bird
- Live camera feeds at entry gates and footbridges, calibrated to the real site map.
- Combining evidence: heat reports plus camera crowding plus weather forecasts in one stronger, explainable alert.
- Storm and heat playbooks prepared before gates open, with drafted messages for each team.
- Push notifications for volunteers, and a spoken briefing in Mo’s earpiece.
Log in or sign up for Devpost to join the conversation.