Plan B re-defined: the launch plant with everything in (~210M THB); front view on the cover
Deploy test site / deploy (push) Successful in 52s

- Plan B now starts like Plan A with one Duplex system and one Classic,
  but takes none of the six levers: owned solar and battery (with the BOI
  solar measure), the full metrology stack, the visitor corridor, cassette
  and CD-R, the bought crane and Thai-supplied utilities (user, 17 October
  2026). ~193.8M THB before the reserve, ~209M with it (~150M to 268M),
  ~32M (~18 %) more than Plan A; the second Duplex is a growth step from
  revenue in both (~15.4M THB, estimate).
- total-investment.md "Two plans" re-based (heading and anchor now
  "B at ~210M THB", README and roadmap links updated); revenue-model.md
  operating pictures: same volume and EBITDA as Plan A, depreciation on
  Plan B's capital (operating profit 1.26M USD central, payback ~3.7 yr);
  the extra earns nothing in the modelled table, which the docs say.
- Calculator: Plan B preset = the launch plant with contingency kept out
  (EBITDA 2.07M USD, cash payback year ~4.3, IRR ~21 %); budget card marks
  180M and 180M plus 25 %; preset label "Plan B (~210M, all in)".
- Business plan draft 0.3, both versions rebuilt: every Plan B branch of
  the three content files rewritten; renders regenerated with the
  isometric view turned to the front of the site (road, car park, office,
  corridor facade) for the cover and Figures 8 to 10.
This commit is contained in:
grabowski committed 2026-10-17 16:33:18 +07:00
1 parent ffc6cedbca
commit 3f33babdaa
28 files changed
+528 -604

No files matched your search

+127 -152
View File
@@ -1,6 +1,6 @@
"""Part A: cover, reading guide, executive summary, opportunity, anatomy of the plant.
Builds Plan A (~180M THB) or Plan B (~225M THB): plan-specific text is switched with
Builds Plan A (~180M THB) or Plan B (~210M THB): plan-specific text is switched with
plan_variant.pick() inside blocks(), never at import time.
"""
from plan_lib import H1, H2, H3, P, B, N, T, KV, IMG, CALL, PB, TOC, COVER
@@ -23,17 +23,18 @@ def blocks():
"**Prepared by:** Simona Meesaiyati (Project Lead) and Alexander Grabowski (Technical Consultant), "
"supported by buildfor.life, with Ploy Printing (Chiang Mai) as packaging partner and "
"strategic co-investor",
f"**Version:** Draft 0.3, October 2026: **{name()}, {pick('~180M THB', '~225M THB')}**",
f"**Version:** Draft 0.3, October 2026: **{name()}, {pick('~180M THB', '~210M THB')}**",
],
note="Confidential. All figures in USD and THB at 1 USD = 33 THB (August 2026). Vendor quotes are "
"snapshots at their file dates, not commitments. Every number in this plan is labelled as quoted, "
"researched, or estimated; see section 2. " + pick(
"This version is Plan A: the launch plant with the whole chain, cutting and galvanics "
"included, three presses, brought to ~180M THB (~177M) with six cost levers. A second "
"version, Plan B (~225M THB), launches with five presses and takes none of the levers. ",
"This version is Plan B: the whole chain, cutting and galvanics included, with five presses "
"at launch and everything in, at ~225M THB (~224M). A second version, Plan A (~180M THB), "
"launches with three presses and six cost levers. ")
"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 "
"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 "
"layout, section 6.2). Draft 0.3 replaces "
@@ -62,7 +63,7 @@ def blocks():
"sequence. There are no bridge stampers and no outsourced cutting in the plan any more. Draft 0.3 "
"prices that plant in **two versions**, both including the ramp-up reserve and neither carrying a "
"contingency: **Plan A (~180M THB)**, the launch plant's three presses with six cost levers, and "
"**Plan B (~225M THB)**, five presses with everything in. " + pick(
"**Plan B (~210M THB)**, the same three presses with everything in. " + pick(
"**This document is Plan A**, and every section below is written for it; a short table after "
"the numbers compares the two versions.",
"**This document is Plan B**, and every section below is written for it; a short table after "
@@ -72,21 +73,13 @@ def blocks():
"**The complete vinyl chain under one roof:** mastering, lacquer cutting, galvanics (growing the "
"nickel stampers), stamper preparation, pressing, finishing, packaging with our Chiang Mai print "
"partner Ploy Printing, and fulfilment including direct-to-fan dropshipping.",
pick(
"**Three presses at launch:** one Newbilt Duplex system (two semi-automatic presses with a main "
"and a colour extruder, for colour, splatter and short runs) and one Newbilt Classic fully "
"automatic press for long standard runs. Special prints are the focus (60 % and more of the "
"records), and specials run only on the Duplex, so together they make about 0.58 to 0.90 "
"million records a year on two shifts (0.71 to 0.97 million at a standard-heavy mix; "
"estimates). A second Duplex system is a growth step from revenue, with its floor, utility "
"positions and pipe connections reserved, not part of the investment.",
"**Five presses at launch:** two Newbilt Duplex systems (each two semi-automatic presses with a "
"main and a colour extruder, for colour, splatter and short runs) and one Newbilt Classic fully "
"automatic press for long standard runs. Special prints are the focus (60 % and more of the "
"records) and run only on the Duplex systems; with four semi-automatic presses they no longer "
"set the pace, so the five presses make about 1.0 to 1.5 million records a year on two shifts "
"(1.25 million in the central case; estimates). The press hall keeps room for more Duplex "
"systems and Classics as an option, not part of the investment."),
"**Three presses at launch:** one Newbilt Duplex system (two semi-automatic presses with a main "
"and a colour extruder, for colour, splatter and short runs) and one Newbilt Classic fully "
"automatic press for long standard runs. Special prints are the focus (60 % and more of the "
"records), and specials run only on the Duplex, so together they make about 0.58 to 0.90 "
"million records a year on two shifts (0.71 to 0.97 million at a standard-heavy mix; "
"estimates). A second Duplex system is a growth step from revenue, with its floor, utility "
"positions and pipe connections reserved, not part of the investment.",
"**The metal path in-house:** a Sillitoe SDMS cutting room, a Pheenix Alpha galvanics line with "
"zero-discharge water treatment, and the Sibert stamper-prep line. The father and the mother of "
"every side are archived, so represses start from our own metal.",
@@ -94,7 +87,8 @@ def blocks():
"each, with " + pick(
"two 500 kg/h boiler modules (B-1, B-2, bought through the Chinese route) and two 250 kW "
"chiller modules (CH-1, CH-2)",
"two 500 kg/h boiler modules (B-1, B-2) and three 250 kW chiller modules (CH-1 to CH-3)")
"two 500 kg/h boiler modules (B-1, B-2, from Thai suppliers) and two 250 kW chiller modules "
"(CH-1, CH-2)")
+ " installed at launch; further presses add modules, not rooms. The steam fuel (electric or "
"biomass) is still open.",
pick("**Cassette duplication and CD-R duplication as a growth step** after launch, not in the "
@@ -109,7 +103,8 @@ def blocks():
+ " and room for a second building.",
"**Commissioned in sequence:** the cutting room and galvanics first (the presses need their "
"stampers), then " + pick("the Duplex system, then the Classic",
"Duplex system 1, then the Classic, then Duplex system 2")
"the Duplex system, then the Classic, with cassette and CD-R "
"duplication alongside")
+ ". That puts galvanics, the hardest skill to "
"hire, on the path to the first paying release. Sibert, the stamper-prep supplier in the plan, "
"advised after the Haarlem trade show to get presses, boilers, operators and feedback loops "
@@ -125,10 +120,14 @@ 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, no cost levers:** owned rooftop solar and battery (and with them the BOI "
"solar measure), the full metrology stack from launch, the visitor corridor and public tours "
"from the start, a bought overhead crane, cassette and CD-R duplication, and Thai-supplied "
"boilers and compressor."),
"**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 "
"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 "
"start; cassette and CD-R duplication; a bought 5 t overhead crane; boilers and compressor "
"from Thai suppliers, with local service. Every press, the cutting room, the galvanics line "
"and the stamper-prep line are the same as in Plan A."),
]),
H2("What makes it top-notch"),
P("Four things separate this plant from a pressing shop, and they are the reason it can charge "
@@ -178,10 +177,10 @@ def blocks():
"~0.58M to 0.90M records/yr at 60 % specials (2 semi-automatic presses + 1 Classic, 2 shifts; "
"the Duplex sets the pace; estimate; the press fleet calculator gives ~0.94M at our planning "
"rates). Second Duplex as a growth step from revenue: ~1.0M to 1.5M",
"~1.0M to 1.5M records/yr at 60 % specials, central case 1.25M (4 semi-automatic presses + 1 "
"Classic, 2 shifts; the four semi-automatic presses carry the specials, so the Duplex does not "
"set the pace; estimate; the press fleet calculator gives ~1.5M at our planning rates). Full "
"hall as a later option: ~2.9M to 4.4M")],
"~0.58M to 0.90M records/yr at 60 % specials, central 0.74M (2 semi-automatic presses + 1 "
"Classic, 2 shifts; the Duplex sets the pace; estimate; the press fleet calculator gives ~0.94M "
"at our planning rates). Second Duplex as a growth step from revenue (section 4.4); full hall "
"as a later option: ~2.9M to 4.4M")],
["Site", "~1,500 m² main building plus a ~379 m² utility yard built for four boiler and four "
"chiller modules, on leased land (~4 rai minimum, 6 to 8 rai with expansion); second "
"building as expansion"],
@@ -191,13 +190,14 @@ 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 224M (~USD 6.79M), rounded to ~225M THB**: the plan investment, ~THB 209.2M (~USD "
"6.34M) at the midpoint with everything in, plus a ramp-up reserve of ~THB 10M to 20M (staff "
"and overheads before volume covers them). From the low to the high end of every block: ~THB "
"162M to 286M. Estimates: no quote yet for the Classic, the galvanics line (priced at OMS's "
"reference plus 20 %), the EX 35 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 "
"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 "
"quote yet for the Classic, the galvanics line (priced at OMS's reference plus 20 %) or the "
"building")],
["Not in the plan price", "**No contingency** (at the 15 % used in the cost documents, ~THB "
+ pick("24M", "31M") + " at the midpoint): quotes that land high are "
+ pick("24M", "29M") + " at the midpoint): quotes that land high are "
"funded outside the plan or by scope steps (section 8). Also not in "
"it: the central hydraulic plant (not yet costed), the archive's mobile "
"shelving (to quote), CD replication, financing costs, currency moves, "
@@ -212,76 +212,75 @@ def blocks():
"presses make 0.58M at that rate. The solar PPA's power price (~USD 0.03M a year in the "
"calculator) is not in these figures. Utilisation and price decide the outcome, not upside "
"(section 9)",
"Central case at 60 % specials: revenue ~USD 6.05M (~THB 200M), EBITDA ~USD 3.14M (~THB "
"104M), operating profit ~USD 2.63M (~THB 87M); break-even on operating profit at ~0.22M "
"records a year. **The adverse case only just covers depreciation:** EBITDA ~USD 0.83M, "
"operating profit ~USD 0.02M. **All of it needs the records to sell:** ~1.25M a year in the "
"central case, ~0.75M of them specials, and no market evidence shows that demand yet. "
"Central case at 60 % specials: revenue ~USD 3.65M (~THB 120M), EBITDA ~USD 1.73M (~THB "
"57M), operating profit ~USD 1.26M (~THB 42M); break-even on operating profit at ~0.23M "
"records a year. **The adverse case loses money:** EBITDA ~USD 0.23M, operating loss ~USD "
"0.52M (~THB 17M); it would need ~1.1M records a year to cover depreciation and the three "
"presses make 0.58M at that rate. Cassette, CD-R and tour revenue are not in these figures. "
"Utilisation and price decide the outcome, not upside (section 9)")],
["Payback", pick(
"~3.1 years on the plan price in the central case (2.2 to 4.0 from the low to the high end of "
"the price); ~1.0 year in the favourable case, ~30 years in the adverse case (EBITDA, mature "
"year, ramp-up reserve included; estimates)",
"~2.2 years on the plan price in the central case (1.6 to 2.8 from the low to the high end of "
"the price); ~0.8 year in the favourable case, ~10.5 years in the adverse case (EBITDA, mature "
"~3.7 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 "
"months from the start of phase 0), but it was drawn for a one-press "
"launch. Commissioning the cutting room and galvanics before the presses "
"is not yet in it, and the lathe, galvanics line and stamper-prep build "
"times are not on file, so the date stays open until those vendors "
"quote." + pick("", " Plan B commissions its second Duplex system last, "
"after the Classic.")
+ " Ordering machinery before the BOI certificate, if allowed, could "
"quote. Ordering machinery before the BOI certificate, if allowed, could "
"still pull it forward by 6 to 9 months (section 10)"],
["People", pick(
"~15 to 25 across shifts at volume (estimate); the launch plant needs most of that "
"crew, because two shifts still need press, finishing, galvanics, QC and maintenance "
"staff (13 to 19 direct production staff in the revenue model)",
"~15 to 25 across shifts at volume (estimate); two shifts need press, finishing, galvanics, QC "
"and maintenance staff whether the plant runs three presses or five, so Plan B's five presses "
"run on the same direct crews (13 to 19 direct production staff in the revenue model) and "
"spread them over more records")],
["People", "~15 to 25 across shifts at volume (estimate); the launch plant needs most of that "
"crew, because two shifts still need press, finishing, galvanics, QC and maintenance "
"staff (13 to 19 direct production staff in the revenue model)"],
["The ask", pick(
"~THB 177M (~USD 5.35M), the ~180M THB plan, released in tranches against milestones "
"(section 8), starting with phase 0 (~THB 1.3M to 2.6M). BOI caps debt-to-equity at 3:1, so "
"at least a quarter is equity: ~THB 44M (arithmetic, before financing costs)",
"~THB 224M (~USD 6.79M), the ~225M THB plan, released in tranches against milestones "
"~THB 209M (~USD 6.33M), 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 56M (arithmetic, before financing costs)")],
"at least a quarter is equity: ~THB 52M (arithmetic, before financing costs)")],
]),
H2("Two versions of this plan"),
P("This plan comes in two versions, built from the same documents and the same machine choices. " + pick(
"This document is **Plan A**. The other version, **Plan B (~225M THB)**, puts the second Duplex "
"system in at launch, for five presses, and takes none of the six levers. ",
"This document is **Plan B**. The other version, **Plan A (~180M THB)**, launches with three "
"presses (one Duplex system and the Classic), takes six cost levers and keeps the second Duplex "
"as a growth step from revenue. ")
+ "Both carry the ramp-up reserve and neither carries a contingency. What decides between them is "
"demand: Plan B's central case needs about 70 % more records sold than Plan A's (1.25 against 0.74 "
"million a year), and the market validation gate (section 3.2) is the evidence for that. Section 8 "
"sets the two side by side."),
"This document is **Plan A**. The other version, **Plan B (~210M THB)**, builds the same three "
"presses and takes none of the six levers. ",
"This document is **Plan B**. The other version, **Plan A (~180M THB)**, builds the same three "
"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 "
"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 "
"its utilities with local service. On the modelled numbers that extra earns nothing (the same "
"EBITDA, more depreciation, a longer payback, a deeper adverse case), so Plan A has the better "
"modelled return and Plan B the more complete plant. Most of Plan B's items can be added to Plan A "
"later from revenue; the BOI solar measure and the corridor are cheaper to have from the start. "
"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 224M (~USD 6.79M); ~162M to 286M from the low to the high end"],
["Presses", "3: one Duplex system (2 semi-automatic) and one Classic",
"5: two Duplex systems (4 semi-automatic) and one Classic"],
["Records a year at 60 % specials", "~0.58M to 0.90M (central 0.74M)",
"~1.0M to 1.5M (central 1.25M)"],
["EBITDA, central case", "~USD 1.73M (~THB 57M)", "~USD 3.14M (~THB 104M)"],
["Operating profit, central case", "~USD 1.34M (~THB 44M)", "~USD 2.63M (~THB 87M)"],
["Payback on the plan price, central case", "~3.1 years (2.2 to 4.0)", "~2.2 years (1.6 to 2.8)"],
"the low to the high end", "~THB 209M (~USD 6.33M); ~150M to 268M 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)"],
["Adverse case", "Loses money: EBITDA ~USD 0.23M, operating loss ~USD 0.39M",
"Just covers depreciation: EBITDA ~USD 0.83M, operating profit ~USD 0.02M"],
["What Plan A gives up, what Plan B needs", "At launch: solar through a PPA (very likely without "
"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",
"~1.25M records sold a year, ~0.75M of them specials, against 0.74M for Plan A; no market "
"evidence of that demand yet"],
"~THB 32M 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,
caption="Estimates: mature year at 60 % specials, from the revenue model; payback counted on the "
"whole plan price including the reserve. Central EBITDA margins of ~47 % (A) and ~52 % (B) "
"are far above the 15 to 25 % pressing plants earn; read the adverse case as the honest one."),
"whole plan price including the reserve. A central EBITDA margin of ~47 % (both plans) is "
"far above the 15 to 25 % pressing plants earn; read the adverse case as the honest one."),
H2("Where we are, and what we ask"),
P("The project is at the planning stage. Industry outreach has run for several years. Alexander and "
"Simona attended **Making Vinyl Europe in Haarlem** (30 September to 2 October 2026): most people "
@@ -308,7 +307,7 @@ def blocks():
"the Newbilt re-quote for the Duplex system (with an EX 35 price) and the Classic, a Pheenix "
"quote for the galvanics line, the building price request with the soil test, metrology "
"distributor quotes and a solar PPA offer.",
"the Newbilt re-quote for both Duplex systems (with an EX 35 price) and the Classic, a Pheenix "
"the Newbilt re-quote for the Duplex system (with an EX 35 price) and the Classic, a Pheenix "
"quote for the galvanics line, the building price request with the soil test, and metrology "
"distributor quotes."),
pick(
@@ -318,17 +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 224M (~USD 6.79M), rounded to ~225M THB**, including the "
"ramp-up reserve and without contingency, released in tranches against milestones: BOI "
"certificate and lease signed, long-lead orders (lathe, galvanics, stamper prep, both Duplex "
"systems and the Classic, 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 162M to 286M; 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 (demand decides "
"first, from market validation; then the Classic, Pheenix and EX 35 quotes, the solar PPA offer "
"and the building quote); 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", "56M of Plan B's ~224M") + " is equity); CD "
"**Then the Plan B round, ~THB 209M (~USD 6.33M), 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 "
"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 "
"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 "
"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 "
@@ -340,10 +340,10 @@ def blocks():
H1("2. How to read the numbers"),
P("**Two versions.** This business plan comes in two versions, built from the same documents: "
"**Plan A (~180M THB)**, the launch plant's three presses with six cost levers, and **Plan B "
"(~225M THB)**, five presses with everything in. Both plan prices include the ramp-up reserve and "
"neither carries a contingency. This document is **" + label() + "**. Chapters that do not depend "
"on the choice read the same in both; where the plans differ, this version gives its own figures, "
"and sections 1 and 8 compare the two."),
"(~210M THB)**, the same three presses with everything in. Both plan prices include the ramp-up "
"reserve and neither carries a contingency. This document is **" + label() + "**. Chapters that "
"do not depend on the choice read the same in both; where the plans differ, this version gives "
"its own figures, and sections 1 and 8 compare the two."),
P("Every figure in this plan carries one of three confidence levels. Where a table does not say, "
"the basis column or caption does."),
T(["Label", "Meaning", "Examples"], [
@@ -394,9 +394,7 @@ def blocks():
"is the gap. It is also the plan's biggest assumption: that enough regional customers will pay for "
"a closer, faster, more accountable plant at a price that works. That pricing power is unproven. "
"The Haarlem trade show produced strong supplier interest but no buyer prices, and the market "
"validation gate exists to test it before capital is committed." + pick(
"", " Plan B makes the assumption heavier: its central case sells ~1.25 million records a year, "
"~0.75 million of them special editions, against 0.74 million for the three-press Plan A.")),
"validation gate exists to test it before capital is committed."),
H2("3.3 What the market shows: two price points"),
P("Two sets of real prices now exist: invoices from the one Thai pressing shop we have seen, and the "
"published calculator of a European plant. Neither is used to re-base the financial model, which "
@@ -420,12 +418,9 @@ def blocks():
P("What the tour showed: the shop operates from a small non-industrial premises; it does not plate "
"(stampers are bought in from abroad and resold); there is no temperature, humidity or particulate "
"control on the pressing floor; and it runs two Newbilt presses, a Classic fully automatic and one "
"semi-automatic, about 190 to 210 records an hour at nameplate. That is a real capital fleet. " + pick(
"Our launch plant's three presses (248 to 288 records an hour at nameplate, planned for two "
"shifts) ",
"Plan B's five presses (four semi-automatic at 60 to 80 records an hour each plus the Classic at "
"~128, 368 to 448 records an hour at nameplate, planned for two shifts) ")
+ "out-press it on paper, which the one-press launch of draft 0.1 did not. Neither figure is "
"semi-automatic, about 190 to 210 records an hour at nameplate. That is a real capital fleet. "
"Our launch plant's three presses (248 to 288 records an hour at nameplate, planned for two "
"shifts) out-press it on paper, which the one-press launch of draft 0.1 did not. Neither figure is "
"measured output: their shifts and order book were not observed."),
H3("A European plant: Record Industry's calculator"),
P("Record Industry (Haarlem, Netherlands) publishes an online calculator. For a 12-inch 140 g black "
@@ -514,15 +509,12 @@ def blocks():
["Stamper preparation machines", "Turns a raw nickel shell into a press-ready part",
"Sibert back-finisher, punch, coiner (USD 250k budget confirmed)", LP + ", with galvanics"],
["A mixed press fleet", "Semi-automatic for colour and short runs, automatic for long runs",
pick("Newbilt Duplex system (2 presses, main + colour extruder) and one Newbilt Classic",
"Two Newbilt Duplex systems (4 presses, each system with main + colour extruder) and one "
"Newbilt Classic"),
pick("Launch plant; second Duplex as growth option",
"At launch, second Duplex system commissioned last; full hall as an option")],
"Newbilt Duplex system (2 presses, main + colour extruder) and one Newbilt Classic",
pick("Launch plant; second Duplex as growth option", "At launch; second Duplex as growth option")],
["Steam, cooling and compressed air engineered locally", "The largest energy loads; efficiency "
"lives here", "Boiler hall and chiller compound for four modules each; " + pick(
"2 x 500 kg/h boilers (Chinese route) and 2 x 250 kW chillers",
"2 x 500 kg/h boilers and 3 x 250 kW chillers") + "; heat recovery designed in",
"2 x 500 kg/h boilers (Thai suppliers) and 2 x 250 kW chillers") + "; heat recovery designed in",
LP + "; modules added with presses"],
["Whole-plant climate and particulate control", "Moisture and dust are the two classic record "
"defects", "20 to 26 °C, 35 to 60% RH, filtration for the burning season, tighter in clean "
@@ -638,7 +630,7 @@ def blocks():
"and ~45 minutes for a stamper (silvering and bench times are estimates). With loading and rinsing, "
"a cell turns a part in about 1 to 1.5 hours, so one PDPU makes 20 to 32 parts in a two-shift day "
"against 8 to 20 parts a working day "
+ pick("even for the larger five-press fleet", "for Plan B's five presses")
+ pick("even for the larger five-press fleet", "even with the second Duplex system added from revenue")
+ ". **One PDPU covers the "
"demand; a second would buy redundancy, not capacity.** By OMS's rule of thumb (one person runs "
"about 20 stampers a day) that is one galvanics operator per shift."),
@@ -684,27 +676,21 @@ def blocks():
"Duplex share mould inserts, so the plant runs one mould family, one set of spares and one service "
"relationship; the cost is a single-vendor dependency."),
T(["Machine", "Role", "Basis", "Cost"], [
[pick("Newbilt Duplex system (Alsdorf, Germany)", "Newbilt Duplex system 1 (Alsdorf, Germany)"),
["Newbilt Duplex system (Alsdorf, Germany)",
"Two HRP 12 hydraulic presses (~150 t), EX 50 main "
"extruder and EX 35 colour extruder, 12-inch book moulds for 140/180 g, trimmer, label dry oven, "
"shrink wrapper, PVC grinder, label punch, spindles and plates; one operator's cell",
"Quoted: EUR 200,500 (~USD 232k) for the Single 2.1 system incl. sea freight, June 2024, plus "
"the quoted second press and extruder (~USD 115k); expired, re-quote required with build time",
"USD 350k to 370k (THB 11.6M to 12.2M)"],
*pick([], [[
"Newbilt Duplex system 2", "Two more HRP 12 presses with an EX 50 main and an EX 35 colour "
"extruder, on the same central hydraulics; commissioned after the Classic",
"Estimate on the 2024 quote: two presses at the quoted ~USD 115k per press and extruder set, "
"plus a hydraulic unit and the EX 35; no EX 35 price on file",
"USD 230k to 300k (THB 7.6M to 9.9M)"]]),
["Newbilt Classic", "Fully automatic press with built-in extruder, automatic patty, label and "
"record handling; 28 s cycle, ~128 records/h at 180 g; Siemens safety PLC with OPC UA; "
"vendor-claimed 95% yield and uptime", "Estimate: placeholder band; **no Newbilt price on "
"file**", "USD 290k to 460k (THB 9.6M to 15.2M)"],
*pick([["Second Duplex system (growth option)", "Two more semi-automatic presses on the same central "
"hydraulics; floor, utility positions and ring-main tees reserved", "Estimate; not in the "
"investment",
"~USD 230k to 300k"]], []),
["Second Duplex system (growth option)", "Two more semi-automatic presses on the same central "
"hydraulics; floor, utility positions and ring-main tees reserved", "Estimate; not in the "
"investment",
"~USD 230k to 300k"],
], widths_mm=[34, 66, 42, 28], font_pt=8.5),
P("The Pheenix Alpha AD12 automatic press left the plan in October 2026 and stays the comparison if "
"the Classic re-quote disappoints."),
@@ -719,12 +705,13 @@ def blocks():
"modules through the Chinese route: ASME-stamped 1.25 MPa units from makers with Thai "
"references, installed by a Thai contractor and verified under the Thai rules for imported "
"boilers (section 5.4). ",
"At Newbilt's per-machine figures the five presses draw about 750 to 900 kg/h of steam "
"at 10 bar / 180 °C and up to ~650 kW of cooling with extruders and hydraulics on a hot "
"afternoon (estimates; the Classic is counted as one press and extruder until Newbilt states "
"its own figures). They are met by **two 500 kg/h boiler modules (B-1, B-2) and three 250 kW "
"chiller modules (CH-1 to CH-3)**, in a boiler hall and an open chiller compound built for four "
"modules each; the fourth positions are reserve and growth. ")
"At Newbilt's per-machine figures the three presses draw about 450 to 540 kg/h of steam "
"at 10 bar / 180 °C and up to ~390 kW of cooling on a hot afternoon (estimates; the Classic is "
"counted as one press and extruder until Newbilt states its own figures). They are met by **two "
"500 kg/h boiler modules (B-1, B-2) and two 250 kW chiller modules (CH-1, CH-2)**, in a boiler "
"hall and an open chiller compound built for four modules each; a second Duplex adds a third "
"chiller module, and the fourth positions are reserve and growth. Plan B buys the boiler "
"modules and the compressor from Thai suppliers, with local service. ")
+ "The presses share one central hydraulic plant and one "
"compressed-air plant through ring mains with a valved tee at every press position, so a new press "
"is connected without stopping the others; the standby pump set, accumulators and ring main are "
@@ -735,34 +722,22 @@ def blocks():
"materials and finished goods. A press weighs 1,350 kg on under one square metre, so the floor slab "
"must carry several tonnes per square metre and is a building-selection criterion; the floor must "
"be flat, non-slip and solvent-resistant."),
T(["Stage", "Fleet", "Rough output per year"], pick([
T(["Stage", "Fleet", "Rough output per year"], [
["Launch plant", "1 Duplex system (2 semi-automatic) + 1 Classic, 2 shifts",
"~0.58 to 0.90 million records at 60 % specials (0.71 to 0.97 at ~20 %)"],
["Growth option: second Duplex", "4 semi-automatic + 1 Classic, 2 shifts; room reserved, not in "
"the investment", "~1.0 to 1.5 million records"],
"the investment",
"~1.0 to 1.5 million records"],
["Full hall (option)", "5 Duplex systems + 4 Classics, the press hall laid out for Duplex "
"(special pressings first, ~73/27 by floor); a utility phase of its own",
"~2.9 to 4.4 million records at 60 % specials (estimate)"],
], [
["Plan B at launch", "2 Duplex systems (4 semi-automatic) + 1 Classic, 2 shifts",
"~1.0 to 1.5 million records at 60 % specials (central case 1.25 million)"],
["Full hall (option)", "5 Duplex systems + 4 Classics, the press hall laid out for Duplex "
"(special pressings first, ~73/27 by floor); a utility phase of its own",
"~2.9 to 4.4 million records at 60 % specials (estimate)"],
]), widths_mm=[40, 80, 50],
caption=pick(
"Basis: semi-automatic 60 to 80 records/h assumed; Classic ~128/h (vendor flyer); 16 h/day, "
"300 days/yr, 60 to 70% overall equipment effectiveness; specials (60 % and more) only on the "
"Duplex. The launch plant is 248 to 288 records/h at nameplate, but at 60 % specials the "
"Duplex caps it at 200 to 267/h, ~120 to 187/h after effectiveness; the press fleet calculator "
"at the team's planning rates gives ~0.94 million. Neither option is in the revenue model "
"or the investment.",
"Basis: semi-automatic 60 to 80 records/h assumed; Classic ~128/h (vendor flyer); 16 h/day, "
"300 days/yr, 60 to 70% overall equipment effectiveness; specials (60 % and more) only on the "
"Duplex systems. The five presses are 368 to 448 records/h at nameplate; the four "
"semi-automatic presses (240 to 320/h) carry the specials, so at 60 % the Duplex does not "
"limit the output; the press fleet calculator at the team's planning rates gives ~1.5 million. "
"The full hall is in neither the revenue model nor the investment.")),
], widths_mm=[40, 80, 50],
caption="Basis: semi-automatic 60 to 80 records/h assumed; Classic ~128/h (vendor flyer); 16 h/day, "
"300 days/yr, 60 to 70% overall equipment effectiveness; specials (60 % and more) only on the "
"Duplex. The launch plant is 248 to 288 records/h at nameplate, but at 60 % specials the "
"Duplex caps it at 200 to 267/h, ~120 to 187/h after effectiveness; the press fleet "
"calculator at the team's planning rates gives ~0.94 million. Neither option is in the "
"revenue model or the investment."),
P("**On the 60 to 70% effectiveness figure.** Newbilt publishes 95% yield and 95% uptime for the "
"Classic. We have not adjusted the plan on that basis, deliberately: a vendor's machine uptime "
"excludes stamper and mould changes, colour changeovers, compound lot changes, first-article QC "