From caa38dcd0b43051b509ec2bbfa7efffc76171629 Mon Sep 17 00:00:00 2001 From: grabowski Date: Thu, 6 Aug 2026 12:52:14 +0700 Subject: [PATCH] Rebuild the operating roll-up and labour cost from components Both were flagged in the review and deferred; fixing them properly changes what the model says. Labour - The 0.23-0.40 USD/record line implied 44,000-63,000 THB per head per month, far above northern Thai production rates. - Rebuilt from headcount and wages: 13-19 direct production staff (operators, galvanics, QC, maintenance) at loaded northern Thai rates gives 3.7M-5.4M THB/yr, or 0.08-0.16 USD per record. Build-up shown. - Mastering and cutting engineers excluded as title-services labour; admin and sales moved to overheads where they belong. - Stamper amortisation widened to 0.03-0.12 to match the in-house marginal cost assumed elsewhere on the page. - Direct cost total is now 1.30-2.58 USD (43-85 THB). Operating roll-up - The old EBITDA and operating-profit figures did not reconcile with their own components and showed no loss case anywhere. Replaced with a three-scenario table built from the components, each column internally consistent, with cash overheads and depreciation separated. - The adverse case is EBITDA-positive but does NOT cover depreciation: operating profit -0.32M USD at 1.0M records on the low price and high cost. The previous figures quoted 0.6-1.2M and hid this entirely. Utilisation and price realisation decide solvency, not just upside. - The favourable case is not credible and that is a finding about the cost table rather than the business: 69% EBITDA margin against industry norms of 15-25%, and 47% even at the centre. The direct cost table counts only per-record consumables and direct payroll. Named what is missing (indirect labour, scrap above the reject allowance, water and effluent, inbound freight, inventory carrying, sales commission) and marked the adverse column as the honest one until those lines exist. - Payback restated per scenario: never / 2.3-4.4 yr / 1.0-1.8 yr. The old "5 to 8 years" came from the pre-correction margin. - FX sensitivity and the utilisation bullet updated to match. The table is a sensitivity, not a forecast, and now says so. --- docs/finance/revenue-model.md | 120 +++++++++++++++++++++++----------- 1 file changed, 83 insertions(+), 37 deletions(-) diff --git a/docs/finance/revenue-model.md b/docs/finance/revenue-model.md index 06d9df0..4cdbe4c 100644 --- a/docs/finance/revenue-model.md +++ b/docs/finance/revenue-model.md @@ -483,51 +483,96 @@ boutique-heavy mix pushes the title line up and the volume down.) | Jacket (standard) | 0.40 to 0.92 | 13.3 to 30.4 | local carton partners; pass-through-ish | | Shrink wrap | 0.02 to 0.03 | 0.8 to 1.1 | film | | Energy | 0.12 to 0.23 | 3.8 to 7.6 | ~1.5 to 2 kWh blended per record at grid/solar mix | -| Production labor | 0.23 to 0.40 | 7.6 to 13.3 | 15 to 25 staff across shifts at Thai wage levels over 1.0 to 1.5M records | -| Stamper amortization | 0.03 to 0.07 | 1.1 to 2.3 | in-house stamper over 1,000 to 2,000 pressings | +| Production labor | 0.08 to 0.16 | 2.6 to 5.4 | Built up below from 13–19 direct staff at northern Thai rates, over 1.0–1.5M records | +| Stamper amortization | 0.03 to 0.12 | 1.0 to 4.0 | in-house three-generation set at ~60–150 USD marginal cost over 1,000 to 2,000 pressings | | Maintenance, spares, consumables | 0.12 to 0.23 | 3.8 to 7.6 | estimate | | Reject allowance | 0.12 to 0.17 | 3.8 to 5.7 | 5 to 10% reject rate carried by good units | -| **Total direct cost** | **~1.45 to 2.77** | **~48 to 92** | | +| **Total direct cost** | **~1.30 to 2.58** | **~43 to 85** | | + +**Labour build-up.** The previous 0.23–0.40 USD/record implied 44,000 to +63,000 THB per head per month, far above northern Thai production rates. +Rebuilt from headcount and wages, fully loaded at ×1.3 for social +security, overtime, bonus and PPE: + +| Role | Heads | THB/month each, loaded | +|---|---|---| +| Press and finishing operators | 8–12 | ~19,500 | +| Galvanics | 2–3 | ~32,500 | +| QC | 1–2 | ~26,000 | +| Maintenance | 2 | ~32,500 | +| **Direct production payroll** | **13–19** | **~312,000 – 449,000/month** | + +That is 3.7M–5.4M THB/yr (113k–163k USD), or **0.08–0.16 USD per record** +over 1.0–1.5M records. Mastering and cutting engineers are excluded — +they are title-services labour, not per-record — and admin, sales and +logistics sit in overheads below. ## Margin per record - Blended price 3.50–4.60 USD minus direct cost 1.45–2.75 USD gives a - **gross margin of ~1.95 USD per record at the midpoint (~64 THB, ~48%)** -- The spread around that is wide and worth stating rather than hiding in - a range: the adverse corner — low price meeting high cost — leaves - **0.75 USD (21%)**, and the favourable corner **3.15 USD (68%)**. - Neither extreme is likely, but it shows that price realisation and cost - control each move the margin by more than a third on their own -- Overheads on top: admin/sales, insurance, facility running costs, and - depreciation (~350k to 700k USD/yr on the 4.7M to 8.9M full-vision - capex over 10 to 15 years), together roughly 0.45 to 0.80 USD per - record at full volume + **gross margin of ~2.11 USD per record at the midpoint (~70 THB, ~52%)** +- The spread is wide and worth stating rather than hiding in a range: the + adverse corner — low price meeting high cost — leaves **0.92 USD + (26%)**, and the favourable corner **3.30 USD (72%)**. Neither extreme + is likely, but price realisation and cost control each move the margin + by more than a third on their own -Rough operating picture at full capacity: **EBITDA ~0.9 to 1.7M USD/yr -(~30M to 56M THB); operating profit after depreciation ~0.6 to 1.2M -USD/yr (~20M to 40M THB)**, before tax. The BOI CIT exemptions (solar, -automation, and any merit measures) shield a meaningful part of early-year -profits; see [boi.md](../boi.md). +## Operating picture at full capacity -**Both roll-ups predate the margin correction above** and sit at the -conservative end of what it now implies — a midpoint margin of 1.95 USD -over 1.0–1.5M records leaves more than this once overheads come off. They -are deliberately not re-derived here. The inputs they rest on -(utilisation, overhead per record, the blended price itself) are all -unvalidated, so re-running the arithmetic would give the output a -precision the inputs do not have. The whole P&L should be rebuilt when -the model is re-based after market validation, not before. +Built from the components above rather than asserted. Three scenarios, +each internally consistent: adverse pairs low volume with the low price +and high cost, favourable does the opposite, central takes midpoints. +Title-services contribution assumes 60–70% after lacquer blanks, styli +and nickel. Cash overheads (admin, sales, insurance, facility running, +IT, professional fees, marketing) are estimated at **200–450k USD/yr** +and deliberately paired high-to-adverse. Depreciation is the 4.7–8.9M +capex over 10–15 years. -Payback on the full-vision capex at these margins: **roughly 5 to 8 -years at mid assumptions** (the adverse corner, high capex meeting low -profit, stretches past 15 years), materially better if the phased entry -proves the market before the big blocks are bought. +| USD/yr | Adverse | Central | Favourable | +|---|---|---|---| +| Records | 1.0M | 1.25M | 1.5M | +| Blended price | 3.50 | 4.05 | 4.60 | +| Direct cost | 2.58 | 1.94 | 1.30 | +| Contribution per record | 0.92 | 2.11 | 3.30 | +| Pressing contribution | 0.92M | 2.64M | 4.95M | +| Title-services contribution | 0.10M | 0.28M | 0.48M | +| **Total contribution** | **1.02M** | **2.92M** | **5.43M** | +| Cash overheads | 0.45M | 0.33M | 0.20M | +| **EBITDA** | **0.57M** | **2.59M** | **5.23M** | +| Depreciation | 0.89M | 0.55M | 0.31M | +| **Operating profit** | **−0.32M** | **2.04M** | **4.92M** | +| Payback on 4.7–8.9M capex | never | 2.3–4.4 yr | 1.0–1.8 yr | + +Two things this makes visible that the previous figures hid. + +**The adverse case loses money.** At 1.0M records, the low price, the +high cost and the high capex, the plant is EBITDA-positive but does not +cover depreciation. The old roll-up quoted operating profit of 0.6–1.2M +and never showed a loss anywhere. Utilisation and price realisation are +not upside levers here — they decide solvency. + +**The favourable case is not credible, and that is a finding about the +cost table, not the business.** A 69% EBITDA margin is roughly triple +what pressing plants earn; even the central case at 47% is well above +industry norms of 15–25%. The direct cost table almost certainly +understates, because it counts only per-record consumables and direct +payroll. Missing at minimum: indirect production labour (supervision, +planning, warehouse), consumables beyond those listed, scrap and rework +above the reject allowance, water and effluent, inbound freight on +materials, inventory carrying cost, and sales commission. **Treat the +adverse column as the honest one until those lines exist.** + +So this table is a sensitivity, not a forecast. The BOI CIT exemptions +(solar, automation, and any merit measures) shield part of early-year +profits where there are any; see [boi.md](../boi.md). ## What moves the model -- **Utilization is everything**: the cost structure is mostly fixed, so - profit swings almost linearly with volume sold; 60% utilization at - mature fleet size roughly halves operating profit +- **Utilization decides solvency, not just upside**: the cost structure is + mostly fixed, so profit swings almost linearly with volume sold. 60% + utilisation at mature fleet size cuts operating profit by more than + half from the central case, and the adverse column above is already + loss-making at full volume - **Mix**: color/splatter and boutique runs carry 20 to 50% price premiums and suit the semi-automatic line; the title-services line (mastering, cutting, stampers) has software-like margins once the rooms exist @@ -546,10 +591,11 @@ proves the market before the big blocks are bought. - **The currency mismatch is a live exposure.** Revenue is quoted to export customers in USD or EUR while roughly two-thirds of the direct cost base (labor, energy, local cartons, maintenance) is incurred in - THB. A stronger baht compresses margin directly: at the mid case, a 10% - THB appreciation takes roughly 0.10 to 0.15 USD off the gross margin - per record without a single operational change. Worth deciding early - whether to quote regional customers in THB. + THB. A stronger baht compresses margin directly: a 10% THB appreciation + takes roughly 0.09 to 0.17 USD off the gross margin per record without + a single operational change — enough to move the adverse case further + under water. Worth deciding early whether to quote regional customers + in THB. ## Honest caveats