The ultimate anti-bias tool for browsing the news.
Project Aim and Motivations
All humans are susceptible to a large number of well-understood congnitive biases. These biases ultimately impact how we see and understand the world.
This is an nwHacks 2020 project which aims to empower everyone to browse news articles consciously, scoring sources for measurable bias indicators such as sensational language and non-neutral sentiment.
Our final product is the result of the following secondary goals:
- Create something simple that makes the world a slightly better place by fighting misinformation, aligning with Mozilla's campaign
- Explore the use of new technologies
- Leverage team members' (very distinct) skills without having to settle for a single programming language by employing a microservice-like architecture, where different components are fully isolated and modular
- Take a shot at winning prizes! We have focused on featured challenges from Google Cloud, StdLib, and Domain.com
System Architecture Diagram:
Keyword Processing Server (Golang)
- Receives keyword queries from HTTP clients
- Fetches relevant news article URLs using the free NewsAPI
- Parses articles' contents using our homegrown article-parsing Cloud Function
- Runs several algorithmic and integrated third-party API bias-measuring functions (mostly Natural Language Processing which gives us metrics that can help us understand the legitimacy, intent, and biases associated with a piece of text)
- Returns article metadata along with relevant metric scores back to the client
- *Caches article results by URL due to the expensive nature of text and ML processing
Keyword Processing Client (ReactJS)
- Landing page style UI with a simple keyword search
- Styled cards where each card contains releavant metadata and bias-metrics for a single article
- Processing results export-to-CSV functionality
Google Cloud Function: Article HTML-to-Text Parsing (Python)
- Receives a list of URLs from HTTP clients
- Uses the Newspaper3k library to extract body text from an article given its URL
- Returns a populated map of URL-to-body (text of article) back to the client
Serverless StdLib Function: Analytics-Export Flow (NodeJS)
- Receives raw result data from an HTTP client, which is our web application
- Converts raw data onto a user-friendly CSV file
- A) AutoCode built-in Slack integration that publishes the CSV to Slack
- B) AutoCode custom integration for sending the CSV to a given email
Serverless StdLib Function: Relevant Tweets Search (NodeJS)
- Receives keywords to search for from an HTTP client
- Returns relevant tweets back to the client
Note that our Golang server and React front-end are both hosted on Google App Engine.
Means to Monetization
The website nwfacts.tech is and will remain free whenever it is running. Eventually we could consider adding premium account functionality with access to more computationally expensive machine learning.