Learn / Costing
Yield variance in food factories — the 8% you're losing without noticing
Yield variance is the gap between what the recipe says you should produce from a given input and what you actually produce. In F&B factories it averages 3-8% of theoretical output — and on revenue of SAR 65M that's SAR 1.9-5.2M of margin to track. Here's the formula, the typical causes, and what AION captures today vs roadmap.
A juice factory in Riyadh schedules a production run for 10,000 bottles of mango juice 1L. The recipe says they need 1,300 kg of mango concentrate, 950 kg of sugar, 5 kg of citric acid, 0.5 kg of vitamin C, and roughly 8,500 L of treated water. They issue exactly those inputs to the bulk mix tank.
End of shift: 9,720 bottles in the finished-goods warehouse.
Where did the missing 280 bottles go?
That’s yield variance. And in an F&B factory running 5,000–10,000 bottle batches multiple times a day, it adds up faster than most CFOs realise.
What yield variance actually measures
Yield variance is the gap between expected and actual output given a set of inputs. Formula:
yieldVariance = (actualOutput − standardOutputForActualInputs) × standardCostPerUnit
In the example above:
- Inputs were the recipe quantities (1,300 kg concentrate, etc.)
- Standard output for those inputs = 10,000 bottles
- Actual output = 9,720 bottles
- Yield variance = (9,720 − 10,000) × SAR 10.5 = −SAR 2,940
That’s SAR 2,940 of value that went in as raw material, got charged as labour and overhead, and came out as nothing. Possibly spillage. Possibly bottle breakage. Possibly QA-rejected bottles. Possibly evaporation. Possibly all of the above.
For a single job, SAR 2,940 might not move the needle. For a factory running 60 jobs a month at similar losses, that’s SAR 176,400 — and they probably don’t see it as a line item anywhere on their financials.
Where yield loss actually happens
Five main culprits in F&B:
1. Bulk mix tank residue. The bottom of the tank holds 50–200L that doesn’t get pumped to the bottling line. Cleaning catches it, but it’s gone from the production count.
2. Filling line losses. Imperfect alignment, partial fills, foaming, spray-back. Modern filling lines run at 1–2% loss; older lines can be 3–5%.
3. Bottle breakage and rejects. PET bottles crack at high speeds. QA rejects bottles with under-fill, wrong cap torque, or label defects. Typically 0.5–1.5% of throughput.
4. Sampling and testing. Every batch loses a few litres to QA samples and microbiological testing. Small per batch, real over a month.
5. Recipe optimism. The recipe assumes ideal conditions. Real production rarely matches them. Sugar dissolution lag, temperature variance, concentrate viscosity changes — small inefficiencies compound.
How AION captures it today
Every discrete job order in the manufacturing module tracks three fields:
_standardYield: the recipe-derived expected output for the inputs issued_actualYield: the actual completed output reported by the operator_yieldVariance: the difference, computed automatically
The data is queryable per job. The variance report shows it alongside material usage, labour efficiency, and overhead variance.
What’s not yet a primary feature:
- A standalone yield variance GL posting. Today, the operational effect of yield loss shows up as material usage variance (because you consumed input quantity that exceeded what the actual output required). The GL journal looks identical. Separating “we used too much concentrate” (price variance, supplier issue, recipe drift) from “we got less output” (line inefficiency, breakage) requires a dedicated yield variance posting that hasn’t been built yet.
- A yield variance summary report by product line or shift. The data is captured per job; the rolled-up report by SKU/shift/operator that lets you see trends is on the roadmap.
So today, your yield problem will surface as a chronic material usage variance pattern. That’s actionable, but coarser than ideal. The roadmap items would give you finer signal.
Worked example — Oasis Fresh job order
Job order JO-2026-00123 for 10,000 bottles of Oasis Mango Juice 1L.
Recipe (for 10,000 bottles):
- 1,300 kg mango concentrate
- 950 kg sugar
- 5 kg citric acid
- 0.5 kg vitamin C
- 8,500 L treated water
- 10,000 PET bottles
- 10,000 caps
- 10,000 labels
- ~833 carton allocations
Inputs issued: exactly the recipe quantities.
Actual completion reported by the bottling line operator: 9,720 bottles acceptable + 180 bottles scrapped (under-fill / cap defect / label issue) = 9,900 bottles produced, 9,720 in inventory. 100 bottles missing (line loss + sampling + tank residue equivalent).
Yield variance:
- Standard output: 10,000 bottles
- Actual output: 9,720 bottles (in inventory; scrap goes to a separate scrap account)
- Variance: (9,720 − 10,000) × SAR 10.5 standard cost = −SAR 2,940
This SAR 2,940 needs to be explained. With the data AION captures today, you can:
- See the variance on the per-job report
- Compare to other recent jobs of the same SKU — is this normal or a spike?
- Filter by shift and operator — is one shift consistently worse?
- Drill into the WIP transactions for the job — was there an unusually large scrap entry?
You can’t yet:
- Get a one-click summary showing yield variance by SKU for the month
- Auto-post a separate yield variance journal (it folds into material usage variance posting)
What CFOs do with yield data — even today
A CFO who’s serious about yield runs three queries a week:
Query 1: Worst-performing jobs in the past 7 days. Sort by variance descending. The outliers tell you which lines, shifts, or operators are consistently losing material.
Query 2: Yield trend by SKU. Pull yield variance per job over 90 days for the top 3 SKUs by volume. Plot it. A flat line = healthy process. An upward trending variance = something’s drifting and needs investigation.
Query 3: Recipe vs reality. For each major FG, compare the recipe’s standard yield to the rolling 30-day average actual yield. If actual is consistently below standard, the recipe is wrong — the standard needs to be updated to reflect reality, and the gap becomes the genuine “room for improvement” target.
None of these need the roadmap features. They’re all doable today with the data the manufacturing module captures.
Common pitfalls
Treating yield variance as a fixed line item. Some factories accept “3% scrap is normal” and stop monitoring once they’re in that range. Yield drift is gradual — it goes from 3% to 4% to 5% over six months without any single moment of crisis. By the time someone notices, the loss is structural. Monitor the rate of change, not the absolute level.
Confusing yield variance with material price variance. If concentrate price moved up, your AP cost rises — that’s a price issue, not yield. Yield is purely about output-per-input. Separating these matters for assigning fixes (procurement vs operations).
Optimistic recipe standards. If the recipe was set by R&D assuming lab conditions, real plant conditions will always under-yield. The recipe should be calibrated to actual plant performance over a 90-day window. Recipes are not engineering ideals; they’re operational targets.
Roadmap items worth tracking
For the costing-focused CFO, two AION roadmap items will matter when they land:
- Standalone yield variance GL posting. Separates yield loss from material usage loss in the journals. Makes month-end reporting cleaner.
- Yield summary reports by product line / shift / operator. Reduces the “I need to query per job” overhead. Gives the manufacturing director a dashboard view.
Both are on the costing audit’s “not yet primary feature” list. They’re acknowledged scope, not surprises.
For now, the per-job yield data is captured accurately. The reports just take more clicks to assemble.
Next in this series: Material usage variance — spotting recipe drift, which is closely related to yield variance and the variance that AION does post automatically.
See this in the Oasis Fresh demo
Log into the Oasis Fresh (Saudi) BG as cfo.saudi
Common questions
What's the difference between material usage variance and yield variance?
Material usage variance asks: 'did we use more raw material than the recipe said for the output we got?' Yield variance asks: 'did we get less output than the recipe said for the input we used?' Same underlying loss, viewed from two angles. AION posts material usage variance automatically. Yield variance is captured per job in the data (standardYield, actualYield, yieldVariance fields) but standalone yield variance reporting is on the roadmap, not yet a primary feature.
What yield variance is normal in F&B?
Juice and dairy factories typically run 2-5% yield loss on the bottling line (spillage, partial fills, line setup, broken bottles, QA rejects). Bulk mix yield loss adds another 1-3%. Cumulative 3-8% is common. Best-in-class factories with strong process discipline run 1.5-3%.
How does AION capture yield data today?
Every discrete job order tracks standardYield (recipe-implied output), actualYield (what was actually completed), and yieldVariance (the difference). The data is on the DiscreteJob entity in the manufacturing module. You can query it per job. What's not yet built is a dedicated yield variance posting that creates GL journals automatically, or a yield variance summary report by product line.