Skip to main content

Review and confirm OCR supplier invoices

OCR intake turns a document or shelf photo into a draft the team can review — it never posts stock or money by itself. A person must confirm the recognised rows before they become evidence. This guide covers the intents, the review step, and the supplier-invoice confirmation flow.

Intents

An OCR intake is created with one intent:

IntentWhat it is for
SUPPLIER_INVOICERecognise products, quantities, and prices from a supplier invoice.
STOCK_COUNTRecognise a physical count from a count sheet or shelf label.
SHELF_PHOTORecognise products from a shelf photo for stock visibility.

Intake status

Every intake has a status: PENDING, CONFIRMED, or REJECTED. Pending intakes need a human decision; confirmed intakes are usable evidence; rejected intakes are discarded with the reason recorded.

Reviewing recognised rows

When an intake is parsed, each row carries:

  • the recognised raw text;
  • the matched product (when the system can map it to a product);
  • quantity, unit price, and total where recognised;
  • a confidence score between 0 and 1.

Review rules:

  • A low-confidence row is a prompt to check the product and quantity manually — never accept it silently.
  • A row that did not match a product must be resolved before confirmation.
  • OCR output is not evidence by itself; the confirmed review is what counts.

Confirming a supplier invoice

For SUPPLIER_INVOICE intents there is an explicit review-to-purchase command:

  1. Open the pending intake and review each recognised row (product, quantity, price, confidence).
  2. Correct any mismatch and attach the supplier.
  3. Confirm the intake — this is the explicit "reviewed and accepted" step that turns the draft into a purchase record.
  4. The intake moves to CONFIRMED; the purchase is linked to the intake so the planner and ledger can reference it.
  5. Reject instead if the document is wrong, duplicated, or not usable — the reason is recorded.

Confirmation is tenant-scoped and safe to retry: the same confirmation request cannot create a second purchase (idempotent handling), and a confirm command on an already-confirmed intake does not double-post.

Good habits

  • Never auto-confirm. The value of OCR is speed, not autonomy — a person reviews every intake before it becomes a purchase.
  • Fix before confirm. Correct quantity, price, and product mapping in the review step, not after posting.
  • Watch confidence. Treat low-confidence rows as needing the most scrutiny.
  • Reject duplicates. A repeated upload of the same supplier invoice should be rejected, not confirmed twice.