Inspiration

After 2 years of staring at my sky blue (Hex code #E0FFFF) walls, I finally wanted to be outside see the sky as far away from my room as possible. To achieve this, my family booked a hotel in Quebec and thus we started our 8 hour road trip. We panned to stay at a relatively well received google reviewed hotel, sitting at 4.2 stars and being a few streets away from the historic old Quebec City. Once we arrived we felt under prepared, given the hotel did not have all the required amenities (only 1 set of towels for a 2x queen bed room) and that it was a few streets away, but it was located at a significantly higher elevation than the city. After further reading the reviews we saw that people have mentioned this, with 3 and 4 star reviews complaining about the exact same things my family and I did. Once I got to UofTHacks X I learned about the theme of the hackathon, and I had a talk with my group-mates about vacations and discovered this to be a common issue that everyone seems to experience while travelling. We decided enough was enough, and with all our experiences, we decided to end this issue once and for all, while providing people an opportunity to know what they are truly paying for.

What it does

Consensus. is a webapp that takes a location provided by the user and tells them the overall sentiment of the hotel, alongside popular phrases people used to describe their stay. For example, Kelly is trying to book the Best Western by the airport and they put the location into Consensus. to see what people have been saying about it. Consensus. could say that the sentiment is overall negative, with many people saying: "no shuttle", "no breakfast" and "dirty room". Now Kelly knows not to book the Best Western for the 1 night before her flight.

How we built it

UI/UX We used ReactJS and typescript to create a stunning, dynamic, and modern webpage for fluid and informative responses Review Web-Scraping We linked our real location to the Google Maps API to receive real results in increasing order of distance from the user. Sentiment Analysis & Key-phrases extractor We implemented semantic analysis using the co:here API as well as a rapid keyword extraction algorithm (RAKE) to create a consensus of all user reviews

Challenges we ran into

Co:here Training and optimizing the co:here semantic analysis feature to suit our needs proved to be a challenge. People say many different things when reviewing a place and part of our marketing strategy is to provide clarity in a subject where many people will give the same rating for different reasons. Other problems we ran into with Co:here comes from when we tried to implement the Co:here api via node.js SDK (the HTTPS problem), however we were able to overcome with with the workaround documentation provided by Kristina, using the second method of fetching with JavaScript. Web-scraping The Google Maps API on its own is very limited in the amount of information that is allowed to be accessed at one time. Because of this, we were required to use a third-party solution that can scrape the Maps listings and reviews listing for hundreds of reviews. We also have monetary limitations where our sample set is limited by the number of reviews we can scrape from google. There is a chance that the sample size contains only good reviews from a mostly negative review. If we want to scrape more samples, we would need to start paying, and we might do that in the future (maybe with some hackathon winner funding). We were also limited by the CORS policy, as we did not have the time to integrate a proxy server within our backend. UI Implementing animations in JS proved to be a challenge, and inexperience using the React Library led to a longer than expected development time.

Accomplishments that we're proud of

The app is fully functional, even deployed, rare for a hackathon submission. The UI elements are dynamic and fluid. The graphic design is modern and clean.

What we learned

Using NLP models for semantic analysis Using Keyword extraction models for filtering Creating dynamic webpages in React General understanding of NodeJS and associated libraries
Sometimes, the simplest seeming tasks can turn out to be the hardest.

What's next for Consensus.

We would like to experiment with creating a custom python backend for using RAKE-NLTK methods of performing keyword extraction and semantic analysis. We would like to create a custom scraping API to allow digestion of more reviews, including for different review sites. In the distant future, the concept can be expanded to other use cases such as restaurants or attractions.

Using the webapp

Please allow location sharing with the website to allow for google maps to search for hotels, and install the Moesif Origin & CORS Changer web extension to allow for the api to web-scrape.

Built With

Share this project:

Updates