Re-base scale, pressing line, roadmap, revenue model and calculator on the launch plant
Deploy test site / deploy (push) Successful in 48s
Deploy test site / deploy (push) Successful in 48s
Launch plant (user, October 2026): one Duplex system and one Classic, with cutting and galvanics in-house, everything in one capital round. - scale.md: capacity table now launch plant 0.71-0.97M records/yr, the second Duplex as a growth option; launch utilities (450-540 kg/h on B-1/B-2, ~390 kW on 2 x 250 kW); calculator figure ~0.94M. - pressing-line.md: launch plant section on top; five-press fleet kept as the layout fleet the hall and backbone are built for. - roadmap.md: long-lead orders for the launch plant, no bridge stampers or outsourced cutting, commissioning order, what stays revenue-gated. - revenue-model.md: operating picture of the launch plant: central revenue ~3.75M USD, EBITDA ~1.6M, operating profit ~1.1M, payback ~4 yr on 216M THB, break-even ~0.3M records; adverse corner cannot cover depreciation. Five-press table kept and labelled. - fleet-calculator.html: start fleet 1 Duplex + 1 Classic, target 850k, capex base 6.55M (cases 8.9 / 6.55 / 4.9M), Duplex beyond one, chiller 500 kW, imported machinery 2.3M, ladder from the launch plant. - total-investment.md: superseded note updated.
This commit is contained in:
1 parent
7344f12dc8
commit
794cde228c
6 files changed
+156
-45
No files matched your search
+14
-14
@@ -165,8 +165,8 @@ document.documentElement.setAttribute("data-theme",t);})();
|
||||
Set the records you want a year and the share of splatter and other
|
||||
specials. The calculator sizes the press fleet from Newbilt Duplex systems
|
||||
(two HRP 12 presses, an EX 50 and an EX 35 colour extruder each) and Newbilt
|
||||
Classic automatic presses, starting from the planned two Duplex systems and
|
||||
one Classic. It then lists what that fleet needs: people, power, central
|
||||
Classic automatic presses, starting from the launch plant: one Duplex system
|
||||
and one Classic. It then lists what that fleet needs: people, power, central
|
||||
hydraulics, steam, cooling, compressed air, floor, compound and stampers.
|
||||
Vendor figures are from Newbilt's Duplex site requirements and offer; the
|
||||
rest are planning figures and estimates from the CNX Vinyl documents. Every
|
||||
@@ -301,7 +301,7 @@ document.documentElement.setAttribute("data-theme",t);})();
|
||||
|
||||
<section class="card">
|
||||
<h2>From small to fully equipped</h2>
|
||||
<p class="note" style="margin-top:0">Fleets from the start fleet to a full Payap press hall (about 870 m²:
|
||||
<p class="note" style="margin-top:0">Fleets from the launch plant to a full Payap press hall (about 870 m²:
|
||||
the two Duplex bays plus the Classic and ten more Classic positions, or the same floor
|
||||
with more Duplex systems), at the current settings. Click a row to load it.</p>
|
||||
<div class="tscroll"><table id="ladT"></table></div>
|
||||
@@ -334,7 +334,7 @@ document.documentElement.setAttribute("data-theme",t);})();
|
||||
states them. A real plant staggers cycles, so the boiler and chiller can be sized lower once
|
||||
a utility engineer has the cycle data.</p>
|
||||
<p><b>Money.</b> Prices, per-record costs, wages, overheads and depreciation come from
|
||||
finance/revenue-model.md, capex from finance/total-investment.md (the start fleet plan plus each
|
||||
finance/revenue-model.md, capex from finance/total-investment.md (the launch plant plus each
|
||||
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
|
||||
@@ -369,8 +369,8 @@ document.documentElement.setAttribute("data-theme",t);})();
|
||||
"use strict";
|
||||
// ---------------------------------------------------------------- inputs
|
||||
const S0 = {
|
||||
mode: "target", target: 1000000, spec: 20, grow: "classic", dMin: 2, cMin: 1,
|
||||
dFleet: 2, cFleet: 1, shifts: 2, hrs: 8, days: 300, eff: 65, rateD: 3, rateC: 2, specF: 100,
|
||||
mode: "target", target: 850000, spec: 20, grow: "classic", dMin: 1, cMin: 1,
|
||||
dFleet: 1, cFleet: 1, shifts: 2, hrs: 8, days: 300, eff: 65, rateD: 3, rateC: 2, specF: 100,
|
||||
priceStd: 3.8, premSpec: 1.15, titleFee: 1155, cur: "USD", boi: "on", exportShare: 70,
|
||||
};
|
||||
// [group, id, label, value, unit, kind, source]
|
||||
@@ -444,13 +444,13 @@ grp("Money", [
|
||||
["thbUsd", "THB per USD", 33, "THB", "doc", "revenue-model.md and total-investment.md, FX of 5 August 2026"],
|
||||
["usdEur", "USD per EUR", 1.155, "USD", "doc", "revenue-model.md"],
|
||||
["overheads", "Cash overheads a year", 330000, "USD", "doc", "revenue-model.md: 200 to 450k (admin, sales, insurance, facility, IT, fees, marketing)"],
|
||||
["capexBase", "Capex, start fleet plan", 6800000, "USD", "doc", "total-investment.md: 4.7 to 8.9M full vision; added scope not yet rolled up"],
|
||||
["capexD", "Capex per Duplex system beyond two", 265000, "USD", "doc", "total-investment.md: system 2 ~230 to 300k, estimate"],
|
||||
["capexBase", "Capex, launch plant", 6550000, "USD", "doc", "total-investment.md launch plant (October 2026): 4.9 to 8.9M USD, 161 to 292M THB; the investor target 216M THB"],
|
||||
["capexD", "Capex per Duplex system beyond one", 265000, "USD", "doc", "total-investment.md: system 2 ~230 to 300k, estimate"],
|
||||
["capexC", "Capex per Classic beyond one", 375000, "USD", "doc", "total-investment.md: ~290 to 460k, no Newbilt price on file"],
|
||||
["deprYears", "Depreciation period", 12.5, "years", "doc", "revenue-model.md: 10 to 15 years"],
|
||||
]);
|
||||
grp("BOI and imports", [
|
||||
["impMach", "Imported machinery in the start-fleet capex", 2750000, "USD", "doc", "total-investment.md block midpoints at vendor prices: presses 1.0M, galvanics 485k, Sibert 250k, lathe system 435k, metrology 580k; added presses count as imported"],
|
||||
["impMach", "Imported machinery in the launch-plant capex", 2300000, "USD", "doc", "total-investment.md launch plant, block midpoints at vendor prices: Duplex 360k, Classic 375k, galvanics 485k, Sibert 250k, Sillitoe SDMS 125k, metrology 580k, ZLD ~120k; added presses count as imported"],
|
||||
["dutyMach", "Import duty on that machinery without BOI", 5, "%", "est", "Estimate: Thai MFN averages 4.1 % on HS 8477 plastics machinery (customs-compliance.ai, March 2026), 0 to 10 % across HS 84; set per line once the HS codes are known"],
|
||||
["vatRate", "VAT", 7, "%", "doc", "Thai VAT; with BOI duty exemption the import VAT is exempt too (Revenue Department, BOI OSOS FAQ; boi.md)"],
|
||||
["pvcImp", "Share of PVC compound imported", 100, "%", "est", "Estimate: record-grade compound from the specialist suppliers"],
|
||||
@@ -507,7 +507,7 @@ grp("Workwear: Engelbert Strauss for all staff", [
|
||||
]);
|
||||
grp("Planned plant, for the checks", [
|
||||
["boiler", "Steam boiler bank", 1000, "kg/h", "doc", "steam-cooling.html and scale.md: 2 × 500 kg/h modules (proposal, estimate)"],
|
||||
["chiller", "Chiller bank", 750, "kW", "doc", "steam-cooling.html and scale.md: 3 × 250 kW air-cooled modules (proposal, estimate)"],
|
||||
["chiller", "Chiller bank", 500, "kW", "doc", "scale.md launch plant: 2 × 250 kW air-cooled modules (CH-1, CH-2; proposal, estimate); compound built for four"],
|
||||
["hall", "Payap press hall", 870, "m²", "doc", "site-candidates.md, Payap scenario model"],
|
||||
]);
|
||||
const A0 = Object.fromEntries(AS.map(r => [r[1], r[3]]));
|
||||
@@ -517,9 +517,9 @@ const CASES = {
|
||||
adverse: { S: { priceStd: 3.4, premSpec: 0.6, titleFee: 580 },
|
||||
A: { pvcPrice: 2.9, labelCost: 0.09, sleeveCost: 0.17, jacketCost: 0.92, shrinkCost: 0.03, maintCost: 0.23, overheads: 450000, capexBase: 8900000, heatPrice: 0.9, deprYears: 10 } },
|
||||
central: { S: { priceStd: 3.8, premSpec: 1.15, titleFee: 1155 },
|
||||
A: { pvcPrice: 2.3, labelCost: 0.06, sleeveCost: 0.13, jacketCost: 0.66, shrinkCost: 0.025, maintCost: 0.17, overheads: 330000, capexBase: 6800000, heatPrice: 0.7, deprYears: 12.5 } },
|
||||
A: { pvcPrice: 2.3, labelCost: 0.06, sleeveCost: 0.13, jacketCost: 0.66, shrinkCost: 0.025, maintCost: 0.17, overheads: 330000, capexBase: 6550000, heatPrice: 0.7, deprYears: 12.5 } },
|
||||
favourable: { S: { priceStd: 4.25, premSpec: 1.7, titleFee: 1730 },
|
||||
A: { pvcPrice: 1.75, labelCost: 0.03, sleeveCost: 0.09, jacketCost: 0.4, shrinkCost: 0.02, maintCost: 0.12, overheads: 200000, capexBase: 4700000, heatPrice: 0.5, deprYears: 15 } },
|
||||
A: { pvcPrice: 1.75, labelCost: 0.03, sleeveCost: 0.09, jacketCost: 0.4, shrinkCost: 0.02, maintCost: 0.12, overheads: 200000, capexBase: 4900000, heatPrice: 0.5, deprYears: 15 } },
|
||||
};
|
||||
function caseNow() {
|
||||
for (const k in CASES) {
|
||||
@@ -529,7 +529,7 @@ function caseNow() {
|
||||
return "";
|
||||
}
|
||||
const LADDER = [
|
||||
["Start fleet (current plan)", 2, 1], ["Step 1", 2, 3], ["Step 2", 2, 5], ["Step 3", 2, 8],
|
||||
["Launch plant", 1, 1], ["Second Duplex", 2, 1], ["Step 1", 2, 3], ["Step 2", 2, 5], ["Step 3", 2, 8],
|
||||
["Full hall, Classic-led", 2, 11], ["Full hall, mixed", 4, 7], ["Full hall, specials-led", 6, 3],
|
||||
];
|
||||
|
||||
@@ -679,7 +679,7 @@ function econ(r, b, boiOn = S.boi !== "off") {
|
||||
`${f1(h.prod * A.wwProdYr)} production and ${f1(h.office * A.wwOffYr)} office kits a year, shipping and Thai duty included`);
|
||||
const sum = gs => L.filter(l => gs.includes(l[0])).reduce((a, l) => a + l[2], 0);
|
||||
const direct = L.reduce((a, l) => a + l[2], 0), contrib = rev - direct, ebitda = contrib - A.overheads;
|
||||
const fleetDelta = (r.D - 2) * A.capexD + (r.C - 1) * A.capexC;
|
||||
const fleetDelta = (r.D - 1) * A.capexD + (r.C - 1) * A.capexC;
|
||||
const imp = Math.max(0, A.impMach + fleetDelta);
|
||||
const dutyM = boiOn ? 0 : imp * A.dutyMach / 100, vatM = boiOn ? 0 : (imp + dutyM) * A.vatRate / 100;
|
||||
const capex = A.capexBase + fleetDelta + dutyM, depr = capex / Math.max(1, A.deprYears);
|
||||
|
||||
Reference in new issue
Block a user