Skip to content

Microservice that returns a JSON payload and performs a Data Engineering task. Runs on AWS AppRunner. This application provides an easy platform for Duke graduate students to both add and view past feedback on elective classes they may want to take.

Notifications You must be signed in to change notification settings

aarushi-vermaa/slackbot_electives

 
 

Repository files navigation

Duke University Elective SlackBot

Background and Motivation

Duke’s Masters in Interdisciplinary Data Science (MIDS) is a relatively new 2 year-long graduate science program. One of the strengths of the program is the ability for students to take electives in any of Duke’s graduate schools. However, this leads to a somewhat predictable and simultaneously frustrating question: “What gosh-darn elective do I take??” As a solution, the program administrator has put together a Google Sheet for students to add courses they have taken and any relevant feedback. However, as visible below, this spreadsheet can be very difficult to use, as there’s no easy sort functionality, and students may enter classes with slightly different names.

alt text

The purpose of this project is to rectify this issue, and provide an easy platform for current students to both view and add feedback on electives they have taken.

Project Design

We chose to implement this tool in Slack, given the widely prevalent use of the tool in MIDS. The SlackBot platform was used to create the chatbot, “slash” commands were used to create interactivity, and AWS AppRunner to deploy the application. The elective data is hosted on DynamoDB, and AppRunner can read and write from the database.

To build our database in DynamoDB, historical records from the Master's Program were dumped on a DynamoDB instance that can be read and interact with in the slackbot. The restructured spreadsheet included the Class Number, the student name, their feedback as well as a new field where students can add a rating for the course (0-5). Class number and student names were used as primary and secondary keys in the database.

alt text

The flowchart above displays the full project design. A user utilizes one of two slash commands (elective or feedback) and the SlackBot sends the request to AWS AppRunner, which is set to deploy on push to this GitHub (hosted on an EC2 instance). AppRunner can then interact with the Dynamo DataBase. If the slash command “/elective” is called, the database is searched for relevant feedback on that specific elective, while if the slash command “/feedback” is called, AppRunner adds the student’s feedback to the DataBase as a new entry.

This project still has a few limitations that will be addressed with future work. For example, right now students must exactly specify the correct class name to access feedback. Future integration will focus on Slack “workflows” for users to have a more interactive and less error prone experience.


    / \ \      / / ___|   / ___| | ___  _   _  __| |/ _ \ 
   / _ \ \ /\ / /\___ \  | |   | |/ _ \| | | |/ _` | (_) |
  / ___ \ V  V /  ___) | | |___| | (_) | |_| | (_| |\__, |
 /_/   \_\_/\_/  |____/   \____|_|\___/ \__,_|\__,_|  /_/ 

Hi there! Welcome to AWS Cloud9!

To get started, create some files, play with the terminal, or visit https://docs.aws.amazon.com/console/cloud9/ for our documentation.

Happy coding!

About

Microservice that returns a JSON payload and performs a Data Engineering task. Runs on AWS AppRunner. This application provides an easy platform for Duke graduate students to both add and view past feedback on elective classes they may want to take.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.0%
  • Makefile 1.0%