About The Project

What Inspired Us

Our inspiration came directly from a devastating, real-world crisis happening right now: Canadian healthcare wait times. Emergency Rooms in Ontario and across Canada are overcrowded, overwhelmed, and suffering from severe staffing shortages. Patients frequently wait upwards of 10 to 15 hours just to see a doctor. Tragically, the lack of immediate, intelligent triage means some patients end up falling through the cracks while they wait.

We wanted to build something that could actually help alleviate this pressure on our healthcare system. Our vision was to create an intelligent, voice-native AI assistant capable of interviewing patients in real time, performing a clinical grade CTAS (Canadian Triage Acuity Scale) assessment, and dynamically routing them to the appropriate level of care. We wanted to help users figure out if they just need a pharmacy, a walk-in clinic, or an urgent trip to the nearest ER.

How We Built It

We built Rivr as a responsive, mobile-first web application designed to feel like a native app (also works on PC).

  • Frontend: We built the interface with React and Vite, using TailwindCSS and Lucide React icons for a premium and accessible design.
  • Voice AI Interface: We integrated the ElevenLabs Conversational AI API to create a highly empathetic, natural sounding voice agent. It can interrupt dynamically and listen to the patient's symptoms without requiring them to type a single word.
  • Triage Engine: The core reasoning engine uses a two-pass architecture powered by the Google Gemini API. It first extracts structured clinical data from the transcript, and then performs a secondary CTAS assessment to determine the severity. We orchestrated these complex LLM prompts and pipelines using Backboard to ensure reliable execution.
  • Geolocation and Routing: We implemented live browser Geolocation APIs and tied them into OpenStreetMap's Overpass API. By using the Haversine formula, we calculate exact drive times and distances to real, local hospitals and clinics based on the user's actual location.
  • PDF Export: For patients routed to walk-in clinics or the ER, we used jsPDF to generate structured, downloadable triage reports that they can hand directly to the intake nurse.
  • Infrastructure: The entire application is deployed globally on Vercel for high availability. We also used Google's Antigravity agentic assistant for seamless pair programming and architecture design.

The Challenges We Faced

Hackathons are famous for throwing unexpected curveballs, but our team took a massive hit early on. Halfway through the event, we lost two of our four team members. One of them suffered an unexpected family emergency and had to leave the venue immediately. The other went home to rest and we completely lost contact with him.

Suddenly, a massive tech stack that was initially scoped out for four people was dropped onto just two of us. We had to immediately pivot, absorb their assigned features (which included the entire mapping infrastructure and prompt engineering pipelines), and stay awake for the full time of the hackathon to cross the finish line.

What We Learned

Beyond the technical skills of integrating live voice agents and structuring complex LLM pipelines, we got a masterclass in resilience and triage. We learned how to ruthlessly prioritize features when our team size was cut in half, how to gracefully handle rate limit errors from public APIs, and most importantly, how to step up and deliver a polished, production ready product despite seemingly impossible odds.

Built With

  • antigravity
  • backboard
  • elevenlabs
  • gemini
  • lucide
  • react
  • tailwindcss
  • vite
Share this project:

Updates