We created the Magic WaitBall because our friends and we often go out to eat together, and sometimes when we get to a restaurant with an hour long wait, we find ourselves debating whether it's worth waiting or trying somewhere else.
Nine times out of ten, we end up doing the same thing - deciding the first restaurant isn't worth an hour wait and then spending even longer trying to find a different restaurant that has a shorter wait but which we still all want to eat at.
The Magic WaitBall is our fin and practical solution to this problem - with this app, we can very quickly see what other restaurants are nearby or similar to the one we wanted to go to and have reasonable wait times, helping us make a better and faster decision about where we should eat.
What it does
The Magic WaitBall determines a user's location, asks them the current wait time, and then presents a list of alternative restaurants based on different categories like nearby or similar category.
With each alternative, the Magic WaitBall shows both an estimated travel time as well as an estimated wait time so that the user can make an informed decision about whether their group should head over to a different restaurant or simply stay and wait at the one they're at.
One of the coolest features of the Magic WaitBall is how it gathers the wait time data - in order to use the application, our users have to provide the wait time of the restaurant they're at so that the recommendation engine can find locations that have comparable or better wait times. In this way, we crowdsource a real-time database of restaurant wait times directly from our own users.
How we built it
The Magic WaitBall mobile application is built on top of the Ionic / AngularJS application framework packaged as a hybrid app using Apache Cordova. While we only developed, tested, and submitted an Android build, it's extremely easy for us to also produce and ship an iOS build.
The Magic WaitBall backend is powered by a Python API built using the Flask web framework. It stores data in a MongoDB database and makes calls out to the Yelp API to power the core search and recommendation features of the Magic WaitBall application.
Challenges we ran into
One of the biggest challenges we faced in building the Magic WaitBall was figuring out where we could get the underlying data to power the application. Fortunately the Yelp API provided a wealth of local restaurant information exposed through a powerful set of location-based search API calls.
Finding a good source for restaurant wait time information proved to be trickier - there weren't any good existing APIs that collected and provided that information, so we were forced to redesign our app to gather the data ourselves.
Accomplishments that we're proud of
Despite being a such a small team of just two developers, we were very proud of our ability to develop, test, and deploy a fully functioning mobile app and backend in such a short period of time!
What we learned
We were really excited to work with the Yelp API - there was a surprising amount of useful information in search results. Pretty much everything we wanted to know about a business was available in the API responses, which made building our app much faster.
What's next for Magic WaitBall
Now that we have a first prototype of an app ready, we want to release it to a handful of users and start collecting some basic restaurant wait time data. We will probably also investigate building a predictive model for wait times based on the data we have gathered so we can provide reasonable estimates for places which don't have a lot of users reporting in.