Why is ordering a pizza harder than making instant noodles? Today, customers have to sludge through advertisements and upsells to order a quintessential piece of Americana. Bringing modern-day convenience to a $37 billion dollar US industry is Pizza Button. With the click of a button, on a smartwatch encased in a custom-designed chassis or a mobile phone, customers can instantly order a pizza. Pizza Button instantly takes a customer’s address, phone number, and pizza preference, synthesizes it from text to speech, and places a call with the nearest pizza parlor. By building on existing call-based ordering systems, one click can extend the reliability of an existing and dependable solution into the 21st century. During the automated process, the customer can step in the call, which is transcribed in real-time, and provide extra details about their order, or a different preferred payment method such as a credit card. Encasing the simple objective of convenience in easily accessible software and ubiquitous hardware, enables customers to experience a modern-day approach to a timeless classic.
How I built it
There's an Android app and a Wear OS (Android smartwatch) app. The only functional difference between the two is being able to register, edit preferences ("large pizza", new address), and view order history on the phone. The app uses Kotlin. It authenticates (and registers) a user using Firebase Authentication. User profile is stored in Firebase Realtime Database. After obtaining user preference details, the app uses on-device text-to-speech to convert a script to a file. Then uses Twilio to call the nearest pizza store (retrieved using Google Places) and plays the synthesized script. The app also allows the user to switch on their mic, to take over in case of emergency. The call is transcribed in real-time using Microsoft Azure Cognitive Services. The server for Twilio authentication is hosted on Amazon EC2.
Challenges I ran into
Twilio's API was a bit harder to use than expected. Lack of diverse samples and complicated problem space. Text-to-speech was a bit odd. Using GCP's option would have necessitated not using their Java SDK (since it seems to only allow credentials via environment variables), granted, this feels like something that should be done on the backend.
Accomplishments that I'm proud of
Only buying two pizzas while making this hack.
What I learned
I think I'll stick to my ramen noodles.
What's next for Pizza Button
It's open-source under MIT license. ¯\(ツ)/¯