Solar and battery re-priced from Thai market data (October 2026)
Deploy test site / deploy (push) Successful in 46s

- Rooftop PV, 300 kWp (size still illustrative): 20 to 26 THB/W installed
  with the Deye hybrid inverters, 6.0M to 7.8M THB (was 25 to 35 THB/W,
  7.5M to 10.5M). Sources in the utilities CSV: DEDE Thailand PV Status
  report (Mahidol survey: 22 to 25 THB/W for factory systems of 10 kW to
  1 MW, 2023), CapSolar 2026 (20 to 25 under 1 MWp), Saimai Solar's list
  (300 kW for 5.4M THB), Deye hybrid inverter retail (160,500 THB per
  50 kW).
- Battery 271 kWh, now installed: 2.0M to 3.5M THB (was the bare Gobel
  list price, 1.4M to 2.0M, which matches DEDE's 5,000 to 7,000 THB/kWh
  for LiFePO4); adds enclosure, fire protection, controls and installation,
  below CapSolar's 12,000 to 15,000 THB/kWh for a fully installed factory
  BESS because the hybrid inverters do the conversion (estimate).
- Utilities baseline 27.57M to 47.50M THB; launch plant ~160M / 222M /
  283M THB with contingency; Plan B ~208M (~149M to 266M), ~31M more than
  Plan A; Plan A's total unchanged, its solar lever ~9.7M. PV payback
  ~3.8 to 5.4 years (sustainability.md). Calculator, README, roadmap,
  revenue model and both business plan versions (renders included)
  updated.
This commit is contained in:
grabowski committed 2026-10-17 16:41:14 +07:00
1 parent 3f33babdaa
commit ab303618d8
25 files changed
+116 -111

No files matched your search

+6 -6
View File
@@ -70,14 +70,14 @@ 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: ~161M to 285M THB with contingency
(midpoint ~223M), the Pheenix line priced at OMS's reference plus 20 %
modular boiler and chiller plant: ~160M to 283M THB with contingency
(midpoint ~222M), 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-210m-thb-october-2026)):
**Plan A, ~177M THB**, the launch plant with six cost levers, and
**Plan B, ~209M THB**, the same launch plant with everything in.
**Plan B, ~208M 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).
@@ -280,8 +280,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 (~161M to 285M THB, ~4.9M to 8.6M USD, midpoint
~223M THB) with the basis of every block, the two plans for the investor
decided in October 2026 (~160M to 283M THB, ~4.85M to 8.6M USD, midpoint
~222M THB) with the basis of every block, the two plans for the investor
(Plan A ~180M, Plan B ~210M THB, without contingency), and the earlier
answer to the 180M / 216M question; the earlier full vision and phased
entry are kept as superseded
@@ -293,7 +293,7 @@ The detail lives in dedicated documents:
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.7 years on ~209M THB: its extra pays back
same output, payback ~3.6 years on ~208M 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:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+17 -17
View File
@@ -33,7 +33,7 @@ def blocks():
"version, Plan B (~210M 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 ~210M "
"THB (~209M). A second version, Plan A (~180M THB), builds the same plant with six cost "
"THB (~208M). 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 "
@@ -111,7 +111,7 @@ 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 ~194M to ~162M THB at the midpoint "
"**Six cost levers bring the plant to ~180M THB**, from ~193M to ~162M THB at the midpoint "
"before the ramp-up reserve (estimates, section 8): rooftop solar and 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 "
@@ -120,8 +120,8 @@ def blocks():
"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: ~210M THB**, ~194M THB at the midpoint before the "
"ramp-up reserve and ~32M THB more than Plan A (estimates, section 8): owned rooftop solar and "
"**Everything in, none of the cost levers: ~210M THB**, ~193M THB at the midpoint before the "
"ramp-up reserve and ~31M THB more than Plan A (estimates, section 8): owned rooftop solar and "
"battery (and with them the BOI solar measure); 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 "
@@ -190,10 +190,10 @@ def blocks():
"(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 "
"(priced at OMS's reference plus 20 %) or the building",
"**~THB 209M (~USD 6.33M), rounded to ~210M THB**: the plan investment, ~THB 193.8M (~USD "
"5.87M) at the midpoint with everything in, plus a ramp-up reserve of ~THB 10M to 20M (staff "
"**~THB 208M (~USD 6.30M), rounded to ~210M THB**: the plan investment, ~THB 192.8M (~USD "
"5.84M) 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 within the investor's 180M THB "
"plus 20 %. From the low to the high end of every block: ~THB 150M to 268M. Estimates: no "
"plus 20 %. From the low to the high end of every block: ~THB 149M to 266M. 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 "
@@ -222,7 +222,7 @@ def blocks():
"~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 "
"year, ramp-up reserve included; estimates)",
"~3.7 years on the plan price in the central case (2.6 to 4.7 from the low to the high end of "
"~3.6 years on the plan price in the central case (2.6 to 4.7 from the low to the high end of "
"the price); ~1.2 years in the favourable case, ~35 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 "
@@ -239,7 +239,7 @@ def blocks():
"~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 209M (~USD 6.33M), the ~210M THB plan, released in tranches against milestones "
"~THB 208M (~USD 6.30M), the ~210M 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 52M (arithmetic, before financing costs)")],
]),
@@ -251,7 +251,7 @@ 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 32M (~18 %) more at launch for what "
"make the same records: it is whether the investor funds ~THB 31M (~18 %) more at launch for what "
"Plan A leases or buys from revenue. Plan B keeps the BOI solar measure (only an owned array "
"qualifies), 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 "
@@ -262,19 +262,19 @@ def blocks():
"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 209M (~USD 6.33M); ~150M to 268M from the low to the high end"],
"the low to the high end", "~THB 208M (~USD 6.30M); ~149M to 266M 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"],
["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.26M (~THB 42M)"],
["Payback on the plan price, central case", "~3.1 years (2.2 to 4.0)", "~3.7 years (2.6 to 4.7)"],
["Payback on the plan price, central case", "~3.1 years (2.2 to 4.0)", "~3.6 years (2.6 to 4.7)"],
["Adverse case", "Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.39M",
"Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.52M"],
["What Plan A gives up, what Plan B buys", "At launch: solar through a PPA (very likely without "
"the BOI solar measure), no confocal or profiler, no visitor corridor or tours, no cassette or "
"CD-R, a rented crane; Chinese-made boilers and compressor",
"~THB 32M more at launch: owned solar and battery with the BOI solar measure, the full "
"~THB 31M more at launch: owned solar and battery with the BOI solar measure, the full "
"metrology stack, the visitor corridor and tours, cassette and CD-R, a bought crane; "
"Thai-supplied boilers and compressor"],
], widths_mm=[42, 64, 64], font_pt=8.5,
@@ -317,18 +317,18 @@ def blocks():
"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 209M (~USD 6.33M), rounded to ~210M THB**, including the "
"**Then the Plan B round, ~THB 208M (~USD 6.30M), rounded to ~210M THB**, including the "
"ramp-up reserve and without contingency, within the investor's 180M THB plus 20 % at the "
"midpoint, 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 150M to 268M; quotes that land high are funded "
"end of every block the plan runs from ~THB 149M to 266M; 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 32M more at launch for what Plan A leases or defers; the "
"same records, so the choice is ~THB 31M 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", "52M of Plan B's ~209M") + " is equity); CD "
"least ~THB " + pick("44M of Plan A's ~177M", "52M of Plan B's ~208M") + " is equity); CD "
"replication, yes or no (it must be in the BOI application from the start); and the steam fuel, "
"electric or biomass.",
"**Co-investment:** Ploy Printing, the Chiang Mai print and packaging house that will produce "
+11 -9
View File
@@ -367,13 +367,14 @@ def blocks():
"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 ~1.2M to 1.3M THB a year and pays back in ~4.5 to 7 years at 25,000 "
"to 35,000 THB/kWp (estimates)")],
"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 (estimates)")],
["Canopies and the second building", "~40 kWp on the parking canopies (construction RFQ; ~54 "
"kWp if fully covered). A phase 2 building's roof adds "
"~251 kWp, ~498 kWp across both roofs"],
["Battery", "271 kWh Gobel Power LiFePO4 rack (15 stacked 18 kWh packs, 8,000+ cycles), USD "
"39,900 to 58,000 listed, 50 to 60 day lead. Roughly an hour of the chiller bank's "
"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), Thai distribution via Solar "
"Nicolo; Deye is a supported protocol on the Gobel battery management"],
@@ -387,17 +388,18 @@ def blocks():
"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 calculator carries 3.0 THB/kWh, an "
"estimate, ~0.03M USD a year on the energy line). That keeps the PV EPC (USD 227k to "
"318k) and the battery (USD 42k to 62k) out of the capital round: ~10.7M THB less at the "
"estimate, ~0.03M USD a year on the energy line). That keeps the PV EPC (USD 182k to "
"236k) and the battery (USD 61k to 106k) out of the capital round: ~9.7M THB less at the "
"midpoint, one of the six levers in section 8. The BOI solar measure (section 7) rewards "
"the plant's own solar investment, so its tax value very likely goes with the array (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: rooftop PV EPC USD 227k "
"to 318k (7.5M to 10.5M THB) and the battery USD 42k to 62k (1.4M to 2.0M THB), "
["Owned (this plan)", "The plant buys the array and the battery: rooftop PV EPC USD 182k "
"to 236k (6.0M to 7.8M THB, 20 to 26 THB/W at Thai 2026 market prices) and the battery, installed, "
"USD 61k to 106k (2.0M to 3.5M THB), "
"estimates, section 8. Owning them is what the BOI solar measure rewards (section 7). A "
"solar PPA (an installer owns and finances them, the plant buys the power at a price "
"still to quote) would take ~10.7M THB out of the capital round at the midpoint, but "
"still to quote) would take ~9.7M THB out of the capital round at the midpoint, but "
"very likely gives up that measure"]),
]),
H3("Steam: the open engineering choice"),
@@ -965,7 +967,7 @@ def blocks():
P("**Process:** file via the e-Investment system and present at an analyst meeting. BOI quotes "
"about 40 working days to a decision for projects under THB 200M and 60 to 90 working days for "
"larger tiers; at " + pick("~127M to 226M THB with the ramp-up reserve (~177M at the midpoint)",
"~150M to 268M THB with the ramp-up reserve (~209M at the midpoint)") +
"~149M to 266M THB with the ramp-up reserve (~208M 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 "
+52 -52
View File
@@ -62,7 +62,7 @@ def _block_rows():
"racking", "297k to 627k", "9.8M to 20.7M", "Researched: utilities rows"],
]
if not a:
rows.append(["Rooftop PV (EPC) and the 271 kWh Gobel battery, owned", "269k to 380k", "8.9M to 12.5M",
rows.append(["Rooftop PV (EPC) and the 271 kWh Gobel battery, owned", "243k to 342k", "8.0M to 11.3M",
"Researched: utilities rows; owned, so the BOI solar measure applies"])
rows += [
["Building ~1,500 m² plus civil and site works", "650k to 1,100k", "21.4M to 36.3M", "Estimate at "
@@ -97,14 +97,14 @@ def _block_rows():
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.24M to 7.50M**", "**~140.0M to 247.6M**",
"**Midpoint ~193.8M THB (~5.87M USD)**"]),
["**Subtotal, plan investment**", "**~4.22M to 7.47M**", "**~139.1M to 246.4M**",
"**Midpoint ~192.8M THB (~5.84M 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.55M to 8.11M**", "**~150M to 268M**",
"**Midpoint ~209M THB (~6.33M USD): ~210M THB**"]),
["**Plan B price**", "**~4.52M to 8.07M**", "**~149M to 266M**",
"**Midpoint ~208M THB (~6.30M USD): ~210M THB**"]),
["Contingency: not in the plan price", "", "", pick(
"For information: at 15 %, ~24M THB at the midpoint",
"For information: at 15 %, ~29M THB at the midpoint")],
@@ -115,9 +115,9 @@ 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", "", "~193.8M THB (~5.87M USD)", ""],
["Launch plant, every block, no contingency", "", "~192.8M THB (~5.84M USD)", ""],
["1. Rooftop solar and battery through a solar PPA (the installer owns and finances the array; the "
"plant buys the power)", "~10.7M", "~183.1M", "Owned solar and very likely the BOI solar measure with "
"plant buys the power)", "~9.7M", "~183.1M", "Owned solar and very likely the BOI solar measure with "
"its tax benefit (our reading, for the BOI consultant); "
"adds the PPA power price to the energy bill, ~0.03M USD a "
"year in the calculator at 3.0 THB/kWh (estimate, to "
@@ -148,7 +148,7 @@ 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)"], [
["Rooftop PV and the 271 kWh battery, owned (EPC and Gobel battery)", "The BOI solar measure (only an "
"owned array qualifies; our reading, for the BOI consultant) and no PPA power bill", "~10.7M"],
"owned array qualifies; our reading, for the BOI consultant) and no PPA power bill", "~9.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 "
@@ -159,14 +159,14 @@ def _keeps_table():
"the installations", "~3.2M"],
["Boilers and compressor from Thai suppliers", "Local service; no import route for the boilers",
"~1.9M"],
["**Together**", "", "**~32M (193.8M minus Plan A's 161.7M)**"],
["Launch plant, every block, no contingency: Plan B's subtotal", "", "~193.8M (~5.87M USD)"],
["**Together**", "", "**~31M (192.8M minus Plan A's 161.7M)**"],
["Launch plant, every block, no contingency: Plan B's subtotal", "", "~192.8M (~5.84M USD)"],
["Ramp-up reserve", "", "+10M to 20M"],
["**Plan B**", "", "**~209M THB (~6.33M USD)**; ~150M to 268M from the low to the high end"],
["**Plan B**", "", "**~208M THB (~6.30M USD)**; ~149M to 266M 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 ~32.2M, and the "
"two subtotals differ by ~32.1M.")
"Each figure is what the matching Plan A lever saves; rounded, the six add to ~31.2M, and the "
"two subtotals differ by ~31.1M.")
def _tranches():
@@ -183,7 +183,7 @@ def _tranches():
["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 % (~68M to 87M)")],
pick("35 to 45 % (~57M to 73M)", "35 to 45 % (~67M to 87M)")],
["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",
@@ -193,11 +193,11 @@ def _tranches():
pick("15 to 20 % (~24M to 32M)", "15 to 20 % (~29M to 39M)")],
["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 23M), plus the reserve")],
"on", pick("8 to 12 % (~13M to 19M), plus the reserve", "8 to 12 % (~15M to 23M), 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 "
"figures are the shares applied to it (arithmetic, estimates).",
"Shares of Plan B's investment before the reserve (~193.8M THB at the midpoint); the THB "
"Shares of Plan B's investment before the reserve (~192.8M THB at the midpoint); the THB "
"figures are the shares applied to it (arithmetic, estimates)."))
@@ -234,8 +234,8 @@ def _operating_table():
["Depreciation", "0.75M", "0.47M", "0.28M"],
["**Operating profit**", "**-0.52M**", "**1.26M**", "**3.51M**"],
["Revenue", "2.28M (~75M THB)", "3.65M (~120M THB)", "5.41M (~179M THB)"],
["Payback on the plan price (EBITDA, mature year)", "~35 yr", "~3.7 yr (2.6 to 4.7 on 4.55M to "
"8.11M)", "~1.2 yr"],
["Payback on the plan price (EBITDA, mature year)", "~35 yr", "~3.6 yr (2.6 to 4.7 on 4.52M to "
"8.07M)", "~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 "
@@ -256,7 +256,7 @@ def _risk_rows():
"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 ~29M THB at the midpoint, "
"and the high end of every block comes to ~268M with the reserve"),
"and the high end of every block comes to ~266M 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"],
@@ -299,9 +299,9 @@ def _risk_rows():
"and PPA offers next to the purchase quote in phase 0; buying the array, as Plan B does, "
"stays the alternative"])
else:
rows.append(["Medium", "The extra ~32M THB earns nothing in the model", "Plan B's operating picture is "
"Plan A's (same presses, records, revenue and EBITDA): the ~32M THB more at launch adds "
"depreciation, so central operating profit is 1.26M against 1.34M USD, payback ~3.7 against "
rows.append(["Medium", "The extra ~31M THB earns nothing in the model", "Plan B's operating picture is "
"Plan A's (same presses, records, revenue and EBITDA): the ~31M THB more at launch adds "
"depreciation, so central operating profit is 1.26M against 1.34M USD, payback ~3.6 against "
"~3.1 years and the adverse corner deeper; its case rests on what the table leaves out (the "
"BOI solar measure, 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 "
@@ -430,8 +430,8 @@ def blocks():
"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",
"~209M THB (~6.33M USD): ~210M"],
["Low to high end of every block", "~127M to 226M THB", "~150M to 268M THB"],
"~208M THB (~6.30M USD): ~210M"],
["Low to high end of every block", "~127M to 226M THB", "~149M to 266M THB"],
["Presses", "3: Duplex system 1 (two HRP 12) and one Classic", "The same 3"],
["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)"],
@@ -440,11 +440,11 @@ def blocks():
["Operating profit, adverse case", "-0.39M USD: loses money", "-0.52M 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.7 yr (2.6 to 4.7; calculator: 2.8 yr against Plan A's 2.4)"],
"~3.6 yr (2.6 to 4.7; calculator: 2.8 yr against Plan A's 2.4)"],
["What it gives up or takes on", "Six levers: solar through a PPA (very likely without the BOI "
"solar measure), 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, ~32M THB more (owned solar and battery with the BOI "
"buys at launch what Plan A leases or defers, ~31M THB more (owned solar and battery with the BOI "
"solar measure, the full metrology stack, the visitor corridor, cassette and CD-R, a bought crane, "
"Thai boilers and compressor); the second Duplex waits for revenue"],
], widths_mm=[46, 62, 62], font_pt=8.5,
@@ -454,8 +454,8 @@ 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, ~32M THB more "
"at the midpoint, so ~193.8M THB before the reserve and ~209M (~210M THB) with it.")]
P("Plan B takes none of these levers: it buys at launch what they lease or defer, ~31M THB more "
"at the midpoint, so ~192.8M THB before the reserve and ~208M (~210M 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:"),
@@ -467,12 +467,12 @@ 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.",
"**~32M THB more at launch, for what Plan A leases or buys from revenue.** Plan B keeps the BOI "
"**~31M THB more at launch, for what Plan A leases or buys from revenue.** Plan B keeps the BOI "
"solar measure (only an owned array qualifies), 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.",
"**On the modelled numbers the extra earns nothing.** The same EBITDA, more depreciation, a longer "
"payback (~3.7 against ~3.1 years) and a deeper adverse corner: Plan A has the better modelled "
"payback (~3.6 against ~3.1 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 BOI solar measure and the corridor are cheaper to have from the start.",
"**The quotes.** The Newbilt re-quote for the Classic and the EX 35, the Pheenix quote against the "
@@ -488,8 +488,8 @@ def blocks():
"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: 193.8M THB at the midpoint without contingency, 203.8M to 213.8M with the "
"ramp-up reserve of 10M to 20M, 16.2M to spare under the 225M mark (180M plus 25 %)") +
"Plan B preset: 192.8M THB at the midpoint without contingency, 202.8M to 212.8M with the "
"ramp-up reserve of 10M to 20M, 17.2M 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."),
@@ -506,8 +506,8 @@ def blocks():
"**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 ~209M THB is the midpoint of every block with the ramp-up reserve and no buffer: at "
"15 % a contingency would add ~29M THB, and the high end of every block comes to ~268M. ") +
"Plan B's ~208M THB is the midpoint of every block with the ramp-up reserve and no buffer: at "
"15 % a contingency would add ~29M THB, and the high end of every block comes to ~266M. ") +
"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 "
@@ -538,11 +538,11 @@ def blocks():
"**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 (~10.7M THB at the midpoint) moves the array off the "
pick("**Solar PPA.** The largest single lever (~9.7M THB at the midpoint) moves the array off the "
"capital budget and adds a power price to the energy line instead (~0.03M USD a year in the "
"calculator at 3.0 THB/kWh, an estimate to quote).",
"**Solar bought, not leased.** Plan B owns the array and the battery (8.9M to 12.5M THB). A "
"solar PPA would take ~10.7M THB off the price at the midpoint and add a power price to the "
"**Solar bought, not leased.** Plan B owns the array and the battery (8.0M to 11.3M THB). A "
"solar PPA would take ~9.7M THB off the price at the midpoint and add a power price to the "
"energy line instead, very likely without the BOI solar measure."),
"**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).",
@@ -696,9 +696,9 @@ def blocks():
"(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 "
"high end).",
"the high end (7.50M USD) over 10 years (adverse), the midpoint (5.87M USD) over 12.5 years "
"(central) and the low end (4.24M USD) over 15 years (favourable). Payback is counted on the "
"whole plan price including the ramp-up reserve (4.55M / 6.33M / 8.11M USD from the low to the "
"the high end (7.47M USD) over 10 years (adverse), the midpoint (5.84M USD) over 12.5 years "
"(central) and the low end (4.22M USD) over 15 years (favourable). Payback is counted on the "
"whole plan price including the ramp-up reserve (4.52M / 6.30M / 8.07M USD from the low to the "
"high end).")),
_operating_table(),
CALL("Reading this table honestly", pick([
@@ -727,7 +727,7 @@ def blocks():
"supply to other plants, dropshipping fees, and the ramp year. BOI tax exemptions shield part of "
"early-year profits where there are any.",
], [
"**The central case works on ~209M THB.** EBITDA ~1.73M USD (~57M THB) and operating profit ~1.26M "
"**The central case works on ~208M THB.** EBITDA ~1.73M USD (~57M THB) and operating profit ~1.26M "
"USD (~42M THB) a year once the plant runs at volume. It breaks even on operating profit at about "
"**0.23 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.",
@@ -737,9 +737,9 @@ def blocks():
"cost and volume the price that covers depreciation is ~2.8 USD (~91 THB) a record (arithmetic on "
"the table), below the low price assumed: price realisation and utilisation decide solvency, not "
"upside.",
"**What the extra ~32M THB buys is not in this table.** Plan B is Plan A's plant with the six levers "
"**What the extra ~31M 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.47M against "
"Plan A's 0.39M USD at the centre) and the payback (~3.7 against ~3.1 years) move. Not modelled: "
"Plan A's 0.39M USD at the centre) and the payback (~3.6 against ~3.1 years) move. Not modelled: "
"cassette and CD-R revenue, tour and Payap revenue, stamper supply to other plants, and the tax "
"benefit of the BOI solar measure.",
"**The central margin is too good to trust yet.** A central EBITDA margin of ~47 % is far above "
@@ -751,7 +751,7 @@ def blocks():
"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.07M USD, "
"payback 2.8 years on the 193.8M THB investment in a mature year; with a ramp of 35, 70 and 90 % in "
"payback 2.8 years on the 192.8M 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.3, ~21 % IRR and an NPV "
"of ~4.1M USD over ten years, pre-tax and pre-financing (estimates). Its EBITDA is 0.03M above "
"Plan A's 2.04M because the owned array carries no PPA power price. Not modelled here: cassette "
@@ -983,7 +983,7 @@ def blocks():
"room.", pick("**More capital up front.** ~127M to 226M THB in one round (~177M 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.** ~150M to 268M THB in one round (~209M at the midpoint), "
"**More capital up front.** ~149M to 266M THB in one round (~208M 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 "
@@ -995,8 +995,8 @@ def blocks():
"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 "
"reserved floor.",
"**~32M THB more that the model does not repay.** The same EBITDA as Plan A with more "
"depreciation and a longer payback (~3.7 against ~3.1 years); the adverse case still loses "
"**~31M THB more that the model does not repay.** The same EBITDA as Plan A with more "
"depreciation and a longer payback (~3.6 against ~3.1 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 "
@@ -1049,7 +1049,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", "~52M THB of Plan B's ~209M") +
"~44M THB of Plan A's ~177M", "~52M THB of Plan B's ~208M") +
" (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 "
@@ -1148,12 +1148,12 @@ def blocks():
"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 ~210M THB** (~209M at the midpoint, the ramp-up "
"A commitment in principle to **Plan B at ~210M THB** (~208M 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 ~52M "
"THB). Told plainly: the price carries no contingency (at 15 % it would be ~29M THB more at "
"the midpoint), and from the low to the high end of every block the plan comes to ~150M to "
"268M THB. The Newbilt re-quote, the Pheenix quote, the building quote with the soil test, "
"the midpoint), and from the low to the high end of every block the plan comes to ~149M to "
"266M 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(
@@ -1161,7 +1161,7 @@ def blocks():
"levers, the solar PPA first (it very likely gives up the BOI solar measure); CD replication, "
"yes or no, before the BOI application is finalised; the steam fuel (electric or biomass); "
"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 ~32M "
"The equity and debt mix, and how quotes landing above the plan price are funded; the ~31M "
"THB of items Plan A leases or defers (owned solar with the BOI solar measure, the full "
"metrology stack, the visitor corridor, cassette and CD-R, the bought crane, Thai boilers and "
"compressor), each weighed against its lever; CD replication, yes or no, before the BOI "
+6 -6
View File
@@ -671,7 +671,7 @@ What it says:
The business plan comes in two versions
([total investment](total-investment.md#two-plans-a-at-180m-thb-and-b-at-210m-thb-october-2026)):
**Plan A** (~177M THB, the launch plant with six cost levers) and
**Plan B** (~209M THB, the same launch plant with everything in), both
**Plan B** (~208M THB, the same launch plant with everything in), both
priced without contingency and with the ramp-up reserve. 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
@@ -681,12 +681,12 @@ depreciation follows each plan's capital (estimates):
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.03M USD a year in
the calculator), not shown here.
- **Plan B**: 7.50M USD over 10 years, 5.87M over 12.5, 4.24M over 15.
- **Plan B**: 7.47M USD over 10 years, 5.84M over 12.5, 4.22M over 15.
Its owned solar 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.55M / 6.33M /
8.11M USD from the low to the high end).
reserve (Plan A 3.86M / 5.35M / 6.85M USD, Plan B 4.52M / 6.30M /
8.07M USD from the low to the high end).
| USD/yr | A adverse | A central | A favourable | B adverse | B central | B favourable |
|---|---|---|---|---|---|---|
@@ -700,7 +700,7 @@ depreciation follows each plan's capital (estimates):
| Depreciation | 0.62M | 0.39M | 0.24M | 0.75M | 0.47M | 0.28M |
| **Operating profit** | **-0.39M** | **1.34M** | **3.55M** | **-0.52M** | **1.26M** | **3.51M** |
| 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 | ~35 yr | ~3.7 yr (2.6 to 4.7) | ~1.2 yr |
| Payback on the plan price (EBITDA, mature year) | ~30 yr | ~3.1 yr (2.2 to 4.0) | ~1.0 yr | ~35 yr | ~3.6 yr (2.6 to 4.7) | ~1.2 yr |
What it says:
@@ -712,7 +712,7 @@ What it says:
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 (~91 THB) a record.
- **On these numbers Plan B's extra ~32M THB earns nothing**: the same
- **On these numbers Plan B's extra ~31M THB earns nothing**: the same
EBITDA, more depreciation and a longer payback. Its case rests on what
the table leaves out: the BOI solar measure on the owned array, the
PPA power bill it avoids, full stamper metrology from the first
+11 -11
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 | 863k – 1,477k | 28.5M – 48.7M | [utilities CSV](utilities-investment.csv) baseline re-sized for three presses: chiller bank two modules instead of three |
| Utilities, solar, battery, HVAC, clean zones, racking | 835k – 1,439k | 27.6M – 47.5M | [utilities CSV](utilities-investment.csv) baseline re-sized for three presses: chiller bank two modules instead of three; solar at 20 to 26 THB/W installed and 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.24M – 7.50M | ~140M – 248M | midpoint ~5.87M USD, ~194M THB |
| Contingency 15 % | ~0.64M – 1.13M | ~21M – 37M | |
| **Total, launch plant** | **~4.9M – 8.6M USD** | **~161M – 285M THB** | midpoint ~6.76M USD, ~223M THB |
| Subtotal | ~4.22M – 7.47M | ~139M – 246M | midpoint ~5.84M USD, ~193M THB |
| Contingency 15 % | ~0.63M – 1.12M | ~21M – 37M | |
| **Total, launch plant** | **~4.85M – 8.6M USD** | **~160M – 283M THB** | midpoint ~6.72M USD, ~222M 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),
@@ -153,8 +153,8 @@ reference plus 20 % in both. Midpoints, estimates:
| Plan A: launch plant with six levers | Saves | Subtotal after it |
|---|---|---|
| Launch plant, every block, no contingency | | ~193.8M THB (~5.87M USD) |
| Rooftop solar and battery through a solar PPA (the installer owns and finances the array, the plant buys the power) | ~10.7M | ~183.1M |
| Launch plant, every block, no contingency | | ~192.8M THB (~5.84M USD) |
| Rooftop solar and battery through a solar PPA (the installer owns and finances the array, the plant buys the power) | ~9.7M | ~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 |
@@ -165,12 +165,12 @@ reference plus 20 % in both. Midpoints, estimates:
| Plan B: the launch plant, everything in | USD | THB |
|---|---|---|
| Launch plant, every block, no contingency (the six lever items included: owned solar and battery ~10.7M, 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 ~32M THB at the midpoint) | 4.24M – 7.50M | ~140M – 248M, **~193.8M (~5.87M USD)** at the midpoint |
| Launch plant, every block, no contingency (the six lever items included: owned solar and battery ~9.7M, 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 ~31M THB at the midpoint) | 4.22M – 7.47M | ~139M – 246M, **~192.8M (~5.84M USD)** at the midpoint |
| Ramp-up reserve | | +10M to 20M |
| **Plan B** | | **~209M THB (~6.33M USD): ~210M**, ~150M to 268M from the low to the high end of every block |
| **Plan B** | | **~208M THB (~6.30M USD): ~210M**, ~149M to 266M from the low to the high end of every block |
Plan B costs ~32M THB (~18 %) more than Plan A and, at the midpoint,
stays within the investor's 180M THB plus 20 % (its high end, ~268M, does
Plan B costs ~31M THB (~18 %) more than Plan A and, at the midpoint,
stays within the investor's 180M THB plus 20 % (its high end, ~266M, does
not). It keeps what Plan A leases or defers:
owned solar and battery (and with them the BOI solar measure), the full
metrology stack from the first release, the visitor corridor and tours
@@ -192,7 +192,7 @@ both as presets.
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 ~32M THB more at launch for what
records, but whether the investor funds ~31M THB more at launch for what
Plan A leases or buys from revenue. On the modelled numbers Plan B's
extra earns nothing (same EBITDA, more depreciation, a longer payback);
its case rests on what the operating table leaves out: the BOI solar
+3 -3
View File
@@ -13,6 +13,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 rooftop EPC (illustrative 300 kWp),"Turnkey C&I rooftop EPC incl. Deye hybrid inverters, at 25000-35000 THB/kWp",Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; local Chiang Mai installers,7500000,10500000,market rate per kWp; size illustrative,"Final kWp open until site selection; PEA TOU 3.2.2 plus Ft (Sep-Dec 2026): self-consumed PV worth ~3.7 THB/kWh, ~4.5-7 yr payback (sustainability.md, grid tariff)"
solar,Battery stack 271 kWh (Gobel),"GP-SRA-HV314 HV LiFePO4 rack, 15 x 18 kWh packs, direct from Shenzhen, 50-60 day lead",Gobel Power (no Thai distributor; integration by solar EPC),1400000,2030000,vendor listed price USD 39900-58000 at ~35 THB/USD,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 + 300 kWp solar + 271 kWh BESS,,28470000,48730000,sum of baseline rows,"Launch plant, one Duplex system and one Classic (October 2026; 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"
solar,PV rooftop EPC (illustrative 300 kWp),"Turnkey C&I rooftop EPC incl. Deye hybrid inverters, at 20000-26000 THB/kWp",Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; CapSolar; local Chiang Mai installers,6000000,7800000,"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, six units); size illustrative","Final kWp open until site selection; canopy PV over parking needs its own steel structure (not priced); PEA TOU 3.2.2 plus Ft (Sep-Dec 2026): self-consumed PV worth ~3.7 THB/kWh, ~3.8-5.4 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 + 300 kWp solar + 271 kWh BESS,,27570000,47500000,sum of baseline rows,"Launch plant, one Duplex system and one Classic (October 2026; solar and battery re-priced from Thai market data 17 Oct 2026, was 28.47M-48.73M; 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
13 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
14 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
15 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
16 solar PV rooftop EPC (illustrative 300 kWp) Turnkey C&I rooftop EPC incl. Deye hybrid inverters, at 25000-35000 THB/kWp Turnkey C&I rooftop EPC incl. Deye hybrid inverters, at 20000-26000 THB/kWp Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; local Chiang Mai installers Solar Nicolo (Deye tier-1 distributor); Banpu NEXT; SCG Cleanergy; Sermsang; CapSolar; local Chiang Mai installers 7500000 6000000 10500000 7800000 market rate per kWp; size illustrative 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, six units); size illustrative Final kWp open until site selection; PEA TOU 3.2.2 plus Ft (Sep-Dec 2026): self-consumed PV worth ~3.7 THB/kWh, ~4.5-7 yr payback (sustainability.md, grid tariff) Final kWp open until site selection; canopy PV over parking needs its own steel structure (not priced); PEA TOU 3.2.2 plus Ft (Sep-Dec 2026): self-consumed PV worth ~3.7 THB/kWh, ~3.8-5.4 yr payback (sustainability.md, grid tariff)
17 solar Battery stack 271 kWh (Gobel) Battery stack 271 kWh (Gobel) installed GP-SRA-HV314 HV LiFePO4 rack, 15 x 18 kWh packs, direct from Shenzhen, 50-60 day lead 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) 1400000 2000000 2030000 3500000 vendor listed price USD 39900-58000 at ~35 THB/USD 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
18 total BASELINE TOTAL Electric steam bank (2 modules) + oil-injected air + chiller bank (2 modules) + softener + loop treatment + local racking + HVAC + clean zones + 300 kWp solar + 271 kWh BESS 28470000 27570000 48730000 47500000 sum of baseline rows Launch plant, one Duplex system and one Classic (October 2026; 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; solar and battery re-priced from Thai market data 17 Oct 2026, was 28.47M-48.73M; 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
+4 -4
View File
@@ -3028,9 +3028,9 @@ rng("Investment blocks (USD unless THB)", [
["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 28.47 to 48.73M THB less boilers, chillers, air, clean room, PV and battery"],
["pv", "Rooftop PV EPC", 7500000, 10500000, "THB", "est", "Utilities CSV: illustrative 300 kWp at 25,000 to 35,000 THB/kWp; final kWp open (scale.md 247 kWp for the yield)"],
["bat", "Battery 271 kWh (Gobel)", 1400000, 2030000, "THB", "vendor", "Utilities CSV: vendor listed price USD 39,900 to 58,000"],
["uRest", "Rest of the utilities baseline: softener, loop treatment, racking, whole-factory HVAC", 8620000, 17300000, "THB", "est", "Utilities CSV baseline 27.57 to 47.50M THB less boilers, chillers, air, clean room, PV and battery"],
["pv", "Rooftop PV EPC", 6000000, 7800000, "THB", "est", "Utilities CSV: illustrative 300 kWp at 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. Deye hybrid inverters; final kWp open (scale.md 247 kWp for the yield)"],
["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"],
["crn", "Overhead crane, runway, frame premium, machine door", 97000, 227000, "USD", "est", "crane-workshop-tours.md via total-investment.md"],
@@ -3710,7 +3710,7 @@ function renderInvest(e, r) {
H.push(`<tr class="grp"><td colspan="5">Totals</td></tr>`);
TR("Subtotal", cx.sub, "", true);
TR(cx.ctgIn ? `Contingency ${f1(A.contPct)} %` : `Contingency ${f1(A.contPct)} % (not in the total)`, cx.ctg, cx.ctgIn ? "total-investment.md" : "shown separately, as in Plan A and Plan B");
TR("Total investment", cx.tot, "for reference, total-investment.md: the launch plant ~161M to 285M THB with contingency (midpoint ~223M); Plan A ~162M and Plan B ~194M at the midpoint without it, plus the ramp-up reserve", true);
TR("Total investment", cx.tot, "for reference, total-investment.md: the launch plant ~160M to 283M THB with contingency (midpoint ~222M); Plan A ~162M and Plan B ~193M 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: 491 KiB

After

Width:  |  Height:  |  Size: 491 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 KiB

After

Width:  |  Height:  |  Size: 866 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 KiB

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 KiB

After

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 KiB

After

Width:  |  Height:  |  Size: 569 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 884 KiB

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 KiB

After

Width:  |  Height:  |  Size: 541 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: 295 KiB

After

Width:  |  Height:  |  Size: 294 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 (~161M to 285M THB with contingency; for the investor Plan A at
round (~160M to 283M THB with contingency; for the investor Plan A at
~180M and Plan B at ~210M THB without it, in
[total investment](finance/total-investment.md#two-plans-a-at-180m-thb-and-b-at-210m-thb-october-2026));
the gates still come before the round is spent, and the growth options
+5 -2
View File
@@ -251,8 +251,11 @@ not a cost one.
**PV, not solar thermal.** Self-consumed PV is worth **~3.7 THB/kWh**
(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 **~4.5 to 7 years** at 25,000 to 35,000 THB/kWp
(estimate). It does not lower the demand charge, because the peak window
and pays back in **~3.8 to 5.4 years** at 20,000 to 26,000 THB/kWp
installed (estimate; 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
runs to 22:00, long after sunset. Solar thermal loses on every count here:
flat-plate and evacuated-tube collectors reach only the 60 to 90 °C that
the feedwater heat pump already recovers from the press cooling return;