Inspiration: Airport travel is a constant challenge for students at schools like Emory and UGA. Someone on our team dealt with this directly, and many of our friends have had the same experience. With no direct MARTA route from Emory to the airport, students often rely on long bus connections or expensive Uber and Lyft rides. During breaks and holidays, this becomes even more stressful because so many students are trying to fly home at once.

While we recognize there are existing web- and mobile-application based ridesharing applications for this purpose, we found them to be 'clunky', and students were turned off by the complexity and having to log in to an application every time they want to use.

We wanted a simple way for students to travel together. If students can find others leaving around the same time, they can share rides, save money, and feel safer traveling with people from their own campus community.

What it does: RideBuddy acts as a mobile-based smart-matchmaker, matches students with others heading to the airport at similar times through a WhatsApp-based flow.

A student messages our WhatsApp number and verifies that they are an Emory student using their school email and a six digit verification code sent to their @emory.edu email. After that, they can send their travel details in natural language, either as text or as a voice note. Voice notes are transcribed using ElevenLabs so they can be handled the same way as typed messages.

RideBuddy leverages Supabase Postgres on the backend and looks for other verified students with similar schedules and matching routes. Gemini parses the natural language and helps the backend decide which match makes the most sense when there are multiple options. When a match is found, RideBuddy sends WhatsApp updates so students can coordinate a shared ride and split the cost.

How we built it: RideBuddy works entirely through WhatsApp so students do not need to download an app or create a password.

Our system uses:

  • Twilio WhatsApp API to receive and send messages
  • Python + FastAPI for backend routes and logic
  • Supabase Postgres for users, verification codes, ride requests, and ride groups
  • ElevenLabs to transcribe voice notes into text
  • Gemini API to extract structured ride details and assist with matching decisions
  • Python for verification, ride storage, and the matching algorithm
  • Google Cloud Run to host the backend and handle webhooks

This simple setup keeps RideBuddy lightweight, easy to use, and practical to deploy.

Challenges we ran into:

  • Some of the main challenges we ran into were:
  • Designing a verification flow over WhatsApp that still feels simple for the user
  • Structuring Supabase tables for users, verifications, rides, and ride groups in a way that keeps matching consistent
  • Parsing flexible natural language about times, locations, and group sizes
  • Integrating Gemini so it adds value while keeping core matching rules predictable and under our control
  • Making Twilio, FastAPI, Supabase, ElevenLabs, and Cloud Run all work together without breaking the webhook flow
  • Handling voice notes reliably and tying transcription into the same parsing pipeline as text
  • Deploying to Google Cloud Run and getting containers, environment variables, and webhook routing configured correctly
  • Debugging timing issues so responses stay fast enough to feel natural in a chat interface

Testing everything live through WhatsApp while deploying new versions forced us to iterate quickly and fix problems under real conditions.

Accomplishments that we’re proud of:

  • Building a complete WhatsApp based flow for verification and ride requests
  • Matching real users into shared ride groups from end to end
  • Deploying the full system on Google Cloud Run and keep it stable during testing
  • Using Gemini for real backend parsing and decision support instead of only as a chatbot
  • Integrating ElevenLabs to make voice notes feel like a first class input
  • Designing a system that does not require an app and still feels simple for students to use
  • Tackling a real problem that students at our schools deal with regularly

What we learned:

  • Throughout the project, we learned:
  • How to build a WhatsApp driven application that works with Twilio webhooks
  • How to design verification without traditional usernames and passwords by using phone numbers and school emails
  • How to structure relational data in Supabase for users, verifications, rides, and groups
  • How to deploy and debug containerized services on Google Cloud Run
  • How to use Gemini to parse natural language messages into structured data that plugs into a matching algorithm
  • How to integrate ElevenLabs so voice notes become reliable, structured inputs instead of a separate feature
  • How important it is to keep text based user flows short, clear, and forgiving

We also gained a better understanding of what student transportation problems look like in practice, not just in theory.

What’s next for RideBuddy:

  • Moving from Twilio’s current WhatsApp setup into SMS (purchased an SMS number so will move from WhatsApp to SMS) and students can message our number directly without an extra start command that connects them to a sandbox. This mainly involves completing Twilio’s standard approval process, which usually takes a few days, and then pointing the same backend at the approved WhatsApp sender.
  • Once Twilio A2P 10DLC approval is in place, wiring an SMS entry point into the same FastAPI webhook and matching logic is a straightforward extension.
  • Expand support to UGA and other campuses that face similar transportation gaps
  • Improve our matching rules and Gemini prompts so groups are even more accurate and fair over time
  • Add reminders and confirmation messages as the departure time gets closer so riders stay aligned
  • Support more destinations beyond the airport, such as popular off campus locations and events
  • Support Groups of individuals (based on user specification of 2-4 people), for now it is one-to-one match.

*Try it Now! Use WhatsApp and send a message from your device to +1 415 523 8886 on WhatsApp with code join bad-softly

Built With

Share this project:

Updates