My friends have opened up to me about how they're afraid to take public transportation alone. At first I teased them about it, but now I feel like I understand why they feel so vulnerable.
I know many Americans live in relatively remote areas with little access to useful forms public transportation. Ubers or taxis are quite expensive, and some people don't own their own cars.
What it does
Pool Party enables people to find each other automatically, forming friendships through carpooling and coordinating their use of public transport while helping reduce their collective carbon footprint.
The mobile app allows you to enter your commutes as an ensemble of commuting patterns, which are automatically matched with other users.
The algorithm is actually pretty difficult to write, mainly because this type of matching problem doesn't have an obviously right answer (sets of grouped users).
How I built it
The tech stack is a monolithic Node.js server, a React Native mobile app, and a few external APIs. Users sign in with Facebook or Google, and I use some clever techniques in the backend to simplify the authentication flow (basically using securely forwarded access tokens, then using them to read off user data using the legitimate platform APIs, verifying that the user has control of the account).
Challenges I ran into
I didn't have enough time to complete everything and give it the attention it deserved. The core algorithm works, and it suggests users to you correctly (and quickly), but you can't do anything with that information.
The original idea was to have a system of "Schedule Requests", whereby strangers who have compatible schedules (as they're told by the app) both need to decide they feel comfortable disclosing their commute schedules. This is 80% implemented, the last of the UI is all that remains.
On the technical side, answering the sub-question of "are these two commute patterns compatible?" was really challenging to solve in a fair way, and the code is still difficult to reason about.
Accomplishments that I'm proud of
I'm proud of the visual aesthetic of the app, and I'm proud of the sophisticated infrastructure that underlies it.
I'm also proud of the way the algorithm works, I think it's really neat and sort of non-obvious. At the core, it's sorting by the sum of the Haversine distances between the start points and the between the end points, with additional strict filtering based on schedule compatibility, which is also a slippery concept.
What I learned
I've been painfully reminded that automated matching is hard. Tinder has it easy, Uber has it hard, and sleep is important for productivity.
What's next for Pool Party.
Rewriting it more slowly and thoughtfully. I knew I didn't have time to do it right, I only had time to build the Hackathon version of my idea. I got pretty close, and if I had a few more hours I could get it to a point where other people could actually use it. I think that's something to be proud of, because the simplicity of the pitch does not communicate the terrible complexity of solving the problem, let alone solving it efficiently.