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
@@ -1,7 +1,8 @@
|
||||
"""Part B: what makes it top-notch (traceability, metrology, QC, efficiency); site and building;
|
||||
regulatory (BOI and licences). Draft 0.3, October 2026: one text for both versions, Plan A (~180M
|
||||
THB, the launch plant with six cost levers) and Plan B (~225M THB, five presses, everything in); the
|
||||
plan-specific passages switch with plan_variant.pick(), called inside blocks()."""
|
||||
THB, the launch plant with six cost levers) and Plan B (~210M THB, the same launch plant with
|
||||
everything in, none of the levers); the plan-specific passages switch with plan_variant.pick(),
|
||||
called inside blocks()."""
|
||||
from plan_lib import H1, H2, H3, P, B, N, T, KV, IMG, CALL, PB
|
||||
from plan_variant import pick, is_a, is_b, label, name
|
||||
|
||||
@@ -192,10 +193,10 @@ def blocks():
|
||||
"the budget.",
|
||||
], [
|
||||
"**At launch: the full stack.** The metrology and QC block is USD 350k to 810k (11.6M to 26.7M "
|
||||
"THB, estimate, section 8): XRF, laser confocal, wide-area profiler, inline vision on the presses "
|
||||
"and the audio station. Every father, mother and stamper is measured before the next plating "
|
||||
"generation or the press. The block was priced with inline vision on three presses, so the "
|
||||
"cameras for the second Duplex system are to quote.",
|
||||
"THB, estimate, section 8): XRF, laser confocal, wide-area profiler, inline vision on the three "
|
||||
"presses and the audio station. Every father, mother and stamper is measured before the next "
|
||||
"plating generation or the press, and groove geometry and form on the metal are measured from "
|
||||
"the first release.",
|
||||
"**If quotes land high,** the laser confocal and the wide-area profiler (USD 180k to 350k, "
|
||||
"estimate) are the part that can wait and be bought from revenue: thickness and cosmetics "
|
||||
"would still be measured on every part, and groove geometry judged through the test pressing "
|
||||
@@ -218,7 +219,7 @@ def blocks():
|
||||
"stamper), stitching and flow lines, warp, off-centre spindle holes, surface debris, wrong or "
|
||||
"off-centre labels. Non-fill and stitching correlate with audible defects, so this is a strong "
|
||||
"proxy for audio quality", "Custom integration of general machine vision (Keyence or Cognex "
|
||||
"class) on all " + pick("three", "five") + " presses; no vinyl-specific "
|
||||
"class) on all three presses; no vinyl-specific "
|
||||
"product exists"],
|
||||
["2. Press telemetry, every cycle", "Mould temperatures, pressures, cycle time, extruder values, "
|
||||
"yields and drift alerts from the press PLC", "Process drift before it becomes a defect; the "
|
||||
@@ -269,9 +270,10 @@ def blocks():
|
||||
"At launch the three presses need 450 to 540 kg/h of saturated steam at 10 bar / 180 °C and "
|
||||
"~391.5 kW of cooling at a hot-afternoon peak; the utility backbone is built for the "
|
||||
"five-press fleet (750 to 900 kg/h of steam, up to ~650 kW of cooling). ",
|
||||
"At launch the five presses need 750 to 900 kg/h of saturated steam at 10 bar / 180 °C and "
|
||||
"~652.5 kW of cooling at a hot-afternoon peak, on a utility backbone with rooms for four "
|
||||
"boiler and four chiller modules. ") +
|
||||
"At launch the three presses need 450 to 540 kg/h of saturated steam at 10 bar / 180 °C and "
|
||||
"~391.5 kW of cooling at a hot-afternoon peak, on a utility backbone with rooms for four "
|
||||
"boiler and four chiller modules, so the second Duplex system plugs in when revenue pays for "
|
||||
"it. ") +
|
||||
"On top comes whole-plant air conditioning in a tropical climate. Newbilt excludes "
|
||||
"steam and cooling from its scope, so these systems are ours to design, and the design rests on "
|
||||
"one observation: the steam's job is to heat the moulds and the cooling water's job is to remove "
|
||||
@@ -289,12 +291,11 @@ def blocks():
|
||||
"lag by one controller. Either boiler alone carries 93 to 111% of the steam demand; one "
|
||||
"chiller out leaves ~64% of the cooling peak. The boiler bodies come through the Chinese "
|
||||
"route and the compressor from a Chinese brand's Thai office (below). ",
|
||||
"at launch two 500 kg/h boilers (B-1, B-2) for the 750 to 900 kg/h peak and three 250 kW "
|
||||
"air-cooled chillers rated at 40 °C ambient (CH-1 to CH-3) for ~652.5 kW, sequenced lead "
|
||||
"and lag by one controller; the boilers and the compressor come from Thai suppliers "
|
||||
"(below). Five presses on two boilers leave no spare: a third module (B-3) is an RFQ option "
|
||||
"outside the plan price, and without it a boiler fault costs about two presses until it is "
|
||||
"fixed; one chiller out leaves ~77% of the cooling peak. ") +
|
||||
"at launch two 500 kg/h boilers (B-1, B-2) for the 450 to 540 kg/h peak and two 250 kW "
|
||||
"air-cooled chillers rated at 40 °C ambient (CH-1, CH-2) for ~391.5 kW, sequenced lead and "
|
||||
"lag by one controller. Either boiler alone carries 93 to 111% of the steam demand; one "
|
||||
"chiller out leaves ~64% of the cooling peak. The boilers and the compressor come from Thai "
|
||||
"suppliers, with local service (below). ") +
|
||||
"Identical modules mean one set of spares "
|
||||
"and one service routine, N+1 later is one more module rather than a redesign, and the plant "
|
||||
"never runs one oversized boiler at poor part load. Four boilers carry about eight presses with "
|
||||
@@ -343,7 +344,7 @@ def blocks():
|
||||
"weekdays) and 2.6037 THB/kWh off-peak, plus the Ft fuel adjustment (+0.1623 THB/kWh for "
|
||||
"September to December 2026; it resets every four months) and reclaimable VAT. Two shifts put "
|
||||
"about two thirds of process energy into peak hours: a blended ~3.81 THB/kWh before the demand "
|
||||
"charge. " + pick("For the five-press fleet the backbone is built for", "For the five presses") +
|
||||
"charge. For the five-press fleet the backbone is built for" +
|
||||
", without electric steam, that is "
|
||||
"roughly 4.5M to 6.8M THB a year before solar, 0.7M to 1.1M of it demand charge (estimates), on "
|
||||
"an 800 to 1,000 kVA connection. Three design consequences:"),
|
||||
@@ -404,8 +405,7 @@ def blocks():
|
||||
"pipeline in Northern Thailand, so gas means a bulk LPG tank on site with hazardous-storage "
|
||||
"separation and licensing, and diesel means a fuel tank with price exposure. The two routes "
|
||||
"without a fossil tank, compared for the same heat (~1,120 to 1,280 MWh a year at about 1.0 "
|
||||
"million records, " + pick("the top of the plant's range", "the low end of the five presses' "
|
||||
"range") + "; estimates):"),
|
||||
"million records, the top of the plant's range; estimates):"),
|
||||
T(["", "Electric boiler bank (~98%)", "Biomass boiler bank (~80%)"], [
|
||||
["Price of heat", "~3.9 THB/kWh, plus the demand charge", "~0.5 to 0.9 THB/kWh at 1.35 to 2 "
|
||||
"THB/kg delivered (reported market prices, October 2026; no supplier quote yet)"],
|
||||
@@ -429,9 +429,7 @@ def blocks():
|
||||
"land a biomass stack would be a hard sell, which favours electric or LPG there (section 6.1)."),
|
||||
P("**Fuel.** A biomass bank burns roughly 350 to 400 tonnes of air-dry wood a year at about 1.0 "
|
||||
"million records (~540 to 620 t as fresh chips, which is what the store and the monsoon stock are "
|
||||
"sized for)" + pick("", ", up to ~550 t air-dry at 1.5 million (fuel follows records pressed, "
|
||||
"not presses)") +
|
||||
". Lamphun alone produces more than 900,000 t of farm residues a year (Maejo "
|
||||
"sized for). Lamphun alone produces more than 900,000 t of farm residues a year (Maejo "
|
||||
"University), so supply is not the constraint; price is. Reported prices follow diesel, so the "
|
||||
"fuel contract gets a diesel clause and sources within ~50 km. The local price-setter is Ratch "
|
||||
"Pathana's biomass buying centre at Pa Sak, Mueang Lamphun, which feeds a 9.6 MW cogeneration "
|
||||
@@ -519,8 +517,6 @@ def blocks():
|
||||
"Figure 2. Plant overview (simulated SCADA) of the launch plant, running at 60×: header with shift, "
|
||||
"presses running, cycles an hour, good records and rejects, metal in work, steam pressure, plant "
|
||||
"load and solar; metal path on top, press hall and finishing in the middle, utilities below. "
|
||||
+ pick("", "The demo draws the launch plant (Duplex system 1 and the Classic); Plan B adds the "
|
||||
"second Duplex system to the same screen. ") +
|
||||
"Demo (docs/plant-operation.html), simulated values."),
|
||||
H3("Back office: the factory console on ERPNext"),
|
||||
P("The factory application (working name cnx-factory) is the plant's working interface. It shows the "
|
||||
@@ -687,10 +683,7 @@ def blocks():
|
||||
caption="Estimates. The boiler and chillers have since moved to the detached utility yard, which "
|
||||
"frees floor the workshop and corridor take; water treatment is proposed in its own "
|
||||
"building next to galvanics; cassette and CD-R duplication (~40 to 80 m² and ~20 to "
|
||||
"40 m²" + pick(", a later step in this plan", "") + ") are not in the table yet. " + pick(
|
||||
"", "The press rows size one Duplex system and the Classic; the second Duplex "
|
||||
"system needs its own bay on top (~110 m² at the calculator's floor figure, "
|
||||
"estimate). ") +
|
||||
"40 m²" + pick(", a later step in this plan", "") + ") are not in the table yet. "
|
||||
"At the lower half of the table everything fits in "
|
||||
"1,500 m²; at the upper half, finished goods move to a second building."),
|
||||
P("Figures 8 to 10 show the plant as the plant and business plan calculator draws it for " + label() +
|
||||
@@ -698,7 +691,9 @@ def blocks():
|
||||
"process order along the glazed visitor corridor, a two-storey office, the detached utility yard "
|
||||
"and a press hall of ~870 m² laid out for five Duplex bays and four Classic positions, on a "
|
||||
"150 × 150 m placeholder plot. The building described above and the zone table are the 60 × 25 m "
|
||||
"hall for Mueang Chi; which layout is built is decided once a plot passes zoning and lease-ability. "
|
||||
"hall for Mueang Chi; which layout is built is decided once a plot passes zoning and lease-ability. " +
|
||||
"The views look at the front of the site: the road, the car park, the office and the "
|
||||
"visitor-corridor facade are in the foreground. " +
|
||||
"The calculator itself is interactive: rotate, zoom, switch floors and tap any object for its "
|
||||
"figures and their source."),
|
||||
IMG(pick("renders/calculator/plan-a-iso-roof.png", "renders/calculator/plan-b-iso-roof.png"), 170,
|
||||
@@ -725,9 +720,11 @@ def blocks():
|
||||
"Duplex system 1 (two HRP 12 presses with their extruders) and the Classic; the dashed "
|
||||
"outlines are the free Duplex bays and Classic positions for growth. In the yard, boiler "
|
||||
"modules B-1 and B-2 and chillers CH-1 and CH-2, with B-3, B-4, CH-3 and CH-4 free",
|
||||
"Duplex systems 1 and 2 (four HRP 12 presses with their extruders) and the Classic; the "
|
||||
"dashed outlines are the free Duplex bays and Classic positions. In the yard, boiler modules "
|
||||
"B-1 and B-2 (B-3 and B-4 free) and chillers CH-1 to CH-3 (CH-4 free)") +
|
||||
"Duplex system 1 (two HRP 12 presses with their extruders) and the Classic, in a hall laid "
|
||||
"out for five Duplex bays and four Classic positions; the dashed outlines are the free bays "
|
||||
"and positions for growth. In the yard, boiler modules B-1 and B-2 and chillers CH-1 and "
|
||||
"CH-2, with B-3, B-4, CH-3 and CH-4 free; the 5 t crane over the hall, the visitor corridor "
|
||||
"and the cassette and CD-R rooms are in place") +
|
||||
". Schematic, estimates."),
|
||||
H3("Crane, workshop and visitor corridor"),
|
||||
B(pick([
|
||||
@@ -780,14 +777,14 @@ def blocks():
|
||||
"dB(A) near the presses down to roughly 40 to 50 dB(A) (estimates), so a guide talks without a "
|
||||
"headset and visitors need no PPE; a 1:12 accessible ramp serves the entrance. Tours for "
|
||||
"artists, labels, investors and schools can run several times a day without stopping "
|
||||
"production.",
|
||||
"production, and the tour route and the Payap programmes start with the plant.",
|
||||
])),
|
||||
H3("Utility yard and water-treatment building"),
|
||||
T(["Detached utility yard (decided October 2026)", "Size (estimate)"], [
|
||||
["Boiler hall, four 500 kg/h module positions (B-1 and B-2 at launch)", "~162 m² (18 × 9 m), "
|
||||
"6.0 m high"],
|
||||
["Biomass fuel store", "42 m²"],
|
||||
["Chiller compound, open and screened, four pads (" + pick("CH-1 and CH-2", "CH-1 to CH-3") +
|
||||
["Chiller compound, open and screened, four pads (CH-1 and CH-2"
|
||||
" at launch)", "~135 m² (12.5 × "
|
||||
"10.8 m)"],
|
||||
["Cooling pump and heat-exchanger room", "~40 m² (8 × 5 m)"],
|
||||
@@ -827,12 +824,9 @@ def blocks():
|
||||
"or where a CD replication line would go if that option is chosen (section 4.10). **The press "
|
||||
"hall** is planned for Duplex systems, because the plant focuses on special pressings and "
|
||||
"specials run only on the Duplex: five Duplex bays and four Classic positions (~73/27 by floor, "
|
||||
"estimate). " + pick(
|
||||
"This plan installs one Duplex system and one Classic; growth adds Duplex systems first, into "
|
||||
"bays whose floor, utility positions and ring-main tees are kept from the start. Where the "
|
||||
"second Duplex system would stand on the Mueang Chi footprint is not drawn yet; ",
|
||||
"This plan installs two Duplex systems and one Classic at launch; growth adds Duplex systems "
|
||||
"first. Where the second Duplex system stands on the Mueang Chi footprint is not drawn yet; ") +
|
||||
"estimate). This plan installs one Duplex system and one Classic; growth adds Duplex systems "
|
||||
"first, into bays whose floor, utility positions and ring-main tees are kept from the start. "
|
||||
"Where the second Duplex system would stand on the Mueang Chi footprint is not drawn yet; "
|
||||
"the Payap scenario model draws the five-press fleet."),
|
||||
H3("What the construction RFQ asks"),
|
||||
P("The budget-level construction RFQ, with quantities from the parametric model, asks contractors "
|
||||
@@ -938,8 +932,8 @@ def blocks():
|
||||
"exempt from VAT at import (Revenue Department answer on BOI's FAQ, checked October 2026). The "
|
||||
"investment blocks assume promotion: without it, ~5% duty on ~2.3M USD of imported machinery "
|
||||
"(~0.11M USD) plus ~0.17M USD of import VAT, reclaimed only later (estimates for the " +
|
||||
pick("full equipment list; this plan imports less at first",
|
||||
"three-press equipment list; the second Duplex system adds to both") + ")."],
|
||||
pick("full equipment list; this plan imports less at first", "full equipment list") +
|
||||
")."],
|
||||
["100% foreign ownership and land privileges", "Overrides Foreign Business Act restrictions "
|
||||
"for the promoted activity. The land-ownership privilege is unused under the lease strategy."],
|
||||
["Visas and work permits via the One Stop Service", "Foreign commissioning engineers and the "
|
||||
@@ -971,7 +965,7 @@ def blocks():
|
||||
P("**Process:** file via the e-Investment system and present at an analyst meeting. BOI quotes "
|
||||
"about 40 working days to a decision for projects under THB 200M and 60 to 90 working days for "
|
||||
"larger tiers; at " + pick("~127M to 226M THB with the ramp-up reserve (~177M at the midpoint)",
|
||||
"~162M to 286M THB with the ramp-up reserve (~224M at the midpoint)") +
|
||||
"~150M to 268M THB with the ramp-up reserve (~209M at the midpoint)") +
|
||||
" the plan sits around that line, so the consultant "
|
||||
"confirms which applies. In practice it is roughly 4 to 6 months end to end to the certificate; "
|
||||
"the company is incorporated under it; machinery is imported within a window commonly 30 months "
|
||||
|
||||
Reference in new issue
Block a user