← All posts

Draft-first: why AI should never send an invoice on its own

AI order extraction is genuinely useful. It can read a PDF that does not match your template, pull line items from a WhatsApp thread, and infer quantities from a photo of a handwritten list. It can apply substitution rules and flag anomalies faster than a person re-typing from scratch.

It is also probabilistic. Models misread similar SKUs. They hallucinate units. They miss context that lives only in someone's head — "the usual for Windward, but not the rosé this time." An invoice is not probabilistic. Once it exists in QuickBooks, someone owes money. Stock moves. A mistake is a phone call, a credit note, a damaged relationship.

That asymmetry is why Ordlie is draft-first by design. The AI proposes. A human disposes. No order becomes an invoice without explicit approval in the review queue. There is no auto-send policy. There is no setting to bypass review. This is not a limitation we plan to lift later. It is the architecture.

Extraction and commitment are different jobs

Reading an inbound order is a interpretation problem. The system looks at unstructured input and produces structured output: customer, lines, quantities, delivery notes, billing instructions. Confidence varies line by line. Some fields are clear. Others are guesses that deserve a second look.

Creating an invoice is a commitment problem. It says: we agree to fulfil this, at these prices, for this account, on these terms. The cost of being wrong is immediate and concrete — wrong item shipped, wrong price quoted, wrong delivery address, duplicate order billed twice.

Conflating those two jobs is how automation earns distrust. A system that extracts well but commits automatically forces staff to audit after the fact. That is slower and more stressful than reviewing before the fact. Worse, it trains people to assume the software might have already done something irreversible while they were not looking.

What draft-first looks like in practice

Every order that enters Ordlie moves through a fixed state path. It is received from a channel — email, WhatsApp, PDF, photo. It is parsed into a structured candidate. Fulfillment logic runs: availability, substitutions, duplicate checks. The result lands in a mandatory review queue with status pending review.

A staff member sees the extracted lines next to the source material. They approve with one keystroke if it is right. They edit if something is off. They reject if it is not an order at all. Only after approval does the system create a draft in QuickBooks. Rejection is final for that pass — nothing is invoiced, everything is logged.

The review queue is not a training wheels mode for early adopters. It is the product. Speed comes from making review fast — good defaults, learned preferences, clear diffs — not from removing the human gate.

An append-only audit trail

We treat order state as append-only. Nothing is silently mutated or deleted. Every transition — parsed, fulfilled, approved, rejected, invoiced, failed — is an event in an audit log tied to the organisation, the order, and the actor when a human is involved.

That matters for operations and for trust. When a buyer calls to dispute a line, staff can see what the inbound message said, what the model extracted, what rules fired, who approved, and what went to accounting. Replay is how we regression-test changes to extraction logic. It is also how a distributor explains a decision to their own team without guessing.

Auto-send would break that contract. If an invoice could leave without a named approval event, the trail has a hole. You cannot reconstruct responsibility. You cannot improve the model against labelled corrections because the correction happened after money moved.

Why we will not add an auto-send toggle

We get asked whether high-confidence orders could skip review. The honest answer is that confidence scores are not calibrated to your business risk. A model can be very sure about the wrong SKU that differs by one word in the catalog. A duplicate detection heuristic can miss a subtle repeat. Your tolerance for error on a small account is not the same as on your largest hotel.

A toggle would also split behaviour across tenants in ways that are hard to support and easy to misconfigure. The distributor who turns it on for speed is the same one whose buyer notices a wrong delivery first. We would rather invest in making review take seconds than in giving anyone a rope to bypass it.

Draft-first is a product promise: Ordlie will never send an invoice on its own. The AI drafts. Your team decides. QuickBooks gets the clean version after a person says yes.

A considered engineering position, not a missing feature

Some vendors treat human review as friction to eliminate once the model is good enough. We treat it as the control surface where distributor expertise lives — the substitution that is not in the catalog, the delivery exception from last week, the judgment that this thread is actually a quote request, not an order.

We are building software that reads messy inbound faster than a person can re-type it. We are not building software that replaces accountability. If that matches how you want to run inbound orders, we would like to talk.