TruthEngine: We Built a Fact-Checker in 48 Hours at a Hackathon
59% of Italians see disinformation as a serious problem on social media. At the Rome AI Tech Week Hackathon by Codemotion, our team Maroon 3 — Michele Benigni, Elmer Norberto Rodríguez Garrido, and I — built a system that does not just flag misinformation. It explains why.
24 hrs
Built In
5
Verdict Types
~40
Seeded Domains
3
Team
The challenge
March 28–29, Rome AI Tech Week. Codemotion and Rheinmetall put up the challenge: build an advanced fact-checking system. The room was full of teams with laptops and ambition. We had 24 hours, three people, and a problem worth solving — how do you take a claim someone reads online and tell them, with evidence, whether it is true?

What TruthEngine does
You give it text, a URL, or a document — PDF, DOCX, plain text — and it tells you what is true and what is not. But the important part is how. TruthEngine does not just say "false." It extracts every verifiable claim from the input, searches the web for supporting and contradicting evidence, evaluates the credibility of each source, and returns a structured verdict: True, False, Partially True, Misleading, or Unverifiable. Every verdict comes with confidence scores and the actual sources that informed it. No black boxes.
The pipeline under the hood
The architecture is a six-stage pipeline. The DocFetcher and URLFetcher handle input parsing — BeautifulSoup for HTML, pdfplumber for PDFs, python-docx for Word documents. The ClaimExtractor uses LLaMA 3.3-70B via Groq to pull out discrete factual claims from the input text. The SearchAgent queries Tavily's search API to find relevant evidence for each claim. The SourceEvaluator scores the credibility of every source. The VerdictGenerator synthesises everything into a final judgement. And the Orchestrator ties it all together into a single clean flow.
The credibility engine — the part I am proudest of
Most fact-checkers treat all sources equally. We did not. We built a source credibility engine that starts with manually-assigned trust scores for about 40 major news domains — a baseline of editorial standards. But then it learns. The system uses weighted Bayesian inference to update trust scores as more evidence flows through. It applies exponential time-decay with a 90-day half-life, so recent reliability matters more than a domain's reputation from two years ago. And it uses selective weighting: credible sources get reinforced gradually, but suspicious sources get penalised more heavily. The asymmetry is intentional — trust is earned slowly and lost fast.
What we learned in 24 hours
Building under hackathon pressure forces clarity. You cannot over-engineer. You cannot argue about architecture for three hours. You build the thing that works and you build it now. Michele handled the frontend and integration, Elmer worked on the search and evidence retrieval, and I built the credibility scoring and claim extraction pipeline. The constraint of time made us better — every line of code had to justify its existence. TruthEngine is not a finished product. It is a proof of concept that shows fact-checking can be automated, explainable, and source-aware — and that three people with the right tools can build it in a day.