From eac45eb234b59ebd96f8af48535a8b51c0baff4c Mon Sep 17 00:00:00 2001
From: grabowski
Date: Sat, 10 Oct 2026 20:12:26 +0700
Subject: [PATCH] Lacquer blank 70 EUR and cutting engineer 50,000 THB a month
Team figures, October 2026:
- revenue-model.md: a lacquer blank costs about 70 EUR, one per side, so
~160 USD a two-sided title before recuts; a cutting engineer costs about
50,000 THB a month;
- fleet calculator: the lacquer assumption is now in EUR (70, one per
side, converted at 1.155 USD per EUR; styli and recuts not included)
and the cutting engineer 50,000 THB a month, both marked as team
figures instead of estimates. At the defaults lacquers come to ~54k USD
a year and direct cost to 1.88 USD a record (was 1.86).
---
docs/finance/revenue-model.md | 6 ++++--
docs/fleet-calculator.html | 12 ++++++------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/docs/finance/revenue-model.md b/docs/finance/revenue-model.md
index e319b6e..408d991 100644
--- a/docs/finance/revenue-model.md
+++ b/docs/finance/revenue-model.md
@@ -509,7 +509,8 @@ security, overtime, bonus and PPE:
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.
+logistics sit in overheads below. A cutting engineer costs about
+**50,000 THB a month** (team figure, October 2026).
## Margin per record
@@ -530,7 +531,8 @@ from the fleet and these three cases as presets. 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,
+and nickel; a lacquer blank costs about **70 EUR** (team figure, October
+2026), one per side, so ~160 USD a two-sided title before recuts. 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.
diff --git a/docs/fleet-calculator.html b/docs/fleet-calculator.html
index c7def95..9f5445a 100644
--- a/docs/fleet-calculator.html
+++ b/docs/fleet-calculator.html
@@ -331,9 +331,9 @@ document.documentElement.setAttribute("data-theme",t);})();
Duplex system or Classic added or removed), the electricity tariff and PV from scale.md, the biomass
heat price from biomass.md. Electricity and steam follow the fleet: machines, chiller and compressors
at the hours run, steam from the presses' running time, plus an estimated base load for the rest of
- the plant. Lacquer blanks, shipping cartons and the cutting engineer's wage have no figure on file
- and are estimates. Missing as the revenue model lists: indirect labour, freight, inventory, effluent,
- commission, extra galvanics units' capex.
+ the plant. Lacquer blanks (70 EUR each) and the cutting engineer (50,000 THB a month) are team
+ figures; shipping cartons have no figure on file and are an estimate. Missing as the revenue model
+ lists: indirect labour, freight, inventory, effluent, commission, styli, extra galvanics units' capex.
Not scaled here: admin, sales and logistics (in the overheads line); cover for leave
and sickness.
Sources in the CNX Vinyl planning repository: equipment/pressing-line.md,
@@ -438,7 +438,7 @@ grp("Materials and packaging", [
["maintCost", "Maintenance, spares, consumables, a record", 0.17, "USD", "doc", "revenue-model.md: 0.12 to 0.23"],
]);
grp("Stamper making", [
- ["lacquerCost", "Lacquer blank and stylus wear, a side", 45, "USD", "est", "Estimate; no lacquer or stylus quote on file"],
+ ["lacquerCost", "Lacquer blank, one per side", 70, "EUR", "user", "Team figure, October 2026 (revenue-model.md); styli not included"],
["chemPart", "Nickel, silver, chemistry, an electroformed part", 25, "USD", "doc", "revenue-model.md: 60 to 150 USD marginal per three-generation set, so 20 to 50 a part"],
]);
grp("Energy", [
@@ -455,7 +455,7 @@ grp("Labour (THB a month a head, loaded ×1.3)", [
["wageQC", "QC", 26000, "THB", "doc", "revenue-model.md"],
["wageMaint", "Maintenance", 32500, "THB", "doc", "revenue-model.md"],
["wageGalv", "Galvanics", 32500, "THB", "doc", "revenue-model.md"],
- ["wageCut", "Cutting engineer", 45000, "THB", "est", "Estimate; the revenue model counts mastering as title-services labour"],
+ ["wageCut", "Cutting engineer", 50000, "THB", "user", "Team figure, October 2026 (revenue-model.md), taken as the full monthly cost"],
["qcPerShift", "QC inspectors per shift", 1, "", "est", "Estimate; scale.md: 1 to 2 QC"],
["pressPerTech", "Presses per maintenance technician (at least 2)", 8, "", "est", "Estimate; scale.md: 2 in maintenance for the start fleet"],
]);
@@ -596,7 +596,7 @@ function econ(r, b) {
add("pack", "Shrink wrap", X * A.shrinkCost, "");
add("pack", "Shipping cartons and pallets", X * A.cartonCost, "estimate");
add("maint", "Maintenance, spares, consumables", X * A.maintCost, "");
- add("metal", "Lacquer blanks and styli", r.titles * 2 * A.lacquerCost, `${f0(r.titles * 2)} lacquer sides`);
+ add("metal", "Lacquer blanks", r.titles * 2 * A.lacquerCost * A.usdEur, `${f0(r.titles * 2)} lacquers at ${f0(A.lacquerCost)} EUR; styli and recuts not included`);
add("metal", "Nickel, silver, plating chemistry", r.partsYr * A.chemPart, `${f0(r.partsYr)} electroformed parts`);
const cap = capacityOf(r.D, r.C, b), use = cap > 0 ? Math.min(1, X / cap) : 0;
const runH = b.hoursYr * S.eff / 100 * use; // press running hours a year