Skip to content

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.match only returns a candidate when an amount parsed, and produces HIGH/PARTIAL only. NONE is a hook for a stricter future parser (e.g. an amount without a matching rule structure).
  • Confidence.PARTIAL transactions 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.