Internet is this huge, huge source of data which offers the users the ability to do so much. One of the most staggering aspects of the internet is its ability to host so many opinions and information, and to democratize human thought (Col. Chris Hadfield). But with so much information floating around, it sometimes becomes tricky to follow the topics of interest. The sentimental opinions that the authors originally had are usually lost in this vast ocean of data. Even with all the different news sources and news curation services out there, there is not a good solution that tries to preserve, let alone promote, the biggest human element in these news and blog posts--the human emotions and sentiments. This is where Grind comes in.
What it does
Grind is a web application for reading news, articles, and blog posts that adds a new dimension to the act of reading. Grind gathers articles from multiple online sources, and uses Natural Language Processing (NLP) to understand the sentiment the author tried to put into the piece of writing. It also discovers keywords associated with the text, so as to give a quick summary to the reader. All this information is provided to the user in a very modern and delightful way that allows them to either skim through the articles, or open them to read further. Visit grindonline.co to check it out!
How we built it
Grind is a two-tiered app system: there is the web front-end, powered by React and facilitated by Node.js, and is hosted in Heroku; and there is the cloud back-end, developed in C#/.NET, fed by WebHose and granted the brains by Indico. It is hosted in Azure.
The web front-end queries the cloud back-end for the various search queries, and then presents it in a meaningful and delightful way. The back-end cloud service facilitates these requests by curating articles of importance from WebHose. It then leverages Indico to get meaningful NLP information about these news articles, and presents all this information to the client app. The back-end is a front-end agnostic RESTful API that can potentially serve other clients in the future as well.
Challenges we ran into
The biggest challenge that we originally faced was just finding a good multi-sourced news source, and how to integrate this with an NLP API. We finally decided to use WebHose for data because it looked simple, but powerful enough for our purposes, and gave all the data and metadata that we needed. We chose Indico for NLP, because of all the different things we could potentially do with it.
The biggest technical challenge that we faced was coming up with a solution to provide a continued browsing experience to the users. Ideally, we wanted to not store any data about the user and their reading levels on the cloud or on the clients via cookies. How then shall we provide an experience that feels like a natural progression into a topic, especially given the request-serve based relation of the Grind front and back-ends? We considered using session IDs, but they would get nasty in terms of lifetime management. Moreover, they would still require storing stuff on the cloud based on the IDs. We considered providing batch information to the client, but what happens when an avid reader asks for more? Why should light users get the overhead of the processing required for a big batch of articles?
What we ended up doing is, at least according to us, pretty cool! We are using WebHose's performance score and next URL combination to figure out what content the client needs. Through this, we can accurately calculate if the user just made the query, or is asking for more articles on the same topic. We would be able to calculate which batch of articles to then supply next. All of this, without storing anything to persistent storage anywhere! This approach is working pretty well, and we are so proud of it!
Accomplishments that we're proud of
Besides addressing the above mentioned challenges in a hackathon environment, we are really proud of what we have made as a whole. We believe that there is definitely an audience for this app, and we think that it can definitely improve their reading experience.
We are also proud of the engineering that we were able to put into this product, and which will potentially allow us to iterate and even expand to other platforms with relative ease in the future.
What we learned
We grew ourselves both technically and personally. We built a really cool product in 36 hours--one that required us to think and hack the sh*t out of it! We learnt about new technologies, working with people, about new people, and even a bit about new cultures!
What's next for Grind
We would want to iterate on our design based on the feedback that we get. We really believe in this product, and we want to ensure that it does what we believe it can. Expanding to mobile platforms would also be a possibility.