Start with the PO.
Bring in a purchase order document. The first version takes PDF and image uploads, with email intake on the roadmap.
HOW IT WORKS
Not “AI solves it”. A sequence of bounded steps, each with something to prove.
One incoming purchase order becomes a prepared sales-order draft through four stages: read the document, extract what it states, match it to your catalogue, then let validation decide whether a person needs to look before anyone approves it.
Compare this with manual rekeyingTHE FOUR STEPS
The same three names appear in the review screen itself,
so the documentation matches the software you would be looking at.
Bring in a purchase order document. The first version takes PDF and image uploads, with email intake on the roadmap.
Extract the order details, suggest catalogue matches and flag what needs a closer look before anyone commits to it.
Check the source beside each value, correct anything wrong, and approve the exact revision before it exports.
STEP BY STEP IN DETAIL
A number on a review screen is only useful if you can find out where it came from within two seconds.
An uploaded document: PDF, PNG or JPEG. A text-bearing PDF is read page by page into stored text artifacts. A scan or photograph goes through optical recognition first. Both end up as immutable artifacts that later stages cite, which means the words a reviewer sees are always traceable back to bytes that were actually received. Reading orders directly from a mailbox is planned but not built yet — email intake stays labelled roadmap until it genuinely exists.
Both, in different jobs. Recognition turns pixels into candidate text; extraction decides which parts of that text are order facts and which line each fact belongs to. The pipeline prefers deterministic reading wherever page structure already answers the question, and spends model effort where layout is messy, labels differ between customers, or a table’s columns do not line up cleanly. That keeps cost down and makes behaviour predictable instead of mysterious.
Each accepted value is shown beside its source highlight: the page number plus character offsets into that page’s text artifact. Reviewing an amount becomes “open page 2, look at this span” rather than re-reading the whole PO hunting for a discrepancy. Facts with no defensible source stay empty and carry an issue code. Printed values on the customer’s document and values derived by arithmetic are kept separately, so a mismatch between your total and their printed total surfaces as a finding instead of being quietly smoothed over.
The run stops and parks. A blurred scan, a cropped footer or recognition too unreliable to defend does not get filled in with plausible guesses; blocking issues explain which facts could not be established. Some teams dislike that because they would prefer momentum. The alternative — inventing quantities, SKUs or prices that then travel into picking and invoicing — costs considerably more than one extra look at a bad scan.
In order of trustworthiness: an exact SKU you publish, then an alias scoped to that specific customer (customers routinely use their own item codes), then a normalised identifier comparison. When two products remain equally plausible, both candidates are listed with alternatives and the method used is reported — the choice stays human. Quantity gets converted only through a conversion rule published in your catalogue, never inferred from how a description reads.
The line carries an explicit unmatched flag and comes to review with its extracted wording preserved as written. Unmatched lines are ordinary events, not edge cases: customers add items, discontinue codes and typo part numbers constantly. Reporting them plainly keeps a small correction visible while it is still cheap to fix. See who this suits for the industries where unmatched lines appear most often.
THE HUMAN APPROVAL WORKFLOW
A reviewer’s job here is judgement, not transcription — which is the point of automating the groundwork.
Deterministic checks run against the draft built from that document: required fields present, quantities carrying units, arithmetic consistent within each line and in totals, catalogue references resolvable, currency valid. Findings get typed codes, and some of them block approval by default rather than merely warning.
The review screen offers corrections, not overrides. A patch must name a field it is permitted to correct, hold a value valid for that field, and cite text produced from this very document. Attempts to edit verdicts directly — clearing a blocker flag, rewriting findings, adjusting computed totals — are refused. The issue disappears because validation no longer reports it, not because someone said to ignore it.
Approval binds to one exact revision plus its content hash, recorded for an authorised reviewer with no unresolved blockers. Approving does not export. Exporting is a separate deliberate action on that approved revision only, producing CSV or JSON. Save a correction later and you create a new revision; any live approval attached to the older one stops standing. It feels rigid until somebody edits a signed-off order and nobody can prove which version went out.
Roles are separated: uploading documents, reviewing and correcting them, administering catalogue and policy. Data belongs to one tenant and separation is enforced in the database rather than by trusting application code alone. Catalogue versions and policy versions are immutable snapshots pinned per run, so a decision made last month can be replayed against exactly the rules that applied then, with an audit trail naming who changed what and why.
FAQ
No. Matching only proposes lines drawn from your published catalogue. If a line on a purchase order cannot be resolved to a product you offer, it stays unresolved and flagged for review instead of becoming an invented item. Building or editing the catalogue itself is a human job.
A pointer into the stored text of the page it came from: which page, which artifact, and the character offsets within it. A reviewer can open that span in the original document and compare. Where no usable source span exists, the fact is left missing with an issue code rather than filled in.
Through conversion rules you publish. A carton converts to a count of eaches only if your catalogue states that rule; otherwise the quantity's unit stays unmatched and the line comes to review. Guessing pack size from wording that looks similar is one of the things this pipeline refuses to do — see the packaging-supplier section for why that matters more often than people expect.
Both outcomes are normal. When extraction and matching produce a complete, consistent draft, validation clears blocking issues and the run moves to awaiting approval. When facts are missing, ambiguous or contradictory, the run parks with reasons attached so a reviewer knows exactly what to look at. Parking is not treated as failure; silently guessing would be.
No, and that separation is deliberate. Model output proposes values; application code validates them against fixed rules before anything counts as accepted. Confidence reported by a model never turns into acceptance on its own, and no check can be overridden by saying the document looked obvious.
Repeats are recognised rather than duplicated: intake replays idempotently, and processing attempts carry fencing so a stale or duplicate attempt cannot overwrite newer work. Approved and exported results are never overwritten — a new attempt produces a new run you can compare against the old one. That matters most when customers resend orders after "corrections", which is where manual handling usually goes wrong.
NEXT STEP
There is no signup form yet.
Talk to DevCraft about early access before deciding anything.