ADR-0003: Confidence gate
- Status: Accepted
- Date: 2026-08-11
- Deciders: maintainers
- Related: ADR-0005
Context
A parse can be confident (merchant extracted → HIGH), partial (amount only,
no merchant → PARTIAL), or unusable. The app must decide where each result
goes: transactions vs the review queue.
Decision
Candidates that score NONE confidence go to the unmatched queue for manual review instead of becoming transactions.
Consequences
- Currently unreachable:
ParserEngine.matchonly returns a candidate when an amount parsed, and producesHIGH/PARTIALonly.NONEis a hook for a stricter future parser (e.g. an amount without a matching rule structure). Confidence.PARTIALtransactions are still inserted (they carry a real amount); only the merchant is missing.- Golden fixtures enforce ≥90% of parseable fixtures are
HIGH(ParseGoldenTest) to keep partial parses rare.
Alternatives considered
- Inserting everything and letting users clean up — rejected: the review queue is the intended triage surface and NONE means we cannot trust the row at all.