The Line of Least Resistance
Contents
Project Overview
Research has shown that many of the typical methods for queueing customers are incredibly inefficient [1]. Many businesses choose to use reservation systems, for many reasons, such as space limitations in their waiting areas, preparation for large parties, and because the first-come, first-serve process is proven to be inefficient. We aim to create a mobile app that customers of three sample restaurants (and time permitting, other businesses like tourist attractions) can download and input their name, party size, and desired reservation time and receive a time to arrive in order to be attended to. The goal is to minimize delay time/maximize predictability because businesses like restaurants, tourist attractions, etc. are meant to be enjoyable, and being given an accurate wait time contributes towards a pleasant experience.
Team Members
- Devon Essick
- Andrew Sweren
- Kjartan Brownell (TA)
Objectives
- Create a mobile application (iOS) that mirrors what a potential customer of a business could download to "make a reservation" at a business. The app will be simple with an intuitive user interface for those who might not be tech-savvy, and will only require that the user selects which business they want to make a reservation for from a list of three (a small restaurant, a tourist attraction, and a large restaurant), and input their name, group size, and desired reservation time from pre-determined time slots (e.g. 7pm, 7:30pm, 8pm). On the other side, there will be a server (obtained through Amazon Cloud) where the host can input "current conditions" in the business. Once the user submits their information, this data will be analyzed through an algorithm on when they can next be server, and the information will be sent back to the app and the closest available time to their selection will be displayed. We will code with Swift, Apple's programming language, and create a code that when given the user's inputs, and when taken into account the "current situation" at the businesses, will determine a time that the user should arrive in order to be seated. Each time someone submits information, this reservation will be taken into account for the next time sometime submits a reservation, until we reset the conditions back to original.
- Create multiple "sample" situations for the reservations to be based off of (eg. each 30 minutes, 8 cars with capacity of 5 go up to the stop of the St. Louis Arch.)
- Create a representation of what the host would "see" based on new reservation information (e.g. once a 3-person group reserves a table for 8pm, we see how full the restaurant is)
- Time permitting: add additional features linking the app to other iOS Apps, such as putting the reservation or location in Calendar or Apple Maps
Challenges
- Learning how to create a mobile app, and learning Swift programming language
- Coding the system that determines when a customer should arrive
- Creating an approachable and intuitive mobile app user interface for people with no experience to use
- Utilizing and coding onto the server
- Making sure we take into account important inputs about a given business so that the recommendations are realistic (e.g. understanding even if there are 2 two-person slots available at a given time, a group of four will not split up)
- Taking into account that even if there is a reservation system in place, people are bound to still show up unannounced, and what the impact on the business could be to turn them away
- Accounting for changes disrupting the way the business operates (e.g. making the business only accessible by reservations could change the type of customers, or making reservations only accessible via mobile app could exclude an older generation)
- Taking into account that people may make reservations and not show up, which may disrupt the system
- Making the app reliable (understanding that introducing the app to a business when it does not give accurate times could mean customers do not return)
Budget
- Device with iOS (provided by team members)- $0
- Coding software (provided by school) - $0
- Amazon Cloud server (90 day trial) - $0
Total: $0
Gantt Chart
Design and Solutions
Results
While we did have a working algorithm and were able to integrate the app with the server, we were not able to have the application perform all of its features. All we were able to do was have a person make the reservation and see that it was successful, essentially allowing a customer to send information to the restaurant, but the restaurant cannot do anything other than accept the reservation. There are a few reasons for this failure. One of them is due to the limitations of the Amazon databases. Because the algorithm used custom java objects, the amazon server was not able to recognize them unless they were broken up into parts. This made it extremely difficult to keep track of every queue that the reservation in as well as perform the necessary actions on each reservation every time a new one was made.