Built over a weekend at the Encode Hub Vibe Coding Hackathon in Shoreditch.
Overview
Auditor gives you a second opinion on everyday A-or-B money decisions. You ask something like “Should I overpay my mortgage or put the money into savings?”, and it breaks the question into a few checkable sub-questions, then has two different AI models answer each one independently. It lays both sides side by side, and every claim is backed by a link to a trusted source you can check yourself.
It never picks a winner. The decision stays with you. The point isn’t to trust the models, it’s to trust the sources the debate puts in front of you.

The full setup can be found on my github
What it’s for
Everyday A-or-B money questions that have checkable facts and two fair sides:
- Should I overpay my mortgage or put the money into savings?
- Is a cash ISA better than an easy-access savings account?
- Should I pay off my credit card or build an emergency fund first?
It deliberately turns away questions with nothing checkable behind them. “Will house prices crash next year?” gets rejected, because there’s no source you could hold a prediction against. This is guidance, not regulated financial advice.

How it works
A single API route runs the question through four steps:
POST /api/case
{ "topic": "Should I overpay my mortgage or put the money into savings?" }
- Triage decides whether the question is debatable, unknowable, or needs a professional. Only debatable ones go further.
- Agenda breaks the topic into three to five checkable sub-questions. It only writes the questions, it never answers them.
- Two debaters (different models, run in parallel, neither seeing the other) answer every sub-question with a short view and a confidence level.
- Formatter pairs the two answers up by question and assembles the response. It computes no winner and no agreement score; that judgement is left to you.
Sources can’t be faked
The obvious failure mode for something like this is hallucinated or dead links, a model confidently citing a URL that doesn’t exist or doesn’t say what it claims. Auditor makes that impossible by design.
The debaters never write URLs. They cite by id from a hand-curated catalogue of pre-verified pages. The code resolves those ids to real links and silently drops anything it doesn’t recognise, so a made-up citation simply can’t reach the user. Every source that does is from one of seven trusted UK hosts: MoneyHelper, GOV.UK, Ofgem, the FCA register, Citizens Advice, MoneySavingExpert, and the Bank of England.
That constraint is the whole trust model. You don’t have to trust the models’ opinions; you check the sources they’re forced to stand on.
Tech
Next.js (App Router) with TypeScript and Tailwind. Both models are reached through OpenRouter using the Vercel AI SDK, with every model response validated against a Zod schema so malformed output is caught rather than rendered. The two debater models live in one config file, so they can be swapped without touching any logic. Deployed on Vercel, with the demo question pre-run and cached so it returns instantly.
The result always comes back with one field left blank: the final verdict. Auditor doesn’t fill it in. You do.