I had two goals coming into this:
1) Build a chat bot 2) Build an online bingo game that can be done via voice.
At first maybe these don't go together, but when you look a little closer you see that they are a natural fit. I wanted to build a chat bot, but not just one you can chat with and be done with it, but rather one where the interaction could be deeper because you are playing a game. Bingo felt like a natural fit for a base game to scaffold off of because it requires some user input but can be played passively or actively.
What it does
It plays bingo would be a simple answer, but it's a lot more complex than that.
It has two modes:
1) Caller -> This mode is an offline mode where you can print or use your own boards and use Alexa to call numbers for you to play locally. I built a custom page to make printing easy as well at link The goal with this mode was if you have a group of people and want to just call and store numbers, you can.
2) Online -> This mode does a lot more. First off, it generates you a board to play with and then joins you into a new or existing game (depending on where people are at). Secondly, it brings together all players across the world into one game and draws numbers every three minutes. Finally, it includes a visual interface that shows you what numbers have been drawn, what numbers you have, and highlights the ones that match. As always with bingo, you can't just get a full row to win, but you need to also say "bingo" to actually win! Each time a game ends, it automatically rolls you out a new one to keep playing!
But wait, there's more. To have a conversation with the bot, you just have to speak naturally. It keeps a dynamic chat history and builds upon it using OpenAI as the engine. The chatbot is designed to grow and expand over time with a dynamic personality and the ability to interact with people however they want. If you want to just play bingo, that is perfectly fine and possible to do, but if you want to have a full conversation with the chatbot that works as well.
One last feature to mention: if you have a screen and see your bingo board, you can also play your own little version of exercise bingo! Just tap on a number to watch a short little video of exercise suggestionst to help you stay in shape! The game is meant to be fully interactive for your mind and body!
How we built it
Integrated an AI and clever model design to send basically every response directly to the game to handle on my side. I also had to design out the system to make the transition from game logic to ai as seamless as possible. The backend is java code using rest and reactive client logic. The front end is react.
I also use video players for the exercise videos, APLA for background music and sound effects, and so many more features.
Things it can handle:
Numbers Board -> Only Online mode Call Next Number -> Only Caller Mode
It can also do other tasks: Interesting Quotes Random Facts Email Board Link -> Only Caller Mode Background Music
There are also other features, including an optional subscription which upgrades the AI model that is used to a more powerful one for enhanced conversations, an email functionality that sends a simple email with a link to print boards for players who have linked their accounts.
Challenges we ran into
There were a few big challenges:
Building the interaction model with OpenAI to handle the conversations while also hijacking game logic to actually play bingo. It turns out if you just ask an AI to play bingo, it will do its best and make a completely unusable bingo game. It doesn't know how to track anything, and even if you teach it rudimentary details about how to do it, it will still mess up a LOT.
That meant I had to build the bingo logic completely on the game side, and then serve to pass through interactions to the UI. I also had to teach the UI how to handle those interactions to know when it should respond to the player compared to when it should tell the game that the player was asking about the bingo board. Essentially, the conversation and AI are two different systems that mesh into one another.
The next big challenge was building the game board using html. It needed to be clean and simple and visually appealing on any size screen, and I also wanted for it to be interactive. You can't click to say "I own this square" because the game is online and competitive and tracks for you, but you CAN click to watch a quick video with an exercise suggestion while waiting for your next number to pop up.
Accomplishments that we're proud of
I'm proud of how well I was able to build out the system to handle both the chat bot and the bingo game together. I didn't want to just build a bingo game that gets lost if you step outside its programming, but I also didn't just want a chatbot that is like holding a conversation with a curious six year old. I wanted it to be something that was engaging on a lot of different levels and gave people clever things they could do while playing bingo with people all around the world.
What we learned
I learned lot about OpenAI and building conversational bots, but also about building game logic in and around conversation bots. The AI can handle a lot of things on its own, and it turns out that it only takes a little bit of guidance to make it something truly interactive.
What's next for Global Bingo
I want to deepen the visual interactions and enhance the UI with more features and at-a-glance information. Also, depending on usage, I might need to look into expanding the board size or count of numbers so that online games don't end too quickly. I would also like to include more information about where in the world players are playing from and enhanced information about those players for visual devices.