diff --git a/README.md b/README.md index 1b580da..83e9cfb 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/docs/business-plan/CNX-Vinyl-Business-Plan-A.docx b/docs/business-plan/CNX-Vinyl-Business-Plan-A.docx index e77af5a..2b67165 100644 Binary files a/docs/business-plan/CNX-Vinyl-Business-Plan-A.docx and b/docs/business-plan/CNX-Vinyl-Business-Plan-A.docx differ diff --git a/docs/business-plan/CNX-Vinyl-Business-Plan-A.pdf b/docs/business-plan/CNX-Vinyl-Business-Plan-A.pdf index 4e2a234..73df57a 100644 Binary files a/docs/business-plan/CNX-Vinyl-Business-Plan-A.pdf and b/docs/business-plan/CNX-Vinyl-Business-Plan-A.pdf differ diff --git a/docs/business-plan/CNX-Vinyl-Business-Plan-B.docx b/docs/business-plan/CNX-Vinyl-Business-Plan-B.docx index 4896dd2..ad89774 100644 Binary files a/docs/business-plan/CNX-Vinyl-Business-Plan-B.docx and b/docs/business-plan/CNX-Vinyl-Business-Plan-B.docx differ diff --git a/docs/business-plan/CNX-Vinyl-Business-Plan-B.pdf b/docs/business-plan/CNX-Vinyl-Business-Plan-B.pdf index 227178b..399baf8 100644 Binary files a/docs/business-plan/CNX-Vinyl-Business-Plan-B.pdf and b/docs/business-plan/CNX-Vinyl-Business-Plan-B.pdf differ diff --git a/docs/business-plan/build/content_a.py b/docs/business-plan/build/content_a.py index d5ef037..2f3f745 100644 --- a/docs/business-plan/build/content_a.py +++ b/docs/business-plan/build/content_a.py @@ -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 " diff --git a/docs/business-plan/build/content_b.py b/docs/business-plan/build/content_b.py index 7bd40eb..3950ad1 100644 --- a/docs/business-plan/build/content_b.py +++ b/docs/business-plan/build/content_b.py @@ -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 " diff --git a/docs/business-plan/build/content_c.py b/docs/business-plan/build/content_c.py index 9e735c9..9b74f93 100644 --- a/docs/business-plan/build/content_c.py +++ b/docs/business-plan/build/content_c.py @@ -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 " diff --git a/docs/finance/revenue-model.md b/docs/finance/revenue-model.md index ad5c178..5b19e89 100644 --- a/docs/finance/revenue-model.md +++ b/docs/finance/revenue-model.md @@ -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 diff --git a/docs/finance/total-investment.md b/docs/finance/total-investment.md index 72fb83f..2d26741 100644 --- a/docs/finance/total-investment.md +++ b/docs/finance/total-investment.md @@ -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 diff --git a/docs/finance/utilities-investment.csv b/docs/finance/utilities-investment.csv index d0b98f5..785fd4d 100644 --- a/docs/finance/utilities-investment.csv +++ b/docs/finance/utilities-investment.csv @@ -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" diff --git a/docs/fleet-calculator.html b/docs/fleet-calculator.html index ed02614..e5ace13 100644 --- a/docs/fleet-calculator.html +++ b/docs/fleet-calculator.html @@ -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(`