I was inspired to make the Vibe Checker after observing some tense interactions between my coworkers on the company slack. I figured that, after a hard day of work, we need to be reminded of the good things in life and become conscious to the things we are saying.

What it does

Vibe Checker is a bot that sits in a slack channel listening for messages. For every message sent, it sends it to IBM's tone analyzer API to discover any underlying anger. If there is anger detected in the message, the bot will respond by sending a randomized google image of the user's preferred image, which defaults to dogs but can be changed by the user. The bot also keeps track of the tone of all the user's messages, and the user can use a command to see how frequently they come off as each emotion.

How I built it

I built this bot in python using both the IBM-Watson API and the slack RTM client for python. To search for the image, the bot parses through html returned by a google search of the image of compiles a list of image links that can be attached to the message it sends.

Challenges I ran into

I had difficulty dealing with some features of the slack API that have been deprecated, as well as managing multiple API calls at once. It also seems that IBM's tone analyzer isn't perfect in how it detects emotion, so some anger could go undetected.

Accomplishments that I'm proud of

I'm proud of having a working bot that accurately responds to user messages and creatively grabs images from google. It was gratifying to create something that I could actually see being used if it were to be further refined.

What I learned

I learned a lot about using the BeautifulSoup python library to parse HTML, as well as interacting with IBM and Slack's APIs.

What's next for Vibe Checker

Vibe Checker can be further refined to have higher accuracy when detecting tones from user messages. I would also like for the bot to be able to respond to different users differently, as each user most likely has their own preference as to what they would like to see.

Share this project: