AI Engineering · Frontend
LiveNusaVerify
A fact-checker that scores how likely a claim is to be a hoax, and shows the entire reasoning chain behind the number.
- Role
- Engineer — Bank Indonesia hackathon
- Timeline
- 2026
- Status
- Built for the Bank Indonesia hackathon.
- Core stack
- Next.js · TypeScript · LLM
What it is
You give NusaVerify a claim. It searches across sources, weighs what each one is worth, and returns a hoax/validity probability — together with an animated mind-map of how it arrived there.
The problem
A verdict without reasoning is just another authority to trust. For misinformation that spreads precisely because people cannot check it themselves, showing the work matters more than the score does.
How it went
01Built in a hackathon, around one argument
Bank Indonesia's hackathon set the clock; the argument set the design. A fact-checker that returns a verdict and nothing else has not solved misinformation — it has added one more authority you are expected to take on faith, aimed at exactly the people who are least able to check things for themselves.
So the reasoning chain, not the score, became the product. The number is a summary of the work; the work is the part you are allowed to disagree with.
A verdict without reasoning is just another authority to trust.
02Designing the output changed the backend
The mind-map was supposed to be presentation. Once it had to be real and interactive, every scoring step had to become an addressable object with a source, a weight and a contribution — not a sentence buried in a paragraph of model prose.
That constraint improved the system. Sources are scored separately and combined afterwards, so when two of them disagree the disagreement stays visible instead of being averaged into a confident, wrong answer.
Architecture
The decisions
Weighted-average validation across sources, not a single model judgment
One model asked whether something is true is confidently wrong in exactly the cases that matter. Scoring each source separately and combining them afterwards keeps disagreement visible instead of collapsing it into one answer.
Trade-off The weights are a judgement call, and a wrong weight is harder to notice than a wrong answer.
The reasoning chain rendered as an interactive mind-map
The chain is the product. A user who can see which source moved the number can disagree with the verdict for a specific reason instead of dismissing it wholesale.
Trade-off Every intermediate step has to be emitted as structured data rather than prose, which constrains how the model is allowed to answer.
Next.js end to end, deployed on Vercel
A hackathon budget is measured in hours. One framework, one deploy target, no infrastructure to argue with.
Trade-off Retrieval runs inside the same app that renders it, which is fine at demo scale and would not stay fine.
Where it landed
- Live at nusaverify-web.vercel.app.
- The full reasoning chain is inspectable — every source and its contribution to the score.
In hindsight
Building the explanation surface first changed the backend. Once the mind-map had to be real, every scoring step had to become an addressable object — a better architecture than the one I would have written if the output had only ever been a number.
Built with
- Next.js
- TypeScript
- LLM
- Information retrieval
- Vercel
Next case study
Optimizing Robot Tutor Strategies
When should a robot tutor teach, rest, or push harder? Formalised as a 1,440-state Markov Decision Process and solved with deep reinforcement learning.