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 — it reads much more accurately.
Inventory & unit pricing
Every item's price broken into $/lb, $/oz, $/kg and more. Set a trim loss % to see true yield cost.
▶ 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.
New recipe / portion
Build a recipe from your inventory to see true cost per portion and a suggested menu price at your target margin.
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
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
Ingredients
Measuring a dry good by spoon/cup, or citrus by juice volume? Those costs use average density & juice-yield assumptions — good for planning, not exact. Tune them under Settings → Measurement assumptions.
Or add a Prepared Item as an ingredient (cooked $/lb) ▾
Use a house-prepared cooked item — its yield-adjusted finished cost gets carried into this recipe.
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.
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 shop'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.
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.
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
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.