"I wish I was more in the know on local events, local culture and local politics in Seattle"
That is the thought that got us started working on Summarizer. After researching and brainstorming on the common struggles of today's working Seattleite, we found the most pressing struggles to be feelings of isolation which often lead to depression. As Informatics majors, we approached tackling this struggle by framing it as an information challenge. We posed questions like:
- How can we design a solution that fosters a collborative community?
- How can we emphasize having fun, quality of life, and diversity?
Realizing that isolation often comes from having little time or energy to engage with others, we wanted to build a solution that bridges the gap between busy people and their local community.
Information is what connects all of us together, so we made it our mission to come up with a tool that makes it easy to consume information on local culture, politics and events.
What it does
Summarize allows busy people to get caught up on the culture of their local community within minutes. How?
It's simple. Users read articles, and tap on sentences they found most useful. these sentences get ranked and summarized the top of the article for others to skim. As you read the article, Summarize also guides your eyes to parts of the content that get the most attention.
By being the first news tool to leverage community intelligence to crystallize articles into bite-size, consumable pieces of information, Summarize is able to decrease the amount of time it takes to read a news article by a lot!
Summarize also pulls news data from local sources only, and allows innovative filtering like "Neighborhood news." By making information about local happenings more accesible, our product increases the likelihood that users will find out about things to explore, and go out and engage with their community.
How we built it
With the goal of creating a multi-platform single page application, we built the front end of the application using the Ionic Framework with React. For the back end we used Express.js and MongoDB. For authentication we used 0Auth, for natural language processing we used winkNLP, and for synchronous sentence voting updates we used Pusher. To host the application, we used Firebase to host the front end, and DigitalOcean Droplets to host the database and back end.
Challenges we ran into
- Jason: MongoDB queries! This was my first practical application of NoSQL, and I struggled to create well-placed queries to project the data into the format I desired. Some of the processing
- Alex: SSL encrypting the backend. After hosting the front end which had SSL out of the box, I realized I also had to encrypt the backend which took 1 hour more than anticipated.
- Jason: Getting the mobile application to build to Android. There are a lot of important details omitted in some of the quick-start guides for this, which added a lot of time
- Alex: Authentication: After fidgeting around with different solutions for sometime, I finally stumbled upon auth0 which I should have started with! would have saved a lot of time.
- Both of us: Keeping the vision of the product in mind as we dove in to development. A lot of things we realized were out of scope so we had to pivot in a way that still kept our core vision in mind. We started out as a gamification tool!
Accomplishments that we're proud of
- Realtime updates on voting! Watch news articles annotate themselves
- Smooth transitions between news articles, clean user interface
- IOS, Android, and Web friendly. We can publish this to both app stores!
- Hosted on the web for everyone!
What we learned
- A little Project Managment goes a lot way!
- Try to overlap as few tasks as possible during sprints (Merge Conflicts!)
- Get yourself a good .gitignore file, and set up environment variables so that deploying the application to production and local testing don't require extra work
- We didn't sleep all night, and were barely able to finish in time. Our saving grace was a project managment technique of ranking functionality as Dissatisfiers, Satisfiers and delighters. this helped us prioritize and focus on the functionalities that users would be dissatisfied with if they didn't have.
What's next for Summarizer
As more and more people use Summarizer we plan to leverage the WinkNLP API along with others to train Summarize to crystallize articles on its own. We also want to preserve more of the original formatting of the articles, such as paragraph breaks and images within the body.