AI triage that knows when to stop and ask a human.
Sorthouse classifies email and documents, extracts structured fields with evidence, validates them, and lets a person approve, correct or reject before anything happens. Nothing runs twice, and every decision leaves an audit trail.
Starts an isolated session with a synthetic inbox that is deleted automatically. No account, no real mail.
Evidence for every field
Each extracted value links to the exact span, page or image region it came from. A value without verifiable evidence is marked unsupported, never accepted quietly.
Policy outside the model
An ActionPolicy decides AUTO, REVIEW or BLOCKED from deterministic checks. Model confidence is only one signal and a valid JSON is not proof of correctness.
Safe, idempotent actions
Approval writes a transactional outbox. Retries, duplicate deliveries and timeouts after send are reconciled instead of repeated.
What you can try in two minutes
Open the approval queue, inspect a text PDF invoice, then a photographed one where the OCR confuses 8 and B. Correct the field, approve a complaint reply, then break things on purpose in the Failure Lab: prompt injection, duplicate delivery, concurrent reviewers, a timeout after send.
The evaluation includes 100 held-out emails, 12 adversarial cases and 10 failure fixtures.
Live vs simulated, stated plainly
The public demo runs a deterministic baseline. LLM adapters are pluggable; reported baseline metrics are not LLM results.
| Part | Status | Detail |
|---|---|---|
| Inbox, messages, invoices, photos | Simulated | Synthetic corpus generated for this lab. No real customer data or PII. |
| Classifier and extractor | Simulated / Live | A deterministic heuristic baseline by default. OpenAI, Anthropic and Gemini adapters exist behind the same interfaces and are enabled only by server-side configuration. |
| OCR | Simulated | Photographed invoices ship the OCR words, boxes and confidences an engine would return, including deliberate misreads. |
| Malware scan, mail provider, actions | Simulated | Gates and idempotency behave as in production; effects stay inside the lab. Nothing is sent to third parties. |
| Queue, outbox, locking, audit, policy, validation | Live | Real PostgreSQL state machine, Redis/Horizon jobs, optimistic locking and a real test suite, including parallel-process tests. |