Back to Parent

Outcome


Final project poster small
Show Advanced Options

 - Summary - 

Angry Bus is...

A Slack bot designed for students at Carnegie Mellon University (Pittsburgh Campus) to catch the latest bus within an appropriate waiting time period.

Ideally, Angry Bus is supposed to read the real-time data via Transit/Google Maps API and provides suggestions on bus routes. Practically, due to the time limit and my limited skillset, I tried my best prototyping (hardcoding) the scenarios based on the Slack-Bot-Template from Daragh. Additionally, I integrated Lyft Bot from Slack App Directory in case the bot is not functional.

- Bot Personality -

Angry Bus looks like...

Angry Bus is a Pittsburgh local guy aged 35. He works in Port Authority of Allegheny County, leading a project called Perfect Timing


[Image source: http://www.omnitrans.org/blog/wp-content/uploads/2014/08/Benito-bus2.jpg]

Mr. Bus is a straightforward guy but not has much patience when seeing people miss a bus ("That's my duty!"). In his project Perfect Timing, he's dedicating in helping students go home not only efficiently but safely.

Recently, his old friend Lyft comes over offering a help because the winter is coming! You can't imagine if a CMU kid falling down on the slippery, snowy streets when chasing a bus.

Angry's Personality Map


- Users and Scenarios -

Angry Bus helps when...

Users: Those hard-working students (almost all of them) at Carnegie Mellon University.

Scenarios: The final week at CMU is crazy.

#1: It is a typical workday night in final week at CMU. Jacob and his teammates are devoting their hearts deeply into the final project. Like what we do for group discussion, Slack is their top choice for team collaboration. Sometimes when the work session begins, you never know when to stop and how. Here comes Angry Bus, the smart bot will knock Jacob via a DM saying "Ready to home?" by providing a list of latest buses. Usually, the latest bus is 10 minutes away (walking distance) from him. Because of such a perfect timing, Jacob stands up without hesitation and catches the bus right on time. After Jacob's home, the bot asks him to send a "safely home" emoji within the channel, which makes his teammates feel assured about his safety during the trip.

#2: When studying in the Hunt Library, Jamie usually packs her backpack when there's a bus coming. However, even her Transit App can tell her when is the next bus home, she doesn't know when it's the perfect timing to catch it. So here comes Angry Bus, the Slack bot knocks Jamie when the right bus comes nearby. Thankfully, she will not bother checking her apps from time to time or missing the last bus in the end.

 - Features - 

What can Angry Bus help?

The desired features include: 


The implemented features include:

  1. Conversationally onboarding a user (addresses, departing time, and waiting time)
  2. Sending a list of latest buses (hardcoded)
  3. Conversationally notifying a use when the bus comes nearby (hardcoded)
  4. Notifying teammates when the user is home
  5. Making suggestions on "calling a lyft" -> /lyft help

 - Workflow - 

How does Angry Bus work?

Finalproject workflow v2 1
Show Advanced Options
Finalproject workflow v2 2
Show Advanced Options

 - Technical Implementation - 

What are needed to build the Angry Bus?


API from Port Authority of Allegheny County [1], [2]: I required the API key from the website, however, I haven't received any response from them within the deadline to this project. Thus, I focused on prototyping the design concept, other than implementation. 

Google Maps API [3]: After several times trial and error, I still have not learned how to apply the code by reading the document.

I also explored gems like Geocoder [4] (However, it's detailed in geocoding but less relevant with commuting), and others gem for Bus Transportation in other cities.

Finally, I borrowed the functional Lyft Bot [5] found in Slack App Directory and integrated it with the conceptual prototype of Angry Bus.

Show Advanced Options
Screen shot 2016 12 14 at 5.15.42 pm
Show Advanced Options

Future Work

1. Design Improvement. According to the feedback from Daragh after my demo presentation, I learned I missed an important point in design: Design with context. For example, even though Angry Bus can @channel telling teammates that the user is home, the teammates may not be disturbed when there's late at night. So it's better to divide the workflows into different sections based on different use cases.

2. Implementation using Port Authority API. Currently, the bot is more like a prototype other than a functional service. So if there's any chance to obtain an appropriate API, it's ideal to make Angry Bus work, otherwise, it's still a course project and a simple design concept from a student.

3. Formatting. Formatting the answers with more interactive elements like buttons.

Reflection

1. The gap between design concepts and implementation is huge sometimes. I pictured a perfect bot in my design concept, however, when it comes to implementation, I fall short in implementing a basic function by myself.

2. To better implement the bot by myself, I should be more active during the class, and ask questions more frequently. Without following the examples and asks peers, my problem can never get solved. I regretted that I didn't ask questions timely when problems occurred. If I asked, I wouldn't be in such as hush before the deadline.

3. Don't worries. I will be still in an interdisciplinary team in future projects. This class for me is like an experimentation (when I see my own shortcomings in coding for the first time). I was frustrated a lot when seeing there was so much I CANNOT DO by myself even if spending tens of hours on it. However, in a real project, I am not alone. I realized the importance of engineer teammates and now become more grateful for the time when they are by my side. 

4. Thank you: Daragh and my classmates who show their great patience in helping me debug and explain "what's going on" indeed. 

References

1. Port Authority of Allegheny County

link: http://www.portauthority.org/paac/CompanyInfoProjects/DeveloperResources.aspx

2. Port Authority of Allegheny County's TrueTime System

link: http://truetime.portauthority.org/bustime/home.jsp

3. Google Transit APIs Reference on GTFS

link: https://developers.google.com/transit/gtfs/reference/ 

4. Documentation of the Geocoder gem

link: https://github.com/alexreisner/geocoder 

5. The Lyft Slack Bot

link: https://ruolantestingbot.slack.com/apps/A0CEK7W3D-lyft 

Drop files here or click to select

You can upload files of up to 20MB using this form.