Time is precious. Often times, we know what we want to do, but we don't have the time to find out the best way to do it. Consider the scenario in which you live in a new city and have to go about your everyday life. Basic tasks such as going to the gym or grabbing coffee on the way home from work become challenges. In trying to tackle these challenges, one would waste unnecessary time, effort, and money. But what if you had a personal assistant that optimizes all your tasks in a matter of seconds?

Optibot is your new personal AI for your every day basic needs, by processing your natural language commands. For example, if a user messages Optibot with the message “I would like to go the gym, visit a beach, and grab coffee,” Optibot recognizes the major keywords in the statement (gym, beach, coffee), and proceeds to gauge the user’s preference in areas such as cost, distance, and quality. With all of this information, Optibot develops an itinerary optimized for these preferences and provides an overall elegant user experience.

Optibot is developed as a Slackbot. Using the Slack API, we allowed any Slack team user to avail his or her self of this AI. Through a simple protocol, Optibot knows when it has been called and begins engaging in conversation with the user. The backend of this project was written entirely in Python. For analyzing task statements sent by the user, IBM Watson’s keyword API is used. Once these keywords have been established and user preferences have been gleaned, Optibot utilizes the Google Maps/Places API to determine a list of places, within a predefined radius, for each keyword (i.e. coffee: Phil’s Coffee, Starbucks, etc.). Optibot then has access to all relevant pieces of information (latitude, longitude, user reviews, etc.) for each of these places. Using IBM Watson’s sentiment analysis API, we were able to develop an “Approval Percentage” for each place in question. We then devised an algorithm that addresses a modification of the Traveling Salesman Problem, by strategically weighting the preferences, and efficiently searching through potential routes. Optibot develops the most favorable itinerary, optimized for the initial user tasks. Optibot then sends the user both a Slack message including a suggested itinerary (item by item), a holistic sentiment for the route, and a link to a Google Maps route with all destinations already added. This final message is also bumped to the user’s phone using the Twilio SMS API.

Optibot hopes to move to other interfaces like Messenger, SMS, or even a mobile or web UI. We also hope to aggregate even more reviews for points of interest to better improve our sentiment analysis and quality metric. Additionally, we'd like to enable more user interaction via increased filtration options.

We were proud of how clean the Optibot experience is. You simply speak with the AI and get exactly what you need. As we explored the documentation of the APIs we used, IBM Watson, Slack, and Twilio, we learned a lot about the capabilities of these tools and how we might use them for projects in the future. Additionally, we learned how to best tackle a very interesting graph problem.

Share this project:


posted an update

The following three screenshots indicate basic interaction with Optibot in conversational format. Due to the order in which the pictures were posted, it is best read from bottom to top (reverse order). Enjoy.

Log in or sign up for Devpost to join the conversation.