Lacquer blank 70 EUR and cutting engineer 50,000 THB a month
Deploy test site / deploy (push) Successful in 39s

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).
This commit is contained in:
grabowski committed 2026-10-10 20:12:26 +07:00
1 parent ce1d71e0b5
commit eac45eb234
2 files changed
+10 -8

No files matched your search

+4 -2
View File
@@ -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** 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 — over 1.0–1.5M records. Mastering and cutting engineers are excluded —
they are title-services labour, not per-record, and admin, sales and 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 ## 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 each internally consistent: adverse pairs low volume with the low price
and high cost, favourable does the opposite, central takes midpoints. and high cost, favourable does the opposite, central takes midpoints.
Title-services contribution assumes 60–70% after lacquer blanks, styli 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** IT, professional fees, marketing) are estimated at **200–450k USD/yr**
and deliberately paired high-to-adverse. Depreciation is the 4.7–8.9M and deliberately paired high-to-adverse. Depreciation is the 4.7–8.9M
capex over 10–15 years. capex over 10–15 years.
+6 -6
View File
@@ -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 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 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 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 the plant. Lacquer blanks (70 EUR each) and the cutting engineer (50,000 THB a month) are team
and are estimates. Missing as the revenue model lists: indirect labour, freight, inventory, effluent, figures; shipping cartons have no figure on file and are an estimate. Missing as the revenue model
commission, extra galvanics units' capex.</p> lists: indirect labour, freight, inventory, effluent, commission, styli, extra galvanics units' capex.</p>
<p><b>Not scaled here:</b> admin, sales and logistics (in the overheads line); cover for leave <p><b>Not scaled here:</b> admin, sales and logistics (in the overheads line); cover for leave
and sickness.</p> and sickness.</p>
<p>Sources in the CNX Vinyl planning repository: equipment/pressing-line.md, <p>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"], ["maintCost", "Maintenance, spares, consumables, a record", 0.17, "USD", "doc", "revenue-model.md: 0.12 to 0.23"],
]); ]);
grp("Stamper making", [ 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"], ["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", [ grp("Energy", [
@@ -455,7 +455,7 @@ grp("Labour (THB a month a head, loaded ×1.3)", [
["wageQC", "QC", 26000, "THB", "doc", "revenue-model.md"], ["wageQC", "QC", 26000, "THB", "doc", "revenue-model.md"],
["wageMaint", "Maintenance", 32500, "THB", "doc", "revenue-model.md"], ["wageMaint", "Maintenance", 32500, "THB", "doc", "revenue-model.md"],
["wageGalv", "Galvanics", 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"], ["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"], ["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", "Shrink wrap", X * A.shrinkCost, "");
add("pack", "Shipping cartons and pallets", X * A.cartonCost, "estimate"); add("pack", "Shipping cartons and pallets", X * A.cartonCost, "estimate");
add("maint", "Maintenance, spares, consumables", X * A.maintCost, ""); 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`); 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 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 const runH = b.hoursYr * S.eff / 100 * use; // press running hours a year