BreatheIO Bot


Overview

BreatheIO is a simple Slack bot for breathing exercises. BreatheIO helps incorporate good mental health habits into the workplace in a playful way.

Project Details

Timeline: Three weeks

Methods: Experience Prototyping, Empathy Maps, Data Modeling

Tools: Slack API, Giphy API, Ruby (Sinatra framework), Postgres/Sqlite

Technical Implementation

chill gif

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.

Conversation flow

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.

workflow

Personality

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.

chill gif chill gif chill gif

Media & Documentation

Breathing counter in action (Note: Slack generates automatic timeout notifications for slash commands that last multiple seconds)

chill gif

Chill gif in action

chill gif