Onboarding new employees so that they are up to speed on the project is often tedious due to the fact that you may not remember all the information and thus have to scroll through Slack messages to remember what has been discussed and decided. You want to send your new employee a list of those decision (on the coding language you decided and tutorial to get started). You may also want to give a summary of those decision or keywords that show up in those decisions, to help the new employee figure out where they would like to get started from.
Similarly, when working at home, Slack becomes not just a work communication tool but also way to connect and get to know your co-workers. Thus, sometimes they may share interesting stories or links to Slack. But those tend to get buried as the number of messages increase. Thus, you may sometimes want to generate a list of those stories and links to see what your fellow co-workers have sent. You may also want to have a summary and keywords generated from those stories to read the ones you are most interested in first.
Another inspiration was for writing weekly work reports. Since most communication are currently online due to the pandemic, what you are doing and have done this week are recorded through your conversations with various members of the team. So by going through your conversations, you can more easily figure out what you did that week to put it in your weekly work reports.
What it does
The project is mostly made up of three main parts, extracting messages from slack and putting it on a spreadsheet (using Autocode), processing that spreadsheet and generating summaries and keywords for each of the messages, and sending an email with the spreadsheet.
We are extracting the messages from slack and putting them on a spreadsheet. We using the slack command '/cmd WorkReport week' to trigger the endpoint. The code will then clear anything that's currently on the worksheet. It will then find all the channels, loop through them finding all the messages not generated by a bot and insert them into the spreadsheet.
We then process the contents of the spreadsheet. First, we identify messages with the key commands (like !Onboarding!). For those messages, we will summarize the contents using the NLTK library to help the readers get an understanding of the embedded links without having to click it. We also generate keywords from the messages to help employees navigate the messages. Finishing processing, we summarize our results in a second spreadsheet of the same workbook.
Finally, we use Autocode to send an email the intended user through a slack command '/cmd SendOnboard firstname.lastname@example.org'. This will trigger the code to send a email with the link to the spreadsheet inside of it. The email is formatted with an html template.
How I built it
We built it with Autocode (js) for receiving the slack commands and populating the spreadsheet and sending the email. The processing of the spreadsheet was accomplished in google-colab using various Python libraries such as pandas, numpy, scikit-learn, beautifulsoup, NLKT gspread, networkx and matplotlib.
Challenges I ran into
Accomplishments that I'm proud of
We got it to work on slack which was really cool (as shown in the demo)
What I learned
I learnt how to use some of the natural language processing libraries. I also learnt about slack commands and how to use Autocode.
What's next for Captain Efficient
We've completely implemented a pipeline for onboarding but as stated in the inspiration part, this can be applied to many different areas. Thus the next step would be to implement each of those function one by one.