Inspiration

Social media is flooded with viral claims, and it's hard to tell fact from hoax fast. I wanted a simple tool that checks a claim against real fact-checkers, and stays honest when nothing is found, instead of pretending to know.

What it does

Paste a news headline or claim into Verixy. It queries the Google Fact Check Tools API and shows up to 3 matching fact-checks, each with:

  • A normalized badge (Likely False, Likely True, Mixed, or a neutral fallback when the publisher's rating text is too ambiguous to categorize confidently)
  • The publisher name and review date (with a visual cue when a review is over a year old)
  • A link to the original fact-check

If no fact-check exists for the claim, Verixy says so clearly, it never implies the claim is true or false just because nothing was found.

How we built it

  • Brain / planning: Claude, used for scoping, drafting the PRD and technical spec, and auditing decisions before they were built
  • Builder: Cline (VS Code AI agent), writing and running the actual code
  • Backend: Node.js, built-in http module only, zero npm dependencies
  • Frontend: vanilla HTML/CSS/JS, no framework
  • Data source: Google Fact Check Tools API (Claim Search)
  • Rating normalization: ordered keyword matching, ambiguous terms (e.g. "mostly true", "misleading") checked before definite terms (e.g. "true", "false"), with a negation guard so phrases like "not true" don't get mislabeled as true

We followed a structured workflow: scope → PRD → technical spec → build in slices → ship, with each stage reviewed before moving to the next.

Challenges we ran into

  • Honest normalization is harder than it looks. A naive keyword match mislabels ambiguous fact-checker language. We fixed this by checking ambiguous terms first and adding a dedicated neutral fallback category instead of forcing every rating into False/True/Mixed.
  • Negation bugs. Early logic would match "not true" as true, which directly violated the app's core promise of honesty. Caught and fixed before shipping.
  • Long input breaks the API. The Google Fact Check API reliably returns zero results for long pasted paragraphs, even when a real fact-check exists. We addressed this with UI copy asking for a headline, not full article text, rather than silently failing.

Accomplishments that we're proud of

Verixy never fakes confidence. Every uncertain, unmatched, or ambiguous case is shown honestly instead of forced into a false verdict, that honesty is the core design decision the whole app is built around, not an afterthought.

What we learned

We learned how to fix bug if there any bug on this project, we also leran how to make good degisn with good ux, how to fix API if API error/didn't work, and how to increase security in this project.

What's next for Verixy

  • Multi-language rating normalization (results currently come back in many languages with inconsistent free-text ratings)
  • URL/article input with text extraction, instead of manual paste only
  • Cross-referencing multiple fact-check sources per claim

Built With

Share this project:

Updates

Submission history