image: ./bobbys-table-site.webp # Bobbys Table #### AI Restaurant Reservation Demo [bobbystable.ai](https://bobbystable.ai) is a functional demo of a restaurant reservation system built on SignalWires APIs.
On this page, youll find a full breakdown of the prompts used, along with all the functions. The functions are written in Perl. To quickly access all relevant files, please visit the [GitHub repository](https://github.com/signalwire/digital_employees/tree/main/server/Perl_Examples/BobbysTable.ai). :::tip Try it out! Dial +1-754-432-6229 and watch your reservation show up live on [bobbystable.ai](https://bobbystable.ai). :::
GitHub Repository
View the project and clone it to your development environment from the [GitHub repository](https://github.com/signalwire/digital_employees/tree/main/server/Perl_Examples/BobbysTable.ai).
## How it works Bobbys Table has three primary interfaces: - A **public website** showing live reservations - A **password-protected backend log** exposing interactions between user, AI Agent, app functions, and the system - **SMS messages** delivered to the user with reservation updates ### 1. Public site The website is used to display the reservation details. This could be protected with a username and password, but our [demo site](https://bobbystable.ai) is public for demonstration purposes. - Date: Reservation date - Time: Reservation time - Party Size: Number of guests - Guest Name: Name of the guest - Guest Number: Phone number of the guest ### 2. Backend This is a backend interface gated by a login user name and password. - user: The callers interaction - Assistant: The AI bots interaction - function: This shows that the function was executed either correctly or incorrectly - system: This is like the assistant but on a higher level ### 3. SMS This is the text message sent that includes: - Reservation name - Reservation date and time - Instructions on how to update the reservation online with a unique link - The option to STOP (required for SMS regulatory compliance) ## Build it In addition to what is included in the [**GitHub repository**](https://github.com/signalwire/digital_employees/tree/main/server/Perl_Examples/BobbysTable.ai), you will also need to set up the following components. - **Web server:** NGINX - **Database:** PostgreSQL - **Active SignalWire Space:** Accessed at yourspace.signalwire.com - **Signalwire API token** - **A registered/apporoved campaign for SMS** in your SignalWire Space :::info SMS is subject to additional regulation by carriers. If you havent worked with SMS before, check out our comprehensive guide to [navigating the Campaign Registry process](https://developer.signalwire.com/guides/campaign-registry-all-you-need-to-know/). ::: ## Function reference This table succinctly outlines the necessary functions for the SWAIG (SignalWire AI Agent), detailing the arguments required for each function and their respective purposes within the room service ordering process. | Function | Arguments | Description | | :- | :-- | : | | lookup_reservation | customer_phone | Takes the users phone number in e.164 format to look up a reservation. | | cancel_reservation | customer_phone | Takes the users phone number in e.164 format to cancel a reservation. | | move_reservation | minutes_to_move | The number of minutes to move the reservation forward. | | check_availability | party_size, reservation_time, reservation_date | Checks for availability using string values for the number of guests (party_size) and the proposed reservation time and date. | | create_reservation | customer_phone, customer_name, party_size, reservation_time, reservation_date | Creates a reservation using the customer, party, and reservation details. | ## Use case Bobbys Table is a prime example of the way advanced telecommunications technologies and AI can transform established, inefficient, and error-prone ways of doing business. Case in point: Making a dinner reservation. Lets first briefly examine how this process usually works. #### The Status Quo *Its 11 AM and youre planning a nice dinner date. After looking up a restaurant online, you find their phone number and give it a call. The restaurant doesnt open until 3 PM, so you set a phone alarm and call back in the afternoon. By then, the kitchen is slammed and you wait on hold for 10 minutes before the staff can put your name down. When you arrive, the system has no record of your booking, so you end up waiting 45 minutes for a table. Surely there must be a better way.* #### Reinventing Reservations With Bobbys Table, you can give the restaurant a call any time of day (or night). The AI Agent prompts you for relevant information and offers a range of options. At the end of the conversation, your reservation is confirmed via text or email. You can update your reservation at any time, and access is secured via SignalWires MFA API. ## GitHub Check out the full project repository for the Bobbys Table demo on GitHub. - [View the project on GitHub](https://github.com/signalwire/digital_employees/tree/main/server/Perl_Examples/BobbysTable.ai) - [Report an issue with a demo](https://github.com/signalwire/digital_employees/issues) ## SignalWire SignalWire’s AI Agent for Voice allows you to build and deploy your own digital employee. Powered by advanced natural language processing (NLP) capabilities, your digital employee will understand caller intent, retain context, and generally behave in a way that feels “human-like”. In fact, you may find that it behaves exactly like your best employee, elevating the customer experience through efficient, intelligent, and personalized interactions. ##### Made with ❤️ by SignalWires DevEx team *Have feedback on this site? Drop us a line at devex@signalwire.com or visit the [Community Slack](https://signalwire-community.slack.com/).*