C

Credible

Decentralised Web Application for Tackling Fake News using Ethereum Blockchain and Machine Learning

The problem Credible solves

The project focuses on the social and political impacts of Fake News and damages caused by its propagation. In today's world, social media is shaping both our future and present at the same time, due to high dependence on these platforms they also become propagators of Fake News.

We developed this web application so that users can track and catalog Fake News on any website on the Internet. We track the content and ratings of the websites using URLs. Any user can fetch the ratings for any piece of information on the internet by simply entering the URL of the webpage into the application ensuring that the current media platforms can work without any hiccups and modifications in infrastructure.

This application is like StackOverflow for Fake News, the content on the application is uploaded and maintained by the community and reputation is designed in place to help identify credible users and contributors. Contributors upload comments and facts regarding the Website, we compute a Profanity Check and Sentiment Analysis over the uploaded comments to ensure that no objectionable content gets uploaded to the Blockchain, the Sentiment Analysis helps the application to rate the website according to view and insights from the user.

To ensure the identity of the user is verified and no user can hold multiple accounts on the application we are using Civic API which is a Blockchain based Identity Management application.

Challenges we ran into

The challenges we faced were the deployment of the Machine Learning Model on Heroku to create a Flask API. The pre-trained models were of large size, the deployment on Heroku was challenging. Initially, the model was divided into multiple modules which were depreciated and a single module was created which has a path to all the pre-trained models.

Another minor issue was in frontend in which we were altering the DOM using JavaScript, the workaround was to use SetTimeout() and use "let" keyword to ensure the variable was out of the global scope.
This article was referred to solve the issue - https://dzone.com/articles/why-does-javascript-loop-only-use-last-valuSeco

Discussion