Plan B re-defined: the launch plant with everything in (~210M THB); front view on the cover
Deploy test site / deploy (push) Successful in 52s
Deploy test site / deploy (push) Successful in 52s
- Plan B now starts like Plan A with one Duplex system and one Classic, but takes none of the six levers: owned solar and battery (with the BOI solar measure), the full metrology stack, the visitor corridor, cassette and CD-R, the bought crane and Thai-supplied utilities (user, 17 October 2026). ~193.8M THB before the reserve, ~209M with it (~150M to 268M), ~32M (~18 %) more than Plan A; the second Duplex is a growth step from revenue in both (~15.4M THB, estimate). - total-investment.md "Two plans" re-based (heading and anchor now "B at ~210M THB", README and roadmap links updated); revenue-model.md operating pictures: same volume and EBITDA as Plan A, depreciation on Plan B's capital (operating profit 1.26M USD central, payback ~3.7 yr); the extra earns nothing in the modelled table, which the docs say. - Calculator: Plan B preset = the launch plant with contingency kept out (EBITDA 2.07M USD, cash payback year ~4.3, IRR ~21 %); budget card marks 180M and 180M plus 25 %; preset label "Plan B (~210M, all in)". - Business plan draft 0.3, both versions rebuilt: every Plan B branch of the three content files rewritten; renders regenerated with the isometric view turned to the front of the site (road, car park, office, corridor facade) for the cover and Figures 8 to 10.
This commit is contained in:
1 parent
ffc6cedbca
commit
3f33babdaa
28 files changed
+528
-604
No files matched your search
@@ -599,7 +599,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
presses, an EX 50 and an EX 35 colour extruder each) and Newbilt Classic
|
||||
automatic presses, starting from the launch plant: one Duplex system and one
|
||||
Classic. It builds the investment from the blocks in total-investment.md,
|
||||
checks it against Plan A's 180M and Plan B's 225M THB, runs the P&L and a
|
||||
checks it against 180M THB and 180M plus 25 % (Plan A ~180M, Plan B ~210M), runs the P&L and a
|
||||
ten-year cash sketch, and lists what the plant needs: people, power, central
|
||||
hydraulics, steam, cooling, compressed air, floor, compound and stampers.
|
||||
Vendor figures are marked as such; the rest are planning figures and
|
||||
@@ -610,7 +610,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
<span>Presets:</span>
|
||||
<button type="button" data-p="launch">Launch plant (decided)</button>
|
||||
<button type="button" data-p="planA">Plan A (~180M)</button>
|
||||
<button type="button" data-p="planB">Plan B (~225M, five presses)</button>
|
||||
<button type="button" data-p="planB">Plan B (~210M, all in)</button>
|
||||
<button type="button" data-p="lean">Lean: bought stampers, outsourced cutting</button>
|
||||
<button type="button" data-p="full">Full hall (5 D + 4 C)</button>
|
||||
</div>
|
||||
@@ -732,8 +732,9 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
<section class="card">
|
||||
<h2>Budget: Plan A and Plan B</h2>
|
||||
<p class="note" style="margin-top:0">Two plans for the investor (October 2026): Plan A at ~180M THB keeps every
|
||||
machine of the launch plant with six cost levers, Plan B at ~225M THB (+25 %) launches with the second Duplex
|
||||
system and everything in; both priced without contingency and with the ramp-up reserve. Bars: the investment
|
||||
machine of the launch plant with six cost levers, Plan B at ~210M THB keeps the same launch plant (one Duplex system
|
||||
and one Classic) with everything the levers cut; both priced without contingency and with the ramp-up reserve,
|
||||
the second Duplex a growth step in both. Marks at 180M and 180M plus 25 % (225M). Bars: the investment
|
||||
at the low end, the midpoint and the high end of every block (contingency as set under Plant configuration),
|
||||
plus the ramp-up reserve when it is in the budget (hatched).</p>
|
||||
<div class="kpis" id="budK"></div>
|
||||
@@ -3051,7 +3052,7 @@ grp("Investment rules", [
|
||||
["wcRef", "Records a year the working capital is sized for", 840000, "", "doc", "revenue-model.md launch plant, central volume"],
|
||||
["wcMin", "Working capital never below", 60, "%", "est", "Estimate"],
|
||||
["budgetLo", "Plan A budget", 180000000, "THB", "doc", "total-investment.md: Plan A, ~180M THB without contingency, ramp-up reserve included"],
|
||||
["budgetHi", "Plan B budget, Plan A plus 25 %", 225000000, "THB", "doc", "total-investment.md: Plan B, ~225M THB (user, October 2026)"],
|
||||
["budgetHi", "Upper budget mark, 180M plus 25 %", 225000000, "THB", "doc", "total-investment.md: the +25 % envelope set for Plan B (user, October 2026); Plan B is ~210M"],
|
||||
]);
|
||||
grp("Ten years of cash", [
|
||||
["ramp1", "Sold output in year 1", 35, "% of the mature year", "est", "Estimate"],
|
||||
@@ -3091,9 +3092,9 @@ const CFG0 = Object.fromEntries(CFGK.map(k => [k, S0[k]]));
|
||||
const LAUNCH = { mode: "target", target: 850000, grow: "classic", dMin: 1, cMin: 1, dFleet: 1, cFleet: 1, ...CFG0 };
|
||||
const PRESETS = {
|
||||
launch: LAUNCH,
|
||||
// Plan A (~180M THB) and Plan B (~225M THB): total-investment.md "Two plans", priced without contingency
|
||||
// Plan A (~180M THB, six levers) and Plan B (~210M THB, the launch plant all in): total-investment.md "Two plans", priced without contingency
|
||||
planA: { ...LAUNCH, solar: "ppa", metro: "launch", corridor: "later", cass: "off", cdr: "off", crane: "rent", sourcing: "china", cont: "sep" },
|
||||
planB: { mode: "target", target: 1250000, grow: "classic", dMin: 2, cMin: 1, dFleet: 2, cFleet: 1, ...CFG0, cont: "sep" },
|
||||
planB: { ...LAUNCH, cont: "sep" },
|
||||
lean: { ...LAUNCH, galv: "bought", cut: "out" },
|
||||
full: { mode: "fleet", dFleet: 5, cFleet: 4, ...CFG0 },
|
||||
};
|
||||
@@ -3709,7 +3710,7 @@ function renderInvest(e, r) {
|
||||
H.push(`<tr class="grp"><td colspan="5">Totals</td></tr>`);
|
||||
TR("Subtotal", cx.sub, "", true);
|
||||
TR(cx.ctgIn ? `Contingency ${f1(A.contPct)} %` : `Contingency ${f1(A.contPct)} % (not in the total)`, cx.ctg, cx.ctgIn ? "total-investment.md" : "shown separately, as in Plan A and Plan B");
|
||||
TR("Total investment", cx.tot, "for reference, total-investment.md: the launch plant ~161M to 285M THB with contingency (midpoint ~223M); Plan A ~162M and Plan B ~209M at the midpoint without it, plus the ramp-up reserve", true);
|
||||
TR("Total investment", cx.tot, "for reference, total-investment.md: the launch plant ~161M to 285M THB with contingency (midpoint ~223M); Plan A ~162M and Plan B ~194M at the midpoint without it, plus the ramp-up reserve", true);
|
||||
if (!cx.boiOn) {
|
||||
TR(`Import duty without BOI, ${f1(A.dutyMach)} %`, cx.duty, `on ${money(cx.imp.lo)} to ${money(cx.imp.hi)} of imported machinery; import VAT ${money(cx.vat.mid)} at the midpoint, reclaimable`);
|
||||
TR("Total with import duty", cx.all, "", true);
|
||||
@@ -3743,7 +3744,7 @@ function renderBudget(e) {
|
||||
`<div class="bgap">against ${M(B1)}: ${gap(tot, B1)} · against ${M(B2)}: ${gap(tot, B2)}</div>`;
|
||||
}).join("");
|
||||
const mid = V[1], mt = mid.cap + mid.res, rLo = cx.res.lo * fx, rHi = cx.res.hi * fx;
|
||||
const tgt = mt <= B1 ? B1 : B2; // the tightest budget the midpoint fits (Plan A: 180M, Plan B: 225M)
|
||||
const tgt = mt <= B1 ? B1 : B2; // the tightest budget the midpoint fits (Plan A: 180M, Plan B: the 225M mark)
|
||||
$("budK").innerHTML = kpi(M(mid.cap) + " THB", `investment at the midpoint, ${cx.ctgIn ? "contingency included" : "without contingency"}`) +
|
||||
kpi(`${M(mid.cap + rLo)} to ${M(mid.cap + rHi)}`, `THB with the ramp-up reserve (${M(rLo)} to ${M(rHi)})`) +
|
||||
kpi(mt <= tgt ? M(tgt - mt) : "+" + M(mt - B2), `${mt <= tgt ? "to spare under" : "over"} ${M(tgt)} THB at the midpoint${inB ? ", reserve included" : ""}`);
|
||||
|
||||
Reference in new issue
Block a user