Project Info
This project did not submit a demo video on Devpost.
Inspiration
So much misinformation is being spread on the internet, most of which can quickly be disproven with a quick, researched article.
What it does
Automated Fact Checker takes in any URL to an article or Youtube video along with a key word to specify what type of claims the user wants to see. From this, the program will generate a list of every claim that relates to the specified key word, sources that provide further context of each claim, and a determination of whether the claim is true or false. Users will have the option to post their results, as well as view, like, and comment on other user's posts.
How we built it
We built a Python API using Flask that takes the URL and key word as arguments, and runs all the logic for creating the result with the claims, sources, and determination. This API is hosted on AWS EC2 so that it can be accessed publicly. We built the web interface in Next with JavaScript. It is hosted on Vercel, and connects with our MongoDB schema that stores user and post data.
Challenges we ran into
Trying to create ways to implement our dream while still being realistic for the time constraint was challenging. Integrating the different components we all made without having a long time to discuss made it difficult to seamlessly merge our work. Learning many new technologies, frameworks, and libraries in a short time period was challenging, and let to errors down the line.
Accomplishments we're proud of
We are proud that we were able to make this app (almost) fully functioning. We knew that our goal was ambitious, but we persisted through the endless bugs and challenges that came our way. While the product is not as perfect as we would like it to be, it is still a huge step in the right direction for our goal.
What we learned
We learned how to work on a time crunch. We learned more about realistic expectations and budgeting time to tackle important tasks first.
What's next
We would like to improve the language processing to better identify claims and keywords. Getting the site fully functioning and operational on a public domain would be a huge accomplishment. Making steps towards making the logic more precise in finding sources that relate to the claims could be a huge benefit to users.
This API is built to interact with the "Automated Fact Checker" program.
Includes a Python/Flask API designed to be hosted on an AWS EC2 instance.
It accepts HTTP GET requests to /check with params url & phrase.
This GET request will return a JSON object containing all of the identified claims within the article/Youtube video of the given URL that relate to the given phrase. Each claim will be accompanied by three sources, as well as an assessment of if the sources support the claim. The format is as follows: { {success: true} {claim: "Claim 1", sources: ["Source URL 1", "Source URL 2", "Source URL 3"], rating: "Assessment"} {claim: ... } }
Analysis
View
Metric
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- FlaskIn code
- PythonIn code
- AWSClaimed
- JavaScriptClaimed
- MongoDBClaimed
- Next.jsClaimed
2 of 6 appear in the indexed code. 4 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
5.4 KB
Source files
2
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Tyler-Dunning/fact-checker-api
4 files · 6 KB · @ cebe189
Structure
Application logic
1 file · 25%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python88%
- Markdown12%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 9- beautifulsoup4
- Flask
- Flask-Cors
- google-generativeai
- requests
- spacy
- urllib3
- yake
- youtube-transcript-api
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Article/YouTube URL content extractionVerified
Takes in any URL to an article or YouTube video and extracts its content
Claimed on readmehigh confidenceapp.py:37— get_article_content scrapes article <p>/<article> tags via BeautifulSoupapp.py:23— fetch_youtube_transcript pulls transcript via YouTubeTranscriptApi for youtube.com/youtu.be URLs
Claim extraction from contentVerified
Generates a list of every claim that relates to the specified keyword
Claimed on Devposthigh confidenceapp.py:65— extract_claims_and_keywords uses spaCy sentence segmentation and POS filtering to build claim/keyword pairs
Flask API with GET /check?url=&phrase= endpointVerified
Python API using Flask that takes URL and keyword as arguments via HTTP GET to /check
Claimed on readmehigh confidenceapp.py:119— @app.route('/check') reads request.args 'url' and 'phrase' and returns JSON with success/claims/sources/rating
Keyword/phrase-based claim narrowingVerified
Type in a keyword to narrow content into focused claims
Claimed on Devposthigh confidenceapp.py:70— extract_claims_and_keywords only keeps sentences where topic.lower() appears in sent.text.lower()
Sources per claim (three sources)Verified
Each claim will be accompanied by three sources that provide further context
Claimed on readmehigh confidenceapp.py:88— get_sources_from_claims queries thenewsapi.com with limit=3 and collects up to 3 source URLs per claim
True/false/rating determination for claimsCode-supported
A determination of whether the claim is true or false, with an assessment rating
Claimed on Devpostmedium confidenceapp.py:105— check_claims_by_source calls Gemini asking for True/False/Misleading/Unsure, but only checks sources[i][0] (the first of three sources) rather than all three, and the /check route has no test/demo evidence it was exercised successfully
AWS EC2 hostingClaimed only
API is hosted on AWS EC2 so that it can be accessed publicly
Claimed on Devposthigh confidenceMongoDB user/post data storageClaimed only
Connects with a MongoDB schema that stores user and post data
Claimed on Devposthigh confidenceNext.js web frontendClaimed only
Web interface built in Next with JavaScript, hosted on Vercel
Claimed on Devposthigh confidencePost/view/like/comment on resultsClaimed only
Users can post their results, as well as view, like, and comment on other users' posts
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.