Our motivation was to create a place for people to talk about controversial topics without fear of judgment but also without fear of being mercilessly trolled. We felt that the internet tends to focus people into their own little echo chambers, but that the technology has the potential to do the exact opposite.

What it does

This is a simple web app where people are connected randomly and anonymously to talk about a controversial topic. They are encouraged to try and convince the other of their opinion or at the very least, make them think about the other point of view. To avoid the conversation going off track, we had an NLP message assessor in python that would try to assess the relevance of the messaging. And to avoid trolling, we had a python service to score each user cumulatively on the civility of their messaging. If they were trolling, they would be removed.

How we built it

Since the team had a diverse, but not fully connected set of skills, we decided to start building the project in segments. Henry had experience with front-end design, so he created the webpage and the user interface along with Nasir. George and Krishan had experience with the Python programming language, and thus they developed the natural language processing microservices in the backend. George's microservice was focussed on finding and removing any internet trolls who used the website. Krishan's microservice was designed to ensure that the conversation stayed on topic, by analysing the content of the messages. Akshat was responsible for connecting the various microservices together, and connecting users using a Golang based backend with grpc. Nasir used his creative ability to create the UI design for the front-end and choreographed the demo video. .

Challenges we ran into

By choosing to build RoyalChat as a series of small pieces, then connecting them together at a later stage, we encountered the problem of integrating the different parts of the project together, where each developer had their own design schemes. However, through communication, we were able to join the parts together in a seamless way, and understand each other's thinking in a deeper way. We were also plagued by problems concerning libraries and APIs, such as limitations on the Google Perspective API usage, and the installation issues with the Spacy library.

Accomplishments that we're proud of

  1. Establishing a true instant message platform in a limited amount of time
  2. Detecting the levels of Toxicidity, profanity, explicit, identity attack (homophobia, racism, islamophobia), insult, threat
  3. A highly interactive user interface which is scalable to any device screen size
  4. Animations whilst the user is waiting to be connected.
  5. GRPC and microservices

What we learned

How to cooperate with multiple members Design structures Communication design How to plan and design projects

What's next for RoyalChat

What's next for RoyalChat? We plan to incorporate a much larger range of topics to choose from and develop a mobile app to increase ease of use. We also plan to improve our NLP and troll detection system by vigorous amounts of training data and improvements to our existing algorithms.

What we built it with

Golang Python HTML5 CSS JavaScript Bootstrap.js jQuery Gimp GRPC WebSockets Google Perspective API NLTK Gensim

_ Note that the demo link only works if you are connected to Imperial WPA _

Share this project: