Your recipes are prose. Your suppliers write prose. Someone has to type.
The recipe is in a notes app. The delivery note is a photo on somebody’s phone. The ingredient data is on a supplier PDF and the quote is six lines of email. None of it is data yet, and the retyping is exactly why it stays that way: nobody rebuilds forty recipes into a system between two production days.
So BatchDash reads them for you. And because a price nobody verified is worse than no price, every reading lands as a draft you check field by field, beside the original text, before anything is written. The AI does the typing; you keep the judgment.
Forty recipes is an afternoon, and it is reversible
Paste a recipe as you wrote it, shorthand and all, or photograph the page it lives on. Ingredients match to your stock or are created, quantities become percentages, the method arrives as phases and steps, and what could not be read is flagged instead of guessed: “makes about 4 jars” stays flagged until you set the real yield on the bench. The review card shows what was matched and what was invented, and Revert import takes the whole thing back out in one click. That is the migration path from the binder: photograph the page, skim, keep.

The delivery note, read against the order you placed
A delivery arrives with paper. Photograph it or hand over the PDF, and the reading comes back beside the order: what the document says on one side, what you ordered on the other, and a box on every field you might keep. The lids came 380 against the 400 ordered, so the short line is in front of you before you sign for it. A lot code the order never had is offered to the trace. A pallet deposit is held out of the purchase, because a deposit is not an ingredient. Confirm the changes you agree with and stock moves on those, at those prices.

Or a photo of a till receipt, with no order behind it
Plenty of what a small workshop buys never had a purchase order: the cash-and-carry run, the market stall, the thing somebody drove out for on a Tuesday. Hand over the photo and it comes back as a whole purchase. The vendor is matched by name, every printed line points at one of your ingredients, and a pack reads back as what it lands as in your own unit, so “MANGO CASE 4KG” becomes 4000 g at €0.005 a gram. It also checks itself against the printed total, which is why the €2.00 gap reads as the crate deposit rather than as a mystery. Press the button and the purchase exists, priced, in your stock.

Supplier quotes, read into your comparison
In Sourcing, paste the quote email or hand over the PDF, scanned or not, and it comes back as a draft row in the comparison you are already running.
- Price, pack, minimum, lead time, validity and payment terms, each landing in the field the comparison sorts on.
- The supplier’s own wording is kept beside the reading, so a term you argue about in November is still the sentence they wrote in August.
- A foreign currency is left as it was written. Converting it is a decision, and a reading does not get to make decisions.
Ingredient sheets, proposed and checked
The compliance data every ingredient needs, and nobody enjoys keying, arrives as suggestions to review against the supplier sheet:
- Density, so volume recipes bridge to gram-based math correctly.
- Allergens, which flow into declarations and get bolded on labels.
- Nutrition per 100 g, feeding the label’s facts panel.
- Only the fields that are missing or unverified are ever asked for, so a figure you checked yourself is never quietly replaced by a guess.

It stays out of the way
None of this is wired into your workflow uninvited. The AI in BatchDash is a typist you can summon, and the system is complete without it:
- Nothing runs until you hand it something. No background scans, no surprise suggestions on records it was never shown.
- Everything it produces is a draft you check field by field. One click reverts an import, whole.
- Skip it entirely and every screen works the same; you simply type what it would have typed.