Saboot.
Indian legal documents in plain language · a quote is "verified" only when code finds it in your file
“A legal explainer is only useful if you can trust the quotes. So Saboot can't call a quote verified unless it's actually in your document.”
Language models paraphrase. In legal text a paraphrase that sounds like a quote is dangerous: the clause you think protects you may not say that at all.
Make "verified" a type, not an adjective. A quote is a branded type that only verify() can produce, and verify() only succeeds when server code finds that exact text in the uploaded document. Everything else is labelled as an interpretation.
The choices that mattered, with the reasoning at the time.
- One door to "verified"
Because only verify() can mint the branded type, no code path — including a model output — can display an unchecked quote as verified.
decision · 01 - Scans stay approximate
OCR'd documents can't be matched exactly, so schema guards and Postgres triggers cap them at "approximate" instead of pretending.
decision · 02
Live at saboot.vercel.app with about 4,200 tests across 400 files and a five-tier fallback across Gemini and Gemma 4.
- tests
- ~4,200
- ways to mint "verified"
- 1