Photograph an invoice
Snap or upload a vendor invoice. It'll read the line items so you can drop them straight into inventory.
Already have a picture saved? Pick one from your phone or computer.
If the invoice is sideways, rotate it upright first. If it's curled, creased or cut off at an edge, retake it flat — that's where lines get misread.
Inventory & unit pricing
Every item's price broken into $/lb, $/oz, $/kg and more. Set a loss % — what gets trimmed, peeled or boned away — to see what a usable pound really costs.
▶ Add an item manually
No items yet — scan an invoice or add one above.
Backup — if a save ever fails, export your data so nothing is lost, then import it later.
Build a recipe
Pick your ingredients and YieldSheet works out what a portion actually costs you — then tells you what to charge to hit the margin you want. It stays right on its own: when an invoice price moves, so does this.
Scan a recipe (optional)
Upload a photo or PDF of a recipe — it'll pull the name, servings, and ingredients, then you match each one to your inventory so cost is calculated from real prices, converting units automatically where it can (e.g. a recipe calling for 2oz of something priced by the lb).
Recipe details
Groups this with your other recipes in the list below — Sauces, Sausages, Prepared Foods.
e.g. 8 if this batch fills 8 containers — cost per portion is calculated from this
Enter your real menu/shelf price to see the margin you're actually getting
Optional
Most recipes don't need this. It is only for something you make in batches
and then cook with — a marinara, a dough, a spice blend. Turn it on and other recipes can
call for a cup of it and be priced correctly, updating on their own whenever an ingredient
gets a new invoice price. Say what one batch yields first, so there is a per-unit cost to give.
Ingredients
Calling for a spoon or a cup of something you buy by weight, or for the juice of a lemon? YieldSheet uses a sensible average to bridge the two — close enough to price a dish, not exact enough to bake by. You can adjust those averages in Settings.
Or add something you cooked yourself ▾
Anything from Cooking yields can go straight into a recipe. What gets used is its finished cost — after cooking loss, and after any labor you added.
Recipe log
Every saved recipe. Costs re-calculate from current inventory prices, so these stay current as your invoices come in.
Price trends
Every time you scan an invoice or edit a price, that price is logged with a date. Once an item has two or more prices, its direction shows up here — compared per unit, so a pack-size change doesn't fake a price move.
Spend tracking
Totals estimated from scanned invoices: quantity × unit price for each line, summed by period. Use this to catch runaway spending in a category or vendor — a sharp rise here without a matching price increase usually means you're ordering more, not paying more.
Order guide
Built from what you have actually bought, not from a list anyone typed. Every scanned invoice line is a purchase with a date on it, so YieldSheet can work out what you buy, how often, what is due, and what has quietly changed — without you entering anything.
How to read this. "How often" is the median gap between purchases, not the average — one skipped week over a holiday would drag an average and make a weekly item look fortnightly, and the median ignores it the same way you would. A rhythm is only claimed when the gaps are actually consistent; everything else is listed as occasional and left for you to judge. The purchase count is always shown, so you can see how much evidence sits behind each line. Three purchases is the minimum before YieldSheet will call anything a pattern.
On amounts. How much you order is read from the quantity on each invoice line, and that has only been recorded since the 31 August build — older price points carry a date and a price but no amount. So "you order about four cases every seven days" fills in as you scan, and the volume comparison needs four deliveries of an item before it will say anything. Treating the missing amounts as one case each would have invented a trend on the day the field was added, which is a fact about the software rather than about your buying, so YieldSheet stays quiet instead.
On amounts. How much you order is read from the quantity on each invoice line, and that has only been recorded since the 31 August build — older price points carry a date and a price but no amount. So "you order about four cases every seven days" fills in as you scan, and the volume comparison needs four deliveries of an item before it will say anything. Treating the missing amounts as one case each would have invented a trend on the day the field was added, which is a fact about the software rather than about your buying, so YieldSheet stays quiet instead.
Scanning access
Invoice and recipe scanning runs through YieldSheet's secure service — no API key needed. Paste the access code from your welcome email once; it's stored in this browser only.
What this is: your access code identifies your business's account so scans are counted against your plan. Scanning is included in your subscription — there's no separate AI bill to set up. Keep the code private; if it's ever shared or lost, contact support to reissue it.
Your plan
Email invoices in PRO
Your business's private invoice address. Forward supplier invoices to it, or give it to your reps to send straight in. Each one is read on arrival and waits in Scan Invoice for you to review — the app does not need to be open. With Apply invoices automatically on (below), lines that pass every check save themselves and only the rest wait.
Sign in to see your invoice address.
Set up a forwarding rule once, in whatever email you use, for your vendors only. Every mail system — Gmail, Outlook, Yahoo, iCloud, GoDaddy, Zoho, your own domain's webmail — has the same two pieces: a rule that matches your vendors' sending addresses, and an action that forwards the match to this address. Forward only the senders that bill you, never all of your mail: every email that reaches this address becomes a row in Scan Invoice, and every PDF attached to one is read and counted as a scan, so forwarding everything fills the inbox with noise and spends scans on newsletters.
Some systems ask you to confirm the forwarding address first by emailing it a code. That email shows up in your YieldSheet inbox within a minute — open it there, copy the code, and paste it back where your email asked for it.
Example — Gmail / Google Workspace: Settings → Forwarding and POP/IMAP → Add a forwarding address → paste this address. Confirm the code as above. Then leave the main forwarding setting on Disable forwarding and make a filter instead: search options → From: your vendors' billing addresses (e.g. @cheneybrothers.com OR @sysco.com) → Create filter → Forward it to this address. Add a vendor's domain, or a rep's personal address, to the filter as they start emailing you. To also catch invoices from addresses you have not listed — a new rep, a one-off supplier — add a second filter: Has the words: invoice → forward to this address. Anything that matches but is not an invoice (a customer asking for one, say) just shows up as a row with no attachment and costs nothing.
Example — Outlook / Microsoft 365: Settings → Mail → Rules → Add new rule → condition From (each vendor), or Subject includes “invoice” → action Forward to this address. No confirmation code. If Outlook refuses to forward outside your organisation, an admin turns on external forwarding once in the Microsoft 365 admin center.
PDFs and photos are read; small images such as signature logos are skipped. Each invoice read counts as one scan. An invoice can also be forwarded by hand from any device, any time.
Report a problem
A wrong number, something that didn’t work, a screen that doesn’t make sense. One sentence is enough; we look at every one.
Apply invoices automatically PRO
Certain means all of: matched by the vendor's item number · quantity × price equals the printed line total · same pack as last time · the whole invoice adds up · not an invoice already logged. A price move never blocks it; the alerts panel reports the move. New items, changed packs and anything that fails a check wait for you. Emailed invoices apply on arrival; photographed ones show the certain lines folded up on the review card, one click to save.
Vendor catalogs
Most distributors will hand you your order guide as a spreadsheet — item number, description, pack and size, in full. Load one here and YieldSheet knows what every line on that vendor's invoices means, without waiting to be told item by item. This matters because some vendors' emailed invoices are shortened: Cheney's, for one, drops the unit off the pack ("15 DZN" of eggs arrives as just "15"), and a catalog fills that back in.
What it is used for. A catalog is reference material, not stock — nothing here is added to your inventory and no prices come from it. When an invoice line carries an item number the catalog knows, YieldSheet takes the pack and unit from it instead of guessing, and prices still come from the invoice as they always have.
Keep it fresh. Packs change. The date each catalog was loaded is shown below, and re-importing replaces it.
Keep it fresh. Packs change. The date each catalog was loaded is shown below, and re-importing replaces it.
Cloud sync off
Connect a free Google Firebase database so your phone and computer share the same data. Scan on the phone, hit Sync on the desktop, and it's there. Without this, each device keeps its own separate data.
Setup steps (one time, ~10 min, free, no card)
- Go to console.firebase.google.com and sign in with your Google account.
- Create a project. Name it anything (e.g. yieldsheet). You can turn Google Analytics off — not needed.
- In the left sidebar: Build → Firestore Database → Create database. Pick a location near you. Choose Start in test mode for now.
- Go to the Rules tab in Firestore, replace what's there with the rules below, and click Publish.
- Click the gear icon → Project settings. Under "Your apps" click the web icon (</>), register an app (any nickname, skip hosting).
- You'll see a config block. Copy the projectId and apiKey values into the boxes above.
- Click Generate for a workspace ID, then Save & connect.
- On your phone, enter the same three values.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /workspaces/{ws}/{document=**} {
allow read, write: if true;
}
}
}
Be aware: these rules allow anyone with your Project ID, API key and workspace ID to read or change your data — normal for a small internal tool, but it means your workspace ID acts like a password. Use the generated random one rather than something guessable, and keep the three values private. Proper per-user logins would be the next step if you ever sell this.
Measurement assumptions
When you buy a dry good by weight (a pound of paprika) but use it by volume in a recipe (2 tsp), or buy whole citrus by the piece but call for juice by the cup, YieldSheet converts between the two using reference values. YieldSheet uses USDA-based defaults for common ingredients; substitute your own for more accurate assumptions. Each field is left blank on purpose and shows its default as a faint hint — that default is used until you type your own value.
Dry-good density — grams per cup
Citrus juice yield — ml per average fruit
Cooking yield — % of raw weight left after cooking
YieldSheet uses USDA-based defaults for common ingredients — beef, pork, poultry, lamb, veal, and now fish & seafood. Substitute your own for more accurate assumptions: your oven, temperature, hold time, and species all shift the number. Fields are left blank on purpose — the default (shown faint) is used until you type your own. And once a Prepared Item has two or more logged cooks, YieldSheet uses your measured average instead.
Standard trim — % of the raw weight lost at the bench
The other half of yield: fat, bone, silverskin, peel, tops and cores — everything paid for that never reaches a plate. Each figure is a published foodservice yield and each carries its source, shown on the item itself. Change one here and every item using that standard follows. Grade, season and the hand holding the knife all move these, so if you have run your own yield test, your number is better than the published standard — put it in. Fields are blank on purpose; the published figure (shown faint) applies until you type over it.
How these are used, and their limits. Volume-to-weight and juice-yield figures vary with brand, grind, humidity, packing, ripeness and how a cook scoops or squeezes. YieldSheet applies a single average per ingredient to estimate cost, and real results will differ batch to batch. Treat the resulting costs and margins as planning estimates, not guarantees — verify anything you price a menu or a sale on. YieldSheet and its makers accept no liability for pricing, purchasing or other decisions made from these estimates. Overrides you set here apply shop-wide to every recipe that uses the matched ingredient.
Your data
A ninety-second walk through everything YieldSheet does.
Your data is saved to your account and synced across every device you sign in on. You can download a full backup any time for your own records, or import one you've saved.