inspiration

yesterday i realized i keep repeating things an AI told me , stuff i never actually checked. and the scary part is a wrong answer looks exactly the same as a right one in a chat window :)) so i built the thing i needed: not an answer to trust, but an argument i can argue with.

what it does

you paste one claim, cairn reads three source families live (wikipedia, news, research), and gives you a dossier , Supported, Contradicted, Mixed, or honestly "not enough evidence". every source carries the exact sentence that decided its stance, every answer sentence has a [n] you can click to jump to the evidence. no key, no account. in simple terms, it's a receipt for a fact.

how i built it

node and express backend, react and vite frontend, one process. the pipeline is understand → retrieve → read → weigh → compose, all deterministic , an optional LLM may rewrite the prose but it can't touch the verdict. 55 tests, an SSRF guard, rate limits. the fun part was the stance classifier: it has to require the claim's own predicate in the same sentence, or pest control text about a carrot fly votes "support" :))

challenges

the engine kept agreeing with myths using quotes that refuted them , it affirmed einstein-failed math with a passage saying he excelled at it. of course, one fix wasn't enough: reporting frames ("conspiracy theories claim...") had to go neutral, adversative clauses ("failed X, but excelled at Y") had to flip to refute. took a while, but now Mixed and "not enough evidence" are the features i'm proudest of, not fallbacks.

Built With

  • agent
  • ai
  • demo
Share this project:

Updates

Submission history