BreatheIO is a simple Slack bot for breathing exercises. BreatheIO helps incorporate good mental health habits into the workplace in a playful way.
Timeline: Three weeks
Methods: Experience Prototyping, Empathy Maps, Data Modeling
Tools: Slack API, Giphy API, Ruby (Sinatra framework), Postgres/Sqlite
BreatheIO is a Slack bot built in Ruby and Sinatra. It leverages features in the Slack API such as interactive button messages and media attachments, as well as slash commands and incoming and outgoing webhooks. Gif urls from the Giphy API are stored in a database (Sqlite in development and Postgres in production), and pulled dynamically for the “chill gif” trigger word. The database is managed through the Active Record gem, which I used to access the models for the gifs, events, and slack team information. I also used the JSON gem to make blocks of JSON interpretable to Slack, which sends and receives JSON messages.
I refined the conversation flow through two rounds of experience prototyping. During these sessions, I tested out rough scripts and conversation flows, pretending to be a bot while communicating with several test users. After incorporating their feedback, I arrived at the following conversation flow.
If BreatheIO bot were a person, they would be a Hawaiian surfer and monk, combining the laid-back humor of a beach bum with the thoughtful serenity of a theologian. His personality is expressed whenever you launch into a new breath with the “new breath” trigger word by saying “Need a breather? That's what I'm here for” and showing a levitating sock monkey. He is helpful without being pushy. When you’ve completed a breath, he says “Whew, that felt good. Type '/breathe' whenever you want to take another breather with me!” — encouraging, informational, and colloquial.
Breathing counter in action (Note: Slack generates automatic timeout notifications for slash commands that last multiple seconds)
Chill gif in action