As a care giver, I have been hyper-sensitive about my contacts in this COVID-19 world. In looking for ways to use technology to improve on processes, I considered my local small businesses. Order taking requires risky face-to-face dwell time that can be limited with the right solution.
What it does
Order Up implements an automated contactless order taking and payment service using a voice-enabled kiosk and Square services for a catalog of items, order logging, payments, and loyalty rewards. The kiosk runs on an iPad and communicates with a Brother printer for the kitchen or fulfillment area to prepare the order. There is a companion Order Up Pay app that interfaces over bluetooth with the kiosk Order Up app. The Order Up Pay app identifies you to the service, enables contactless payment via a credit card with Square, or Apple Pay, and provides order confirmation.
The merchant logs into the Order Up app and can set up their service by identifying their printer and reviewing their menu. They can also review recent orders. When ready, they enter kiosk mode in the app to take orders. A user launches the Order Up Pay app and brings their phone near the kiosk to sync. They are then presented with a guided menu of things they can say on the kiosk to place their order. As they speak to the kiosk, it assembles their order and shows the total cost. The Order Up app automatically applies any earned rewards, such as a free item. The user can add a tip, and finish their order. The kiosk then prompts to make a payment on their Order Up Pay app. When that's done, the kiosk shows confirmation and prints the order on the prep area Brother printer. The Order Up Pay app shows their complete order with an order number so they can claim the order when it's brought forward.
The system is then ready for the next customer.
The whole system uses the Square service to host the order item catalog, to record orders, take payments, track customer loyalty, etc.
The backend and web portal of the Order Up service manages merchant account info and allows the merchant to interface with the Square service, such as reviewing orders, payments, and customers, and managing their menu. Order Up implemented a menu scan feature to make it easy to translate a physical menu into the Order Up backend.
How we built it
We created 2 iOS apps in Swift - Order Up and Order Up Pay. We used the Brother SDK to interface to the backroom printer. The Order Up app uses iOS voice recognition technology to implement the order taking process. Both apps use bluetooth technology to synchronize information between them. They both use the Square SDK to interface with the payments service. The Order Up app further interfaces with the Square service over their REST API.
The backend is written in Python and uses the Square SDK to interface with their service, and runs on a serverless architecture.
Challenges we ran into
There were numerous challenges in building this service from scratch. First, getting the voice interface working so that one can navigate through a series of hierarchical menus took a lot of experimentation and testing. Second was interfacing to the Brother printer, which took a while to learn, but we had some help from Brother support. Third was implementing the bluetooth sync interface between the two apps. That was very hard to debug any issues. Finally, interfacing to the Square service took a while to figure out, debug, and test. The payment SDK was somewhat easier to integrate, and there was some good example code. But the REST API required a lot of experimentation with the API explorer, trial and error in the code implementation, and proper sequencing of the calls to effect the transactions.
Accomplishments that we're proud of
We're very happy with the progress we were able to make in just a few weeks. While it still needs work before deployment, it's working well as a demonstration. There were a lot of pieces that all had to work together to even get to that stage. There is also a clear path to deployment and market viability.
What we learned
We learned a great deal about each of the various pieces. How to implement a voice-controlled interface, how to talk to Brother printers, how to sync information over bluetooth, and how to work with the Square service with their SDK and REST API.
What's next for Order Up
We want to identify a local merchant where we can field test the service. There is still work to do for account creation, merchant definition, menu editing, and some other components before Order Up is ready for deployment.