Everyone has those friends who just add you to their group chats, and then you get incessantly flooded with notifications. After muting conversations, you'll miss invitations and key messages, mainly because you didn't see them. Now there's a way to manage your notifications and be sure that you miss out.
It was especially helpful for the TreeHacks Slack group. Especially since we're hacking, we preferred not to be notified much, or spend time just to see where lunch is. It also helped us find out that a guy just dropped off an Echo in the hardware booth, and we promptly intercepted it from another team. :D
We also built this for accessibility. Most people with vision disorders or physical disabilities have a hard time talking to their friends (since most of us use instant messaging, not calls). Our project would allow these people to have the Echo talk to them and basically act as their social assistant.
What it does
To summarize group messages from GroupMe, you could tell Alexa to summarize whichever group you want. She'll then tell you what topics were discussed, and the main points said in each topic. She'll even tell you about what certain people were feeling. If you don't fully understand the messages, you could ask her for the context, and she'll tell you what was said before and after. The same functions work if you want your Slack messages summarized.
For Slack specifically, we built a Slackbot, which you could enter your commands to select which group to summarize. All the other functions above apply here too!
How we built it
For the summarization itself, we implemented Jolo Balbin's thesis on summarizing a single topic text block. It involved finding the most common ideas, and ranking the sentences based on how similar they were to other sentences. This was coded in Python, and lives inside an AWS Lambda function.
Most group chats have many conversations going on though, so we also built a classifier function using IBM Alchemy's concept extractor and clustered similar words together using NLTK. We then ran the summarization script on each of the specific conversation topics and got out key points.
The Slack Bot was hosted using a Python flask image running on Microsoft Azure, that's where all the API calls and data lived. This was called on by the Lambda function on AWS. We then used our Lambda function and Azure backend to link functionality to the Echo.
Challenges we ran into
We had a hard time when we first ran our summarizer on the Slack conversations, because it wasn't optimized for multiple topics. We fixed this by splitting the conversation.
It was hard to get our hands on an Echo, so we developed most of it without being able to see results on the go. Our Slack summarization backend saved us though.
Also, we had a hard time deploying packages on AWS because it needed us to make special versions of NLTK and other packages to run.
Accomplishments that we're proud of
We're particularly proud about implementing one of NLP's hardest problems, and how we worked around the limitations of the thesis by classifying messages.
Also, we're proud of building something that would help us and almost everyone, and how it helps a certain segment greatly.
What we learned
All of us were well versed in Python and backend, but not so much on web development. We had a fun time learning about deployment and learning about how servers communicate with each other.
What's next for Pigeon Point
Link our backend to Facebook Messenger, text messages, and even news sites. Then we can get acquired by Microsoft's GroupMe or Facebook.