Biomass steam in both plans, PV on the factory roof only
Deploy test site / deploy (push) Successful in 49s

User, 17 Oct 2026: "only put solar on the factory, prepare the other
buildings for solar, option a and b should operate on biomass".

- Steam: two 500 kg/h biomass modules (Getabec class, 6M to 10M THB) plus
  a fuel store and handling block (1M to 2M, estimate) in both plans; the
  electric bank becomes the alternative. ~0.67M THB of fuel a year against
  ~4.9M for electric steam; grid demand ~264 kW instead of ~980 kW.
- Solar: ~520 kWp on the factory roof (the biomass-case optimum is ~500 to
  550 kWp, hourly sketch in sustainability.md "PV size with biomass
  steam"); office roof and parking canopies built PV-ready (~120 kWp
  later). ~87 % used on site, ~61 % of the plant's electricity.
- Calculator: biomass default, bFuel row, pvKWp 520, pvSelf 87, iso fills
  the factory roof first and shows the other roofs as PV-ready.
- Numbers: launch plant ~168M / 232M / 296M with contingency; Plan A
  ~182M (~2M above 180M: the Chinese-route lever priced only electric
  boilers; a Chinese biomass quote is the way back), Plan B ~217M (label
  ~215M), ~35M more. Calculator EBITDA A 2.17M, B 2.23M USD.
- CSV, total-investment, revenue-model, sustainability, scale, biomass,
  site-candidates, boi, steam-cooling, construction RFQ (canopies
  PV-ready), README, roadmap; business plan draft 0.3 rebuilt (A and B
  63 pages) with new renders.
This commit is contained in:
grabowski committed 2026-10-17 20:24:55 +07:00
1 parent 9ff5feef11
commit 984ced2485
35 files changed
+849 -665

No files matched your search

+9 -8
View File
@@ -70,14 +70,15 @@ steps are open planning items.
- The plant now launches with everything in one capital round (October
2026): one Newbilt Duplex system and one Classic, a Pheenix galvanics
line, the Sibert stamper-prep line, a Sillitoe cutting room and the
modular boiler and chiller plant: ~168M to 294M THB with contingency
(midpoint ~231M, PV on every roof and canopy), the Pheenix line priced at OMS's reference plus 20 %
modular boiler and chiller plant: ~168M to 296M THB with contingency
(midpoint ~232M; biomass steam, PV on the factory roof), the Pheenix line priced at OMS's reference plus 20 %
([total investment](docs/finance/total-investment.md#launch-plant-october-2026)).
For the investor the business plan comes in two versions, priced
without contingency and with the ramp-up reserve
([two plans](docs/finance/total-investment.md#two-plans-a-at-180m-thb-and-b-at-215m-thb-october-2026)):
**Plan A, ~177M THB**, the launch plant with six cost levers, and
**Plan B, ~216M THB**, the same launch plant with everything in.
**Plan A, ~182M THB** (~2M above 180M since steam went biomass), the
launch plant with six cost levers, and **Plan B, ~217M THB**, the same
launch plant with everything in.
Chinese boilers, compressor and hydraulics save about 2M THB of that
([Chinese suppliers](docs/suppliers/china-utilities.md)).
The business plan is re-based on it (draft 0.2).
@@ -282,8 +283,8 @@ The detail lives in dedicated documents:
output capacity, building area, land, electrical demand, solar and
storage, steam and fuel, headcount, and money cross-references
- [Total investment](docs/finance/total-investment.md): the launch plant
decided in October 2026 (~168M to 294M THB, ~5.1M to 8.9M USD, midpoint
~231M THB) with the basis of every block, the two plans for the investor
decided in October 2026 (~168M to 296M THB, ~5.1M to 9.0M USD, midpoint
~232M THB) with the basis of every block, the two plans for the investor
(Plan A ~180M, Plan B ~215M THB, without contingency), and the earlier
answer to the 180M / 216M question; the earlier full vision and phased
entry are kept as superseded
@@ -294,8 +295,8 @@ The detail lives in dedicated documents:
and margin per record, the launch plant's operating picture at the
planned 60 % specials (central revenue ~3.65M USD a year on ~0.74M
records, EBITDA ~1.7M; the adverse case loses money), the operating
pictures of Plan A (payback ~3.1 years on ~177M THB) and Plan B (the
same output, payback ~3.8 years on ~216M THB: its extra pays back
pictures of Plan A (payback ~3.2 years on ~182M THB) and Plan B (the
same output, payback ~3.8 years on ~217M THB: its extra pays back
through what the table leaves out), the five-press table, and the levers and
caveats behind the numbers
- Business plan, draft 0.3 (October 2026), in two versions:
+14 -5
View File
@@ -1,9 +1,18 @@
# Biomass Fuel Strategy
If the steam boiler goes the biomass route (see the options in
[sustainability](sustainability.md) and the Getabec candidate in the
[utilities CSV](finance/utilities-investment.csv)), the fuel comes from two
sources: the team's own 60 rai of currently unused land, and northern
**Decided 17 October 2026 (user): both business plan versions run on
biomass steam** ("option a and b should operate on biomass"): two 500 kg/h
biomass modules (or one ~1 t/h package, Getabec class, 6M to 10M THB
installed with fuel feed, grate and dust control) plus a fuel store and
handling block (1M to 2M THB, estimate) in the
[utilities CSV](finance/utilities-investment.csv). The launch plant at
~850k records burns ~954 MWh of heat a year, about 300 t of air-dry wood
or ~460 t of fresh chips, ~0.67M THB at 0.7 THB/kWh, against ~4.9M THB a
year for electric steam with its demand charge (calculator, estimates).
The electric-first staged path under Decision framing is dropped; the
electric bank stays the alternative.
The fuel comes from two sources: the team's own 60 rai of currently unused land, and northern
Thailand's agricultural waste market. Figures below are planning estimates,
plus or minus a wide margin, to be refined against the actual boiler choice
and duty cycle.
@@ -165,7 +174,7 @@ storage are additional.
[grid tariff](sustainability.md#grid-tariff-pea-and-what-it-decides)).
The electric boiler is the more efficient machine; biomass is the far
cheaper heat
- A staged path is possible: start electric (fast, clean permitting), plant
- (Superseded 17 October 2026: biomass from the launch.) A staged path is possible: start electric (fast, clean permitting), plant
the coppice now (first harvest in 2 to 4 years), and add the biomass
boiler at the automated-line expansion when demand and the fuel supply
have both matured. At the tariff above that is a permitting and logistics
+1 -1
View File
@@ -26,7 +26,7 @@ top through the upgrade measures, where this project happens to be strong:
THB 12M per MW
([B Global Law](https://bgloballaw.com/2026/01/18/boi-announcement-no-3-2568-amendment-to-renewable-energy-efficiency-enhancement-measures),
[Smarter Energy Solution](https://smarterenergysolution.com/blog/boi-solar-thailand-2026),
checked October 2026). So owning the ~640 kWp array earns no BOI
checked October 2026). So owning the ~520 kWp factory-roof array earns no BOI
benefit; its case is the bill (see [sustainability](sustainability.md)).
Whether the 271 kWh battery qualifies is for the BOI consultant. A PPA
developer selling solar power (200 kW or more per distribution point)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+125 -109
View File
@@ -29,11 +29,12 @@ def blocks():
"snapshots at their file dates, not commitments. Every number in this plan is labelled as quoted, "
"researched, or estimated; see section 2. " + pick(
"This version is Plan A: the launch plant with the whole chain, cutting and galvanics "
"included, three presses, brought to ~180M THB (~177M) with six cost levers. A second "
"version, Plan B (~215M THB), builds the same plant and takes none of the levers. ",
"included, three presses, with six cost levers taken: labelled ~180M THB, it comes to "
"~182M at the midpoint, about 2M above 180M. A second version, Plan B (~215M THB), builds "
"the same plant and takes none of the levers. ",
"This version is Plan B: the launch plant with the whole chain, cutting and galvanics "
"included, three presses, with everything in and none of the cost levers taken, at ~215M "
"THB (~216M). A second version, Plan A (~180M THB), builds the same plant with six cost "
"THB (~217M). A second version, Plan A (~180M THB), builds the same plant with six cost "
"levers. ")
+ "The plan price includes the ramp-up reserve and carries no contingency. Cover picture: the "
"plant as the plant and business plan calculator draws this plan (schematic, Payap scenario "
@@ -84,13 +85,11 @@ def blocks():
"zero-discharge water treatment, and the Sibert stamper-prep line. The father and the mother of "
"every side are archived, so represses start from our own metal.",
"**A modular utility plant:** a boiler hall and a chiller compound built once for four modules "
"each, with " + pick(
"two 500 kg/h boiler modules (B-1, B-2, bought through the Chinese route) and two 250 kW "
"chiller modules (CH-1, CH-2)",
"two 500 kg/h boiler modules (B-1, B-2, from Thai suppliers) and two 250 kW chiller modules "
"(CH-1, CH-2)")
+ " installed at launch; further presses add modules, not rooms. The steam fuel (electric or "
"biomass) is still open.",
"each, with two 500 kg/h biomass boiler modules (B-1, B-2) and two 250 kW chiller modules "
"(CH-1, CH-2) installed at launch; further presses add modules, not rooms. **Steam is biomass "
"from launch in both versions of this plan**, fired with wood chips from a covered fuel "
"store: ~0.67M THB of fuel a year against ~4.9M THB for electric steam (estimates). Electric "
"boilers are the alternative, not the plan.",
pick("**Cassette duplication and CD-R duplication as a growth step** after launch, not in the "
"plan price; both fit inside the building programme. ",
"**Cassette duplication and CD-R duplication in-house** from launch. ")
@@ -98,10 +97,11 @@ def blocks():
"(injection-moulded discs) is a separate, much larger decision, outside the totals; both CD "
"routes are set out in section 4.10 for the investor to decide.",
"**A purpose-built ~1,500 m² plant on long-term leased land**, with a detached utility yard, "
+ pick("solar on every roof and canopy (~640 kWp, estimate) through a solar power purchase "
+ pick("solar on the factory roof (~520 kWp, estimate) through a solar power purchase "
"agreement (PPA)",
"owned solar on every roof and canopy (~640 kWp, estimate) with a battery")
+ " and room for a second building.",
"owned solar on the factory roof (~520 kWp, estimate) with a battery")
+ ", the office roof and the car and scooter canopies built PV-ready for later panels, and "
"room for a second building.",
"**Open source throughout:** every plant server runs NixOS, declared in one repository in the "
"fleet B4L already operates, so any machine is rebuilt from it; ERPNext (no licence fee) is the "
"only system of record; and our own code (the factory console, the plant overview, the artist "
@@ -120,25 +120,28 @@ def blocks():
"right first; " + pick("the launch plant", "the whole chain at launch")
+ " was decided anyway, and that advice is carried as a risk (sections 11.2 and 13).",
pick(
"**Six cost levers bring the plant to ~180M THB**, from ~201M to ~162M THB at the midpoint "
"before the ramp-up reserve (estimates, section 8): solar on every roof and canopy (~640 kWp) "
"and the battery through a solar PPA (the installer owns and finances the array, the plant "
"buys the power); metrology in two "
"steps (XRF, inline vision and the audio station at launch, the laser confocal and the "
"**Six cost levers bring the plant to ~182M THB: labelled ~180M, it is about 2M above 180M "
"at the midpoint** (177M with the low end of the ramp-up reserve), from ~201.6M to ~167.1M "
"THB at the midpoint before the reserve (estimates, section 8): solar on the factory roof "
"(~520 kWp) and the battery through a solar PPA (the installer owns and finances the array, "
"the plant buys the power); metrology in two steps (XRF, inline vision and the audio "
"station at launch, the laser confocal and the "
"wide-area profiler bought from revenue); the visitor corridor built later, so no public tours "
"at first; cassette and CD-R duplication later; a mobile crane rented for the installations, "
"with frame, runway and machine door kept crane-ready; boilers and compressor through the "
"Chinese route. Every press, the cutting room, the galvanics line and the stamper-prep line "
"stay in.",
"**Everything in, none of the cost levers: ~215M THB**, ~201M THB at the midpoint before the "
"ramp-up reserve and ~39M THB more than Plan A (estimates, section 8): owned solar on every "
"roof and canopy (~640 kWp) and the battery, so no PPA power bill (~2.3M THB a year in Plan "
"A, estimate); the full metrology stack from launch (XRF, "
"with frame, runway and machine door kept crane-ready; the compressor through the Chinese "
"route. Every press, the cutting room, the galvanics line, the stamper-prep line and the "
"biomass boilers stay in. The Chinese route priced only electric boilers; a Chinese biomass "
"boiler is not yet quoted, and one ~2M THB or more below the Thai package would bring the "
"midpoint back to 180M.",
"**Everything in, none of the cost levers: ~215M THB** (~217M at the midpoint with the "
"ramp-up reserve, ~201.6M THB before it) and ~35M THB more than Plan A (estimates, section "
"8): owned solar on the factory roof (~520 kWp) and the battery, so no PPA power bill (~1.9M "
"THB a year in Plan A, estimate); the full metrology stack from launch (XRF, "
"laser confocal, wide-area profiler, inline vision, audio station); the visitor corridor and "
"accessible entrance, so public tours and the Payap student programmes are possible from the "
"start; cassette and CD-R duplication; a bought 5 t overhead crane; boilers and compressor "
"from Thai suppliers, with local service. Every press, the cutting room, the galvanics line "
"and the stamper-prep line are the same as in Plan A."),
"start; cassette and CD-R duplication; a bought 5 t overhead crane; the compressor from a "
"Thai supplier, with local service. Every press, the cutting room, the galvanics line, the "
"stamper-prep line and the biomass boilers are the same as in Plan A."),
]),
H2("What makes it top-notch"),
P("Four things separate this plant from a pressing shop, and they are the reason it can charge "
@@ -164,14 +167,18 @@ def blocks():
"press cycle is logged, and sampled records are compared automatically against the source "
"master.",
"**Efficiency designed in.** Heat is recovered before energy is generated: in order, a flue-gas "
"economiser if the boiler is fired, as much condensate back to the feed tank as possible, then a "
"heat pump that lifts the presses' ~60 °C cooling return into boiler feedwater. Every roof and "
"canopy carries solar: **~640 kWp** on the Payap scenario layout (factory roof ~523 kWp, "
"parking canopies ~54 kWp, office roof ~65 kWp), about 900 MWh a year, of which ~85 % is used "
"on site (~760 MWh, ~38 % of the launch plant's electricity with electric steam); the rest is "
"curtailed, because a factory on PEA's grid runs zero export and is not paid for surplus "
"(estimates). On the Mueang Chi hall the roof and canopies hold ~300 kWp, so the rest would be "
"ground-mounted or wait for the second building's roof. A 271 kWh battery gives ride-through"
"economiser on the biomass boilers, as much condensate back to the feed tank as possible, then "
"a heat pump that lifts the presses' ~60 °C cooling return into boiler feedwater. Solar goes on "
"the factory roof: **~520 kWp** on the Payap scenario layout, about 730 to 780 MWh a year, of "
"which ~87 % is used on site (~633 MWh, ~61 % of the launch plant's ~1,036 MWh a year of "
"electricity); the rest is curtailed, because a factory on PEA's grid runs zero export and is "
"not paid for surplus. With biomass steam the running load is ~230 kW, and an hourly sketch "
"puts the best array for it at ~500 to 550 kWp, so the factory roof sits at that optimum "
"(estimates). The office roof (~65 kWp) and the car and scooter canopies (~54 kWp) are built "
"PV-ready (structure rated for panels, conduit to the main board) and take panels when the "
"load rises with the second Duplex system: ~120 kWp for ~2.4M to 3.1M THB (estimate). On the "
"Mueang Chi hall the factory roof takes ~247 kWp and its canopies are PV-ready too. A 271 kWh "
"battery gives ride-through"
+ pick(
"; array and battery come through the solar PPA: the installer owns and finances them, the "
"plant buys the power. ",
@@ -180,7 +187,8 @@ def blocks():
"galvanics rinse water goes through a zero-discharge evaporator, and 20% of the feedstock is "
"in-house regrind. Boilers and chillers come in identical modules, so spares and service are one "
"routine. At reported northern fuel prices biomass heat costs a quarter to a tenth of electric "
"steam; the fuel choice is open.",
"steam, which is why steam is biomass from launch: it saves ~4.2M THB (~USD 0.13M) a year "
"against electric boilers and keeps the grid demand at ~264 kW instead of ~980 kW (estimates).",
"**Climate control as product quality.** The whole plant runs at 20 to 26 °C, 35 to 60% "
"relative humidity, with particulate filtration sized for Northern Thailand's burning season. "
"Moisture and dust are the two classic causes of noisy records; the plant we visited has "
@@ -197,23 +205,26 @@ def blocks():
"at our planning rates). Second Duplex as a growth step from revenue (section 4.4); full hall "
"as a later option: ~2.9M to 4.4M")],
["Site", "~1,500 m² main building plus a ~379 m² utility yard built for four boiler and four "
"chiller modules, on leased land (~4 rai minimum, 6 to 8 rai with expansion); second "
"chiller modules and a covered biomass fuel store, on leased land (~4 rai minimum, "
"6 to 8 rai with expansion); second "
"building as expansion"],
[pick("Investment, Plan A", "Investment, Plan B"), pick(
"**~THB 177M (~USD 5.35M), rounded to ~180M THB**: the plan investment, ~THB 161.7M (~USD "
"4.90M) at the midpoint with the six levers taken, plus a ramp-up reserve of ~THB 10M to 20M "
"(staff and overheads before volume covers them). From the low to the high end of every "
"block: ~THB 127M to 226M. Estimates: no quote yet for the Classic, the galvanics line "
"**~THB 182M (~USD 5.52M), labelled ~180M THB**: the plan investment, ~THB 167.1M (~USD "
"5.06M) at the midpoint with the six levers taken, plus a ramp-up reserve of ~THB 10M to 20M "
"(staff and overheads before volume covers them). **At the midpoint that is about 2M above "
"180M**; with the low end of the reserve (~177M) it fits. From the low to the high end of "
"every block: ~THB 132M to 233M. Estimates: no quote yet for the Classic, the galvanics line "
"(priced at OMS's reference plus 20 %) or the building",
"**~THB 216M (~USD 6.53M), rounded to ~215M THB**: the plan investment, ~THB 200.6M (~USD "
"6.08M) at the midpoint with everything in, plus a ramp-up reserve of ~THB 10M to 20M (staff "
"and overheads before volume covers them); at the midpoint just within the investor's 180M "
"THB plus 20 % (216M). From the low to the high end of every block: ~THB 156M to 275M. "
"**~THB 217M (~USD 6.56M), labelled ~215M THB**: the plan investment, ~THB 201.6M (~USD "
"6.11M) at the midpoint with everything in, plus a ramp-up reserve of ~THB 10M to 20M (staff "
"and overheads before volume covers them); at the midpoint ~0.6M above the investor's 180M "
"THB plus 20 % (216M), inside 225M. From the low to the high end of every block: ~THB 156M "
"to 277M. "
"Estimates: no "
"quote yet for the Classic, the galvanics line (priced at OMS's reference plus 20 %) or the "
"building")],
["Not in the plan price", "**No contingency** (at the 15 % used in the cost documents, ~THB "
+ pick("24M", "30M") + " at the midpoint): quotes that land high are "
+ pick("25M", "30M") + " at the midpoint): quotes that land high are "
"funded outside the plan or by scope steps (section 8). Also not in "
"it: the central hydraulic plant (not yet costed), the archive's mobile "
"shelving (to quote), CD replication, financing costs, currency moves, "
@@ -222,24 +233,24 @@ def blocks():
"(USD 9k to 30k), section 6.1"],
["Operating result, mature year", pick(
"Central case at 60 % specials: revenue ~USD 3.65M (~THB 120M), EBITDA ~USD 1.73M (~THB "
"57M), operating profit ~USD 1.34M (~THB 44M); break-even on operating profit at ~0.2M "
"57M), operating profit ~USD 1.33M (~THB 44M); break-even on operating profit at ~0.2M "
"records a year. **The adverse case loses money:** EBITDA ~USD 0.23M, operating loss ~USD "
"0.39M (~THB 13M); it would need ~0.9M records a year to cover depreciation and the three "
"presses make 0.58M at that rate. The solar PPA's power price (~USD 0.07M a year in the "
"0.41M (~THB 14M); it would need ~1.0M records a year to cover depreciation and the three "
"presses make 0.58M at that rate. The solar PPA's power price (~USD 0.06M a year in the "
"calculator) is not in these figures. Utilisation and price decide the outcome, not upside "
"(section 9)",
"Central case at 60 % specials: revenue ~USD 3.65M (~THB 120M), EBITDA ~USD 1.73M (~THB "
"57M), operating profit ~USD 1.24M (~THB 41M); break-even on operating profit at ~0.24M "
"records a year. **The adverse case loses money:** EBITDA ~USD 0.23M, operating loss ~USD "
"0.54M (~THB 18M); it would need ~1.1M records a year to cover depreciation and the three "
"0.55M (~THB 18M); it would need ~1.1M records a year to cover depreciation and the three "
"presses make 0.58M at that rate. Cassette, CD-R and tour revenue are not in these figures. "
"Utilisation and price decide the outcome, not upside (section 9)")],
["Payback", pick(
"~3.1 years on the plan price in the central case (2.2 to 4.0 from the low to the high end of "
"the price); ~1.0 year in the favourable case, ~30 years in the adverse case (EBITDA, mature "
"~3.2 years on the plan price in the central case (2.3 to 4.1 from the low to the high end of "
"the price); ~1.1 years in the favourable case, ~31 years in the adverse case (EBITDA, mature "
"year, ramp-up reserve included; estimates)",
"~3.8 years on the plan price in the central case (2.7 to 4.8 from the low to the high end of "
"the price); ~1.2 years in the favourable case, ~36 years in the adverse case (EBITDA, mature "
"~3.8 years on the plan price in the central case (2.7 to 4.9 from the low to the high end of "
"the price); ~1.2 years in the favourable case, ~37 years in the adverse case (EBITDA, mature "
"year, ramp-up reserve included; estimates)")],
["First paying release", "**Open.** The August 2026 calendar gives Q4 2028 to mid-2029 (27 to 33 "
"months from the start of phase 0), but it was drawn for a one-press "
@@ -252,10 +263,11 @@ def blocks():
"crew, because two shifts still need press, finishing, galvanics, QC and maintenance "
"staff (13 to 19 direct production staff in the revenue model)"],
["The ask", pick(
"~THB 177M (~USD 5.35M), the ~180M THB plan, released in tranches against milestones "
"(section 8), starting with phase 0 (~THB 1.3M to 2.6M). BOI caps debt-to-equity at 3:1, so "
"at least a quarter is equity: ~THB 44M (arithmetic, before financing costs)",
"~THB 216M (~USD 6.53M), the ~215M THB plan, released in tranches against milestones "
"~THB 182M (~USD 5.52M), the plan labelled ~180M THB (about 2M above 180M at the midpoint), "
"released in tranches against milestones (section 8), starting with phase 0 (~THB 1.3M to "
"2.6M). BOI caps debt-to-equity at 3:1, so at least a quarter is equity: ~THB 46M "
"(arithmetic, before financing costs)",
"~THB 217M (~USD 6.56M), the ~215M THB plan, released in tranches against milestones "
"(section 8), starting with phase 0 (~THB 1.3M to 2.6M). BOI caps debt-to-equity at 3:1, so "
"at least a quarter is equity: ~THB 54M (arithmetic, before financing costs)")],
]),
@@ -267,12 +279,13 @@ def blocks():
"presses (one Duplex system and the Classic) and takes six cost levers. ")
+ "Both carry the ramp-up reserve and neither carries a contingency, and in both the second Duplex "
"system is a growth step from revenue. What decides between them is no longer demand, because both "
"make the same records: it is whether the investor funds ~THB 39M (~22 %) more at launch for what "
"make the same records: it is whether the investor funds ~THB 35M (~19 %) more at launch for what "
"Plan A leases or buys from revenue. Plan B owns its solar array (no PPA power bill), measures "
"every stamper fully from the first release, makes tours and the Payap "
"programmes possible from the start, sells cassette and CD-R from launch, owns its crane and buys "
"its utilities with local service. On the modelled numbers that extra earns little (the same "
"EBITDA in the revenue model, ~USD 0.07M a year more in the calculator for the PPA power bill the "
"its compressor with local service; both run on biomass steam. On the modelled numbers that extra "
"earns little (the same EBITDA in the revenue model, ~USD 0.06M a year more in the calculator for "
"the PPA power bill the "
"owned array avoids; more depreciation, a longer payback, a deeper adverse case), so Plan A has "
"the better modelled return and Plan B the more complete plant. Most of Plan B's items can be added to Plan A "
"later from revenue; the corridor is cheaper to build in from the start, and owning the array "
@@ -280,27 +293,31 @@ def blocks():
"2025, section 7.1), so neither plan earns a tax benefit on the array. "
"Section 8 sets the two side by side."),
T(["", "Plan A", "Plan B"], [
["Plan price (ramp-up reserve in, no contingency)", "~THB 177M (~USD 5.35M); ~127M to 226M from "
"the low to the high end", "~THB 216M (~USD 6.53M); ~156M to 275M from the low to the high end"],
["Plan price (ramp-up reserve in, no contingency)", "~THB 182M (~USD 5.52M), ~2M above 180M at "
"the midpoint; ~132M to 233M from the low to the high end", "~THB 217M (~USD 6.56M); ~156M to "
"277M from the low to the high end"],
["Presses", "3: one Duplex system (2 semi-automatic) and one Classic", "The same 3"],
["Records a year at 60 % specials", "~0.58M to 0.90M (central 0.74M)", "The same"],
["Steam", "Biomass from launch: two 500 kg/h modules and a covered fuel store", "The same"],
["EBITDA, central case", "~USD 1.73M (~THB 57M)", "~USD 1.73M (~THB 57M); cassette and CD-R "
"not modelled"],
["Operating profit, central case", "~USD 1.34M (~THB 44M)", "~USD 1.24M (~THB 41M)"],
["Payback on the plan price, central case", "~3.1 years (2.2 to 4.0)", "~3.8 years (2.7 to 4.8)"],
["Adverse case", "Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.39M",
"Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.54M"],
["Operating profit, central case", "~USD 1.33M (~THB 44M)", "~USD 1.24M (~THB 41M)"],
["Payback on the plan price, central case", "~3.2 years (2.3 to 4.1)", "~3.8 years (2.7 to 4.9)"],
["Adverse case", "Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.41M",
"Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.55M"],
["What Plan A gives up, what Plan B buys", "At launch: solar through a PPA (a power bill of "
"~USD 0.07M a year instead of owning the array), no confocal or profiler, no visitor corridor "
"or tours, no cassette or CD-R, a rented crane; Chinese-made boilers and compressor",
"~THB 39M more at launch: owned solar (~640 kWp, every roof and canopy covered) and battery, "
"~USD 0.06M a year instead of owning the array), no confocal or profiler, no visitor corridor "
"or tours, no cassette or CD-R, a rented crane; a Chinese-made compressor",
"~THB 35M more at launch: owned solar (~520 kWp on the factory roof) and battery, "
"so no PPA bill, the full "
"metrology stack, the visitor corridor and tours, cassette and CD-R, a bought crane; "
"Thai-supplied boilers and compressor"],
"a Thai-supplied compressor"],
], widths_mm=[42, 64, 64], font_pt=8.5,
caption="Estimates: mature year at 60 % specials, from the revenue model; payback counted on the "
"whole plan price including the reserve. A central EBITDA margin of ~47 % (both plans) is "
"far above the 15 to 25 % pressing plants earn; read the adverse case as the honest one."),
"far above the 15 to 25 % pressing plants earn; read the adverse case as the honest one. "
"The revenue model does not split energy cost by plan or fuel, so the PPA bill and the "
"biomass saving show only in the calculator."),
H2("Where we are, and what we ask"),
P("The project is at the planning stage. Industry outreach has run for several years. Alexander and "
"Simona attended **Making Vinyl Europe in Haarlem** (30 September to 2 October 2026): most people "
@@ -326,31 +343,34 @@ def blocks():
"of the investment band: " + pick(
"the Newbilt re-quote for the Duplex system (with an EX 35 price) and the Classic, a Pheenix "
"quote for the galvanics line, the building price request with the soil test, metrology "
"distributor quotes and a solar PPA offer.",
"distributor quotes, a solar PPA offer and a Chinese biomass-boiler quote (one ~2M THB or "
"more below the Thai package brings Plan A's midpoint back to 180M).",
"the Newbilt re-quote for the Duplex system (with an EX 35 price) and the Classic, a Pheenix "
"quote for the galvanics line, the building price request with the soil test, and metrology "
"distributor quotes."),
pick(
"**Then the Plan A round, ~THB 177M (~USD 5.35M), rounded to ~180M THB**, including the "
"**Then the Plan A round, ~THB 182M (~USD 5.52M), labelled ~180M THB**, about 2M above 180M "
"at the midpoint, including the "
"ramp-up reserve and without contingency, released in tranches against milestones: BOI "
"certificate and lease signed, long-lead orders (lathe, galvanics, stamper prep, presses, "
"boiler and chiller modules), building contract, fit-out, commissioning in sequence "
"(section 8). From the low to the high end of every block the plan runs from ~THB 127M to "
"226M; quotes that land high are funded outside the plan or by scope steps.",
"**Then the Plan B round, ~THB 216M (~USD 6.53M), rounded to ~215M THB**, including the "
"ramp-up reserve and without contingency, just within the investor's 180M THB plus 20 % "
"(216M) at the midpoint, released in tranches against milestones: BOI certificate and lease signed, "
"(section 8). From the low to the high end of every block the plan runs from ~THB 132M to "
"233M; quotes that land high are funded outside the plan or by scope steps.",
"**Then the Plan B round, ~THB 217M (~USD 6.56M), labelled ~215M THB**, including the "
"ramp-up reserve and without contingency, at the midpoint ~0.6M above the investor's 180M "
"THB plus 20 % (216M) and inside 225M, released in tranches against milestones: BOI "
"certificate and lease signed, "
"long-lead orders (lathe, galvanics, stamper prep, presses, boiler and chiller modules), "
"building contract, fit-out, commissioning in sequence (section 8). From the low to the high "
"end of every block the plan runs from ~THB 156M to 275M; quotes that land high are funded "
"end of every block the plan runs from ~THB 156M to 277M; quotes that land high are funded "
"outside the plan or by scope steps."),
"**Decisions needed from the investor:** which version to fund, Plan A or Plan B (both make the "
"same records, so the choice is ~THB 39M more at launch for what Plan A leases or defers; the "
"same records, so the choice is ~THB 35M more at launch for what Plan A leases or defers; the "
"Classic, Pheenix and EX 35 quotes, the solar PPA offer and the building quote settle the "
"numbers); the equity/debt mix (BOI requires debt-to-equity of at most 3:1, so at "
"least ~THB " + pick("44M of Plan A's ~177M", "54M of Plan B's ~216M") + " is equity); CD "
"replication, yes or no (it must be in the BOI application from the start); and the steam fuel, "
"electric or biomass.",
"least ~THB " + pick("46M of Plan A's ~182M", "54M of Plan B's ~217M") + " is equity); and CD "
"replication, yes or no (it must be in the BOI application from the start). The steam fuel is "
"no longer open: both versions run on biomass steam from launch.",
"**Co-investment:** Ploy Printing, the Chiang Mai print and packaging house that will produce "
"the plant's jackets and sleeves, has expressed the intention to invest alongside the lead "
"investor. Terms are not yet discussed; the intended structure is described in section 12.",
@@ -536,9 +556,8 @@ def blocks():
"Newbilt Duplex system (2 presses, main + colour extruder) and one Newbilt Classic",
pick("Launch plant; second Duplex as growth option", "At launch; second Duplex as growth option")],
["Steam, cooling and compressed air engineered locally", "The largest energy loads; efficiency "
"lives here", "Boiler hall and chiller compound for four modules each; " + pick(
"2 x 500 kg/h boilers (Chinese route) and 2 x 250 kW chillers",
"2 x 500 kg/h boilers (Thai suppliers) and 2 x 250 kW chillers") + "; heat recovery designed in",
"lives here", "Boiler hall and chiller compound for four modules each; 2 x 500 kg/h biomass "
"boilers with a covered fuel store and 2 x 250 kW chillers; heat recovery designed in",
LP + "; modules added with presses"],
["Whole-plant climate and particulate control", "Moisture and dust are the two classic record "
"defects", "20 to 26 °C, 35 to 60% RH, filtration for the burning season, tighter in clean "
@@ -566,10 +585,11 @@ def blocks():
"mobile shelving (to quote)", LP],
["Renewable energy and closed-loop water", "Cost, resilience, brand" + pick(
"", "; the owned battery may qualify for BOI as storage"),
pick("PV on every roof and canopy (~640 kWp) and a 271 kWh battery through a solar PPA "
"(installer-owned), closed cooling loop, zero process discharge",
"PV on every roof and canopy (~640 kWp) and a 271 kWh battery (owned), closed cooling "
"loop, zero process discharge"),
pick("PV on the factory roof (~520 kWp; office roof and canopies PV-ready) and a 271 kWh "
"battery through a solar PPA (installer-owned), biomass steam, closed cooling loop, zero "
"process discharge",
"PV on the factory roof (~520 kWp; office roof and canopies PV-ready) and a 271 kWh "
"battery (owned), biomass steam, closed cooling loop, zero process discharge"),
pick("Launch plant (PV and battery through a solar PPA)", "At launch")],
["Trained people and a safety program", "Steam at 10 bar, hydraulics at 180 bar, plating "
"chemistry", "Vendor commissioning training, in-house program, PPE, clean rooms",
@@ -721,23 +741,19 @@ def blocks():
P("The Pheenix Alpha AD12 automatic press left the plan in October 2026 and stays the comparison if "
"the Classic re-quote disappoints."),
P("**What Newbilt deliberately excludes**, and what is engineered and sourced locally: steam and "
"cooling. " + pick(
"At Newbilt's per-machine figures the three presses draw about 450 to 540 kg/h of steam "
"at 10 bar / 180 °C and up to ~390 kW of cooling on a hot afternoon (estimates; the Classic is "
"counted as one press and extruder until Newbilt states its own figures). They are met by **two "
"500 kg/h boiler modules (B-1, B-2) and two 250 kW chiller modules (CH-1, CH-2)**, in a boiler "
"hall and an open chiller compound built for four modules each; a second Duplex adds a third "
"chiller module, and the fourth positions are reserve and growth. Plan A buys the two boiler "
"modules through the Chinese route: ASME-stamped 1.25 MPa units from makers with Thai "
"references, installed by a Thai contractor and verified under the Thai rules for imported "
"boilers (section 5.4). ",
"At Newbilt's per-machine figures the three presses draw about 450 to 540 kg/h of steam "
"at 10 bar / 180 °C and up to ~390 kW of cooling on a hot afternoon (estimates; the Classic is "
"counted as one press and extruder until Newbilt states its own figures). They are met by **two "
"500 kg/h boiler modules (B-1, B-2) and two 250 kW chiller modules (CH-1, CH-2)**, in a boiler "
"hall and an open chiller compound built for four modules each; a second Duplex adds a third "
"chiller module, and the fourth positions are reserve and growth. Plan B buys the boiler "
"modules and the compressor from Thai suppliers, with local service. ")
"cooling. At Newbilt's per-machine figures the three presses draw about 450 to 540 kg/h of steam "
"at 10 bar / 180 °C and up to ~390 kW of cooling on a hot afternoon (estimates; the Classic is "
"counted as one press and extruder until Newbilt states its own figures). They are met by **two "
"500 kg/h biomass boiler modules (B-1, B-2) and two 250 kW chiller modules (CH-1, CH-2)**, in a "
"boiler hall and an open chiller compound built for four modules each; a second Duplex adds a "
"third chiller module, and the fourth positions are reserve and growth. The boilers burn wood "
"chips from a covered fuel store, in both versions of the plan: ~6M to 10M THB installed with "
"fuel feed, grate and dust control, plus ~1M to 2M THB for the fuel store and handling, and "
"~0.67M THB of fuel a year (estimates). " + pick(
"Plan A buys the compressor through the Chinese route. That route priced only electric "
"boilers; Chinese makers also build biomass boilers but none is priced yet, and a quote ~2M "
"THB or more below the Thai package would bring Plan A's midpoint back to 180M (section 5.4). ",
"Plan B buys the compressor from a Thai supplier, with local service. ")
+ "The presses share one central hydraulic plant and one "
"compressed-air plant through ring mains with a valved tee at every press position, so a new press "
"is connected without stopping the others; the standby pump set, accumulators and ring main are "
+198 -157
View File
@@ -279,23 +279,20 @@ def blocks():
"one observation: the steam's job is to heat the moulds and the cooling water's job is to remove "
"that same heat again. Roughly 98% of the press cooling load is heat the steam put into the "
"moulds, and the press cooling return leaves at about 60 °C. That warm return, the condensate and "
"a fired boiler's flue gas are heat the plant reuses before it generates anything new."),
"the biomass boilers' flue gas are heat the plant reuses before it generates anything new."),
H3("Utilities: backbone once, modules with the presses"),
P("Everything that is cheap to oversize now and costly to change in a running plant is built once, "
"for the five-press fleet: the boiler hall and the chiller compound with room for four modules "
"each, the steam main and condensate return, the cooling mains, the heat-exchanger frame and "
"tanks, and hydraulic and compressed-air ring mains with a valved, capped tee at every press "
"position. The machines that make steam and cold water come in identical modules: " + pick(
"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 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 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). ") +
"position. The machines that make steam and cold water come in identical modules: at launch "
"two 500 kg/h biomass boilers (B-1, B-2) for the 450 to 540 kg/h peak (one ~1 t/h package is "
"the alternative) 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. Both plans make their steam "
"from biomass (below); " + pick(
"the boilers come from a Thai maker and the compressor from a Chinese brand's Thai office. ",
"the boilers and the compressor come from Thai suppliers, with local service. ") +
"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 "
@@ -305,7 +302,7 @@ def blocks():
"station, ring main) is not costed yet; a Thai hydraulic power unit builder quotes it."),
T(["Measure", "What it does", "Effect"], [
["1. Flue-gas economizer (fired boilers)", "Recovers stack heat into the boiler feedwater; the "
"first measure to investigate on a biomass or LPG bank (an electric boiler has no flue gas)",
"first measure to investigate on the biomass bank (an electric boiler has no flue gas)",
"Outlet and stack temperatures are vendor figures; rice-husk ash is abrasive, so the RFQ asks "
"for cleaning, wear protection and a bypass"],
["2. Condensate return", "As much clean, hot condensate back to the feed tank as possible",
@@ -344,14 +341,15 @@ 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. 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:"),
"charge. For the five-press fleet the backbone is built for, on biomass steam with no electric "
"boiler on the grid, that is roughly 4.5M to 6.8M THB a year before solar, 0.7M to 1.1M of it "
"demand charge, on an 800 to 1,000 kVA connection; the launch plant's peak demand is ~264 kW, "
"against ~980 kW had its steam been electric (estimates). Three design consequences:"),
B([
"**Biomass heat is far cheaper than electric steam** (below): the demand charge follows the "
"boiler's full-power draw, and the peak window covers 13 of the 16 production hours.",
"**Every roof gets PV, not solar thermal.** Self-consumed PV is worth ~3.7 THB/kWh" + pick(
"**Steam comes from biomass in both plans,** because biomass heat is far cheaper than "
"electric steam (below): an electric boiler's full-power draw would set the demand charge, and "
"the peak window covers 13 of the 16 production hours.",
"**The factory roof gets PV, not solar thermal.** Self-consumed PV is worth ~3.7 THB/kWh" + pick(
" of grid power displaced, less the PPA price the plant pays for it (below)", "") +
"; surplus earns nothing, because a factory on PEA's grid runs zero export (below); and PV "
"cannot lower the demand charge, because the peak window runs to 22:00, long after sunset.",
@@ -361,37 +359,47 @@ def blocks():
]),
H3("Renewable energy"),
KV([
["PV on every roof and canopy", "~640 kWp (decided October 2026: as much roof as possible). In "
"the Payap scenario model the calculator draws the factory roof "
"at ~523 kWp (901 modules of a generic 580 W placeholder; no "
"module chosen yet), the car and scooter canopies at ~54 kWp and "
"the office roof at ~65 kWp; the covered link and the utility "
"yard are left out. ~900 MWh a year at 1,400 to 1,500 kWh/kWp, "
"~85% of it used on site (~760 MWh: two shifts on 300 days, a "
"~60 kW base load off-shift and the battery), about 38% of the "
"launch plant's ~2,000 MWh a year with electric steam "
"(estimates). " + pick(
["PV on the factory roof", "~520 kWp (decided October 2026: PV on the factory only, the other "
"roofs PV-ready). In the Payap scenario model the calculator draws "
"the factory roof at ~523 kWp (901 modules of a generic 580 W "
"placeholder; no module chosen yet). ~730 to 780 MWh a year at "
"1,400 to 1,500 kWh/kWp, ~87% of it used on site (~633 MWh: two "
"shifts on 300 days, a ~60 kW base load off-shift and the "
"battery), about 61% of the launch plant's ~1,036 MWh a year of "
"electricity with biomass steam (estimates). " + pick(
"Taken through a solar PPA (below): the plant pays the PPA price for this power instead of "
"buying the array, so its saving is the gap between that price and the ~3.7 THB/kWh of "
"grid power it displaces",
"Saves ~2.8M to 3.0M THB a year at ~3.7 THB/kWh self-consumed and pays back in ~4.2 to 5.9 "
"years at 20 to 26 THB/W installed; the last ~340 kWp beyond the first ~300 pay back in "
"~4.9 to 6.3 years, because more of their yield is curtailed on Sundays (estimates)")],
["Zero export", "The ~15% the plant cannot use, mostly on Sundays and holidays, is curtailed, not "
"Saves ~2.3M to 2.5M THB a year at ~3.7 THB/kWh self-consumed and pays back in ~4.1 to 5.8 "
"years at 20 to 26 THB/W installed (estimates)")],
["Why ~520 kWp", "With biomass steam the running load is ~230 kW, with no electric boilers. An "
"hourly sketch (two shifts on 300 days, ~60 kW off-shift base load, the 271 kWh "
"battery, PEA's time-of-use tariff with Ft, 23,000 THB/kWp, 25 years at 8%) "
"puts the best array at ~500 to 550 kWp: the net present value peaks there, and "
"the kWp above ~550 lose money because more of their yield is curtailed. The "
"factory roof's ~520 kWp sits at that optimum (estimates)"],
["PV-ready: office roof and canopies", "The office roof (~65 kWp) and the car and scooter canopies "
"(~54 kWp: car ~42, scooter ~13) are built ready for panels: structure rated for them (~20 kg/m² "
"plus wind uplift), conduit and a cable route to the main board, and a spare way for a later "
"inverter. Panels go on when the load rises with the second Duplex system: ~120 kWp for ~2.4M "
"to 3.1M THB at 20 to 26 THB/W (estimate). The preparation is small (estimate) and sits in the "
"building and site works; the construction RFQ already specifies canopy steel carrying PV"],
["Zero export", "The ~13% the plant cannot use, mostly on Sundays and holidays, is curtailed, not "
"sold: a factory on PEA's grid runs zero export, with no payment for surplus and "
"a zero-export controller (reverse-power relay) as part of the interconnection "
"(CapSolar and Sahawatthanakit, 2026)"],
["On the Mueang Chi hall", "The 60 × 25 m hall of section 6.2 takes only ~300 kWp: ~247 kWp on "
"the 1,523 m² monopitch roof (425 modules) and ~40 to 54 kWp on the "
"parking canopies. The rest would need ground mount on the ~70 m of "
"plot behind the building (not covered by the rooftop exemption, so "
"it may still need a factory permit) or the phase 2 roof (~251 "
"kWp)"],
["On the Mueang Chi hall", "The factory roof of the 60 × 25 m hall of section 6.2 takes only "
"~247 kWp (425 modules on the 1,523 m² monopitch roof), about half "
"the optimum; its parking canopies are PV-ready too (~40 to 54 kWp). "
"More would need ground mount on the ~70 m of plot behind the "
"building (not covered by the rooftop exemption, so it may still "
"need a factory permit) or the phase 2 roof (~251 kWp)"],
["Battery", "271 kWh Gobel Power LiFePO4 rack (15 stacked 18 kWh packs, 8,000+ cycles), USD "
"39,900 to 58,000 listed (battery only; ~2.0M to 3.5M THB installed with enclosure, fire protection and "
"controls, estimate), 50 to 60 day lead. Roughly an hour of the chiller bank's "
"peak draw: ride-through, not off-grid autonomy"],
["Inverters", "Deye three-phase hybrid units (30 to 80 kW class), ~500 kVA in all (estimate); "
["Inverters", "Deye three-phase hybrid units (30 to 80 kW class), ~430 kVA in all (about nine 50 kW "
"units, estimate); "
"Thai distribution via Solar Nicolo; Deye is a supported protocol on the Gobel "
"battery management"],
["Roof design", "Monopitch at 10° falling toward ESE puts the whole roof on one plane at ~98% "
@@ -400,7 +408,7 @@ def blocks():
"burning-season dust"],
["Permits", "Since Ministerial Regulation No. 3 B.E. 2567 (in force 28 December 2024) rooftop "
"solar outside industrial estates is not a factory, so it needs no Ror.Ngor. 4 "
"licence at any size. At ~500 kVA of inverters, under the 1,000 kVA line of the "
"licence at any size. At ~430 kVA of inverters, under the 1,000 kVA line of the "
"Energy Regulatory Commission (ERC), an ERC exemption notification replaces a "
"generation licence. PEA approves the interconnection with zero-export control in 3 "
"to 6 months, filed in parallel with procurement (CapSolar, 2026); the roof load is "
@@ -410,12 +418,13 @@ def blocks():
"against PVGIS before committing" + pick("; the PPA offer itself, price and "
"terms", "")],
pick(["Solar PPA (this plan)", "An installer owns and finances the PV and the battery, and the "
"plant buys the power at a price still to quote. The PPA covers the full ~640 kWp; the "
"calculator carries 3.0 THB/kWh (estimate) for the ~760 MWh used on site, ~2.3M THB or "
"~0.07M USD a year on the energy line. That keeps the PV EPC (USD 388k to 504k, 12.8M to "
"16.6M THB at 20 to 26 THB/W) and the battery (USD 61k to 106k) out of the capital round: "
"~17.5M THB less at the midpoint, one of the six levers in section 8. The launch plant's "
"power bill (~0.75M THB a month before solar, estimate) is well above the 100,000 THB a "
"plant buys the power at a price still to quote. The PPA covers the ~520 kWp factory "
"roof; the calculator carries 3.0 THB/kWh (estimate) for the ~633 MWh used on site, ~1.9M "
"THB or ~0.06M USD a year on the energy line. That keeps the PV EPC (USD 315k to 410k, "
"10.4M to 13.5M THB at 20 to 26 THB/W) and the battery (USD 61k to 106k) out of the capital "
"round: ~14.7M THB less at the midpoint, one of the six levers in section 8. The launch "
"plant's power bill (~0.36M THB a month before solar with biomass steam: ~1,036 MWh at the "
"blended ~3.81 THB/kWh plus the demand charge, estimate) is well above the 100,000 THB a "
"month CapSolar asks of a PPA site; PPA discounts run 10 to 15 % off the tariff at MEAei "
"and 10 to 30 % at CapSolar, so the calculator's ~21 % is to be quoted. Leasing gives up no BOI benefit on the array: BOI stopped promoting solar "
"installations on 1 July 2025 (Announcement 3/2568, section 7.1). A PPA developer selling "
@@ -424,77 +433,94 @@ def blocks():
"above and, if the PPA includes the battery, the battery's possible BOI eligibility as "
"storage (to confirm with the BOI consultant). The PPA offer is asked against the "
"specification above"],
["Owned (this plan)", "The plant buys the array and the battery: PV EPC USD 388k to 504k "
"(12.8M to 16.6M THB for ~640 kWp, 20 to 26 THB/W installed with inverters at Thai 2026 "
"market prices; the canopy steel is in the building and site works) and the battery, "
"installed, USD 61k to 106k (2.0M to 3.5M THB): ~17.5M THB together at the midpoint, "
"estimates, section 8. Owning them saves the power bill a PPA would carry: at the "
"calculator's 3.0 THB/kWh (estimate, to quote) for the ~760 MWh used on site, ~2.3M THB "
"or ~0.07M USD a year. A solar PPA (an installer owns and finances them, the plant buys "
"the power at a price still to quote) would take ~17.5M THB out of the capital round at "
"the midpoint at the cost of that bill. The array itself carries no BOI benefit: BOI "
["Owned (this plan)", "The plant buys the array and the battery: PV EPC USD 315k to 410k "
"(10.4M to 13.5M THB for ~520 kWp on the factory roof, 20 to 26 THB/W installed with "
"inverters at Thai 2026 market prices; the PV-ready canopy steel and conduit are in the "
"building and site works) and the battery, installed, USD 61k to 106k (2.0M to 3.5M THB): "
"~14.7M THB together at the midpoint, estimates, section 8. Owning them saves the power bill "
"a PPA would carry: at the calculator's 3.0 THB/kWh (estimate, to quote) for the ~633 MWh "
"used on site, ~1.9M THB or ~0.06M USD a year. A solar PPA (an installer owns and finances "
"them, the plant buys the power at a price still to quote) would take ~14.7M THB out of the "
"capital round at the midpoint at the cost of that bill. The array itself carries no BOI benefit: BOI "
"stopped promoting solar installations on 1 July 2025 (Announcement 3/2568, section "
"7.1); the owned battery may still qualify as storage (to confirm with the BOI "
"consultant)"]),
]),
H3("Steam: the open engineering choice"),
P("The boilers' fuel is still open; the modular bank works with either. There is no natural gas "
"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, 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)"],
["Running cost, mature two shifts", "~5.2M to 6.0M THB a year, including 0.8M to 1.0M of extra "
"demand charge for the five-press bank", "~0.6M to 1.2M THB a year of fuel, plus handling "
"and ash"],
["Boiler package, 2 × 500 kg/h", pick("~2.8M to 5.5M THB through the Chinese route, the "
"plan's price (4.5M to 7M from Thai suppliers)",
"4.5M to 7M THB (Thai suppliers); the plan's price"),
"~6M to 10M THB, plus the fuel store"],
["Grid", "Peak ~950 to 1,330 kW: PEA Schedule 4, 1,250 to 1,600 kVA", "Unchanged, ~800 to "
"1,000 kVA"],
["Also", "Cleanest permitting, no fuel logistics, no stack", "Fuel contracts, a dry store sized "
"for the monsoon, ash handling, a 14 m stack and its emissions"],
], widths_mm=[36, 64, 70], font_pt=8.5),
H3("Steam: biomass in both plans"),
P("Both plans make their steam from biomass (decided October 2026): two 500 kg/h biomass modules "
"(B-1, B-2) or one ~1 t/h package, Getabec class, 6M to 10M THB installed with the fuel feed, "
"grate and dust control, plus a fuel store and handling block of 1.0M to 2.0M THB (a covered "
"store, a chip bay, ash bins and a compact loader; utilities CSV, estimates). The electric boiler "
"bank (4.5M to 7M THB from Thai suppliers, 2.8M to 5.5M through the Chinese route) is now the "
"alternative, not the plan. There is no natural gas pipeline in Northern Thailand, so gas would "
"mean a bulk LPG tank on site with hazardous-storage separation and licensing, and diesel a fuel "
"tank with price exposure. The two routes without a fossil tank, compared for the launch plant "
"at ~850k records a year (~1,403 t of steam, ~954 MWh of heat; estimates):"),
T(["", "Biomass boiler bank (~80%): the plan", "Electric boiler bank (~98%): the alternative"], [
["Price of heat", "~0.5 to 0.9 THB/kWh at 1.35 to 2 THB/kg delivered (reported market prices, "
"October 2026; no supplier quote yet), ~0.7 planned", "~3.9 THB/kWh, plus the demand charge"],
["Running cost, launch plant", "~0.67M THB a year of fuel at ~0.7 THB/kWh: about 300 t of "
"air-dry wood or ~460 t of fresh chips, plus handling and ash", "~4.9M THB a year: ~973 MWh at "
"the blended ~3.81 THB/kWh plus the demand charge on 2 × 360 kW of boilers"],
["Boiler package, 2 × 500 kg/h", "~6M to 10M THB installed, plus 1.0M to 2.0M for the fuel "
"store and handling", "4.5M to 7M THB from Thai suppliers, ~2.8M to 5.5M through the Chinese "
"route"],
["Grid", "Launch plant peak demand ~264 kW; 800 to 1,000 kVA for the five-press backbone",
"~980 kW at launch; the five presses ~950 to 1,330 kW, PEA Schedule 4, 1,250 to 1,600 kVA"],
["Also", "Fuel contracts and a monsoon stock, ash handling, a 14 m flue stack with a dust "
"collector, more maintenance, a certified boiler attendant, emission limits in the permit",
"Cleanest permitting, no fuel logistics, no stack"],
], widths_mm=[32, 70, 68], font_pt=8.5),
P("**Reading it.** The electric boiler is the more efficient machine; biomass is by far the cheaper "
"heat. At maturity the fuel saving of ~4.0M to 5.4M THB a year repays the biomass premium in "
"under a year (estimate), so the earlier staged path (start electric, add biomass later) is a "
"permitting and fuel-logistics choice, not a cost one: every year on electric steam costs roughly "
"1.4M to 5.4M THB more. The site can decide it too: next to the pharmaceutical facility on Payap "
"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). 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 "
"plant and competes for the same fuel. The team's own 60 rai of forestry-classified land could "
"supply 80 to 135 t a year as short-rotation coppice once its title is checked; at market prices "
"that is worth only ~0.1M to 0.25M THB a year, so its value is supply security and the story "
"('records pressed with steam from our own trees'), not the fuel bill. Next step: written quotes "
"from Pa Sak and two or three chip suppliers, priced by moisture, before the boiler decision."),
P("**Where the boilers come from.** " + pick(
"The plan buys the two modules through the Chinese route: boiler bodies from a Chinese maker "
"with Thai references (ZOZEN, Sitong, Fangkuai, Taiguo), installed with the feed tank, pumps, "
"header, controls and piping by a Thai boiler contractor, for roughly 2.8M to 5.5M THB "
"installed against 4.5M to 7M from Thai suppliers, about 1.6M THB less at the midpoint. The "
"compressor is a Chinese brand bought through its Thai office (Kaishan and Denair have one), "
"so service stays local; with it the route saves ~1.9M THB at the midpoint (estimates from "
"listings, not quotes). ",
"The plan buys the two modules and the compressor from Thai suppliers (4.5M to 7M THB "
"installed for the boilers). Chinese makers with Thai references (ZOZEN, Sitong, Fangkuai, "
"Taiguo) could supply the boilers for roughly 2.8M to 5.5M THB installed, about 1.6M THB "
"less at the midpoint, and with a Chinese compressor brand bought through its Thai office "
"~1.9M less (estimates from listings, not quotes): a step if quotes land high. ") +
"The specification is a 1.25 MPa design to ASME Section I with the S stamp; most Chinese packaged "
"electric units are rated 0.4 to 0.8 MPa and cannot deliver 10 bar. An imported boiler must meet "
"TIS, ASME, JIS, EN or an equivalent standard and be verified by a certification body registered "
"with the Department of Industrial Works (DIW), engaged before the order (section 7). No mainland "
"maker has a verified Thai service partner, so a Thai boiler contractor and the certification "
"body are the service layer either way. Chillers and air conditioning, the larger blocks, have "
"not been checked for a Chinese route yet."),
"heat. At launch biomass saves **~4.2M THB (~0.13M USD) a year** against electric steam, so it "
"repays its higher price and the fuel store (~3.8M to 5.4M THB more at the midpoints than a Thai "
"or a Chinese electric bank) in about a year (estimates). Without electric boilers the plant's "
"demand stays at ~264 kW instead of ~980 kW, which also means a smaller transformer and PEA "
"deposit (not re-priced; an upside). The earlier staged path (start electric, add biomass later) "
"is dropped: each year on electric steam would cost about that ~4.2M THB more. The site still "
"matters: next to the pharmaceutical facility on Payap land a biomass stack is a hard sell, so "
"the GMP-neighbour check (section 6.1) asks about it before any design work, and the electric "
"bank is the fall-back there."),
P("**What biomass brings with it.** Fuel contracts and a dry stock for the monsoon: the 42 m² store "
"drawn in the utility yard holds ~6 to 7 weeks of fresh chips, and a 3-month monsoon stock needs "
"~80 m² (estimates). Ash to handle and dispose of. The 14 m flue stack and the dust collector, "
"already drawn in the utility yard. More maintenance than an electric bank, and a certified boiler "
"attendant from the maintenance team as the licensed boiler controller (section 7.2). Boiler "
"registration and the air-emission limits for a solid-fuel boiler in the permit work (to confirm, "
"section 7.2). And a visible point source in Chiang Mai's burning season (February to April): dust "
"control matters for the story as much as for the permit, and buying farm residues that would "
"otherwise be burned in the fields is the other half of that story."),
P("**Fuel.** The launch plant burns about 300 t of air-dry wood or ~460 t of fresh chips a year at "
"~850k records; the five-press fleet at about 1.0 million records would burn 350 to 400 t air-dry "
"(~540 to 620 t as fresh chips; estimates). 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 plant and competes for the same fuel. The team's own 60 rai of "
"forestry-classified land could supply 80 to 135 t a year as short-rotation coppice, an upside "
"once its title is checked; at market prices that is worth only ~0.1M to 0.25M THB a year, so its "
"value is supply security and the story ('records pressed with steam from our own trees'), not "
"the fuel bill. Next step: written quotes from Pa Sak and two or three chip suppliers, priced by "
"moisture, before the boiler order."),
P("**Where the boilers come from.** Both plans price the biomass modules from a Thai maker with "
"Thai fabrication and service (Getabec class, 6M to 10M THB installed; utilities CSV, estimate). "
"Chinese makers build biomass boilers too (ZOZEN DZL, Sitong DZL and SZL, Taiguo, Yongxing), but "
"none is priced yet: the Chinese route checked so far priced only electric boilers. " + pick(
"That makes a Chinese biomass quote a decision point for this plan: one ~2M THB or more below "
"the Thai package would bring Plan A back under 180M THB at the midpoint. What this plan takes "
"through the Chinese route is the compressor, a Chinese brand bought through its Thai office "
"(Kaishan and Denair have one) so service stays local, ~0.25M THB less at the midpoint "
"(estimate from listings, not a quote). ",
"A Chinese biomass quote is a step if quotes land high, and so is a Chinese compressor brand "
"bought through its Thai office (Kaishan and Denair have one), ~0.25M THB less at the midpoint "
"(estimate from listings, not a quote); this plan buys the compressor from a Thai supplier. ") +
"Any module, Thai or imported, is specified as a 1.25 MPa design to ASME Section I with the S "
"stamp (most Chinese packaged electric units are rated 0.4 to 0.8 MPa and cannot deliver 10 bar). "
"An imported boiler must meet TIS, ASME, JIS, EN or an equivalent standard and be verified by a "
"certification body registered with the Department of Industrial Works (DIW), engaged before the "
"order (section 7). No mainland maker has a verified Thai service partner, so for an imported "
"boiler a Thai boiler contractor and the certification body would be the service layer. Chillers "
"and air conditioning, the larger blocks, have not been checked for a Chinese route yet."),
H3("Water"),
P("Water arriving is still open: no source is confirmed for the candidate site (PWA mains, a "
"licensed deep well, or both), and a water analysis comes before the boiler and chiller RFQs "
@@ -522,12 +548,13 @@ def blocks():
"acceptable the cost drops materially, and that question is on the RFQ list."),
CALL("Efficiency in one paragraph, for the investor", "Steam and cooling are built once as a "
"backbone and filled with identical modules as presses arrive; heat is recovered from the "
"flue gas, the condensate and the press returns before more is generated; every roof and "
"canopy carries PV" + pick(" through a solar PPA", "") + " (~640 kWp, over a third of the "
"launch plant's electricity even with electric steam, estimate), with a battery for "
"ride-through; no "
"process water is discharged; a fifth of the plastic is reclaimed; and biomass steam, if "
"chosen, costs a quarter to a tenth of electric steam. The same choices push the energy line "
"flue gas, the condensate and the press returns before more is generated; steam comes from "
"biomass in both plans, at about a seventh of what electric steam would cost (~0.67M against "
"~4.9M THB a year at launch, estimate); the factory roof carries PV" +
pick(" through a solar PPA", "") + " (~520 kWp, ~61% of the launch plant's electricity, "
"estimate), with the office roof and the canopies ready for more panels and a battery for "
"ride-through; no process water is discharged; and a fifth of the plastic is reclaimed. The "
"same choices push the energy line "
"toward its low end and hedge Thai tariff rises; the heat recovery and automation can count "
"toward BOI's Smart and Sustainable Industry measure" + pick(
"", " and the owned battery may qualify as storage") + " (section 7.1; BOI no longer "
@@ -688,7 +715,8 @@ def blocks():
"the same land"],
], widths_mm=[28, 44, 44, 54], font_pt=8.5),
P("**Galvanics now raises the bar for every site.** With the electroplating line in the plan, a "
"plot has to permit record pressing with a steam boiler **and** electroplating from day "
"plot has to permit record pressing with a biomass-fired steam boiler **and** electroplating "
"from day "
"one, not in a later phase. That favours the industrial estate (licensing through the estate, "
"shared effluent treatment) and makes zoning the first check everywhere else."),
P("**Payap University** approached the project and is interested in leasing land next to a "
@@ -706,11 +734,12 @@ def blocks():
"could back the PVC lab. Any Payap plot is checked in this order, before any design work:"),
N([
"**Zoning:** the plot's zone in the Chiang Mai city plan allows a record-pressing factory with a "
"steam boiler and electroplating (the neighbour's pharmaceutical permit proves little).",
"biomass-fired steam boiler and electroplating (the neighbour's pharmaceutical permit proves "
"little).",
"**Lease-ability:** Chanote title, university council approval, and whether campus land of a "
"private university can be leased commercially; with Thai counsel, together with the lease "
"terms below.",
"**The GMP neighbour:** a pharmaceutical plant is sensitive to the boiler stack, galvanics "
"**The GMP neighbour:** a pharmaceutical plant is sensitive to the biomass boiler's stack, galvanics "
"extraction, extrusion fumes, noise and trucks; emission and buffer rules go into the lease, "
"not after the first complaint.",
"**Flooding:** Payap describes the land as low-lying when bought; check the plot against the "
@@ -743,9 +772,9 @@ def blocks():
"figure.",
]),
P("Land requirements: ~4 rai minimum, 6 to 8 rai comfortable with expansion; truck access and "
"turning, parking, the detached utility yard, a separated battery enclosure, and a medium-voltage "
"connection from PEA (800 to 1,000 kVA for the five-press backbone without electric steam, 1,250 "
"to 1,600 kVA with it)."),
"turning, parking, the detached utility yard with truck access for biomass deliveries, a "
"separated battery enclosure, and a medium-voltage connection from PEA (800 to 1,000 kVA for the "
"five-press backbone on biomass steam; electric steam would need 1,250 to 1,600 kVA)."),
H2("6.2 The building"),
P("The main building is a single-storey steel portal frame (pre-engineered) of **60 × 25 m "
@@ -791,12 +820,14 @@ def blocks():
"figures and their source."),
IMG(pick("renders/calculator/plan-a-iso-roof.png", "renders/calculator/plan-b-iso-roof.png"), 170,
"Figure 8. The site from above, " + label() + " preset of the plant and business plan calculator: "
"every roof and canopy carries PV, ~640 kWp on the factory, the office and the car and scooter "
"parking" + pick(", supplied through the solar PPA (the battery is drawn too; whether a PPA offer "
"includes it is open)", ", owned with the battery") +
"; the utility yard (boiler hall and chiller compound built for four modules each, pump and "
"heat-exchanger room, transformer, water treatment, PVC silos) and the phase 2 reserve. Schematic render of the Payap scenario model (docs/fleet-calculator.html); "
"positions and envelopes are estimates."),
"PV on the factory roof, ~520 kWp" + pick(", supplied through the solar PPA (the battery is drawn "
"too; whether a PPA offer includes it is open)",
", owned with the battery") +
", with the office roof and the car and scooter canopies PV-ready and without panels; the "
"utility yard (biomass boiler hall and chiller compound built for four modules each, the "
"biomass fuel store, the flue stack and dust collector, pump and heat-exchanger room, "
"transformer, water treatment, PVC silos) and the phase 2 reserve. Schematic render of the "
"Payap scenario model (docs/fleet-calculator.html); positions and envelopes are estimates."),
IMG(pick("renders/calculator/plan-a-iso-gf.png", "renders/calculator/plan-b-iso-gf.png"), 170,
"Figure 9. Ground floor with the roofs cut away, " + label() + " preset: from the west end the "
"staff entry, workshop, galvanics (PASU, PPPU, PDPU, PMPB), Sibert stamper prep, metrology" +
@@ -810,12 +841,14 @@ def blocks():
IMG(pick("renders/calculator/plan-a-iso-hall.png", "renders/calculator/plan-b-iso-hall.png"), 170,
"Figure 10. The press hall close up, " + label() + " preset: " + pick(
"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",
"outlines are the free Duplex bays and Classic positions for growth. In the yard, biomass "
"boiler modules B-1 and B-2 with the fuel store, flue stack and dust collector, and chillers "
"CH-1 and CH-2, with B-3, B-4, CH-3 and 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 positions for growth. In the yard, biomass boiler modules B-1 and B-2 with the fuel "
"store, flue stack and dust collector, 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"),
@@ -873,17 +906,18 @@ def blocks():
])),
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), "
["Boiler hall, four 500 kg/h biomass module positions (B-1 and B-2 at launch)", "~162 m² (18 × 9 m), "
"6.0 m high"],
["Biomass fuel store", "42 m²"],
["Biomass fuel store (~6 to 7 weeks of fresh chips; ~80 m² would hold a 3-month monsoon "
"stock)", "42 m² drawn"],
["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)"],
["Flue stack", "14 m"],
["Flue stack, with the dust collector and fans along the boiler hall's back wall", "14 m"],
["**Yard in all**", "**~379 m²**, against 178 m² before the four-module decision"],
], widths_mm=[110, 60],
caption="The fired case sets the boiler hall (an electric bank would need about half). No "
caption="The biomass bank of both plans sets the boiler hall (an electric bank would need about half). No "
"cooling tower: the chillers are air-cooled. The rooms are built once for four modules "
"and the plant goes in one module at a time; the yard sits outside the main building "
"because the boiler must have its own room and biomass deliveries need yard access."),
@@ -904,8 +938,8 @@ def blocks():
H3("Site works and the second building"),
P("On the Mueang Chi parcel the site works are a ~444 m perimeter wall, one 10 m sliding gate with "
"a guard house, 4,387 m² of paving in two classes (1,608 m² heavy-duty for trucks, 2,779 m² "
"general), roofed parking for 10 cars and 30 scooters with its canopies fully covered in PV (~54 "
"kWp; ~40 kWp in the construction RFQ), a ring foundation "
"general), roofed parking for 10 cars and 30 scooters under PV-ready canopies (steel for ~40 "
"kWp of panels in the construction RFQ; panels later), a ring foundation "
"for a 9 m fire-water tank with its pump house and one for a 5 m raw-water tank, a fire ring main "
"and hydrants, stormwater drainage and domestic sanitation. With the buildings, ~6,549 m² or 68% "
"of the modelled plot is sealed, so stormwater attenuation, quite possibly a detention pond, may "
@@ -930,7 +964,9 @@ def blocks():
"utility yard with floors, pads and plinths for all four positions; a lump sum for the rest of "
"the site works; and the foundation assumption behind all of it. It excludes process machinery, "
"PV, air conditioning, boilers, chillers and tanks, sprinklers, fit-out and the PEA transformer, "
"and asks whether permit drawings for the building permit and the factory licence are included."),
"and asks whether permit drawings for the building permit and the factory licence are included. "
"The PV-ready provisions (the canopy steel it already specifies, roof loads for panels, conduit to "
"the main board and a spare way for a later inverter) belong to the same works."),
H3("What the building costs, and what is not known"),
T(["Block", "USD", "THB", "Basis"], [
["Building ~1,500 m² plus civil and site works", "650k to 1,100k", "21.4M to 36.3M",
@@ -948,7 +984,8 @@ def blocks():
["Visitor corridor and accessible entrance", "67k to 148k", "2.2M to 4.9M", "estimate; "
"building it later would take ~3.6M THB out at the midpoint"]),
["Utility yard for four boiler and four chiller modules", "73k to 122k", "2.4M to 4.0M",
"estimate at the building rate"],
"estimate at the building rate; the biomass fuel store and handling (1.0M to 2.0M THB) sit in "
"the utilities block"],
["Water-treatment building next to galvanics", "52k to 87k", "1.7M to 2.9M", "estimate at the "
"building rate"],
pick(["**Together**", "**~0.84M to 1.48M**", "**~28M to 49M**", "sum of the blocks; the plan "
@@ -979,8 +1016,8 @@ def blocks():
"decontamination procedures, eyewash and emergency shower at the line, and a hard-wired "
"interlock (no extraction, no plating). A machine is lifted only after lockout (power isolated, "
"steam vented, hydraulics depressurised including the accumulator) and with a lift plan; hot work "
"stays in the workshop under a permit; the boilers run under a licensed boiler controller "
"(section 7)."),
"stays in the workshop under a permit; the biomass boilers run under a licensed boiler "
"controller, a certified attendant from the maintenance team (section 7.2)."),
P("Decided in October 2026: every member of staff, office included, gets group health insurance "
"(inpatient and outpatient) and a yearly check-up on top of social security, plus the "
"occupational checks Thai law requires for risk-factor work (press-floor heat and noise, "
@@ -1060,8 +1097,8 @@ def blocks():
"machinery and raw materials lives, from the first capex invoice."),
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)",
"~156M to 275M THB with the ramp-up reserve (~216M at the midpoint)") +
"larger tiers; at " + pick("~132M to 233M THB with the ramp-up reserve (~182M at the midpoint)",
"~156M to 277M THB with the ramp-up reserve (~217M 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 "
@@ -1071,7 +1108,8 @@ def blocks():
"directly."),
H2("7.2 Factory licence, galvanics and boilers"),
P("BOI promotion does not replace the factory licence (Ror.Ngor. 4), hazardous-substance "
"registration for the plating chemistry, wastewater permitting or the boiler rules. **Galvanics "
"registration for the plating chemistry, wastewater permitting, the boiler rules or the air-emission "
"limits for the biomass boiler's stack. **Galvanics "
"is in the plant from launch, so the electroplating line, its chemistry and its zero-discharge "
"effluent system are in the first factory licence application**, not a later amendment. The "
"earlier plan to keep galvanics out of the first licence to protect the schedule no longer "
@@ -1079,7 +1117,7 @@ def blocks():
"sits on the path to the first paying release:"),
B([
"**The site must permit plating from day one** (section 6.1): zoning has to allow a "
"record-pressing factory with a steam boiler and an electroplating line. The industrial "
"record-pressing factory with a biomass-fired steam boiler and an electroplating line. The industrial "
"estate's licensing and shared effluent treatment are the easiest path; on Mueang Chi the "
"permit is ours; on Payap land the lessor's written consent comes on top.",
"**Zero discharge is the design, and the application says so:** rinse water through the ZLD "
@@ -1100,13 +1138,16 @@ def blocks():
"reported to DIW within 30 days; **a licensed boiler controller on site**; and **inspection at "
"least once a year**. The relief for small once-through units does not apply at ~10.5 bar (our "
"reading), and the labour-side regulation of 2021 adds licensed-engineer installation and "
"testing and a feedwater standard. " + pick(
"**This plan's two boiler bodies come from a Chinese maker, so they take the imported-boiler "
"route of the notification:** verification by a registered certification body with the full "
"dossier, and an ASME Section I design at 1.25 MPa with the S stamp, because a boiler built "
"to the Chinese GB code would rest on 'or equivalent' with no precedent found. ",
"The plan's modules come from Thai suppliers to the same ASME specification; a Chinese "
"boiler built to the Chinese GB code would rest on 'or equivalent' with no precedent found. ") +
"testing and a feedwater standard. Both plans price the biomass modules from a Thai maker to the "
"ASME specification of section 5.4. A Chinese biomass boiler" + pick(
" (the open decision point of section 5.4)", "") + " would take the imported-boiler route of "
"the notification: verification by a registered certification body with the full dossier, and an "
"ASME Section I design at 1.25 MPa with the S stamp, because a boiler built to the Chinese GB code "
"would rest on 'or equivalent' with no precedent found. **Biomass adds to the permit work** (to "
"confirm with the permit engineer before the RFQ): the boiler registered with DIW; the air-emission "
"limits for a solid-fuel boiler met at the 14 m stack, with the dust collector in the boiler "
"package; the fuel store and ash handling in the factory licence drawings; and the licensed "
"boiler controller, a certified attendant from the maintenance team. " +
"DIW has announced a "
"revision of the boiler, pressure-vessel and refrigeration rules, so they are rechecked before "
"the RFQ, and a certification body is engaged before any boiler order."),
+324 -259
View File
@@ -48,29 +48,36 @@ def _block_rows():
"station", "350k to 810k", "11.6M to 26.7M", "Estimate; all of it at launch (Plan A buys the laser "
"confocal and the wide-area profiler from revenue)"]),
["PVC lab, day-one tier", "55k to 150k", "1.8M to 5.0M", "Estimate"],
pick(["Steam, cooling and compressed air: two 500 kg/h boiler modules (priced electric), cooling "
"backbone for four modules (plate heat exchanger, tanks, pumps, mains), two 250 kW chiller "
"modules (CH-1, CH-2), screw compressor, dryer and receiver", "239k to 416k", "7.9M to 13.7M",
"Researched: utilities rows; boilers and compressor through the Chinese route (lever 6): "
"ASME-stamped 1.25 MPa boiler bodies installed by a Thai contractor, the compressor from a "
"Chinese brand's Thai office"],
["Steam, cooling and compressed air: two 500 kg/h boiler modules (priced electric), cooling "
"backbone for four modules (plate heat exchanger, tanks, pumps, mains), two 250 kW chiller "
"modules (CH-1, CH-2), screw compressor, dryer and receiver", "296k to 470k", "9.8M to 15.5M",
"Researched: utilities rows; boilers and compressor from Thai suppliers, with local service"]),
["Steam: two 500 kg/h biomass boiler modules (B-1, B-2; Getabec class), installed with fuel feed, "
"grate and dust control", "182k to 303k", "6.0M to 10.0M", "Researched: utilities rows, the biomass "
"package for ~1 t/h (engineering estimate); both plans run on biomass (decided 17 October 2026); the "
"electric bank (Thai 4.5M to 7.0M, Chinese route 2.8M to 5.5M) is the alternative, not the plan"],
["Biomass fuel store and handling: covered fuel store, chip bay, ash bins, a compact loader",
"30k to 61k", "1.0M to 2.0M", "Estimate, utilities rows: 42 m² store drawn (~6 to 7 weeks of fresh "
"chips), ~80 m² for a 3-month monsoon stock"],
pick(["Cooling and compressed air: cooling backbone for four modules (plate heat exchanger, tanks, "
"pumps, mains), two 250 kW chiller modules (CH-1, CH-2), screw compressor, dryer and receiver",
"153k to 248k", "5.05M to 8.2M", "Researched: utilities rows; the compressor through the Chinese "
"route (lever 6), from a Chinese brand's Thai office"],
["Cooling and compressed air: cooling backbone for four modules (plate heat exchanger, tanks, "
"pumps, mains), two 250 kW chiller modules (CH-1, CH-2), screw compressor, dryer and receiver",
"159k to 258k", "5.25M to 8.5M", "Researched: utilities rows; the compressor from a Thai supplier, "
"with local service"]),
["Whole-factory HVAC, clean-room adder for galvanics and the cutting room, softener, loop treatment, "
"racking", "297k to 627k", "9.8M to 20.7M", "Researched: utilities rows"],
]
if not a:
rows.append(["Solar PV (EPC) on every roof and canopy, ~640 kWp, and the 271 kWh Gobel battery, owned",
"449k to 610k", "14.8M to 20.1M",
"Researched: utilities rows; PV at 20 to 26 THB/W installed, inverters included (12.8M to "
"16.6M), battery 2.0M to 3.5M; ~85 % of the yield used on site under zero export (estimate); "
rows.append(["Solar PV (EPC) on the factory roof, ~520 kWp, and the 271 kWh Gobel battery, owned (the "
"office roof and the canopies PV-ready, panels later)",
"376k to 516k", "12.4M to 17.0M",
"Researched: utilities rows; PV at 20 to 26 THB/W installed, inverters included (10.4M to "
"13.5M), battery 2.0M to 3.5M; ~87 % of the yield used on site under zero export (estimate); "
"owned, so the plant keeps the whole bill saving (no BOI promotion for solar installations "
"since 1 July 2025, section 8.4)"])
rows += [
["Building ~1,500 m² plus civil and site works", "650k to 1,100k", "21.4M to 36.3M", "Estimate at "
"12,000 to 20,000 THB/m² plus ~20 % site works; soil is the main variable"],
"12,000 to 20,000 THB/m² plus ~20 % site works; soil is the main variable; includes making the office "
"roof and the canopies PV-ready (structure, conduit; small, estimate)"],
pick(["Crane rented for the installations (mobile crane); frame, runway and machine door stay "
"crane-ready", "39k to 91k", "1.3M to 3.0M", "Estimate: 40 % of the crane block (lever 5)"],
["Overhead crane, runway, frame premium, machine door", "97k to 227k", "3.2M to 7.5M", "Estimate"]),
@@ -95,22 +102,22 @@ def _block_rows():
"4.5M to 9.7M", "Estimate; land is leased, so no land purchase"],
]
if a:
rows.append(["Not bought at launch (levers, section 8.2): solar PV on every roof and canopy (~640 kWp) "
rows.append(["Not bought at launch (levers, section 8.2): solar PV on the factory roof (~520 kWp) "
"and the battery (solar PPA), visitor corridor, cassette and CD-R duplication", "none", "none", "The PPA installer owns and "
"finances the array; the rest are growth steps from revenue"])
rows += [
pick(["**Subtotal, plan investment**", "**~3.56M to 6.25M**", "**~117.4M to 206.1M**",
"**Midpoint ~161.7M THB (~4.90M USD)**"],
["**Subtotal, plan investment**", "**~4.42M to 7.73M**", "**~145.9M to 255.2M**",
"**Midpoint ~200.6M THB (~6.08M USD)**"]),
pick(["**Subtotal, plan investment**", "**~3.68M to 6.44M**", "**~121.6M to 212.6M**",
"**Midpoint ~167.1M THB (~5.06M USD)**"],
["**Subtotal, plan investment**", "**~4.42M to 7.79M**", "**~146.0M to 257.1M**",
"**Midpoint ~201.6M THB (~6.11M USD)**"]),
["Ramp-up reserve: staff hired before first revenue, overheads until volume covers them",
"~0.30M to 0.61M", "10M to 20M", "Estimate; cash the investor puts in, so it is in the plan price"],
pick(["**Plan A price**", "**~3.86M to 6.85M**", "**~127M to 226M**",
"**Midpoint ~177M THB (~5.35M USD): ~180M THB**"],
["**Plan B price**", "**~4.72M to 8.34M**", "**~156M to 275M**",
"**Midpoint ~216M THB (~6.53M USD): ~215M THB**"]),
pick(["**Plan A price**", "**~3.99M to 7.05M**", "**~132M to 233M**",
"**Midpoint ~182M THB (~5.52M USD): ~180M THB, ~2M above 180M**"],
["**Plan B price**", "**~4.73M to 8.40M**", "**~156M to 277M**",
"**Midpoint ~217M THB (~6.56M USD): ~215M THB**"]),
["Contingency: not in the plan price", "", "", pick(
"For information: at 15 %, ~24M THB at the midpoint",
"For information: at 15 %, ~25M THB at the midpoint",
"For information: at 15 %, ~30M THB at the midpoint")],
]
return rows
@@ -119,28 +126,30 @@ def _block_rows():
def _levers_table():
"""Plan A: the six levers from the launch plant with every block, midpoints, no contingency."""
return T(["Step", "Saves", "Subtotal after it", "What it gives up"], [
["Launch plant, every block, no contingency", "", "~200.6M THB (~6.08M USD)", ""],
["1. Solar on every roof and canopy (~640 kWp) and the battery through a solar PPA (the installer owns "
"and finances the array; the plant buys the power)", "~17.5M", "~183.1M", "Owned solar and its whole "
"bill saving: adds the PPA power price to the energy bill, ~0.07M USD (~2.3M THB) a year in the "
"calculator for ~760 MWh used on site at 3.0 THB/kWh (estimate, to quote)"],
["Launch plant, every block, no contingency", "", "~201.6M THB (~6.11M USD)", ""],
["1. Solar on the factory roof (~520 kWp) and the battery through a solar PPA (the installer owns "
"and finances the array; the plant buys the power)", "~14.7M", "~186.9M", "Owned solar and its whole "
"bill saving: adds the PPA power price to the energy bill, ~0.06M USD (~1.9M THB) a year in the "
"calculator for ~633 MWh used on site at 3.0 THB/kWh (estimate, to quote)"],
["2. Metrology launch tier: XRF, inline vision and audio station at launch; laser confocal and "
"wide-area profiler (USD 180k to 350k) bought from revenue", "~8.8M", "~174.4M", "Every stamper and "
"wide-area profiler (USD 180k to 350k) bought from revenue", "~8.8M", "~178.1M", "Every stamper and "
"record is still measured (XRF, inline vision on the presses, audio station); the confocal and the "
"profiler come later"],
["3. Visitor corridor built later", "~3.6M", "~170.8M", "No public tours at first: the tour route and "
["3. Visitor corridor built later", "~3.6M", "~174.5M", "No public tours at first: the tour route and "
"the Payap programmes around it start later"],
["4. Cassette and CD-R duplication later", "~4.0M", "~166.8M", "No cassette or CD-R at launch; a growth "
["4. Cassette and CD-R duplication later", "~4.0M", "~170.5M", "No cassette or CD-R at launch; a growth "
"step"],
["5. Crane rented for the installations (mobile crane)", "~3.2M", "~163.6M", "No overhead crane at "
["5. Crane rented for the installations (mobile crane)", "~3.2M", "~167.3M", "No overhead crane at "
"first; frame, runway and machine door stay crane-ready, so it can be bought later if needed"],
["6. Boilers and compressor through the Chinese route", "~1.9M", "**~161.7M (~4.90M USD)**",
"Imported boilers take the Thai route (Ministry of Industry boiler notification B.E. 2549: design "
"and import rules, a certification body registered with the Department of Industrial Works) with an "
"ASME S stamp at 1.25 MPa"],
["6. Compressor through the Chinese route (a Chinese brand's Thai office)", "~0.25M",
"**~167.1M (~5.06M USD)**", "A Chinese brand's screw compressor (Kaishan or Denair, both with Thai "
"offices) instead of a Thai supplier's. The route priced only electric boilers; Chinese biomass "
"boilers (ZOZEN, Sitong, Taiguo, Yongxing) are not priced yet, and a quote ~2M THB or more below the "
"Thai biomass package would put Plan A back under 180M"],
["Ramp-up reserve", "", "+10M to 20M", ""],
["**Plan A**", "", "**~177M THB (~5.35M USD)**", "~127M to 226M from the low to the high end of every "
"block"],
["**Plan A**", "", "**~182M THB (~5.52M USD)**", "**~2M above 180M at the midpoint** (177M to 187M "
"with the reserve's 10M to 20M); ~132M to 233M from "
"the low to the high end of every block"],
], widths_mm=[56, 16, 32, 66], font_pt=8.5,
caption="Midpoint values without contingency, estimates; docs/finance/total-investment.md 'Two plans'. "
"The levers keep every machine of the launch plant.")
@@ -149,10 +158,11 @@ def _levers_table():
def _keeps_table():
"""Plan B: what it keeps that Plan A's six levers move off the launch budget, midpoints, no contingency."""
return T(["In at launch in Plan B", "What it gives the plant", "THB, midpoint (Plan A's lever)"], [
["Solar PV on every roof and canopy (~640 kWp) and the 271 kWh battery, owned (EPC and Gobel battery)",
"No PPA power bill: the whole saving on the ~760 MWh used on site (~2.8M to 3.0M THB a year) stays "
"with the plant instead of ~2.3M THB (~0.07M USD) a year going to a PPA installer; payback ~4.2 to "
"5.9 years (estimates)", "~17.5M"],
["Solar PV on the factory roof (~520 kWp; the office roof and the canopies PV-ready) and the 271 kWh "
"battery, owned (EPC and Gobel battery)",
"No PPA power bill: the whole saving on the ~633 MWh used on site (~2.3M to 2.5M THB a year) stays "
"with the plant instead of ~1.9M THB (~0.06M USD) a year going to a PPA installer; payback ~4.1 to "
"5.8 years (estimates)", "~14.7M"],
["Metrology, full stack: XRF, laser confocal, wide-area profiler, inline vision, audio station",
"Every stamper measured fully from the first release, the core of the traceability pitch", "~8.8M"],
["Visitor corridor and accessible entrance", "Public tours and the Payap programmes possible from the "
@@ -161,47 +171,44 @@ def _keeps_table():
["5 t overhead crane, runway, frame premium, machine door, bought", "Its own crane over the press "
"hall; no mobile crane to rent for "
"the installations", "~3.2M"],
["Boilers and compressor from Thai suppliers", "Local service; no import route for the boilers",
"~1.9M"],
["**Together**", "", "**~39M (200.6M minus Plan A's 161.7M)**"],
["Launch plant, every block, no contingency: Plan B's subtotal", "", "~200.6M (~6.08M USD)"],
["Screw compressor from a Thai supplier", "Local service", "~0.25M"],
["**Together**", "", "**~34.5M (201.6M minus Plan A's 167.1M)**"],
["Launch plant, every block, no contingency: Plan B's subtotal", "", "~201.6M (~6.11M USD)"],
["Ramp-up reserve", "", "+10M to 20M"],
["**Plan B**", "", "**~216M THB (~6.53M USD)**; ~156M to 275M from the low to the high end"],
["**Plan B**", "", "**~217M THB (~6.56M USD)**; ~156M to 277M from the low to the high end"],
], widths_mm=[62, 70, 38], font_pt=8.5,
caption="Midpoint values without contingency, estimates; docs/finance/total-investment.md 'Two plans'. "
"Each figure is what the matching Plan A lever saves; rounded, the six add to ~39.0M, and the "
"two subtotals differ by ~38.9M.")
"Each figure is what the matching Plan A lever saves; rounded, the six add to ~34.6M, and the "
"two subtotals differ by ~34.5M. Steam is biomass in both plans, so the boilers are not a "
"difference between them.")
def _tranches():
return T(["Tranche", "Trigger", "Covers", "Approx. share, THB"], [
["0", "Now", "Phase 0 work (section 14.1)", "The Phase 0 block, ~1.3M to 2.6M (1 to 2 %)"],
["1", "BOI certificate issued; lease signed; zoning and soil confirmed; pricing validated",
pick("Deposits on every long-lead order: Pheenix galvanics line, Sillitoe lathe, Sibert line, Newbilt "
"Duplex system and Classic; building design and permit; first boiler and chiller modules "
"(boilers and compressor through the Chinese route)",
"Deposits on every long-lead order: Pheenix galvanics line, Sillitoe lathe, Sibert line, Newbilt "
"Duplex system and Classic; building design and permit; first boiler and chiller modules "
"(boilers and compressor from Thai suppliers)"),
pick("20 to 30 % (~32M to 49M)", "20 to 30 % (~40M to 60M)")],
"Deposits on every long-lead order: Pheenix galvanics line, Sillitoe lathe, Sibert line, Newbilt "
"Duplex system and Classic; building design and permit; the two biomass boiler modules and the first "
"two chiller modules",
pick("20 to 30 % (~33M to 50M)", "20 to 30 % (~40M to 60M)")],
["2", "Building permit; vendor build dates confirmed in writing",
"Construction, water-treatment building, utility yard, utilities, balance payments as machines are "
"built",
pick("35 to 45 % (~57M to 73M)", "35 to 45 % (~70M to 90M)")],
pick("35 to 45 % (~58M to 75M)", "35 to 45 % (~71M to 91M)")],
["3", "Building watertight; first machinery shipped",
pick("Fit-out, HVAC and clean zones, ZLD and DI water, the rented crane for the installations, the "
"metrology launch tier, factory software and ERPNext, the launch team",
"Fit-out, HVAC and clean zones, ZLD and DI water, solar PV on every roof and canopy and the "
"Fit-out, HVAC and clean zones, ZLD and DI water, solar PV on the factory roof and the "
"battery, crane, visitor corridor, the full metrology stack, factory software and ERPNext, cassette and CD-R lines, the "
"launch team"),
pick("15 to 20 % (~24M to 32M)", "15 to 20 % (~30M to 40M)")],
pick("15 to 20 % (~25M to 33M)", "15 to 20 % (~30M to 40M)")],
["4", "Cutting room and galvanics commissioned; first stampers made", "Working capital, PVC stock, "
"spares, first-year rent; the ramp-up reserve (10M to 20M THB, in the plan price) is drawn from here "
"on", pick("8 to 12 % (~13M to 19M), plus the reserve", "8 to 12 % (~16M to 24M), plus the reserve")],
"on", pick("8 to 12 % (~13M to 20M), plus the reserve", "8 to 12 % (~16M to 24M), plus the reserve")],
], widths_mm=[14, 46, 78, 32], font_pt=8.5,
caption=pick("Shares of Plan A's investment before the reserve (~161.7M THB at the midpoint); the THB "
caption=pick("Shares of Plan A's investment before the reserve (~167.1M THB at the midpoint); the THB "
"figures are the shares applied to it (arithmetic, estimates).",
"Shares of Plan B's investment before the reserve (~200.6M THB at the midpoint); the THB "
"Shares of Plan B's investment before the reserve (~201.6M THB at the midpoint); the THB "
"figures are the shares applied to it (arithmetic, estimates)."))
@@ -218,11 +225,11 @@ def _operating_table():
["**Total contribution**", "**0.68M**", "**2.06M**", "**3.99M**"],
["Cash overheads", "0.45M", "0.33M", "0.20M"],
["**EBITDA**", "**0.23M**", "**1.73M**", "**3.79M**"],
["Depreciation", "0.62M", "0.39M", "0.24M"],
["**Operating profit**", "**-0.39M**", "**1.34M**", "**3.55M**"],
["Depreciation", "0.64M", "0.40M", "0.25M"],
["**Operating profit**", "**-0.41M**", "**1.33M**", "**3.54M**"],
["Revenue", "2.28M (~75M THB)", "3.65M (~120M THB)", "5.41M (~179M THB)"],
["Payback on the plan price (EBITDA, mature year)", "~30 yr", "~3.1 yr (2.2 to 4.0 on 3.86M to "
"6.85M)", "~1.0 yr"],
["Payback on the plan price (EBITDA, mature year)", "~31 yr", "~3.2 yr (2.3 to 4.1 on 3.99M to "
"7.05M)", "~1.1 yr"],
]
else:
rows = [
@@ -235,11 +242,11 @@ def _operating_table():
["**Total contribution**", "**0.68M**", "**2.06M**", "**3.99M**"],
["Cash overheads", "0.45M", "0.33M", "0.20M"],
["**EBITDA**", "**0.23M**", "**1.73M**", "**3.79M**"],
["Depreciation", "0.77M", "0.49M", "0.29M"],
["**Operating profit**", "**-0.54M**", "**1.24M**", "**3.50M**"],
["Depreciation", "0.78M", "0.49M", "0.29M"],
["**Operating profit**", "**-0.55M**", "**1.24M**", "**3.50M**"],
["Revenue", "2.28M (~75M THB)", "3.65M (~120M THB)", "5.41M (~179M THB)"],
["Payback on the plan price (EBITDA, mature year)", "~36 yr", "~3.8 yr (2.7 to 4.8 on 4.72M to "
"8.34M)", "~1.2 yr"],
["Payback on the plan price (EBITDA, mature year)", "~37 yr", "~3.8 yr (2.7 to 4.9 on 4.73M to "
"8.40M)", "~1.2 yr"],
]
return T(["USD per year, mature", "Adverse", "Central", "Favourable"], rows, widths_mm=[50, 36, 48, 36],
caption="Estimates, docs/finance/revenue-model.md 'Operating pictures of Plan A and Plan B (October "
@@ -257,15 +264,15 @@ def _risk_rows():
]
rows += [
["High", "No contingency in the plan price", pick(
"Quotes landing high are not covered: at 15 % a contingency would be ~24M THB at the midpoint, "
"and the high end of every block comes to ~226M with the reserve",
"Quotes landing high are not covered: at 15 % a contingency would be ~25M THB at the midpoint, "
"and the high end of every block comes to ~233M with the reserve",
"Quotes landing high are not covered: at 15 % a contingency would be ~30M THB at the midpoint, "
"and the high end of every block comes to ~275M with the reserve"),
"and the high end of every block comes to ~277M with the reserve"),
"The requests that settle most of the band come before commitment (section 8.4); tranche release; "
"how overruns are funded (outside the plan price or by scope steps) agreed with the investor up "
"front"],
["High", "Utilisation and price", pick(
"The cost structure is mostly fixed; the adverse case loses money: it needs ~0.9M records to cover "
"The cost structure is mostly fixed; the adverse case loses money: it needs ~1.0M records to cover "
"depreciation and the three presses make 0.58M at that rate; at 60 % specials the Duplex rate and "
"the extra cost of specials decide volume and margin",
"The cost structure is mostly fixed; the adverse case loses money: it needs ~1.1M records to cover "
@@ -298,18 +305,18 @@ def _risk_rows():
]
if a:
rows.append(["Medium", "Solar PPA price", "The PPA gives up owning the bill saving and adds a power "
"price, ~0.07M USD (~2.3M THB) a year in the calculator at 3.0 THB/kWh, an estimate to "
"price, ~0.06M USD (~1.9M THB) a year in the calculator at 3.0 THB/kWh, an estimate to "
"quote. No BOI benefit is lost: the BOI dropped solar installations from its promotion on "
"1 July 2025 (Announcement 3/2568); a PPA developer may itself be promoted (activity 7.1.2, "
"an 8-year corporate income tax exemption), which may or may not show in its price",
"PPA offers next to the purchase quote in phase 0, the developer's BOI promotion raised in "
"the price negotiation; buying the array, as Plan B does, stays the alternative"])
else:
rows.append(["Medium", "The extra ~39M THB earns little in the model", "Plan B's operating picture is "
"Plan A's (same presses, records, revenue and EBITDA; the calculator puts it ~0.07M USD a "
"year ahead, the PPA bill its owned array avoids): the ~39M THB more at launch adds "
"depreciation, so central operating profit is 1.24M against 1.34M USD, payback ~3.8 against "
"~3.1 years and the adverse corner deeper; its case rests on that bill and on what the "
rows.append(["Medium", "The extra ~35M THB earns little in the model", "Plan B's operating picture is "
"Plan A's (same presses, records, revenue and EBITDA; the calculator puts it ~0.06M USD a "
"year ahead, the PPA bill its owned array avoids): the ~35M THB more at launch adds "
"depreciation, so central operating profit is 1.24M against 1.33M USD, payback ~3.8 against "
"~3.2 years and the adverse corner deeper; its case rests on that bill and on what the "
"table leaves out (cassette and CD-R sales, tours and the Payap programmes, full stamper "
"metrology for the traceability pitch)", "Phase 0 prices each item against its lever (PPA "
"offer next to the purchase quote, cassette and CD-R quotes); most items can also come "
@@ -325,18 +332,22 @@ def _risk_rows():
"water-treatment building from the "
"start; industrial estate option; "
"lessor's consent on Payap land"],
["Medium", "Utilities fuel choice open", "Biomass heat costs a quarter to a tenth of electric steam "
"at reported fuel prices; electric steam needs a larger grid connection, biomass a secured fuel "
"supply", "Decide before the boiler request and the grid application; quote electric and fired "
"variants of the same modules"],
["Medium", "Boiler import compliance (DIW)", pick(
"This plan imports its boiler modules from China: an imported boiler must meet ASME, JIS, EN or "
"equivalent and be verified by a DIW-registered certification body; the modules run above the "
"once-through relief",
"An imported boiler must meet ASME, JIS, EN or equivalent and be verified by a DIW-registered "
"certification body; the modules run above the once-through relief"),
"ASME Section I design with the S stamp and the full dossier; certification body engaged before the "
"order; the same for a Thai-bought boiler"],
["Medium", "Biomass steam: fuel, permits and the burning season", "Fuel price and supply set the "
"steam cost (planning price 1.35 to 2 THB/kg delivered; ~460 t of fresh chips a year at ~850k "
"records, ~0.67M THB, estimate); boiler registration and the air-emission limits for a solid-fuel "
"boiler come into the permit work (to confirm); the stack is a visible point source in Chiang Mai's "
"burning season", "Fuel contracts and a 3-month monsoon stock (~80 m² of covered store); the team's "
"60 rai of own fuelwood later, after the land-title check; the dust collector and the 14 m stack "
"drawn from the start, dust control part of the plant's story; a certified boiler attendant from "
"the maintenance team; electric modules stay the fallback" + pick(
"; a Chinese biomass boiler quote ~2M THB or more below the Thai package would bring Plan A back "
"under 180M", "")],
["Medium", "Boiler registration and import rules (DIW)", "Every steam boiler is registered with the "
"Department of Industrial Works and run by a certified attendant; a boiler bought abroad must also "
"meet ASME, JIS, EN or equivalent and be verified by a DIW-registered certification body" + pick(
", which applies if Plan A takes a Chinese biomass boiler", ""),
"A Thai-fabricated biomass package (Getabec class) as the base; for an import, ASME Section I design "
"with the S stamp and the full dossier, the certification body engaged before the order"],
["Medium", "Single press vendor (Newbilt)", "All three presses, the extruders and the hydraulic "
"aggregates come from one small German manufacturer; build time and order book unknown",
"Spares and service terms in the re-quote; the Pheenix automatic press stays the comparison if the "
@@ -368,7 +379,7 @@ def _risk_rows():
"warranty move to the installer, but the plant still depends on the array", "Engineering checks "
"of the installer's design in phase 0; large float"],
["Low", "Solar and battery integration", "Rack voltage vs inverter window; unpublished "
"certifications; mixed-vendor warranty; under PEA's zero export ~15 % of the ~640 kWp array's "
"certifications; mixed-vendor warranty; under PEA's zero export ~13 % of the ~520 kWp array's "
"yield is curtailed (estimate)", "Engineering checks and certificate requests in phase 0; PEA "
"interconnection approval (3 to 6 months) filed alongside procurement; large float"]),
["Low", "Cassette supply chain", pick("Blank tape and shells come from few suppliers, once the lines "
@@ -389,11 +400,13 @@ def blocks():
"This chapter prices **Plan A (~180M THB)**: the launch plant decided in October 2026, one Newbilt "
"Duplex system and one Classic with the whole chain from the cutting room to the shrink wrapper, "
"in one capital round and commissioned in sequence, brought down with six cost levers that keep "
"every machine. ",
"every machine. At the midpoint that is ~182M THB, **~2M above 180M** (section 8.2). ",
"This chapter prices **Plan B (~215M THB)**: the launch plant decided in October 2026, one Newbilt "
"Duplex system and one Classic with the whole chain from the cutting room to the shrink wrapper, "
"in one capital round and commissioned in sequence, with everything in: none of Plan A's six cost "
"levers taken. ") +
"In both plans the steam comes from biomass and PV sits on the factory roof only (~520 kWp; the "
"office roof and the canopies are built PV-ready), as decided on 17 October 2026. "
"The plan price carries the ramp-up reserve, because that is cash the investor puts in, and **no "
"contingency**. Blocks marked 'estimate' have no vendor confirmation; the rest trace to quotes, "
"published prices or researched ranges. Treat all figures as budgetary with a wide margin (plus or "
@@ -416,7 +429,7 @@ def blocks():
"The second Duplex system and further Classics are growth options with room reserved (hall "
"floor, utility module positions, ring-main tees), not part of this plan.")),
P("**Not in the plan price:** a contingency (the blocks are budgetary, so the plan carries no buffer "
"for quotes landing high; at 15 % it would be " + pick("~24M", "~30M") + " THB at the midpoint); CD "
"for quotes landing high; at 15 % it would be " + pick("~25M", "~30M") + " THB at the midpoint); CD "
"replication (section 4.10); financing costs; currency moves; the mobile shelving for the father and "
"mother archive (to quote); and the central hydraulic plant around the Newbilt aggregates (standby "
"pump set, accumulator station, ring main), not costed yet, for a Thai hydraulic power unit builder "
@@ -424,37 +437,41 @@ def blocks():
"promotion: without it, ~5 % duty on ~2.3M USD of imported machinery (~0.11M USD, the launch "
"plant's estimate) comes on top, plus ~0.17M USD of import VAT paid at the border and reclaimed "
"later (estimates)" + pick(
". Plan A imports its boiler modules and buys less metrology at launch; the estimate is not "
"re-sized for either.",
". Plan A buys less metrology at launch; the estimate is not re-sized for it.",
". Plan B is the launch plant that estimate was made for.")),
H2("8.2 Two versions of this plan"),
P("The lead investor asked in October 2026 whether the plant can be built for **180M THB (~5.45M USD), "
"possibly up to 20 % more**. The answer is two versions of this plan, built from the same documents, "
"both priced without contingency and with the ramp-up reserve: **Plan A** keeps every machine of "
"the launch plant and brings it to ~180M THB with six cost levers; **Plan B** builds the same "
"launch plant with everything in, none of the levers taken, at ~215M THB, just within 180M plus "
"20 % (216M). "
"the launch plant and brings it to ~180M THB with six cost levers, ~182M at the midpoint, which is "
"**~2M above 180M** (the low end of the reserve, 177M, fits); **Plan B** builds the same launch plant "
"with everything in, none of the levers taken, at ~215M THB: ~217M at the midpoint, ~0.6M above "
"180M plus 20 % (216M) and inside 225M. Both burn biomass for steam and carry PV on the factory roof "
"only. "
"This document is " + label() + ". How the two differ (estimates):"),
T(["Midpoints, estimates", "Plan A" + pick(" (this plan)", ""), "Plan B" + pick("", " (this plan)")], [
["Plan price: ramp-up reserve in, no contingency", "~177M THB (~5.35M USD): ~180M",
"~216M THB (~6.53M USD): ~215M"],
["Low to high end of every block", "~127M to 226M THB", "~156M to 275M THB"],
["Plan price: ramp-up reserve in, no contingency", "~182M THB (~5.52M USD): ~180M, ~2M above "
"180M at the midpoint",
"~217M THB (~6.56M USD): ~215M"],
["Low to high end of every block", "~132M to 233M THB", "~156M to 277M THB"],
["Presses", "3: Duplex system 1 (two HRP 12) and one Classic", "The same 3"],
["Steam and solar", "Biomass steam (two 500 kg/h modules); ~520 kWp on the factory roof through a "
"solar PPA", "Biomass steam, the same; the ~520 kWp array and the battery owned"],
["Records a year at 60 % specials", "~0.58 to 0.90M, central 0.74M (Duplex-limited)", "The same"],
["Revenue, central", "3.65M USD (~120M THB)", "The same (cassette and CD-R not modelled)"],
["EBITDA, central", "1.73M USD", "1.73M USD (calculator: 2.12M against Plan A's 2.05M, no PPA "
["EBITDA, central", "1.73M USD", "1.73M USD (calculator: 2.23M against Plan A's 2.17M, no PPA "
"power bill)"],
["Operating profit, adverse case", "-0.39M USD: loses money", "-0.54M USD: loses more (more "
["Operating profit, adverse case", "-0.41M USD: loses money", "-0.55M USD: loses more (more "
"depreciation on the same EBITDA)"],
["Payback on the plan price, central (EBITDA, mature year)", "~3.1 yr (2.2 to 4.0)",
"~3.8 yr (2.7 to 4.8; calculator: 2.9 yr against Plan A's 2.4)"],
["What it gives up or takes on", "Six levers: solar through a PPA (a power bill of ~0.07M USD a "
["Payback on the plan price, central (EBITDA, mature year)", "~3.2 yr (2.3 to 4.1)",
"~3.8 yr (2.7 to 4.9; calculator: 2.7 yr against Plan A's 2.3)"],
["What it gives up or takes on", "Six levers: solar through a PPA (a power bill of ~0.06M USD a "
"year), confocal and profiler from revenue, no tours at first, cassette and CD-R later, a "
"rented crane, Chinese boilers and compressor; the second Duplex waits for revenue", "No levers: "
"buys at launch what Plan A leases or defers, ~39M THB more (owned solar and battery, ~640 kWp on "
"every roof and canopy with no PPA bill, the full metrology stack, the visitor corridor, cassette "
"and CD-R, a bought crane, Thai boilers and compressor); the second Duplex waits for revenue"],
"rented crane, a Chinese compressor; the second Duplex waits for revenue", "No levers: "
"buys at launch what Plan A leases or defers, ~35M THB (~19 %) more (owned solar and battery, "
"~520 kWp on the factory roof with no PPA bill, the full metrology stack, the visitor corridor, "
"cassette and CD-R, a bought crane, a Thai compressor); the second Duplex waits for revenue"],
], widths_mm=[46, 62, 62], font_pt=8.5,
caption="Estimates: docs/finance/total-investment.md 'Two plans' and docs/finance/revenue-model.md "
"'Operating pictures of Plan A and Plan B'. Section 9 has this plan's operating picture."),
@@ -462,11 +479,11 @@ def blocks():
[P("**Plan A: six levers, every machine kept.** From the launch plant with every block, no "
"contingency, midpoint values:"),
_levers_table(),
P("Plan B takes none of these levers: it buys at launch what they lease or defer, ~39M THB more "
"at the midpoint, so ~200.6M THB before the reserve and ~216M (~215M THB) with it.")]
P("Plan B takes none of these levers: it buys at launch what they lease or defer, ~34.5M THB more "
"at the midpoint, so ~201.6M THB before the reserve and ~217M (~215M THB) with it.")]
if a else
[P("**Plan B: the launch plant with everything in, no levers.** What Plan B keeps that Plan A's six "
"cost levers lease, defer or source abroad, midpoint values:"),
"cost levers lease, defer or buy through the Chinese route, midpoint values:"),
_keeps_table(),
P("The plant itself is Plan A's: the same three presses, the same output and the same operating "
"picture (section 9). The second Duplex system is a growth step from revenue in both plans, on a "
@@ -475,18 +492,21 @@ def blocks():
CALL("What decides between Plan A and Plan B", [
"**No longer demand.** Both plans are the same three presses making the same ~0.58 to 0.90 million "
"records a year (central 0.74 million); market validation (section 14.1, item 1) gates both alike.",
"**~39M THB more at launch, for what Plan A leases or buys from revenue.** Plan B owns its array "
"**~35M THB more at launch, for what Plan A leases or buys from revenue.** Plan B owns its array "
"and keeps the whole bill saving (no PPA bill), measures every stamper fully from the first release "
"(the traceability pitch), opens tours and the Payap programmes from day one, sells cassette and "
"CD-R from the start, owns its crane and buys utilities with local service.",
"CD-R from the start, owns its crane and buys its compressor with local service. Steam is biomass "
"in both.",
"**On the modelled numbers the extra earns little.** The same EBITDA in the revenue model (the "
"calculator puts Plan B ~0.07M USD a year ahead, the PPA bill its owned array avoids), more "
"depreciation, a longer payback (~3.8 against ~3.1 years) and a deeper adverse corner: Plan A has the better modelled "
"calculator puts Plan B ~0.06M USD a year ahead, the PPA bill its owned array avoids), more "
"depreciation, a longer payback (~3.8 against ~3.2 years) and a deeper adverse corner: Plan A has the better modelled "
"return, Plan B the more complete plant. Most of Plan B's items can be added to Plan A later from "
"revenue; the corridor is cheaper to have from the start, and every year the array is leased "
"costs the PPA bill.",
"**The quotes.** The Newbilt re-quote for the Classic and the EX 35, the Pheenix quote against the "
"OMS reference, the building quote with the soil test, and, for Plan A, the solar PPA offer.",
"OMS reference, the building quote with the soil test, and, for Plan A, the solar PPA offer and a "
"Chinese biomass boiler quote: ~2M THB or more below the Thai package would put Plan A back under "
"180M.",
"**Neither price carries a contingency.** Quotes landing high are funded outside the plan price or "
"by scope steps (section 8.4).",
"**The second Duplex stays a growth step.** Its floor, utility module positions and ring-main "
@@ -496,10 +516,11 @@ def blocks():
" preset, contingency kept out of the total as in this plan."),
IMG(pick("renders/calculator/plan-a-budget.png", "renders/calculator/plan-b-budget.png"), 160,
"Figure 11. Budget card of the plant and business plan calculator, " + pick(
"Plan A preset: 161.7M THB at the midpoint without contingency, 171.7M to 181.7M with the "
"ramp-up reserve of 10M to 20M, inside 180M at the midpoint",
"Plan B preset: 200.6M THB at the midpoint without contingency, 210.6M to 220.6M with the "
"ramp-up reserve of 10M to 20M, 9.4M to spare under the 225M mark (180M plus 25 %)") +
"Plan A preset: 167.1M THB at the midpoint without contingency, 177.1M to 187.1M with the "
"ramp-up reserve of 10M to 20M; against 180M it is 2.1M over at the midpoint, and it fits 225M "
"with 42.9M to spare",
"Plan B preset: 201.6M THB at the midpoint without contingency, 211.6M to 221.6M with the "
"ramp-up reserve of 10M to 20M, 8.4M to spare under the 225M mark (180M plus 25 %)") +
". Bars: the investment at the low end, the midpoint and the high end of every block, the reserve "
"hatched, against 180M and 225M THB. Calculator figures (docs/fleet-calculator.html), estimates."),
@@ -514,10 +535,11 @@ def blocks():
H2("8.4 What moves the number"),
B([
"**No contingency in the price.** " + pick(
"Plan A's ~177M THB is the midpoint of every block with the ramp-up reserve and no buffer: at "
"15 % a contingency would add ~24M THB, and the high end of every block comes to ~226M. ",
"Plan B's ~216M THB is the midpoint of every block with the ramp-up reserve and no buffer: at "
"15 % a contingency would add ~30M THB, and the high end of every block comes to ~275M. ") +
"Plan A's ~182M THB is the midpoint of every block with the ramp-up reserve and no buffer, ~2M "
"above 180M: at 15 % a contingency would add ~25M THB, and the high end of every block comes to "
"~233M. ",
"Plan B's ~217M THB is the midpoint of every block with the ramp-up reserve and no buffer: at "
"15 % a contingency would add ~30M THB, and the high end of every block comes to ~277M. ") +
"Quotes landing above the midpoint are funded outside the plan price or by scope steps; how they are "
"funded is a decision for the investor before commitment (section 14.2).",
"**The quotes that decide it.** The Classic has no Newbilt price (its band is a placeholder "
@@ -526,7 +548,8 @@ def blocks():
"the EX 35 is priced only as the expired 2024 quote's second-extruder option; the building "
"depends on the soil; and the solar PPA lever depends on an offer. The Newbilt re-quote, the "
"Pheenix quote, the building request with a soil test, the metrology distributor quotes and "
"the PPA offers settle most of the band.",
"the PPA offers settle most of the band; a Chinese biomass boiler quote decides whether Plan A "
"comes back under 180M.",
"the EX 35 is priced only as the expired 2024 quote's second-extruder option; and the building "
"depends on the soil. The Newbilt re-quote, the Pheenix quote, the building request with a soil "
"test, the metrology distributor quotes and the solar and battery purchase quotes settle most of "
@@ -549,32 +572,56 @@ def blocks():
"**The ground.** Soft paddy soil under the building, paving and fill platform is the single largest "
"cost variable in the building package, and the cheapest to resolve: a soil boring test costs "
"THB 30k to 50k.",
pick("**Chinese suppliers: taken where they pay.** Plan A buys the boiler modules and the "
"compressor through the Chinese route (~1.9M THB at the midpoint, about 1 % of the price); the "
"Newbilt hydraulic aggregates stay Newbilt's. Chillers and HVAC, the larger blocks, are not "
"checked yet; that is the next Chinese lever to test.",
"**Chinese suppliers: ~1 %.** Plan B prices Thai-supplied utilities. The Chinese route for the "
"boiler modules and the compressor would take ~1.9M THB off at the midpoint (Plan A takes "
"it); chillers and HVAC, the larger blocks, are not checked yet."),
pick("**Solar PPA.** The largest single lever (~17.5M THB at the midpoint) moves the array, ~640 kWp "
"on every roof and canopy, and the battery off the capital budget and adds a power price to the "
"energy line instead: ~760 MWh a year used on site at 3.0 THB/kWh, ~2.3M THB or ~0.07M USD a "
"**Biomass steam in both plans.** Steam comes from two 500 kg/h biomass modules (Getabec class, "
"6M to 10M THB installed with fuel feed, grate and dust control) and a fuel store with handling "
"(1.0M to 2.0M THB); the electric bank (Thai 4.5M to 7.0M, Chinese route 2.8M to 5.5M) is the "
"alternative, not the plan. At ~850k records the boilers burn ~460 t of fresh chips (or ~300 t of "
"air-dry wood) a year, ~0.67M THB at ~0.7 THB/kWh of heat, where electric steam would cost ~4.9M "
"THB in power and demand charge: **biomass saves ~4.2M THB (~0.13M USD) a year** (estimates; "
"biomass.md planning price 1.35 to 2 THB/kg delivered). Without electric boilers the grid demand "
"falls from ~980 kW to ~264 kW, so the transformer and the PEA deposit can be smaller (not "
"re-priced, an upside). It brings fuel contracts and a monsoon stock, ash handling, the 14 m flue "
"stack and dust collector, more maintenance and a certified boiler attendant (section 13). The "
"revenue model does not split energy by fuel; the calculator does (section 9.4).",
pick("**Chinese suppliers: the compressor now, a biomass boiler quote next.** Plan A buys the "
"compressor through a Chinese brand's Thai office (~0.25M THB at the midpoint). The Chinese "
"route priced only electric boiler modules; Chinese makers build biomass boilers too (ZOZEN "
"DZL, Sitong DZL/SZL, Taiguo, Yongxing), none priced yet. **A quote ~2M THB or more below the "
"Thai biomass package would put Plan A back under 180M**, so it is the first utilities request "
"(section 14.1, item 10). The Newbilt hydraulic aggregates stay Newbilt's. Chillers and HVAC, "
"the larger blocks, are not checked yet; that is the next Chinese lever to test.",
"**Chinese suppliers: small so far.** Plan B prices Thai-supplied utilities. The Chinese route "
"for the compressor would take ~0.25M THB off at the midpoint (Plan A takes it); Chinese "
"biomass boilers are not priced yet; chillers and HVAC, the larger blocks, are not checked "
"yet."),
pick("**Solar PPA.** The largest single lever (~14.7M THB at the midpoint) moves the array, ~520 kWp "
"on the factory roof, and the battery off the capital budget and adds a power price to the "
"energy line instead: ~633 MWh a year used on site at 3.0 THB/kWh, ~1.9M THB or ~0.06M USD a "
"year in the calculator, an estimate to quote (~21 % off the tariff; MEAei names 10 to 15 % as "
"usual, CapSolar 10 to 30 %). The plant's bill (~0.75M THB a month before solar, estimate) "
"is well above the 100,000 THB a month CapSolar asks of a PPA site.",
"**Solar bought, not leased.** Plan B owns the array, ~640 kWp on every roof and canopy, and "
"the 271 kWh battery: 14.8M to 20.1M THB (PV at 20 to 26 THB/W installed, inverters included; "
"battery 2.0M to 3.5M). Factories on PEA's grid run zero export, so ~85 % of the ~900 MWh a "
"year is used on site and the rest curtailed; the array saves ~2.8M to 3.0M THB a year and "
"pays back in ~4.2 to 5.9 years (estimates). A solar PPA would take ~17.5M THB off the price "
"at the midpoint and add a power price to the energy line instead: owned, the ~760 MWh used on "
"site save the full ~3.8 THB/kWh; through a PPA at ~3.0 THB/kWh (estimate, to quote) only ~0.8 "
"THB/kWh, so the PPA bill is ~2.3M THB (~0.07M USD) a year."),
"**The array follows the site.** ~640 kWp is what every roof and canopy carries on the Payap "
"scenario plot the calculator draws (factory roof ~523 kWp, office roof ~65 kWp, car and scooter "
"canopies ~54 kWp); on the Mueang Chi hall of section 6.2 the roof and canopies take ~300 kWp, and "
"the rest would need ground mount behind the building (which the rooftop permit exemption does not "
"cover) or the phase 2 roof (estimates).",
"usual, CapSolar 10 to 30 %). The plant's bill with biomass steam (~0.36M THB a month before "
"solar: ~1,036 MWh a year and ~264 kW of demand at the PEA tariff, our arithmetic, estimate) is "
"well above the 100,000 THB a month CapSolar asks of a PPA site.",
"**Solar bought, not leased.** Plan B owns the array, ~520 kWp on the factory roof, and the "
"271 kWh battery: 12.4M to 17.0M THB (PV at 20 to 26 THB/W installed, inverters included, 10.4M "
"to 13.5M; battery 2.0M to 3.5M). Factories on PEA's grid run zero export, so ~87 % of the ~730 "
"to 780 MWh a year is used on site (~633 MWh in the calculator) and the rest curtailed; that "
"covers ~61 % of the "
"launch plant's ~1,036 MWh a year of electricity, saves ~2.3M to 2.5M THB a year and pays back "
"in ~4.1 to 5.8 years (estimates). A solar PPA would take ~14.7M THB off the price at the "
"midpoint and add a power price to the energy line instead: owned, the ~633 MWh used on site "
"save the full ~3.7 THB/kWh; through a PPA at ~3.0 THB/kWh (estimate, to quote) only ~0.7 "
"THB/kWh, so the PPA bill is ~1.9M THB (~0.06M USD) a year."),
"**The array is sized to the load, not to the roof area.** With biomass steam the plant's running "
"load is ~230 kW; an hourly sketch (two shifts on 300 days, ~60 kW off-shift base, the 271 kWh battery, the "
"PEA time-of-use tariff with Ft, 23,000 THB/kWp, 25 years at 8 %) puts the best array at **~500 to "
"550 kWp**: above ~550 kWp more of the yield is curtailed under zero export and the extra panels "
"lose money. The factory roof on the Payap scenario plot the calculator draws carries ~520 kWp "
"(~523 kWp in the site model), so PV goes there only. The office roof (~65 kWp) and the car and "
"scooter canopies (~54 kWp) are built PV-ready (structure rated for the panels, conduit to the "
"main board, a spare way for a later inverter), and ~120 kWp go on them when the load rises with "
"the second Duplex system, for ~2.4M to 3.1M THB at 20 to 26 THB/W. On the Mueang Chi hall of "
"section 6.2 the factory roof takes ~247 kWp, its canopies PV-ready too. ~430 kVA of inverters "
"stays under the ERC's 1,000 kVA line (estimates).",
"**Every band narrows only with quotes.** The supplier map in the planning repository lists who to "
"ask, and the re-quotes are phase 0 work (section 14).",
]),
@@ -723,21 +770,21 @@ def blocks():
"the opposite; central takes midpoints. Cash overheads (admin, sales, insurance, facility running, "
"IT, professional fees, marketing, the land lease) are estimated at USD 0.20M to 0.45M a year and "
"paired high-to-adverse. Depreciation is on this plan's blocks: " + pick(
"the high end (6.25M USD) over 10 years (adverse), the midpoint (4.90M USD) over 12.5 years "
"(central) and the low end (3.56M USD) over 15 years (favourable). Payback is counted on the "
"whole plan price including the ramp-up reserve (3.86M / 5.35M / 6.85M USD from the low to the "
"the high end (6.44M USD) over 10 years (adverse), the midpoint (5.06M USD) over 12.5 years "
"(central) and the low end (3.68M USD) over 15 years (favourable). Payback is counted on the "
"whole plan price including the ramp-up reserve (3.99M / 5.52M / 7.05M USD from the low to the "
"high end).",
"the high end (7.73M USD) over 10 years (adverse), the midpoint (6.08M USD) over 12.5 years "
"the high end (7.79M USD) over 10 years (adverse), the midpoint (6.11M USD) over 12.5 years "
"(central) and the low end (4.42M USD) over 15 years (favourable). Payback is counted on the "
"whole plan price including the ramp-up reserve (4.72M / 6.53M / 8.34M USD from the low to the "
"whole plan price including the ramp-up reserve (4.73M / 6.56M / 8.40M USD from the low to the "
"high end).")),
_operating_table(),
CALL("Reading this table honestly", pick([
"**The central case works on ~177M THB.** EBITDA ~1.7M USD (~57M THB) and operating profit ~1.3M "
"**The central case works on ~182M THB.** EBITDA ~1.7M USD (~57M THB) and operating profit ~1.3M "
"USD (~44M THB) a year once the plant runs at volume. It breaks even on operating profit at about "
"**0.2 million records a year, about a quarter of its central output**. Against the earlier ~20 % "
"specials share (0.84M records, EBITDA 1.63M) more specials earn a higher price on fewer records.",
"**The adverse case loses money.** It would need ~0.9 million records to cover depreciation, and "
"**The adverse case loses money.** It would need ~1.0 million records to cover depreciation, and "
"the three presses make 0.58 million at that rate. It stacks the low price, the high cost, the high "
"capital and the high overheads at once. At the central cost and volume the price that covers "
"depreciation is ~2.7 USD (~88 THB) a record (arithmetic on the table), below the low price "
@@ -748,18 +795,18 @@ def blocks():
"above the reject allowance, sales commissions and the extra cost of specials. **Treat the adverse "
"column as the honest one until those lines exist.** The plan price carries no contingency either.",
"**This is a sensitivity, not a forecast.** The plant and business plan calculator's Plan A preset, "
"with its own cost build-up (it adds electric steam heat, the cutting engineer and the PPA power "
"price, ~0.07M USD a year, which this table leaves out) and the team's faster Duplex planning rate, "
"at which the three presses are not Duplex-limited, gives at 850k records and 60 % specials: "
"revenue ~4.14M, EBITDA 2.05M USD, payback 2.4 years on the 161.7M THB investment in a mature "
"year; with a ramp of 35, 70 and 90 % in the first three years and the reserve in year 0, cash "
"payback in year ~3.9, ~25 % IRR and an NPV of ~4.9M USD over ten years, pre-tax and "
"pre-financing (estimates). Not modelled here: cassette and CD-R lines (later in Plan A), stamper "
"with its own cost build-up (it adds the biomass fuel for the steam, ~0.67M THB a year, the cutting "
"engineer, and the PPA power price of ~0.06M USD a year, which this table leaves out) and the "
"team's faster Duplex planning rate, at which the three presses are not Duplex-limited, gives at "
"850k records and 60 % specials: revenue ~4.14M, EBITDA 2.17M USD, payback 2.3 years on the "
"167.1M THB investment in a mature year; with a ramp of 35, 70 and 90 % in the first three years "
"and the reserve in year 0, cash payback in year ~3.8, ~26 % IRR and an NPV of ~5.4M USD over ten "
"years, pre-tax and pre-financing (estimates). Not modelled here: cassette and CD-R lines (later in Plan A), stamper "
"supply to other plants, automation services and the open plant stack for other pressing plants "
"(section 5.6), dropshipping fees, and the ramp year. BOI tax exemptions shield part of "
"early-year profits where there are any.",
], [
"**The central case works on ~216M THB.** EBITDA ~1.73M USD (~57M THB) and operating profit ~1.24M "
"**The central case works on ~217M THB.** EBITDA ~1.73M USD (~57M THB) and operating profit ~1.24M "
"USD (~41M THB) a year once the plant runs at volume. It breaks even on operating profit at about "
"**0.24 million records a year, about a third of its central output**. Against the earlier ~20 % "
"specials share (0.84M records, EBITDA 1.63M) more specials earn a higher price on fewer records.",
@@ -769,33 +816,33 @@ def blocks():
"cost and volume the price that covers depreciation is ~2.8 USD (~92 THB) a record (arithmetic on "
"the table), below the low price assumed: price realisation and utilisation decide solvency, not "
"upside.",
"**What the extra ~39M THB buys is not in this table.** Plan B is Plan A's plant with the six levers "
"**What the extra ~35M THB buys is not in this table.** Plan B is Plan A's plant with the six levers "
"not taken, so revenue, direct cost and EBITDA are Plan A's; only the depreciation (0.49M against "
"Plan A's 0.39M USD at the centre) and the payback (~3.8 against ~3.1 years) move. Not modelled: "
"Plan A's 0.40M USD at the centre) and the payback (~3.8 against ~3.2 years) move. Not modelled: "
"cassette and CD-R revenue, tour and Payap revenue, stamper supply to other plants, automation "
"services and the open plant stack for other pressing plants (section 5.6), and the PPA power bill "
"the owned array avoids (~0.07M USD a year in the calculator).",
"the owned array avoids (~0.06M USD a year in the calculator).",
"**The central margin is too good to trust yet.** A central EBITDA margin of ~47 % is far above "
"the 15 to 25 % pressing plants earn. The direct cost table counts only per-record consumables and "
"direct payroll and leaves out indirect labour (supervision, planning, warehouse), freight, scrap "
"above the reject allowance, sales commissions and the extra cost of specials. **Treat the adverse "
"column as the honest one until those lines exist.** The plan price carries no contingency either.",
"**This is a sensitivity, not a forecast.** The plant and business plan calculator's Plan B preset, "
"with its own cost build-up (it adds electric steam heat and the cutting engineer, which this "
"table leaves out) and the team's faster Duplex planning rate, at which the three presses are not "
"Duplex-limited, gives at 850k records and 60 % specials: revenue ~4.14M, EBITDA 2.12M USD, "
"payback 2.9 years on the 200.6M THB investment in a mature year; with a ramp of 35, 70 and 90 % in "
"the first three years and the reserve in year 0, cash payback in year ~4.4, ~21 % IRR and an NPV "
"of ~4.1M USD over ten years, pre-tax and pre-financing (estimates). Its EBITDA is 0.07M above "
"Plan A's 2.05M because the owned array carries no PPA power price. Not modelled here: cassette "
"with its own cost build-up (it adds the biomass fuel for the steam, ~0.67M THB a year, and the "
"cutting engineer, which this table leaves out) and the team's faster Duplex planning rate, at "
"which the three presses are not Duplex-limited, gives at 850k records and 60 % specials: revenue "
"~4.14M, EBITDA 2.23M USD, payback 2.7 years on the 201.6M THB investment in a mature year; with a "
"ramp of 35, 70 and 90 % in the first three years and the reserve in year 0, cash payback in year "
"~4.2, ~22 % IRR and an NPV of ~4.7M USD over ten years, pre-tax and pre-financing (estimates). Its "
"EBITDA is 0.06M above Plan A's 2.17M because the owned array carries no PPA power price. Not modelled here: cassette "
"and CD-R lines, stamper supply to other plants, automation services and the open plant stack for "
"other pressing plants (section 5.6), dropshipping fees, and the ramp year. BOI tax "
"exemptions shield part of early-year profits where there are any.",
])),
IMG(pick("renders/calculator/plan-a-cash.png", "renders/calculator/plan-b-cash.png"), 160,
"Figure 12. Ten years of cash in the plant and business plan calculator, " + pick(
"Plan A preset: cash payback in year ~3.9, IRR ~25 %, NPV ~4.9M USD at 10 %",
"Plan B preset: cash payback in year ~4.4, IRR ~21 %, NPV ~4.1M USD at 10 %") +
"Plan A preset: cash payback in year ~3.8, IRR ~26 %, NPV ~5.4M USD at 10 %",
"Plan B preset: cash payback in year ~4.2, IRR ~22 %, NPV ~4.7M USD at 10 %") +
". Year 0 is the midpoint investment plus the ramp-up reserve; years 1 to 3 sell 35, 70 and 90 % of "
"the mature year's output. Pre-tax, pre-financing, no BOI tax holiday, no terminal value. The "
"calculator's own cost build-up and faster Duplex planning rate, not the table above "
@@ -892,7 +939,8 @@ def blocks():
["Factory licence (Ror.Ngor. 4) with galvanics in the first licence", "First production, Q4 2028",
"~4 months", "Galvanics effluent and hazardous-substance registration are now in the first "
"licence scope: the most likely regulatory friction point; ZLD design in the application from "
"the start"],
"the start; the biomass boiler's registration and its air-emission limits go into the same permit "
"work (to confirm)"],
pick(["Solar through the PPA (the installer builds and owns the array)", "Fit-out, ~Q2 2028",
"Large", "Not a risk; the PPA offer is phase 0 work; PEA interconnection approval takes 3 to "
"6 months, filed alongside procurement; battery lead time is 50 to 60 days"],
@@ -913,9 +961,7 @@ def blocks():
P("**BOI windows are comfortable** on the August calendar: machinery clears customs ~Q3 2028 against a "
"30-month import window ending ~Q4 2029 (~15 months of margin), and first production ~Q4 2028 "
"against a ~36-month full-operation deadline (~18 months). The launch plant puts four vendors' "
"machines, not one, inside the import window" + pick(
", and Plan A adds the Chinese boiler modules. ",
". ") +
"machines, not one, inside the import window. " +
"The margin is consumed by exactly one scenario: filing early to start the clock and then discovering "
"the site does not work. Verify zoning before filing."),
P("**The one lever worth six to nine months** is the BOI sequencing question in section 7: the duty "
@@ -947,18 +993,16 @@ def blocks():
"between the Mueang Chi lease, other Payap land and the industrial estate; resolve the 35 % vs "
"45 % humidity floor", "BOI filed"],
["2. Commit", "Incorporate under the certificate; sign the lease; order every long-lead item: "
"Pheenix galvanics line, Sillitoe lathe, Sibert line, " + pick(
"Newbilt Duplex and Classic, first two boiler and chiller modules (boilers through the Chinese "
"route)",
"Newbilt Duplex and Classic, first two boiler and chiller modules (boilers and compressor "
"from Thai suppliers)"), "BOI certificate and validated pricing"],
"Pheenix galvanics line, Sillitoe lathe, Sibert line, Newbilt Duplex and Classic, the two "
"biomass boiler modules and the first two chiller modules", "BOI certificate and validated "
"pricing"],
["3. Build and commission (~6 to 12 months after commitment)", pick(
"Construction, water-treatment building, utilities, HVAC, clean zones, security, the "
"crane-ready frame (a mobile crane for the installations); the solar array built by the PPA "
"installer; machinery installation and vendor commissioning; traceability and ERPNext live "
"Construction, water-treatment building, utilities (the biomass boilers and fuel store), HVAC, "
"clean zones, security, the crane-ready frame (a mobile crane for the installations); the "
"factory-roof solar array built by the PPA installer; machinery installation and vendor commissioning; traceability and ERPNext live "
"before the machines; hire and train",
"Construction, water-treatment building, utilities, HVAC, clean zones, solar and battery, "
"security, crane, visitor corridor; machinery installation and vendor commissioning; "
"Construction, water-treatment building, utilities (the biomass boilers and fuel store), HVAC, "
"clean zones, factory-roof solar and battery, security, crane, visitor corridor; machinery installation and vendor commissioning; "
"traceability and ERPNext live before the machines; hire and train"),
"Building permit, vendor build dates confirmed"],
["4. Launch (the whole chain in-house)", "Commission in sequence (table below); test pressings, QC "
@@ -966,11 +1010,12 @@ def blocks():
"compound", "Commissioning complete"],
["5. Expand (revenue-gated)", pick(
"Second Duplex system; further Classics; the laser confocal and wide-area profiler; the visitor "
"corridor and public tours; cassette and CD-R duplication; an owned crane if needed; the "
"biomass boiler if steam starts electric; the phase 2 building; CD replication if chosen",
"corridor and public tours; cassette and CD-R duplication; an owned crane if needed; PV on "
"the PV-ready office roof and canopies when the load rises; the phase 2 building; CD "
"replication if chosen",
"Second Duplex system, then further Duplex systems and Classics (the hall is laid out for five "
"Duplex bays and four Classic positions); the biomass boiler if steam starts electric; the "
"phase 2 building; CD replication if chosen"),
"Duplex bays and four Classic positions); PV on the PV-ready office roof and canopies when the "
"load rises; the phase 2 building; CD replication if chosen"),
"Revenue and, for CD replication, a separate decision"],
], widths_mm=[42, 96, 32], font_pt=8.5),
H2("11.1 Commissioning sequence"),
@@ -980,7 +1025,7 @@ def blocks():
"First lacquers, fathers, mothers and stampers, and the metal archive "
"from the first title"],
["2", "Newbilt Duplex system (two HRP 12, EX 50 and EX 35), with the steam and cooling plant "
"(boiler modules B-1, B-2; chiller modules CH-1, CH-2)",
"(biomass boiler modules B-1, B-2 with the fuel store; chiller modules CH-1, CH-2)",
"The semi-automatic presses suit the colour, splatter and boutique runs that carry the premiums, "
"and they teach the crews the process"],
["3", "Newbilt Classic, fully automatic", "Volume runs once the metal path and the press process "
@@ -1017,24 +1062,25 @@ def blocks():
"the start, and on Payap land the lessor's consent as well."],
["**The cutting room is a smaller decision than it was.** The Sillitoe SDMS lists at USD 125k with "
"automation in the box, and the Payap programmes in mastering and lathe cutting need a working "
"room.", pick("**More capital up front.** ~127M to 226M THB in one round (~177M at the "
"room.", pick("**More capital up front.** ~132M to 233M THB in one round (~182M at the "
"midpoint), against ~57M to 95M THB for the superseded phased entry; more of it is "
"committed before the market has validated the price.",
"**More capital up front.** ~156M to 275M THB in one round (~216M at the midpoint), "
"**More capital up front.** ~156M to 277M THB in one round (~217M at the midpoint), "
"against ~57M to 95M THB for the superseded phased entry; more of it is committed "
"before the market has validated the price.")],
pick(["**Six levers, no machine dropped.** The levers bring the whole chain to ~180M THB, and the "
pick(["**Six levers, no machine dropped.** The levers bring the whole chain to ~180M THB (~182M at "
"the midpoint, ~2M above 180M; a Chinese biomass boiler quote could close the gap), and the "
"second Duplex waits for demand and revenue on a reserved floor.",
"**What the levers give up.** Owned solar (a PPA bill of ~0.07M USD a year instead), public tours "
"at first, cassette and CD-R at launch, a bought crane; the boilers are imported from China "
"under the Thai boiler rules. The adverse case still loses money."],
["**Everything in at launch.** Owned solar on every roof and canopy (~640 kWp) with no PPA "
"**What the levers give up.** Owned solar (a PPA bill of ~0.06M USD a year instead), public tours "
"at first, cassette and CD-R at launch, a bought crane, a Thai-serviced compressor. The adverse "
"case still loses money."],
["**Everything in at launch.** Owned solar on the factory roof (~520 kWp) with no PPA "
"bill, the full metrology stack "
"from the first release, tours and the Payap programmes from day one, cassette and CD-R, its "
"own crane and locally serviced utilities; the second Duplex waits for demand and revenue on a "
"own crane and a locally serviced compressor; the second Duplex waits for demand and revenue on a "
"reserved floor.",
"**~39M THB more that the model does not repay.** The same EBITDA as Plan A with more "
"depreciation and a longer payback (~3.8 against ~3.1 years); the adverse case still loses "
"**~35M THB more that the model does not repay.** The same EBITDA as Plan A with more "
"depreciation and a longer payback (~3.8 against ~3.2 years); the adverse case still loses "
"money."]),
], widths_mm=[85, 85], font_pt=8.5),
P("**How the plan answers the risks:** commission the metal path first and measure it before the "
@@ -1087,7 +1133,7 @@ def blocks():
"whose incentives are aligned with the plant's schedule and quality, within the same province.",
"**Debt-to-equity no higher than 3:1**, maintained for the life of the BOI privileges, which sets "
"the floor on equity in the financing mix: at least a quarter of the funding, " + pick(
"~44M THB of Plan A's ~177M", "~54M THB of Plan B's ~216M") +
"~46M THB of Plan A's ~182M", "~54M THB of Plan B's ~217M") +
" (arithmetic, before financing costs).",
"**A shareholders' agreement** covering board composition, reserved matters (capital calls and "
"tranche releases, the growth options such as a second Duplex, CD replication), pre-emption and transfer, information rights, and the founders' roles and "
@@ -1133,7 +1179,8 @@ def blocks():
"Payap R&D", "Simona", "USD 5k to 15k",
"Sequencing, scope"],
["3", "Thai counsel: lease heads of terms (term, renewal, building ownership, assignment) and zoning "
"of the chosen plot for pressing, a steam boiler and electroplating; company and shareholder "
"of the chosen plot for pressing, a biomass steam boiler (with its air-emission limits) and "
"electroplating; company and shareholder "
"structure including Ploy Printing", "Simona, counsel", "USD 5k to 15k", "Zoning, lease, "
"ownership"],
["4", "Soil boring test on the chosen plot", "Alexander", "THB 30k to 50k", "Ground risk"],
@@ -1148,32 +1195,37 @@ def blocks():
["8", "Sibert itemised quotation and order terms against the USD 250k budget: lead time, "
"installation time, spares, shipping, travel", "Alexander", "Free", "Stamper prep, schedule"],
["9", "Building request for quotation to two or three Thai pre-engineered building contractors, "
"with the soil result", "Alexander", "Free", "Building estimate"],
"with the soil result and the office roof and canopies PV-ready", "Alexander", "Free",
"Building estimate"],
["10", pick(
"Utility requests: Chinese boiler makers for the plan's boiler modules (ZOZEN, Sitong, Fangkuai, "
"Taiguo; 1.25 MPa, ASME S stamp, electric and fired variants) with a Thai installer; compressors "
"from Kaishan and Denair's Thai offices; Thai suppliers for the rest; chillers and HVAC, Chinese "
"makers included; the 35 % vs 45 % humidity floor; a Thai hydraulic builder for the central "
"plant",
"Utility requests: Thai suppliers; Chinese boiler makers (ZOZEN, Sitong, Fangkuai, Taiguo; "
"1.25 MPa, ASME S stamp, electric and fired variants) and compressors from Kaishan and Denair's "
"Thai offices for comparison; chillers and HVAC, Chinese makers included; the 35 % vs 45 % "
"humidity floor; a Thai hydraulic builder for the central plant"),
"Alexander", "Free", "Utilities band, fuel choice"],
"Utility requests: biomass boiler packages from Getabec and from Chinese makers (ZOZEN, Sitong, "
"Taiguo, Yongxing; ASME S stamp, with a Thai installer), the Chinese quote first, because ~2M "
"THB or more below the Thai package puts Plan A back under 180M; electric modules as the "
"fallback quote; fuel supply offers (chips and wood, delivered price, a monsoon stock); "
"compressors from Kaishan and Denair's Thai offices; Thai suppliers for the rest; chillers and "
"HVAC, Chinese makers included; the 35 % vs 45 % humidity floor; a Thai hydraulic builder for "
"the central plant",
"Utility requests: biomass boiler packages from Getabec and, for comparison, Chinese makers "
"(ZOZEN, Sitong, Taiguo, Yongxing); electric modules as the fallback quote; fuel supply offers "
"(chips and wood, delivered price, a monsoon stock); Thai suppliers for the rest, compressors "
"from Kaishan and Denair's Thai offices for comparison; chillers and HVAC, Chinese makers "
"included; the 35 % vs 45 % humidity floor; a Thai hydraulic builder for the central plant"),
"Alexander", "Free", "Utilities band, fuel supply"],
["11", pick("Metrology distributor quotes (XRF, inline vision, audio station; confocal and profiler "
"for later)", "Metrology distributor quotes (XRF, confocal, profiler, inline vision, "
"audio station)"), "Alexander", "Free", "Metrology band"],
["12", pick("Solar PPA offers (the plan's lever) next to a purchase quote; the installer's battery "
"and inverter design checked", "Solar and battery purchase quotes, with a PPA offer for "
"comparison; battery and inverter engineering "
"checks"), "Alexander", "Free",
["12", pick("Solar PPA offers for the ~520 kWp factory roof (the plan's lever) next to a purchase "
"quote; the installer's battery and inverter design checked", "Solar and battery purchase "
"quotes for the ~520 kWp factory roof, with a PPA offer for comparison; battery and "
"inverter engineering checks"), "Alexander", "Free",
pick("Solar lever, PPA price", "Solar block")],
["13", pick("Cassette and CD-R equipment quotes from two vendors each, for the growth step; tape and "
"shell supply", "Cassette and CD-R equipment quotes from two vendors each; tape and "
"shell supply"), "Alexander", "Free", "New-scope estimates"],
["14", "Search for the galvanics process engineer and the cutting engineer; next meeting with Payap "
"on the programmes", "Simona, Alexander", "None yet", "Skills risk"],
["15", "60 rai title check for the coppice plan", "Simona", "Small", "Biomass path"],
["15", "60 rai title check for own fuelwood (the coppice plan)", "Simona", "Small",
"Own fuel later, an upside"],
["16", "Optional: vinyl manufacturing consultancy for a layout and installation review",
"Alexander", "GBP 10k to 20k", "Layout risk"],
["17", "Archive the Thai invoices and tour notes with this plan", "Simona", "None", "Evidence base"],
@@ -1183,44 +1235,46 @@ def blocks():
["Now", "Approval of Phase 0 spending of ~USD 40k to 80k (~1.3M to 2.6M THB, part of the plan "
"price), so the quotes, the soil test, the BOI consultant and counsel can start."],
["On the gates clearing", pick(
"A commitment in principle to **Plan A at ~180M THB** (~177M at the midpoint, the ramp-up "
"A commitment in principle to **Plan A at ~180M THB** (~182M at the midpoint, the ramp-up "
"reserve of 10M to 20M included, no contingency), released in the tranches of section 8.3, "
"with the financing mix set to hold debt-to-equity at or below 3:1 (equity of at least ~44M "
"THB). Told plainly: the price carries no contingency (at 15 % it would be ~24M THB more at "
"the midpoint), and from the low to the high end of every block the plan comes to ~127M to "
"226M THB. The Newbilt re-quote, the Pheenix quote, the building quote with the soil test, "
"the metrology quotes and the solar PPA offer decide where in that range it lands.",
"A commitment in principle to **Plan B at ~215M THB** (~216M at the midpoint, the ramp-up "
"with the financing mix set to hold debt-to-equity at or below 3:1 (equity of at least ~46M "
"THB). Told plainly: at the midpoint the plan is **~2M above 180M** (177M to 187M with the "
"reserve's 10M to 20M); the price carries no contingency (at 15 % it would be ~25M THB more at "
"the midpoint), and from the low to the high end of every block the plan comes to ~132M to "
"233M THB. The Newbilt re-quote, the Pheenix quote, the building quote with the soil test, "
"the metrology quotes, the solar PPA offer and a Chinese biomass boiler quote decide where in "
"that range it lands and whether it comes back under 180M.",
"A commitment in principle to **Plan B at ~215M THB** (~217M at the midpoint, the ramp-up "
"reserve of 10M to 20M included, no contingency), released in the tranches of section 8.3, "
"with the financing mix set to hold debt-to-equity at or below 3:1 (equity of at least ~54M "
"THB). Told plainly: the price carries no contingency (at 15 % it would be ~30M THB more at "
"the midpoint), and from the low to the high end of every block the plan comes to ~156M to "
"275M THB. The Newbilt re-quote, the Pheenix quote, the building quote with the soil test, "
"277M THB. The Newbilt re-quote, the Pheenix quote, the building quote with the soil test, "
"the metrology quotes and the solar and battery purchase quotes decide where in that range it "
"lands.")],
["Decisions", pick(
"The equity and debt mix, and how quotes landing above the plan price are funded; the six "
"levers, the solar PPA first (~17.5M THB off the price for a power bill of ~0.07M USD a year); "
"CD replication, "
"yes or no, before the BOI application is finalised; the steam fuel (electric or biomass); "
"levers, the solar PPA first (~14.7M THB off the price for a power bill of ~0.06M USD a year); "
"whether to buy a Chinese biomass boiler if its quote brings the plan under 180M; CD "
"replication, yes or no, before the BOI application is finalised; the biomass fuel contracts; "
"the shareholder structure with Ploy Printing and the founders; hedging of the EUR orders.",
"The equity and debt mix, and how quotes landing above the plan price are funded; the ~39M "
"THB of items Plan A leases or defers (owned solar on every roof and canopy with no PPA bill, "
"the full "
"metrology stack, the visitor corridor, cassette and CD-R, the bought crane, Thai boilers and "
"The equity and debt mix, and how quotes landing above the plan price are funded; the ~35M "
"THB of items Plan A leases or defers (owned solar on the factory roof with no PPA bill, the "
"full metrology stack, the visitor corridor, cassette and CD-R, the bought crane, the Thai "
"compressor), each weighed against its lever; CD replication, yes or no, before the BOI "
"application is finalised; the steam fuel (electric or biomass); the shareholder structure "
"application is finalised; the biomass fuel contracts; the shareholder structure "
"with Ploy Printing and the founders; hedging of the EUR orders.")],
["Later", pick(
"Revenue-funded growth: the second Duplex system (~USD 230k to 300k for the press system; "
"~15.4M THB at the midpoint with its chiller module, freight and working capital, estimate), "
"the laser confocal and wide-area profiler (USD 180k to 350k), the visitor "
"corridor, cassette and CD-R, an owned crane if needed, further Classics, the biomass boiler "
"if steam starts electric, and the phase 2 building.",
"corridor, cassette and CD-R, an owned crane if needed, further Classics, PV on the PV-ready "
"office roof and canopies (~120 kWp, ~2.4M to 3.1M THB, estimate), and the phase 2 building.",
"Revenue-funded growth: the second Duplex system (~USD 230k to 300k for the press system; "
"~15.4M THB at the midpoint with its chiller module, freight and working capital, estimate), "
"then further Duplex systems and Classics in the hall laid out for five Duplex bays and four "
"Classic positions; the biomass boiler if steam starts electric; and the phase 2 building.")],
"Classic positions; PV on the PV-ready office roof and canopies (~120 kWp, ~2.4M to 3.1M THB, "
"estimate); and the phase 2 building.")],
], widths_mm=[38, 132]),
P("The next version of this plan should carry: the Newbilt, Pheenix, Sillitoe and Sibert quotes with "
"their build times in place of the placeholder and estimated blocks; the building quote with the "
@@ -1228,7 +1282,8 @@ def blocks():
"its price; ",
"the BOI consultant's reading on the battery (battery storage, capped at 12M THB "
"per MW); ") +
"the negotiated lease; a buyer-side price data point; the investor's CD and fuel decisions; how "
"the negotiated lease; a buyer-side price data point; the investor's CD decision; the biomass boiler "
"quotes (Getabec and a Chinese maker) and fuel supply offers; how "
"overruns are funded, since the price carries no contingency; a calendar re-drawn for the launch "
"plant with the metal-path commissioning in it; a year-by-year cash model for the ramp; and the "
"shareholder terms. Each of those is a phase 0 output."),
@@ -1252,8 +1307,10 @@ def blocks():
["finance/revenue-model.md", "Pricing, the Thai market data and factory tour, the Record Industry "
"benchmark, direct cost, the launch-plant operating picture and the "
"operating pictures of Plan A and Plan B"],
["finance/utilities-investment.csv", "Thai supplier candidates and budgetary ranges for steam, "
"cooling, air, water, HVAC, solar and battery"],
["finance/utilities-investment.csv", "Thai supplier candidates and budgetary ranges for steam "
"(the biomass package and the fuel store; the electric bank "
"as the alternative), cooling, air, water, HVAC, solar and "
"battery"],
["finance/phase1-construction-rfq.md", "Contractor price request with quantities from the "
"parametric model"],
["fleet-calculator.html", "Plant and business plan calculator: target output and specials share to "
@@ -1272,8 +1329,9 @@ def blocks():
"contacts"],
["suppliers/making-vinyl-europe-2026-exhibitors.md", "Making Vinyl Europe 2026 briefing and what "
"came after the show"],
["suppliers/china-utilities.md", "Chinese boilers, compressed air and hydraulics; Thai rules for "
"imported boilers; what the Chinese route saves"],
["suppliers/china-utilities.md", "Chinese boilers (electric priced; biomass makers named, not "
"priced), compressed air and hydraulics; Thai rules for imported "
"boilers; what the Chinese route saves"],
["digital-factory.md (demos plant-operation.html, factory-console.html)", "Data platform: ERPNext "
"as the only system of record, machine data, the factory application, the "
"NixOS fleet; the plant overview and factory console demos (Figures 2 to 4)"],
@@ -1291,11 +1349,18 @@ def blocks():
"stage, lead times and the repress path"],
["traceability.md, quality-automation.md", "The traceability specification; metrology, layered "
"record QC, the materials lab"],
["sustainability.md, biomass.md, steam-cooling.html", "Solar, heat recovery, water, zero discharge, "
"the grid tariff; the biomass fuel strategy; "
"the steam and cooling plant"],
["sustainability.md ('What ~640 kWp means on the grid'), finance/utilities-investment.csv (solar "
"rows), boi.md", "Solar on every roof and canopy (~640 kWp) and its sources: the installed price of "
["sustainability.md, steam-cooling.html", "Solar, heat recovery, water, zero discharge, the grid "
"tariff; the steam and cooling plant"],
["biomass.md", "Biomass steam for both plans: what the boilers burn (~300 t of air-dry wood or ~460 t "
"of fresh chips a year at ~850k records), the fuel prices (1.35 to 2 THB/kg delivered, "
"0.5 to 0.9 THB/kWh of heat; sources in finance/biomass/), the northern fuel market, "
"the 60 rai of own fuelwood and its title check, logistics on site (fuel store, ash)"],
["sustainability.md ('PV size with biomass steam', the hourly PV sizing sketch), "
"finance/utilities-investment.csv "
"(solar rows), boi.md", "PV on the factory roof (~520 kWp; the office roof and the canopies "
"PV-ready) and its sources: the hourly sizing sketch (two shifts, 300 days, the 271 kWh battery, "
"PEA time-of-use with Ft, 23,000 THB/kWp over 25 years at 8 %: best array ~500 to 550 kWp, "
"estimate); the installed price of "
"20 to 26 THB/W (DEDE's Thailand PV Status survey, CapSolar 2026, Saimai Solar's 2026 list); zero "
"export for factories on PEA's grid (CapSolar, rooftop solar regulations, 2026; Sahawatthanakit, "
"2026); the permits (Ministerial Regulation No. 3 B.E. 2567, in force 28 December 2024; ERC's "
+1 -1
View File
@@ -161,7 +161,7 @@ PIR.
| Paving — heavy duty | **1,608 m²** rigid reinforced concrete for laden trucks: truck apron, dock face, internal circulation road, Phase 2 link |
| Paving — general | **2,779 m²** lighter hardstanding: car park, yard and margins |
| **Paving total** | **4,387 m²** — see note below |
| Car/scooter parking | Roofed canopies: **27.7 × 7.0 m (195 m², 10 cars)** + **13.7 × 5.5 m (76 m², 30 scooters)**, steel canopy carrying **~40 kWp** PV |
| Car/scooter parking | Roofed canopies: **27.7 × 7.0 m (195 m², 10 cars)** + **13.7 × 5.5 m (76 m², 30 scooters)**, steel canopy built **PV-ready** for ~40 kWp (structure for the panels' dead load and uplift, conduit to the main board); panels later, not in this contract |
| Guard house | **12 m² (4 × 3 m)**, insulated/AC'd, with toilet; sited at the gate, north-west side |
| Tank foundations | Ring foundation for a **9 m dia × 4 m** fire water tank (**~250 m³, ~250 t full** — the geometry gives 254 m³ gross; if 200 m³ usable with freeboard is intended, the foundation still carries the full 250 t) sited in the **north-west corner of the plot**, with the **fire pump house adjacent to it**; plus a **5 m dia × 3 m** raw water tank. Tanks themselves are vendor-supplied bolted panels — foundations only |
| Fire main | Ring main runs from the north-west corner to the buildings — quote the **length**, not just "a ring main" |
+25 -22
View File
@@ -670,23 +670,24 @@ What it says:
The business plan comes in two versions
([total investment](total-investment.md#two-plans-a-at-180m-thb-and-b-at-215m-thb-october-2026)):
**Plan A** (~177M THB, the launch plant with six cost levers) and
**Plan B** (~216M THB, the same launch plant with everything in), both
priced without contingency and with the ramp-up reserve. Both run the
**Plan A** (~182M THB, the launch plant with six cost levers) and
**Plan B** (~217M THB, the same launch plant with everything in), both
priced without contingency and with the ramp-up reserve, both on biomass
steam with PV on the factory roof (October 2026). Both run the
same three presses, so volume, price, direct cost, title services and
overheads are those of the launch-plant table above; only the
depreciation follows each plan's capital (estimates):
- **Plan A**: the high end of its blocks (6.25M USD) over 10 years, the
midpoint (4.90M USD) over 12.5, the low end (3.56M USD) over 15. The
solar PPA adds its power price to the energy line (~0.07M USD a year in
the calculator for the ~640 kWp array), not shown here.
- **Plan B**: 7.73M USD over 10 years, 6.08M over 12.5, 4.42M over 15.
Its owned solar (~640 kWp, every roof and canopy) saves the PPA power bill; cassette and CD-R sales, tours
- **Plan A**: the high end of its blocks (6.44M USD) over 10 years, the
midpoint (5.06M USD) over 12.5, the low end (3.68M USD) over 15. The
solar PPA adds its power price to the energy line (~0.06M USD a year in
the calculator for the ~520 kWp factory roof), not shown here.
- **Plan B**: 7.79M USD over 10 years, 6.11M over 12.5, 4.42M over 15.
Its owned solar (~520 kWp on the factory roof) saves the PPA power bill; cassette and CD-R sales, tours
and the Payap programmes it opens from the start are not modelled.
- **Payback** is counted on the whole plan price including the ramp-up
reserve (Plan A 3.86M / 5.35M / 6.85M USD, Plan B 4.72M / 6.53M /
8.34M USD from the low to the high end).
reserve (Plan A 3.99M / 5.52M / 7.05M USD, Plan B 4.73M / 6.56M /
8.40M USD from the low to the high end).
| USD/yr | A adverse | A central | A favourable | B adverse | B central | B favourable |
|---|---|---|---|---|---|---|
@@ -697,23 +698,23 @@ depreciation follows each plan's capital (estimates):
| Title-services contribution | 0.07M | 0.23M | 0.48M | 0.07M | 0.23M | 0.48M |
| Cash overheads | 0.45M | 0.33M | 0.20M | 0.45M | 0.33M | 0.20M |
| **EBITDA** | **0.23M** | **1.73M** | **3.79M** | **0.23M** | **1.73M** | **3.79M** |
| Depreciation | 0.62M | 0.39M | 0.24M | 0.77M | 0.49M | 0.29M |
| **Operating profit** | **-0.39M** | **1.34M** | **3.55M** | **-0.54M** | **1.24M** | **3.50M** |
| Depreciation | 0.64M | 0.40M | 0.25M | 0.78M | 0.49M | 0.29M |
| **Operating profit** | **-0.41M** | **1.33M** | **3.54M** | **-0.55M** | **1.24M** | **3.50M** |
| Revenue | 2.28M (~75M THB) | 3.65M (~120M THB) | 5.41M (~179M THB) | 2.28M (~75M THB) | 3.65M (~120M THB) | 5.41M (~179M THB) |
| Payback on the plan price (EBITDA, mature year) | ~30 yr | ~3.1 yr (2.2 to 4.0) | ~1.0 yr | ~36 yr | ~3.8 yr (2.7 to 4.8) | ~1.2 yr |
| Payback on the plan price (EBITDA, mature year) | ~31 yr | ~3.2 yr (2.3 to 4.1) | ~1.1 yr | ~37 yr | ~3.8 yr (2.7 to 4.9) | ~1.2 yr |
What it says:
- **Plan A** breaks even on operating profit at **~0.2 million records a
year**; its adverse corner still loses money, because it would need
~0.9 million records to cover depreciation and the three presses make
~1.0 million records to cover depreciation and the three presses make
0.58 million at that rate.
- **Plan B** breaks even at **~0.24 million records**, and its adverse
corner loses more (~1.1 million records needed to cover depreciation).
At the central cost and volume the price that covers its depreciation
is ~2.8 USD (~92 THB) a record.
- **On these numbers Plan B's extra ~39M THB earns little**: the same
EBITDA here (the calculator, which splits energy by plan, puts it ~0.07M
- **On these numbers Plan B's extra ~35M THB earns little**: the same
EBITDA here (the calculator, which splits energy by plan, puts it ~0.06M
USD a year ahead for the PPA bill the owned array avoids), more
depreciation and a longer payback. Its case rests on what
the table leaves out: the PPA power bill it avoids (the BOI no longer
@@ -726,11 +727,13 @@ What it says:
The [calculator](../fleet-calculator.html) presets, at the team's
planning rates (3 records a minute per Duplex system) and its own cost
build-up, give at 850k records: **Plan A** EBITDA 2.05M USD, payback 2.4
years on the investment, cash payback in year ~3.9 and ~25 % IRR over ten
years with the reserve in year 0; **Plan B** EBITDA 2.12M USD, payback 2.9
years, cash payback in year ~4.4 and ~21 % IRR (pre-tax, pre-financing,
estimates).
build-up, give at 850k records: **Plan A** EBITDA 2.17M USD, payback 2.3
years on the investment, cash payback in year ~3.8 and ~26 % IRR over ten
years with the reserve in year 0; **Plan B** EBITDA 2.23M USD, payback 2.7
years, cash payback in year ~4.2 and ~22 % IRR (pre-tax, pre-financing,
estimates). Both rose ~0.11M to 0.12M USD a year when steam moved from electric to
biomass (~4.2M THB a year less energy); the table above does not split
energy by fuel, so it does not show that saving.
## Operating picture at full capacity (five-press fleet)
+39 -27
View File
@@ -51,7 +51,7 @@ on two shifts (estimate: the [scale](../scale.md) basis gives ~0.71 to
| Cutting room: Sillitoe SDMS, spare cutterhead and support, mastering console and chain, monitoring, room build-out | 200k – 350k | 6.6M – 11.6M | SDMS list price USD 125k (ex tax and shipping); the rest estimate |
| Metrology and QC stack (XRF, laser confocal, wide-area profiler, inline vision on three presses, audio station) | 350k – 810k | 11.6M – 26.7M | estimate, phaseable ([quality automation](../quality-automation.md)) |
| PVC lab, day-one tier | 55k – 150k | 1.8M – 5.0M | estimate, [quality automation](../quality-automation.md) |
| Utilities, solar, battery, HVAC, clean zones, racking | 1,042k – 1,707k | 34.4M – 56.3M | [utilities CSV](utilities-investment.csv) baseline re-sized for three presses: chiller bank two modules instead of three; PV on every roof and canopy (~640 kWp, user decision 17 October 2026) at 20 to 26 THB/W installed and the battery installed (Thai market prices checked October 2026, sources in the CSV) |
| Utilities, steam, solar, battery, HVAC, clean zones, racking | 1,045k – 1,764k | 34.5M – 58.2M | [utilities CSV](utilities-investment.csv) baseline re-sized for three presses: chiller bank two modules instead of three; **biomass steam** (two 500 kg/h modules, 6M to 10M THB, plus the fuel store and handling, 1M to 2M) and **PV on the factory roof** (~520 kWp at 20 to 26 THB/W installed; office roof and parking canopies PV-ready), both user decisions of 17 October 2026; the battery installed (Thai market prices checked October 2026, sources in the CSV) |
| Building ~1,500 m² plus civil and site works | 650k – 1,100k | 21.4M – 36.3M | estimate at 12,000 – 20,000 THB/m² plus ~20 % site works; soil is the main variable |
| Overhead crane, runway, frame premium, machine door | 97k – 227k | 3.2M – 7.5M | estimate, [crane, workshop and tours](../crane-workshop-tours.md) |
| Maintenance workshop and machine bay fit-out | 30k – 76k | 1.0M – 2.5M | estimate, same |
@@ -61,9 +61,9 @@ on two shifts (estimate: the [scale](../scale.md) basis gives ~0.71 to
| Cassette duplication and CD-R duplication | 55k – 190k | 1.8M – 6.3M | estimate, business plan sections 4.8 and 4.9 |
| Freight, installation, commissioning, training (Pheenix, Sibert, Sillitoe, Newbilt beyond its quoted 5 days) | 150k – 300k | 5.0M – 9.9M | estimate |
| Working capital, PVC stock, spares, lease deposit, first-year rent | 135k – 290k | 4.5M – 9.6M | estimate; land is leased, so no land purchase |
| Subtotal | ~4.42M – 7.73M | ~146M – 255M | midpoint ~6.08M USD, ~201M THB |
| Contingency 15 % | ~0.66M – 1.16M | ~22M – 38M | |
| **Total, launch plant** | **~5.1M – 8.9M USD** | **~168M – 294M THB** | midpoint ~6.99M USD, ~231M THB |
| Subtotal | ~4.42M – 7.79M | ~146M – 257M | midpoint ~6.11M USD, ~202M THB |
| Contingency 15 % | ~0.66M – 1.17M | ~22M – 39M | |
| **Total, launch plant** | **~5.1M – 9.0M USD** | **~168M – 296M THB** | midpoint ~7.02M USD, ~232M THB |
Not in the total: a **reserve for the ramp-up** (staff hired before first
revenue, overheads until volume covers them; ~10M to 20M THB, estimate),
@@ -144,11 +144,20 @@ versions** for the investor, built from the same documents:
First drawn as five presses at ~225M THB (Plan A plus 25 %); re-defined
by the user on 17 October 2026 ("plan b should also only start with 1
duplex and 1 classic, but with all levers"). In both plans the second
Duplex system is a growth step from revenue. On 17 October 2026 the
solar array was sized to every roof and canopy (~640 kWp, "use as much
roof space as possible"); that raised Plan B from ~208M to ~216M and
Plan A's solar lever from ~9.7M to ~17.5M, and left Plan A's price as
it was, because Plan A leases the array.
Duplex system is a growth step from revenue.
- **Both run on biomass steam, with PV on the factory roof only**
(user, 17 October 2026: "only put solar on the factory, prepare the
other buildings for solar, option a and b should operate on biomass").
The office roof and the parking canopies are built PV-ready. With
biomass the plant's running load falls to ~230 kW, so the best array
is ~500 to 550 kWp ([sustainability](../sustainability.md#pv-size-with-biomass-steam)),
about the ~520 kWp factory roof. Against the earlier electric steam
and ~640 kWp, in Plan B the biomass boilers and fuel store add ~3.8M
at the midpoint over the Thai electric bank and the smaller array saves
~2.8M, so it rises from ~216M to **~217M**; Plan A leases the array and
had the cheaper Chinese electric boilers, so it takes the full ~5.4M,
from ~177M to **~182M**. Biomass saves ~4.2M THB a year of steam energy
(calculator).
Both are priced **without contingency** (user decision) and **with the
ramp-up reserve**, because the reserve is cash the investor puts in
@@ -157,26 +166,26 @@ reference plus 20 % in both. Midpoints, estimates:
| Plan A: launch plant with six levers | Saves | Subtotal after it |
|---|---|---|
| Launch plant, every block, no contingency | | ~200.6M THB (~6.08M USD) |
| Solar (~640 kWp on every roof and canopy) and battery through a solar PPA (the installer owns and finances the array, the plant buys the power) | ~17.5M | ~183.1M |
| Metrology launch tier: XRF, inline vision and audio station at launch; laser confocal and wide-area profiler (USD 180k to 350k) bought from revenue | ~8.8M | ~174.4M |
| Visitor corridor built later; no public tours at first | ~3.6M | ~170.8M |
| Cassette and CD-R duplication later | ~4.0M | ~166.8M |
| Crane rented for the installations; frame, runway and machine door stay crane-ready | ~3.2M | ~163.6M |
| Boilers and compressor through the Chinese route ([Chinese suppliers](../suppliers/china-utilities.md)) | ~1.9M | **~161.7M (~4.90M USD)** |
| Launch plant, every block, no contingency | | ~201.6M THB (~6.11M USD) |
| Solar (~520 kWp on the factory roof) and battery through a solar PPA (the installer owns and finances the array, the plant buys the power) | ~14.7M | ~186.9M |
| Metrology launch tier: XRF, inline vision and audio station at launch; laser confocal and wide-area profiler (USD 180k to 350k) bought from revenue | ~8.8M | ~178.1M |
| Visitor corridor built later; no public tours at first | ~3.6M | ~174.5M |
| Cassette and CD-R duplication later | ~4.0M | ~170.5M |
| Crane rented for the installations; frame, runway and machine door stay crane-ready | ~3.2M | ~167.3M |
| Compressor through the Chinese route ([Chinese suppliers](../suppliers/china-utilities.md)); the route priced only electric boilers, so with biomass it saves only the compressor | ~0.25M | **~167.1M (~5.06M USD)** |
| Ramp-up reserve | | +10M to 20M |
| **Plan A** | | **~177M THB (~5.35M USD)**, ~127M to 226M from the low to the high end of every block |
| **Plan A** | | **~182M THB (~5.52M USD)**, ~2M above 180M at the midpoint (177M with the reserve's low end); ~132M to 233M from the low to the high end of every block |
| Plan B: the launch plant, everything in | USD | THB |
|---|---|---|
| Launch plant, every block, no contingency (the six lever items included: owned solar (~640 kWp) and battery ~17.5M, full metrology ~8.8M, visitor corridor ~3.6M, cassette and CD-R ~4.0M, bought crane ~3.2M, Thai boilers and compressor ~1.9M, together ~39M THB at the midpoint) | 4.42M – 7.73M | ~146M – 255M, **~200.6M (~6.08M USD)** at the midpoint |
| Launch plant, every block, no contingency (the six lever items included: owned solar (~520 kWp) and battery ~14.7M, full metrology ~8.8M, visitor corridor ~3.6M, cassette and CD-R ~4.0M, bought crane ~3.2M, Thai compressor ~0.25M, together ~34.5M THB at the midpoint) | 4.42M – 7.79M | ~146M – 257M, **~201.6M (~6.11M USD)** at the midpoint |
| Ramp-up reserve | | +10M to 20M |
| **Plan B** | | **~216M THB (~6.53M USD): ~215M**, ~156M to 275M from the low to the high end of every block |
| **Plan B** | | **~217M THB (~6.56M USD): ~215M**, ~156M to 277M from the low to the high end of every block |
Plan B costs ~39M THB (~22 %) more than Plan A and, at the midpoint,
stays just within the investor's 180M THB plus 20 % (216M; its high end,
~275M, does not). It keeps what Plan A leases or defers:
owned solar on every roof and canopy and the battery, the full
Plan B costs ~35M THB (~19 %) more than Plan A and, at the midpoint,
sits ~0.6M above the investor's 180M THB plus 20 % (216M) and 8.4M under
the 225M mark (its high end, ~277M, is above both). It keeps what Plan A leases or defers:
owned solar on the factory roof and the battery, the full
metrology stack from the first release, the visitor corridor and tours
from the start, cassette and CD-R, the bought crane, Thai-supplied
utilities with local service. Both plans have the same three presses and
@@ -189,17 +198,17 @@ both as presets.
**Not in either plan price:**
- **Contingency.** The blocks are budgetary (plus or minus 30 to 50 % on
the estimates, top of this page), so the plans carry no buffer for
quotes landing high. At this page's 15 % that would be ~24M THB on
quotes landing high. At this page's 15 % that would be ~25M THB on
Plan A and ~30M on Plan B at the midpoint.
- The central hydraulic plant (not costed yet), the archive's mobile
shelving (to quote), CD replication, financing costs, currency moves,
and Thai duty and import VAT (the blocks assume BOI promotion).
**What decides between them:** not demand, since both make the same
records, but whether the investor funds ~39M THB more at launch for what
records, but whether the investor funds ~35M THB more at launch for what
Plan A leases or buys from revenue. On the modelled numbers Plan B's
extra earns little: the same EBITDA in the revenue model (the calculator
puts Plan B ~0.07M USD a year ahead, the PPA power bill its owned array
puts Plan B ~0.06M USD a year ahead, the PPA power bill its owned array
avoids), more depreciation and a longer payback;
its case rests on that bill and on what the operating table leaves out:
full stamper metrology for the traceability pitch from the first release,
@@ -209,7 +218,10 @@ installations (Announcement 3/2568, in force 1 July 2025; only the
battery may still qualify, see [BOI](../boi.md)), so owning the array
earns no tax benefit, only the bill. Most of Plan B's items can be added
to Plan A later from revenue; the corridor is cheaper to have from the
start. Both plans keep the second Duplex as a growth step, with its
start. **Plan A over 180M:** the way back is a quote for a Chinese
biomass boiler (ZOZEN, Sitong, Taiguo and Yongxing build them; none
priced yet): ~2M or more below the Getabec-class package brings Plan A
to 180M at the midpoint. Both plans keep the second Duplex as a growth step, with its
floor, utility positions and ring-main tees reserved: ~15.4M THB at the
midpoint for the system (~8.7M), a third chiller module CH-3 (~2.1M),
their freight and installation (~1.2M) and the working capital for the
+5 -4
View File
@@ -1,6 +1,7 @@
category,item,spec_summary,candidate_thai_suppliers,cost_low_thb,cost_high_thb,cost_basis,notes
steam,Electric/gas once-through boiler bank,"2 x 500 kg/h modules at 10.5 bar / 180 C, lead/lag, shared feed tank, feed pumps, economizer, installed","Miura Thailand (Chachoengsao); Bangkok Industrial Boilers; STE Thailand; Chinese route (October 2026): ZOZEN, Sitong, Fangkuai, Taiguo (ASME claimed, Thai references, no Thai service partner), see suppliers/china-utilities.md",4500000,7000000,engineering estimate,"Launch plant (October 2026): one Duplex system and one Classic, 450-540 kg/h at Newbilt's 150-180 kg/h per press, so B-1 and B-2 both at launch; the boiler hall is built for four modules (scale.md utility phasing); a third module for N+1 is an RFQ option; Miura-class modular once-through; service is Bangkok-centric, confirm northern dispatch SLA; Chinese route estimate 2.8M-5.5M THB installed (two ASME-stamped 1.25 MPa bodies USD 15k-35k each, inspection and certification, freight, Thai contractor balance of plant), about 1.6M THB less at the midpoint; imported boilers need DIW certification-body verification either way"
steam,Biomass/wood-fired boiler package (option),"~1 t/h solid fuel (wood chips/pellets/rice husk) incl. fuel feed, grate, dust control, softener, installed",Getabec PCL (Thai fabrication and service),6000000,10000000,engineering estimate,"Sized for the five-press fleet (was ~0.5 t/h for one Duplex); sustainability path matching Deepgrooves NL precedent; higher capex, lower fuel opex in the North; NOT included in baseline total"
steam,Electric/gas once-through boiler bank (alternative),"2 x 500 kg/h modules at 10.5 bar / 180 C, lead/lag, shared feed tank, feed pumps, economizer, installed","Miura Thailand (Chachoengsao); Bangkok Industrial Boilers; STE Thailand; Chinese route (October 2026): ZOZEN, Sitong, Fangkuai, Taiguo (ASME claimed, Thai references, no Thai service partner), see suppliers/china-utilities.md",4500000,7000000,engineering estimate,"NOT included in baseline total since 17 Oct 2026 (user: both plans run on biomass); kept as the alternative. Launch plant (October 2026): one Duplex system and one Classic, 450-540 kg/h at Newbilt's 150-180 kg/h per press, so B-1 and B-2 both at launch; the boiler hall is built for four modules (scale.md utility phasing); a third module for N+1 is an RFQ option; Miura-class modular once-through; service is Bangkok-centric, confirm northern dispatch SLA; Chinese route estimate 2.8M-5.5M THB installed (two ASME-stamped 1.25 MPa bodies USD 15k-35k each, inspection and certification, freight, Thai contractor balance of plant), about 1.6M THB less at the midpoint; imported boilers need DIW certification-body verification either way"
steam,"Biomass/wood-fired boiler package, 2 x 500 kg/h or one ~1 t/h","~1 t/h solid fuel (wood chips/pellets/rice husk) incl. fuel feed, grate, dust control, softener, installed",Getabec PCL (Thai fabrication and service),6000000,10000000,engineering estimate,"Baseline since 17 Oct 2026 (user: ""option a and b should operate on biomass""); the launch plant draws 450-540 kg/h, so the two 500 kg/h modules of the boiler hall (B-1, B-2) or one ~1 t/h package; Chinese makers build biomass boilers too (ZOZEN DZL, Sitong DZL/SZL, Taiguo, Yongxing; china-utilities.md), not priced yet; fuel ~300 t air-dry wood or ~460 t fresh chips a year at ~850k records, ~0.67M THB at 0.7 THB/kWh of heat (biomass.md); sustainability path matching Deepgrooves NL precedent"
steam,Biomass fuel store and handling,"Covered fuel store (42 m2 in the site model, ~6-7 weeks of fresh chips; ~80 m2 for a 3-month monsoon stock), chip bay, ash bins, compact loader",Local steel-shed contractors; loader dealers (used compact loaders),1000000,2000000,engineering estimate,"biomass.md: fuel handling and storage come on top of the boiler package; shed at roughly half the main building's 12,000-20,000 THB/m2 plus a used loader (estimate)"
steam,Steam balance of plant,"Traps, accumulator, condensate return",Forbes Marshall Thailand,0,0,included,Largely included in boiler package rows; line kept for RFQ completeness
compressed_air,Screw compressor skid (oil-injected),"~7.5 kW VSD screw + refrigerated dryer (3 C PDP) + coalescing filters + ~500 L receiver, installed","Atlas Copco Thailand; Kaeser Thailand (SM-T/Aircenter); Ingersoll Rand Thailand; Chinese brands with Thai offices (October 2026): Kaishan Compressor (Thailand), Denair Thailand, see suppliers/china-utilities.md",350000,600000,engineering estimate,"14-30 m3/h demand is small (5-10 hp class); oil-injected + filter train meets 5 micron / 3 C spec; Chinese route estimate 0.15M-0.3M THB installed (PM VSD 11 kW class USD 2k-5k, dryer, receiver, filters, installation)"
compressed_air,True oil-free class-0 (option),Same duty in oil-free class-0,Atlas Copco (ZR/ZT); Kaeser,1200000,1800000,engineering estimate,Only if air contacts product stream; NOT included in baseline total
@@ -13,6 +14,6 @@ water,Galvanics ZLD evaporator,"Small MVR or low-temp vacuum evaporator for plat
storage,Pallet racking and shelving,"100-200 pallet positions selective/heavy-duty (beams sized 1000-1500 kg/pallet, records are dense) + archive and finished-goods shelving, installed","Jenbunjerd; LPI Rack Range (Thailand), Bangkok/Samut Prakan, racking and office mobile shelving; local fabricators (Sahawatthanakit, UPR, SD Shelf); SSI Schaefer (premium)",800000,1500000,published list prices + engineering estimate,SSI Schaefer premium tier ~1.5-3M for same scope; ~1000-2000 THB per pallet position at local tier
hvac,Whole-factory HVAC,"~1500 m2 at 20-26 C, 35-60% RH, ePM1/F7-F9 filtration sized for burning-season PM2.5, ducting and controls","Daikin Thailand; Trane; Mitsubishi Electric; Carrier; filtration: Camfil Thailand, AAF",7500000,15000000,engineering estimate at 5000-10000 THB/m2,"RH low end of 35% is aggressive for tropics and drives desiccant cost; if 45-60% RH acceptable, cost drops materially"
hvac,Clean-room-grade zone adder,"Cutting room + galvanics clean room, ~2 x 60 m2, ISO 7/8 with HEPA terminals, positive pressure, airlocks",Same HVAC vendors + clean-room contractors; Camfil HEPA,1200000,3400000,engineering estimate at 10000-28000 THB/m2 adder,Applied only to the two tight zones
solar,"PV EPC, every roof and canopy covered (~640 kWp on the Payap scenario plot)","Turnkey C&I EPC on the factory roof (~523 kWp), the office roof (~65 kWp) and the car and scooter canopies (~54 kWp), incl. inverters (Deye hybrids where the battery connects), at 20000-26000 THB/kWp",Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; CapSolar; local Chiang Mai installers,12800000,16640000,"market rate per kWp (October 2026 check): DEDE Thailand PV Status (Mahidol survey) 22-25 THB/W for 10 kW-1 MW C&I systems in 2023; CapSolar 2026 20-25 THB/W under 1 MWp (20-23 at 500 kWp); Saimai Solar 2026 list 5.4M THB for 300 kW (18 THB/W); top of range covers Deye SUN-50K-SG01HP3 hybrid inverters (160,500 THB each at Supsaringkan, about ten 50 kW units for ~500 kVA); size: the roofs full, user decision 17 Oct 2026 (was an illustrative 300 kWp)","Size follows the site: on the Mueang Chi hall the roof and canopies take ~300 kWp (scale.md), the rest would be ground mount; canopy steel is in the construction RFQ site works; ~85% of the yield used on site under PEA zero export (hourly sketch, estimate); self-consumed PV worth ~3.7 THB/kWh, ~4.2-5.9 yr payback (sustainability.md, grid tariff)"
solar,"PV EPC, factory roof (~520 kWp on the Payap scenario plot)","Turnkey C&I EPC on the factory roof (~523 kWp in the parts model), incl. inverters (Deye hybrids where the battery connects), at 20000-26000 THB/kWp; office roof (~65 kWp) and car and scooter canopies (~54 kWp) PV-ready, panels later",Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; CapSolar; local Chiang Mai installers,10400000,13520000,"market rate per kWp (October 2026 check): DEDE Thailand PV Status (Mahidol survey) 22-25 THB/W for 10 kW-1 MW C&I systems in 2023; CapSolar 2026 20-25 THB/W under 1 MWp (20-23 at 500 kWp); Saimai Solar 2026 list 5.4M THB for 300 kW (18 THB/W); top of range covers Deye SUN-50K-SG01HP3 hybrid inverters (160,500 THB each at Supsaringkan, about nine 50 kW units for ~430 kVA); size: the factory roof, user decision 17 Oct 2026 (was every roof and canopy, ~640 kWp, and before that an illustrative 300 kWp)","Size: with biomass steam the best array is ~500-550 kWp (hourly sketch, sustainability.md), so the factory roof's ~520 kWp; on the Mueang Chi hall the factory roof takes ~247 kWp (scale.md); PV-ready means structure for the panels, conduit and a spare way at the main board (in the building and site works); ~87% of the yield used on site under PEA zero export (estimate); self-consumed PV worth ~3.7 THB/kWh, ~4.1-5.8 yr payback (sustainability.md, grid tariff)"
solar,Battery stack 271 kWh (Gobel) installed,"GP-SRA-HV314 HV LiFePO4 rack, 15 x 18 kWh packs, direct from Shenzhen, 50-60 day lead; plus enclosure, fire detection and suppression, controls and installation",Gobel Power (no Thai distributor; integration by solar EPC),2000000,3500000,"battery: vendor listed price USD 39900-58000 at ~35 THB/USD = 1.40-2.03M THB, in line with DEDE's 5000-7000 THB/kWh for LiFePO4 (Mahidol survey); installed: estimate below CapSolar's 12000-15000 THB/kWh for a fully installed factory BESS (2026), because the Deye hybrid inverters in the PV row do the power conversion",Confirm Deye BMS protocol compatibility and that the EPC warrants a mixed-vendor DC bus; certs (UN38.3/IEC 62619/CE) to be requested
total,BASELINE TOTAL,Electric steam bank (2 modules) + oil-injected air + chiller bank (2 modules) + softener + loop treatment + local racking + HVAC + clean zones + ~640 kWp solar + 271 kWh BESS,,34370000,56340000,sum of baseline rows,"Launch plant, one Duplex system and one Classic (October 2026; solar and battery re-priced from Thai market data and the array sized to every roof and canopy 17 Oct 2026, was 27.57M-47.50M at 300 kWp and 28.47M-48.73M before the re-price; was 30.07M-51.33M THB for five presses, 23.98M-41.63M for one Duplex); ~750k-1280k EUR at 38 THB/EUR; excludes options rows and the galvanics water rows (ZLD, DI), which total-investment.md carries with galvanics; all figures budgetary +/- 30%, get RFQs before BOI"
total,BASELINE TOTAL,Biomass boiler package (2 modules) + fuel store + oil-injected air + chiller bank (2 modules) + softener + loop treatment + local racking + HVAC + clean zones + ~520 kWp factory-roof solar + 271 kWh BESS,,34470000,58220000,sum of baseline rows,"Launch plant, one Duplex system and one Classic (October 2026; biomass steam and PV on the factory roof only 17 Oct 2026, was 34.37M-56.34M with electric steam and ~640 kWp; solar and battery re-priced from Thai market data and the array sized to every roof and canopy 17 Oct 2026, was 27.57M-47.50M at 300 kWp and 28.47M-48.73M before the re-price; was 30.07M-51.33M THB for five presses, 23.98M-41.63M for one Duplex); ~750k-1280k EUR at 38 THB/EUR; excludes options rows and the galvanics water rows (ZLD, DI), which total-investment.md carries with galvanics; all figures budgetary +/- 30%, get RFQs before BOI"
1 category item spec_summary candidate_thai_suppliers cost_low_thb cost_high_thb cost_basis notes
2 steam Electric/gas once-through boiler bank Electric/gas once-through boiler bank (alternative) 2 x 500 kg/h modules at 10.5 bar / 180 C, lead/lag, shared feed tank, feed pumps, economizer, installed Miura Thailand (Chachoengsao); Bangkok Industrial Boilers; STE Thailand; Chinese route (October 2026): ZOZEN, Sitong, Fangkuai, Taiguo (ASME claimed, Thai references, no Thai service partner), see suppliers/china-utilities.md 4500000 7000000 engineering estimate Launch plant (October 2026): one Duplex system and one Classic, 450-540 kg/h at Newbilt's 150-180 kg/h per press, so B-1 and B-2 both at launch; the boiler hall is built for four modules (scale.md utility phasing); a third module for N+1 is an RFQ option; Miura-class modular once-through; service is Bangkok-centric, confirm northern dispatch SLA; Chinese route estimate 2.8M-5.5M THB installed (two ASME-stamped 1.25 MPa bodies USD 15k-35k each, inspection and certification, freight, Thai contractor balance of plant), about 1.6M THB less at the midpoint; imported boilers need DIW certification-body verification either way NOT included in baseline total since 17 Oct 2026 (user: both plans run on biomass); kept as the alternative. Launch plant (October 2026): one Duplex system and one Classic, 450-540 kg/h at Newbilt's 150-180 kg/h per press, so B-1 and B-2 both at launch; the boiler hall is built for four modules (scale.md utility phasing); a third module for N+1 is an RFQ option; Miura-class modular once-through; service is Bangkok-centric, confirm northern dispatch SLA; Chinese route estimate 2.8M-5.5M THB installed (two ASME-stamped 1.25 MPa bodies USD 15k-35k each, inspection and certification, freight, Thai contractor balance of plant), about 1.6M THB less at the midpoint; imported boilers need DIW certification-body verification either way
3 steam Biomass/wood-fired boiler package (option) Biomass/wood-fired boiler package, 2 x 500 kg/h or one ~1 t/h ~1 t/h solid fuel (wood chips/pellets/rice husk) incl. fuel feed, grate, dust control, softener, installed Getabec PCL (Thai fabrication and service) 6000000 10000000 engineering estimate Sized for the five-press fleet (was ~0.5 t/h for one Duplex); sustainability path matching Deepgrooves NL precedent; higher capex, lower fuel opex in the North; NOT included in baseline total Baseline since 17 Oct 2026 (user: "option a and b should operate on biomass"); the launch plant draws 450-540 kg/h, so the two 500 kg/h modules of the boiler hall (B-1, B-2) or one ~1 t/h package; Chinese makers build biomass boilers too (ZOZEN DZL, Sitong DZL/SZL, Taiguo, Yongxing; china-utilities.md), not priced yet; fuel ~300 t air-dry wood or ~460 t fresh chips a year at ~850k records, ~0.67M THB at 0.7 THB/kWh of heat (biomass.md); sustainability path matching Deepgrooves NL precedent
4 steam Biomass fuel store and handling Covered fuel store (42 m2 in the site model, ~6-7 weeks of fresh chips; ~80 m2 for a 3-month monsoon stock), chip bay, ash bins, compact loader Local steel-shed contractors; loader dealers (used compact loaders) 1000000 2000000 engineering estimate biomass.md: fuel handling and storage come on top of the boiler package; shed at roughly half the main building's 12,000-20,000 THB/m2 plus a used loader (estimate)
5 steam Steam balance of plant Traps, accumulator, condensate return Forbes Marshall Thailand 0 0 included Largely included in boiler package rows; line kept for RFQ completeness
6 compressed_air Screw compressor skid (oil-injected) ~7.5 kW VSD screw + refrigerated dryer (3 C PDP) + coalescing filters + ~500 L receiver, installed Atlas Copco Thailand; Kaeser Thailand (SM-T/Aircenter); Ingersoll Rand Thailand; Chinese brands with Thai offices (October 2026): Kaishan Compressor (Thailand), Denair Thailand, see suppliers/china-utilities.md 350000 600000 engineering estimate 14-30 m3/h demand is small (5-10 hp class); oil-injected + filter train meets 5 micron / 3 C spec; Chinese route estimate 0.15M-0.3M THB installed (PM VSD 11 kW class USD 2k-5k, dryer, receiver, filters, installation)
7 compressed_air True oil-free class-0 (option) Same duty in oil-free class-0 Atlas Copco (ZR/ZT); Kaeser 1200000 1800000 engineering estimate Only if air contacts product stream; NOT included in baseline total
14 storage Pallet racking and shelving 100-200 pallet positions selective/heavy-duty (beams sized 1000-1500 kg/pallet, records are dense) + archive and finished-goods shelving, installed Jenbunjerd; LPI Rack Range (Thailand), Bangkok/Samut Prakan, racking and office mobile shelving; local fabricators (Sahawatthanakit, UPR, SD Shelf); SSI Schaefer (premium) 800000 1500000 published list prices + engineering estimate SSI Schaefer premium tier ~1.5-3M for same scope; ~1000-2000 THB per pallet position at local tier
15 hvac Whole-factory HVAC ~1500 m2 at 20-26 C, 35-60% RH, ePM1/F7-F9 filtration sized for burning-season PM2.5, ducting and controls Daikin Thailand; Trane; Mitsubishi Electric; Carrier; filtration: Camfil Thailand, AAF 7500000 15000000 engineering estimate at 5000-10000 THB/m2 RH low end of 35% is aggressive for tropics and drives desiccant cost; if 45-60% RH acceptable, cost drops materially
16 hvac Clean-room-grade zone adder Cutting room + galvanics clean room, ~2 x 60 m2, ISO 7/8 with HEPA terminals, positive pressure, airlocks Same HVAC vendors + clean-room contractors; Camfil HEPA 1200000 3400000 engineering estimate at 10000-28000 THB/m2 adder Applied only to the two tight zones
17 solar PV EPC, every roof and canopy covered (~640 kWp on the Payap scenario plot) PV EPC, factory roof (~520 kWp on the Payap scenario plot) Turnkey C&I EPC on the factory roof (~523 kWp), the office roof (~65 kWp) and the car and scooter canopies (~54 kWp), incl. inverters (Deye hybrids where the battery connects), at 20000-26000 THB/kWp Turnkey C&I EPC on the factory roof (~523 kWp in the parts model), incl. inverters (Deye hybrids where the battery connects), at 20000-26000 THB/kWp; office roof (~65 kWp) and car and scooter canopies (~54 kWp) PV-ready, panels later Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; CapSolar; local Chiang Mai installers 12800000 10400000 16640000 13520000 market rate per kWp (October 2026 check): DEDE Thailand PV Status (Mahidol survey) 22-25 THB/W for 10 kW-1 MW C&I systems in 2023; CapSolar 2026 20-25 THB/W under 1 MWp (20-23 at 500 kWp); Saimai Solar 2026 list 5.4M THB for 300 kW (18 THB/W); top of range covers Deye SUN-50K-SG01HP3 hybrid inverters (160,500 THB each at Supsaringkan, about ten 50 kW units for ~500 kVA); size: the roofs full, user decision 17 Oct 2026 (was an illustrative 300 kWp) market rate per kWp (October 2026 check): DEDE Thailand PV Status (Mahidol survey) 22-25 THB/W for 10 kW-1 MW C&I systems in 2023; CapSolar 2026 20-25 THB/W under 1 MWp (20-23 at 500 kWp); Saimai Solar 2026 list 5.4M THB for 300 kW (18 THB/W); top of range covers Deye SUN-50K-SG01HP3 hybrid inverters (160,500 THB each at Supsaringkan, about nine 50 kW units for ~430 kVA); size: the factory roof, user decision 17 Oct 2026 (was every roof and canopy, ~640 kWp, and before that an illustrative 300 kWp) Size follows the site: on the Mueang Chi hall the roof and canopies take ~300 kWp (scale.md), the rest would be ground mount; canopy steel is in the construction RFQ site works; ~85% of the yield used on site under PEA zero export (hourly sketch, estimate); self-consumed PV worth ~3.7 THB/kWh, ~4.2-5.9 yr payback (sustainability.md, grid tariff) Size: with biomass steam the best array is ~500-550 kWp (hourly sketch, sustainability.md), so the factory roof's ~520 kWp; on the Mueang Chi hall the factory roof takes ~247 kWp (scale.md); PV-ready means structure for the panels, conduit and a spare way at the main board (in the building and site works); ~87% of the yield used on site under PEA zero export (estimate); self-consumed PV worth ~3.7 THB/kWh, ~4.1-5.8 yr payback (sustainability.md, grid tariff)
18 solar Battery stack 271 kWh (Gobel) installed GP-SRA-HV314 HV LiFePO4 rack, 15 x 18 kWh packs, direct from Shenzhen, 50-60 day lead; plus enclosure, fire detection and suppression, controls and installation Gobel Power (no Thai distributor; integration by solar EPC) 2000000 3500000 battery: vendor listed price USD 39900-58000 at ~35 THB/USD = 1.40-2.03M THB, in line with DEDE's 5000-7000 THB/kWh for LiFePO4 (Mahidol survey); installed: estimate below CapSolar's 12000-15000 THB/kWh for a fully installed factory BESS (2026), because the Deye hybrid inverters in the PV row do the power conversion Confirm Deye BMS protocol compatibility and that the EPC warrants a mixed-vendor DC bus; certs (UN38.3/IEC 62619/CE) to be requested
19 total BASELINE TOTAL Electric steam bank (2 modules) + oil-injected air + chiller bank (2 modules) + softener + loop treatment + local racking + HVAC + clean zones + ~640 kWp solar + 271 kWh BESS Biomass boiler package (2 modules) + fuel store + oil-injected air + chiller bank (2 modules) + softener + loop treatment + local racking + HVAC + clean zones + ~520 kWp factory-roof solar + 271 kWh BESS 34370000 34470000 56340000 58220000 sum of baseline rows Launch plant, one Duplex system and one Classic (October 2026; solar and battery re-priced from Thai market data and the array sized to every roof and canopy 17 Oct 2026, was 27.57M-47.50M at 300 kWp and 28.47M-48.73M before the re-price; was 30.07M-51.33M THB for five presses, 23.98M-41.63M for one Duplex); ~750k-1280k EUR at 38 THB/EUR; excludes options rows and the galvanics water rows (ZLD, DI), which total-investment.md carries with galvanics; all figures budgetary +/- 30%, get RFQs before BOI Launch plant, one Duplex system and one Classic (October 2026; biomass steam and PV on the factory roof only 17 Oct 2026, was 34.37M-56.34M with electric steam and ~640 kWp; solar and battery re-priced from Thai market data and the array sized to every roof and canopy 17 Oct 2026, was 27.57M-47.50M at 300 kWp and 28.47M-48.73M before the re-price; was 30.07M-51.33M THB for five presses, 23.98M-41.63M for one Duplex); ~750k-1280k EUR at 38 THB/EUR; excludes options rows and the galvanics water rows (ZLD, DI), which total-investment.md carries with galvanics; all figures budgetary +/- 30%, get RFQs before BOI
+26 -23
View File
@@ -931,8 +931,8 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
var VERSION = "1.1";
var DEF = {
duplex: 1, classic: 1, galvanics: true, cutting: true, metrology: "full",
cassette: true, cdr: true, solar: "buy", pvKwp: 640, batteryKwh: 271,
fuel: "electric", boilerModules: 2, chillerModules: 2, crane: "buy",
cassette: true, cdr: true, solar: "buy", pvKwp: 520, batteryKwh: 271,
fuel: "biomass", boilerModules: 2, chillerModules: 2, crane: "buy",
corridor: true, phase2: false, running: true, labels: true
};
var OFFW = { off: 1, out: 1, bought: 1, no: 1, none: 1, later: 1, "false": 1, "0": 1, "": 1 };
@@ -1314,16 +1314,17 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
// ------------------------------------------------------------ PV placement
var PV_ROWS = [1, 3, 5, 7, 10, 12, 14, 16, 19, 21];
// kWp per drawn module place (~2 m2): every place on the factory roof, the office roof and the two canopies
// together (1,467) is the ~640 kWp design (site-candidates.md parts model plus the office roof)
var PV_MOD = 0.4363;
// kWp per drawn module place (~2 m2): the 1,220 places on the factory roof are the ~520 kWp array of the
// plans (decided October 2026: PV on the factory only; the office roof and the canopies are PV-ready and
// take panels only above that size)
var PV_MOD = 0.4262;
function pvFields(cfg, al) {
var f = [];
// the parking canopies carry PV first (construction RFQ: canopy PV), the factory roof takes the rest
f.push({ key: "cars", x0: 18.35, cols: 27, y0: 6, rows: [0.15, 2.45, 4.75], z: function (y) { return 2.9 + (y - 6) / 7 * 1.2 + 0.08; } });
f.push({ key: "scoot", x0: 20.35, cols: 13, y0: 26, rows: [0.4, 2.85], z: function (y) { return 2.45 + (y - 26) / 5.5 * 1.05 + 0.08; } });
// the factory roof fills first; the PV-ready office roof and parking canopies take any kWp above it
f.push({ key: "roofW", x0: X(1), cols: 103, y0: FY, rows: PV_ROWS, z: function (y) { return roofZ(y - FY) + 0.12; } });
f.push({ key: "roofE", x0: X(107.25), cols: 19, y0: FY, rows: PV_ROWS, z: function (y) { return roofZ(y - FY) + 0.12; } });
f.push({ key: "cars", x0: 18.35, cols: 27, y0: 6, rows: [0.15, 2.45, 4.75], z: function (y) { return 2.9 + (y - 6) / 7 * 1.2 + 0.08; } });
f.push({ key: "scoot", x0: 20.35, cols: 13, y0: 26, rows: [0.4, 2.85], z: function (y) { return 2.45 + (y - 26) / 5.5 * 1.05 + 0.08; } });
// office roof: flat, the three AC units in the middle keep a clear strip around them
var oz = function () { return OFC.z1 + 0.14; };
f.push({ key: "offW", x0: OFC.x0 + 1, cols: 18, y0: OFC.y0, rows: [0.8, 3.1, 5.4, 7.7, 10.0, 12.3], z: oz });
@@ -1543,8 +1544,8 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
sp.prism(rect(20, 26, 33.7, 31.5), [2.3, 2.3, 3.35, 3.35], [2.45, 2.45, 3.5, 3.5], "iso-canopy");
pvDraw(sp, pv.by.scoot.F, pv.by.scoot.panels);
var nc = pv.by.cars.panels.length, ns = pv.by.scoot.panels.length;
sc.inf("canopy-cars", "Car canopy, 10 bays", "27.7 x 7.0 m at 4.1 m (construction RFQ)" + (nc ? "; " + nc + " PV modules (~" + fmt(nc * PV_MOD) + " kWp)" : ""));
sc.inf("canopy-scooters", "Scooter canopy, ~30 spaces", "13.7 x 5.5 m at 3.5 m (construction RFQ)" + (ns ? "; " + ns + " PV modules (~" + fmt(ns * PV_MOD) + " kWp)" : ""));
sc.inf("canopy-cars", "Car canopy, 10 bays", "27.7 x 7.0 m at 4.1 m (construction RFQ)" + (nc ? "; " + nc + " PV modules (~" + fmt(nc * PV_MOD) + " kWp)" : "; PV-ready: steel sized for ~42 kWp of panels, conduit to the main board; panels later"));
sc.inf("canopy-scooters", "Scooter canopy, ~30 spaces", "13.7 x 5.5 m at 3.5 m (construction RFQ)" + (ns ? "; " + ns + " PV modules (~" + fmt(ns * PV_MOD) + " kWp)" : "; PV-ready: steel sized for ~13 kWp of panels, conduit to the main board; panels later"));
}
// ------------------------------------------------------------ factory
@@ -2224,7 +2225,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
var OFC_UP = 4.0; // storey height: first floor at z0 + 4.0 (8 m to the roof for two storeys)
function officeInfo(sc, cfg) {
sc.inf("office", "Office building, 32 x 15 m",
"Two storeys (~960 m2) with a stair and a lift. Ground floor: reception and lobby, canteen, changing rooms, toilets, mastering and cutting, listening room, archive. " +
"PV-ready flat roof (structure for ~65 kWp of panels, conduit to the main board; panels later). Two storeys (~960 m2) with a stair and a lift. Ground floor: reception and lobby, canteen, changing rooms, toilets, mastering and cutting, listening room, archive. " +
"First floor: offices, meeting and training, a meeting room, IT and server room, toilets, pantry, a flexible room. Isolated from the factory floor, joined by a covered link (site-candidates.md).");
sc.inf("cutting", cfg.cutting ? "Mastering and cutting room" : "Cutting room: cut abroad",
cfg.cutting ? "Sillitoe SDMS lathe (USD 125k list) on the ground slab, away from press vibration and outside the crane zone; inner acoustic lining" :
@@ -2514,7 +2515,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
if (onP2) parts.push(onP2 + " on the phase 2 roof");
sc.inf("pv", "PV " + fmt(kwp) + " kWp, " + fmt(cfg.batteryKwh) + " kWh battery" + (ppa ? " (PPA)" : ""),
fmt(pv.want) + " modules of ~" + PV_MOD.toFixed(2) + " kWp (~2 m2 each): " + parts.join(", ") + (pv.left ? "; " + fmt(pv.left) + " do not fit the roofs (ground mount)" : "") +
". About " + fmt(kwp * 1.4) + " to " + fmt(kwp * 1.5) + " MWh a year at 1,400 to 1,500 kWh/kWp (scale.md), ~85 % of it used on site (zero export)" + (ppa ? ". PPA: the EPC owns the panels, the plant buys the power." : "."));
". About " + fmt(kwp * 1.4) + " to " + fmt(kwp * 1.5) + " MWh a year at 1,400 to 1,500 kWh/kWp (scale.md), ~87 % of it used on site (zero export)" + (ppa ? ". PPA: the EPC owns the panels, the plant buys the power." : "."));
if (!inside && onRoof) {
sc.tag(X(52), Y(10), roofZ(10) + 1.5, "PV " + fmt(kwp) + " kWp", 10, "pv");
if (ppa) sc.tag(X(80), Y(6), roofZ(6) + 1.0, "PPA panels", 100, "pv", "iso-signtag");
@@ -2856,7 +2857,7 @@ const S0 = {
priceStd: 3.8, premSpec: 1.15, titleFee: 1155, cur: "USD", boi: "on", exportShare: 70, capexEnd: "mid",
// plant configuration (defaults = the launch plant, total-investment.md October 2026)
galv: "in", galvPrice: "pheenix", cut: "in", metro: "full", cass: "on", cdr: "on", countCD: "off",
solar: "buy", steamFuel: "electric", sourcing: "thai", crane: "buy", corridor: "now", reserve: "in", cont: "in", stSupply: 0,
solar: "buy", steamFuel: "biomass", sourcing: "thai", crane: "buy", corridor: "now", reserve: "in", cont: "in", stSupply: 0,
};
// allowed values of every switch, default first where it matters for readHash
const ENUM = {
@@ -2966,9 +2967,9 @@ grp("Energy", [
["kwhPrice", "Electricity, blended", 3.81, "THB/kWh", "doc", "scale.md: PEA TOU 3.2.2 at two shifts, before the demand charge (Ft September to December 2026)"],
["demandPrice", "Demand charge", 132.93, "THB/kW a month", "doc", "PEA 3.2.2 (scale.md)"],
["restKW", "Rest of the plant while running", 120, "kW", "est", "Estimate: HVAC, lighting, galvanics, finishing, offices; puts the start fleet in scale.md's 4.5 to 6.8M THB a year before PV"],
["pvKWp", "PV array: factory roof, office roof and parking canopies, all full", 640, "kWp", "est", "Payap scenario: factory roof ~523 kWp and canopies ~54 kWp (site-candidates.md parts model, 580 W placeholder module) plus the office roof ~65 kWp (estimate from this drawing); on the Mueang Chi hall the roof and canopies take ~300 kWp (scale.md)"],
["pvKWp", "PV array on the factory roof", 520, "kWp", "est", "Decided October 2026: PV on the factory only, the office roof (~65 kWp) and the parking canopies (~54 kWp) PV-ready for later. Payap scenario factory roof ~523 kWp (site-candidates.md parts model, 580 W placeholder module), near the biomass-case optimum of ~500 kWp (sustainability.md); the Mueang Chi roof takes ~247 kWp (scale.md)"],
["pvYield", "PV yield", 1400, "kWh/kWp", "doc", "scale.md: 1,400 to 1,500 kWh/kWp a year in northern Thailand"],
["pvSelf", "Share of the PV yield used on site", 85, "%", "est", "Hourly sketch (October 2026): two shifts on 300 days, ~60 kW off-shift base load, the 271 kWh battery; the rest is curtailed, because a factory on PEA's grid runs zero export (sustainability.md)"],
["pvSelf", "Share of the PV yield used on site", 87, "%", "est", "Hourly sketch (October 2026), biomass steam: ~230 kW running load on two shifts and 300 days, ~60 kW off-shift base load, the 271 kWh battery; the rest is curtailed, because a factory on PEA's grid runs zero export (sustainability.md)"],
["heatPrice", "Steam heat from biomass", 0.7, "THB/kWh", "doc", "biomass.md: 0.5 to 0.9 at 1.35 to 2 THB/kg delivered"],
["steamKWh", "Heat per kg of steam", 0.68, "kWh/kg", "est", "Estimate: 10 bar saturated steam from ~80 °C feed water"],
["eBoilEff", "Electric boiler efficiency", 98, "%", "est", "Estimate for an electric steam boiler (~98 %)"],
@@ -3034,14 +3035,15 @@ rng("Investment blocks (USD unless THB)", [
["pvcL", "PVC lab, day-one tier", 55000, 150000, "USD", "est", "quality-automation.md"],
["bTh", "Electric boiler module, 500 kg/h, Thai supplier, installed", 2250000, 3500000, "THB", "est", "Utilities CSV: bank of two 4.5 to 7.0M THB, engineering estimate"],
["bCn", "Electric boiler module, 500 kg/h, Chinese route, installed", 1400000, 2750000, "THB", "est", "china-utilities.md: two ASME-stamped modules 2.8 to 5.5M THB installed"],
["bBio", "Biomass boiler module, 500 kg/h, installed", 3000000, 5000000, "THB", "est", "Utilities CSV: biomass package 6 to 10M THB for ~1 t/h (Getabec class), estimate"],
["bBio", "Biomass boiler module, 500 kg/h, installed", 3000000, 5000000, "THB", "est", "Utilities CSV: biomass package 6 to 10M THB for ~1 t/h incl. fuel feed, grate and dust control (Getabec class), estimate"],
["bFuel", "Biomass fuel store and handling", 1000000, 2000000, "THB", "est", "Utilities CSV: covered fuel store (42 m2 drawn, ~6 to 7 weeks of fresh chips; ~80 m2 for a 3-month monsoon stock), chip bay, ash bins, a compact loader; estimate (biomass.md: fuel handling and storage come on top of the boiler package)"],
["cBk", "Cooling backbone: plate HX, tanks, pumps, mains for four modules", 1700000, 2700000, "THB", "est", "Utilities CSV: chiller bank of two 4.9 to 7.9M THB less two modules"],
["chM", "Chiller module, 250 kW air-cooled, installed", 1600000, 2600000, "THB", "est", "Utilities CSV: one module ~1.6 to 2.6M THB, estimate"],
["airT", "Compressed air, Thai supplier", 350000, 600000, "THB", "est", "Utilities CSV: screw compressor skid, dryer, receiver"],
["airC", "Compressed air, Chinese brand through its Thai office", 150000, 300000, "THB", "est", "china-utilities.md: PM VSD screw set 0.15 to 0.3M THB installed"],
["clR", "Clean-room adder (galvanics and cutting room)", 1200000, 3400000, "THB", "est", "Utilities CSV, ~2 × 60 m² ISO 7/8; half with only one of the two rooms (estimate)"],
["uRest", "Rest of the utilities baseline: softener, loop treatment, racking, whole-factory HVAC", 8620000, 17300000, "THB", "est", "Utilities CSV baseline 34.37 to 56.34M THB less boilers, chillers, air, clean room, PV and battery"],
["pv", "PV EPC per kWp, roofs and canopies", 20000, 26000, "THB", "est", "Utilities CSV: 20 to 26 THB/W installed (DEDE Thailand PV status: factories 10 kW to 1 MW 22 to 25 THB/W, 2023; installers 18 to 25 in 2026) incl. the inverters; times the array size above; canopy steel is in the building and site works (construction RFQ)"],
["uRest", "Rest of the utilities baseline: softener, loop treatment, racking, whole-factory HVAC", 8620000, 17300000, "THB", "est", "Utilities CSV baseline 34.47 to 58.22M THB less boilers, fuel store, chillers, air, clean room, PV and battery"],
["pv", "PV EPC per kWp, factory roof", 20000, 26000, "THB", "est", "Utilities CSV: 20 to 26 THB/W installed (DEDE Thailand PV status: factories 10 kW to 1 MW 22 to 25 THB/W, 2023; installers 18 to 25 in 2026) incl. the inverters; times the array size above; canopy steel is in the building and site works (construction RFQ)"],
["bat", "Battery 271 kWh (Gobel), installed", 2000000, 3500000, "THB", "est", "Utilities CSV: Gobel list price USD 39,900 to 58,000 (battery only, matches DEDE's 5,000 to 7,000 THB/kWh for LiFePO4) plus enclosure, fire protection, controls and installation, below the 12,000 to 15,000 THB/kWh of a fully installed factory BESS because the hybrid inverters do the power conversion (estimate)"],
["bld", "Building ~1,500 m² plus civil and site works", 650000, 1100000, "USD", "est", "total-investment.md: 12,000 to 20,000 THB/m² plus ~20 % site works; soil is the main variable"],
["ph2", "Phase 2 building, when the press floor outgrows the press hall", 750000, 1250000, "USD", "est", "Business plan draft 0.1: ~750k to 1,250k on 1,710 m², estimate"],
@@ -3242,6 +3244,7 @@ function capexOf(r, c = S, boiOn = c.boi !== "off") {
else blk("Quality", "metF", "Metrology, full stack: XRF, laser confocal, wide-area profiler, inline vision, audio station", 1, false, { imp: 1 });
blk("Quality", "pvcL", "PVC lab, day-one tier");
const bio = c.steamFuel === "biomass", cn = c.sourcing === "china";
if (r.nb > 0 && bio) blk("Utilities", "bFuel", "Biomass fuel store, chip bay, ash bins and a compact loader", 1, true);
if (r.nb > 0) blk("Utilities", bio ? "bBio" : cn ? "bCn" : "bTh",
`Steam: ${pl(r.nb, `${f0(A.boilerMod)} kg/h ${bio ? "biomass" : "electric"} boiler module`)}${bio ? "" : cn ? ", Chinese route" : ", Thai supplier"}`, r.nb, true);
blk("Utilities", "cBk", "Cooling backbone: plate HX, tanks, pumps and mains for four modules", 1, true);
@@ -3251,7 +3254,7 @@ function capexOf(r, c = S, boiOn = c.boi !== "off") {
if (cr > 0) blk("Utilities", "clR", cr === 1 ? "Clean-room adder: galvanics and cutting room" : `Clean-room adder, half: ${galvIn ? "galvanics" : "cutting room"} only`, cr, true);
blk("Utilities", "uRest", "Rest of the utilities baseline: softener, loop treatment, racking, whole-factory HVAC", 1, true);
if (c.solar === "buy") {
blk("Utilities", "pv", `PV on the roofs and canopies, ${f0(A.pvKWp)} kWp, EPC`, A.pvKWp, true);
blk("Utilities", "pv", `PV on the factory roof, ${f0(A.pvKWp)} kWp, EPC (office roof and canopies PV-ready)`, A.pvKWp, true);
blk("Utilities", "bat", "Battery 271 kWh (Gobel)", 1, true);
}
blk("Building and site", "bld", "Building ~1,500 m² plus civil and site works");
@@ -3646,7 +3649,7 @@ const CFG = [
h: { off: "Illustrative volumes and prices with no market data; left out of the money.",
on: "Counted at the illustrative volumes and prices, with no running costs on file: it flatters the result." },
dis: () => S.cass === "off" && S.cdr === "off" ? "Not applicable: neither line is in the plant." : "" },
{ k: "solar", t: "Solar PV and 271 kWh battery", sub: "every roof and canopy covered (~640 kWp) plus the Gobel battery",
{ k: "solar", t: "Solar PV and 271 kWh battery", sub: "the factory roof (~520 kWp; office and canopies PV-ready) plus the Gobel battery",
o: [["buy", "Buy"], ["ppa", "Solar PPA"], ["none", "None"]],
h: { buy: () => `${nf(1).format(A.pvLo * A.pvKWp / 1e6)}M to ${nf(1).format(A.pvHi * A.pvKWp / 1e6)}M THB for ${f0(A.pvKWp)} kWp plus ${mT("bat")} battery; the yield offsets the bill.`,
ppa: "No capex: the EPC owns the array, the plant pays the PPA price on the yield.",
@@ -3655,8 +3658,8 @@ const CFG = [
{ k: "steamFuel", t: "Steam fuel", sub: "the boiler modules follow the fleet's peak steam",
o: [["electric", "Electric"], ["biomass", "Biomass"]],
h: { electric: "Electric modules on PEA power: energy charge plus demand charge per installed module.",
biomass: "Biomass modules (utilities CSV package); heat at the biomass price." } },
{ k: "sourcing", t: "Utilities sourcing", sub: "electric boiler modules and the compressor",
biomass: "Biomass modules (utilities CSV package) plus the fuel store; heat at the biomass price. Both plans run on biomass (October 2026)." } },
{ k: "sourcing", t: "Utilities sourcing", sub: "the compressor, and the boiler modules when steam is electric",
o: [["thai", "Thai suppliers"], ["china", "Chinese route"]],
h: { thai: "Thai suppliers, installed (utilities CSV).",
china: "ASME-stamped bodies installed by a Thai contractor, compressor through a Chinese brand's Thai office (china-utilities.md)." } },
@@ -3722,7 +3725,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 ~168M to 294M THB with contingency (midpoint ~231M); Plan A ~162M and Plan B ~201M at the midpoint without it, plus the ramp-up reserve", true);
TR("Total investment", cx.tot, "for reference, total-investment.md: the launch plant ~168M to 296M THB with contingency (midpoint ~232M); Plan A ~167M and Plan B ~202M 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);
Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 KiB

After

Width:  |  Height:  |  Size: 597 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 KiB

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 KiB

After

Width:  |  Height:  |  Size: 869 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 KiB

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 KiB

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 KiB

After

Width:  |  Height:  |  Size: 547 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 884 KiB

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 KiB

After

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 397 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 KiB

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

After

Width:  |  Height:  |  Size: 295 KiB

+1 -1
View File
@@ -173,7 +173,7 @@ Nothing in Phases 2 to 5 starts before its gate clears: no machinery order
before the BOI certificate, no big-block spending before the market
validates the price, no coppice fuel planning before the land title check.
Since October 2026 the plant launches with everything in one capital
round (~168M to 294M THB with contingency; for the investor Plan A at
round (~168M to 296M THB with contingency; for the investor Plan A at
~180M and Plan B at ~215M THB without it, in
[total investment](finance/total-investment.md#two-plans-a-at-180m-thb-and-b-at-215m-thb-october-2026));
the gates still come before the round is spent, and the growth options
+9 -8
View File
@@ -298,19 +298,20 @@ small against the connection, but its own feeder and meter.
roof plane, per the [construction RFQ](finance/phase1-construction-rfq.md)).
This supersedes the older rule of thumb of 150 to 200 kWp on a
~1,500 m² building, which the massing model has overtaken
- **Decided 17 October 2026: every roof and canopy carries PV.** On this
hall that is the 247 kWp roof plus the canopies' ~40 to 54 kWp, ~300
kWp; on the Payap scenario plot ~640 kWp, the size the investment and
the business plan carry
- **Decided 17 October 2026: PV on the factory roof only, the other
buildings PV-ready, biomass steam.** On this hall that is the 247 kWp
roof (canopies PV-ready); on the Payap scenario plot ~520 kWp, the size
the investment and the business plan carry, about the ~500 to 550 kWp
optimum for a biomass-steam load
([sustainability](sustainability.md#roof-design-for-pv-candidate-mueang-chi-site))
- Northern Thailand yield ~1,400 to 1,500 kWh/kWp/yr, so 300 kWp produces
roughly **420 to 450 MWh/yr** and ~640 kWp ~900 to 960 MWh/yr
roughly **420 to 450 MWh/yr** and ~520 kWp ~730 to 780 MWh/yr
- Plant consumption at mature two-shift operation: roughly **1,000 to
1,500 MWh/yr** without electric steam, up to **~2,500 MWh/yr** with it
(estimate), so 300 kWp covers roughly **28 to 45%** of consumption
without electric steam, falling to **~17%** with it; ~640 kWp, at
~85 % used on site under zero export, covers ~38 % of the launch
plant's ~2,000 MWh with electric steam (calculator, estimate)
without electric steam, falling to **~17%** with it; ~520 kWp, at
~87 % used on site under zero export, covers ~61 % of the launch
plant's ~1,036 MWh with biomass steam (calculator, estimate)
- Battery: **271 kWh** Gobel stack (ride-through, roughly
an hour of the chiller bank's peak electrical draw; peak shaving earns
little under PEA's time-of-use tariff, see
+7 -6
View File
@@ -352,13 +352,14 @@ parameter does.
- the BOI no longer promotes solar installations (since 1 July 2025;
only the battery may qualify, [BOI](boi.md)).
Decided 17 October 2026: every roof and canopy carries PV. With the
Decided 17 October 2026: PV on the factory roof only (~520 kWp), the
flat office roof (~65 kWp around its AC units, estimate from the
[calculator](fleet-calculator.html) drawing) that is **~640 kWp**, the
size in the investment and the business plan. PEA's zero-export rule
answers the first point (surplus curtailed, ~85 % used on site in an
hourly sketch); the permits and the BOI position are in
[sustainability](sustainability.md#roof-design-for-pv-candidate-mueang-chi-site).
[calculator](fleet-calculator.html) drawing) and the canopies (~54 kWp)
built PV-ready for later; steam is biomass, and with that load the best
array is ~500 to 550 kWp. PEA's zero-export rule answers the first point
(surplus curtailed, ~87 % used on site in an hourly sketch); the
permits, the BOI position and the sizing are in
[sustainability](sustainability.md#pv-size-with-biomass-steam).
FreeCAD 26.3.0 RC1 does not pass a cell edit on to the parts that read
the cell (a normal recompute updates only the sheet). After editing
+1 -1
View File
@@ -179,7 +179,7 @@ td.low{color:var(--warn);font-weight:600}
<h3>Boilers (Miura, Bangkok Industrial Boilers, STE)</h3>
<ul>
<li>2 × 500 kg/h against 3 × 500 kg/h and 1 × 1 t/h: price, footprint, lead/lag control, service from Chiang Mai.</li>
<li>Fuel: electric, biomass or LPG (sustainability.md, biomass.md); an electric bank draws ~312 to 375 kW for the launch plant, ~520 to 625 kW with five presses.</li>
<li>Fuel: biomass for B-1 and B-2 in both business plan versions (decided October 2026, biomass.md); an electric bank, the alternative, would draw ~312 to 375 kW for the launch plant, ~520 to 625 kW with five presses.</li>
<li>Economizer on a fired bank: outlet feed and stack temperature, corrosion limit, pressure drop; rice husk ash is high in silica and abrasive, so fouling, cleaning, wear protection and a bypass.</li>
<li>Blowdown cooling to the effluent limit; boiler registration and licensed operator (facility-security.md).</li>
<li>Footprint per module with fuel feed, dust collector and fan, against the ~18 × 9 m hall laid out for four modules.</li>
+64 -33
View File
@@ -34,23 +34,25 @@ process cooling (up to ~650 kW), drawn in [steam and cooling](steam-cooling.html
PEA's time-of-use tariff it earns little from peak shaving
([grid tariff](#grid-tariff-pea-and-what-it-decides)).
- The machine load and cooling system are straightforward PV targets.
- Steam is the open engineering question. Options under evaluation are an
electric boiler (maximizes the solar share) and a biomass boiler (locally
abundant fuel); solar-thermal pre-heating of boiler feedwater was
considered and is not recommended. No technology choice has been made
yet; it will be driven by honest numbers on load profiles, storage, and
grid backup, not by what sounds greenest. At PEA's tariff and current
northern fuel prices, biomass heat costs a quarter to a tenth of electric
steam
([grid tariff](#grid-tariff-pea-and-what-it-decides)).
- **Steam: biomass, decided 17 October 2026 for both business plan
versions** (user: "option a and b should operate on biomass"). At PEA's
tariff and current northern fuel prices biomass heat costs a quarter to
a tenth of electric steam
([grid tariff](#grid-tariff-pea-and-what-it-decides)): for the launch
plant ~0.67M THB of fuel a year against ~4.9M THB for electric steam with
its demand charge (calculator, estimates). The electric bank stays the
alternative ([biomass](biomass.md)); solar-thermal pre-heating of boiler
feedwater was considered and is not recommended.
- Whole-factory HVAC (continuous temperature, humidity, and PM control, see
[facility systems](facility-security.md)) adds a major tropical-climate
load on top of process cooling and must be part of the PV and battery
sizing.
- **Array size, decided 17 October 2026: every roof and canopy carries PV**
("use as much roof space as possible"), so the kWp follows the site:
~640 kWp on the Payap scenario plot, ~300 kWp on the Mueang Chi hall
(below). Storage beyond the 271 kWh ride-through battery stays open.
- **Array size, decided 17 October 2026: PV on the factory roof only, the
other buildings PV-ready** ("only put solar on the factory, prepare the
other buildings for solar"): ~520 kWp on the Payap scenario plot,
~247 kWp on the Mueang Chi hall; why that size is in
[PV size with biomass steam](#pv-size-with-biomass-steam). Storage beyond
the 271 kWh ride-through battery stays open.
### Roof design for PV (candidate Mueang Chi site)
@@ -111,28 +113,58 @@ the electric-boiler route is chosen.
On the Payap scenario plot the 128 m factory roof takes ~901 modules
(~523 kWp) and the car and scooter canopies another ~54 kWp, ~577 kWp in
all ([site candidates](site-candidates.md#roof-pv-and-parking-canopies-part-and-draft-model-october-2026)).
The flat office roof adds ~65 kWp around its three AC units (estimate
from the [calculator](fleet-calculator.html) drawing), so covering every
roof and canopy gives **~640 kWp**, the size the investment and both
business plan versions carry since 17 October 2026. On the Mueang Chi
hall the same rule gives only ~300 kWp (the 247 kWp roof above plus the
canopies); more there means ground mount on the plot behind the building
or the phase 2 roof.
The flat office roof would add ~65 kWp around its three AC units (estimate
from the [calculator](fleet-calculator.html) drawing), ~640 kWp with every
roof and canopy covered. The plans carry **the factory roof only, ~520 kWp**,
with the office roof and the canopies built PV-ready: structure rated for
the panels (~20 kg/m² plus wind uplift), conduit and a cable route to the
main board and a spare way for a later inverter, inside the building and
site works (estimate). Their ~120 kWp go on when the load grows (the second
Duplex system), for ~2.4M to 3.1M THB at today's prices. On the Mueang Chi
hall the factory roof takes ~247 kWp and its canopies are PV-ready too.
**What ~640 kWp means on the grid** (October 2026):
### PV size with biomass steam
With biomass steam the plant's running load is ~230 kW (no electric
boilers), and a factory on PEA's grid cannot sell its surplus, so the array
should not outgrow what the plant uses while the sun is up. An hourly
sketch of a year (October 2026: two shifts on 300 days, ~60 kW off-shift
base load, the 271 kWh battery, PEA TOU 3.2.2 with Ft, 23,000 THB/kWp
installed, 400 THB/kWp a year upkeep, an inverter set in year 12, 25 years
at 8 %; synthetic Chiang Mai sun profile, not PVGIS) gives, as estimates:
| Array | Used on site | Saved a year | Payback | IRR | NPV | Payback of the last 50 kWp |
|---|---|---|---|---|---|---|
| 300 kWp | 94 % | 1.5M THB | 5.0 yr | 19 % | 7.1M | 5.4 yr |
| 450 kWp | 90 % | 2.2M | 5.2 yr | 18 % | 9.7M | 6.0 yr |
| 500 kWp | 88 % | 2.4M | 5.3 yr | 18 % | 10.2M | 7.1 yr |
| 550 kWp | 85 % | 2.5M | 5.5 yr | 17 % | 10.3M | 9.0 yr |
| 640 kWp | 78 % | 2.7M | 6.0 yr | 15 % | 9.8M | 14.6 yr |
- **The best array is ~500 to 550 kWp, about the ~520 kWp factory roof.**
Above ~550 kWp each added kWp loses money: most of its yield is
curtailed on Sundays and at midday.
- **The optimum follows the running load**, at ~2.3 kWp per kW: ~440 kWp
at 180 kW, the full ~640 kWp at 280 kW. Panel price, discount rate and
yield move it by only about 30 kWp. So the PV-ready roofs and canopies
are filled when the second Duplex system raises the load.
- With electric steam (~430 kW running) every added kWp up to ~640 still
paid back in ~5.5 years, which is why the array was briefly sized to
every roof.
**What ~520 kWp means on the grid** (October 2026):
- **Zero export.** A factory on PEA's grid cannot sell its surplus: the
interconnection needs a zero-export controller or reverse-power relay,
and net billing is limited to small users
([CapSolar, rooftop solar regulations 2026](https://capsolar.co.th/en/knowledge/rooftop-solar-regulations-thailand)).
An hourly sketch (two shifts on 300 days, ~60 kW off-shift base load,
the 271 kWh battery; estimate) puts **~85 % of the ~900 MWh yield to
use on site**; the rest, mostly on Sundays and holidays, is curtailed.
With electric steam the launch plant draws ~2,000 MWh a year, so the
array covers ~38 % of it.
The sketch puts **~87 % of the ~730 MWh yield to use on site** (~633 MWh
in the calculator); the rest, mostly on Sundays and holidays, is
curtailed. With biomass steam the launch plant draws ~1,036 MWh of
electricity a year, so the array covers ~61 % of it.
- **Permits.** Since Ministerial Regulation No. 3 B.E. 2567 (in force
28 December 2024) rooftop solar outside industrial estates is not a
factory at any size, so no Ror.Ngor.4 licence; at ~500 kVA of inverters
factory at any size, so no Ror.Ngor.4 licence; at ~430 kVA of inverters
the array stays under the ERC's 1,000 kVA line and needs an exemption
notification, not a generation licence; PEA's interconnection review
takes 3 to 6 months and is filed alongside procurement
@@ -151,8 +183,8 @@ or the phase 2 roof.
at CapSolar ([CapSolar PPA](https://capsolar.co.th/en/services/ppa)).
The calculator's 3.0 THB/kWh is ~21 % below the ~3.8 THB/kWh blended
rate, inside CapSolar's range but above MEAei's usual discount (estimate,
to quote); the launch plant's bill (~0.75M THB a month before solar, calculator)
clears the threshold.
to quote); the launch plant's bill (~0.36M THB a month before solar with
biomass steam, calculator) clears the threshold.
### Energy efficiency architecture: recover before generating
@@ -295,10 +327,9 @@ not a cost one.
(weekday daytime at the peak rate, weekends and early mornings at
off-peak, Ft included), so the 247 kWp roof saves ~1.2M to 1.3M THB a year
and pays back in **~3.8 to 5.4 years** at 20,000 to 26,000 THB/kWp
installed. The full ~640 kWp array uses ~85 % of its yield on site, saves
~2.8M to 3.0M THB a year and pays back in **~4.2 to 5.9 years**; the
last ~340 kWp, more of whose yield is curtailed, take ~4.9 to 6.3 years
(estimates; Thai market prices checked October 2026 in the
installed. The ~520 kWp factory roof of the plans uses ~87 % of its yield
on site with biomass steam, saves ~2.3M to 2.5M THB a year and pays back
in **~4.1 to 5.8 years** (estimates; Thai market prices checked October 2026 in the
[utilities CSV](finance/utilities-investment.csv): DEDE's PV status report
gives 22 to 25 THB/W for factory systems of 10 kW to 1 MW in 2023,
installers quote 18 to 25 THB/W in 2026). It does not lower the demand charge, because the peak window