Deploy test site / deploy (push) Successful in 52s
- One build makes both documents: plan_variant.py switches the plan-specific text (pick / is_a / label); build_plan.py writes CNX-Vinyl-Business-Plan-A and -B (docx), export_pdf.py exports both PDFs with the table of contents filled in. Draft 0.2 (single launch-plant plan with contingency) is removed; it stays in the history. - Plan A: the launch plant with every machine and six cost levers, ~177M THB with the ramp-up reserve, no contingency. Plan B: the second Duplex at launch, five presses, ~224M THB on the same basis. Each version reads as a complete plan with one table comparing it with the other; the 216M investor-question text is gone, Pheenix is priced at OMS's reference plus 20 %. - Calculator renders in both documents, each from its own preset: the plant at a glance (Figure 4), the budget check (Figure 5) and ten years of cash (Figure 6), in docs/renders/calculator/. - Calculator budget card: the verdict and third KPI now name the tightest budget the midpoint fits (Plan A: 3.3M to spare under 180M; Plan B: 0.8M under 225M) instead of always 225M. - Fixes: CD replication cross-references point to section 4.10; the blended price in section 3.3 and roadmap item 1 is 3.76 to 5.27 USD at 60 % specials (3.50 to 4.60 at a standard-heavy mix).
975 lines
87 KiB
Python
975 lines
87 KiB
Python
"""Part B: what makes it top-notch (traceability, metrology, QC, efficiency); site and building;
|
||
regulatory (BOI and licences). Draft 0.3, October 2026: one text for both versions, Plan A (~180M
|
||
THB, the launch plant with six cost levers) and Plan B (~225M THB, five presses, everything in); the
|
||
plan-specific passages switch with plan_variant.pick(), called inside blocks()."""
|
||
from plan_lib import H1, H2, H3, P, B, N, T, KV, IMG, CALL, PB
|
||
from plan_variant import pick, is_a, is_b, label, name
|
||
|
||
|
||
def blocks():
|
||
return [
|
||
# ------------------------------------------------- 5 top-notch
|
||
H1("5. What makes it top-notch: traceability, metrology, QC and efficiency"),
|
||
P("A pressing plant makes records. A top-notch plant knows, for every record it has ever made, "
|
||
"exactly how it was made, can prove it to the customer, and wastes as little energy, water and "
|
||
"material as the physics allows. This section is the heart of the plan, because these four "
|
||
"capabilities are what a regional customer cannot buy today and what justifies export-grade "
|
||
"pricing. None of it is exotic: the instruments exist, the data interfaces exist, and the "
|
||
"engineering is well understood. What is unusual is putting all of it in one plant from the "
|
||
"start rather than bolting it on later. The plan makes that possible: with the cutting "
|
||
"room and galvanics in-house from the first release, the whole chain from lacquer to box runs "
|
||
"through our own floor, with no bought-in stamper whose history we cannot see."),
|
||
|
||
H2("5.1 Traceability: every record knows its history"),
|
||
P("Every step of production is logged continuously, so that every record is traceable end to end "
|
||
"for the customer. This is a fixed requirement and the core specification for the plant's "
|
||
"software. The identity of a record is **stamper + press + cycle timestamp + side**, and "
|
||
"everything else hangs off that key."),
|
||
P("**It is also the part of the plan the industry responds to.** At Making Vinyl Europe 2026 in "
|
||
"Haarlem most people the team talked to were strongly interested in full traceability. For "
|
||
"Sibert's representative it was one of the reasons to talk to a newcomer at all: without it he "
|
||
"would have advised strongly against the plan, and seeing buildfor.life's software and data "
|
||
"work told him the project comes from the right direction. That is supplier feedback, not buyer "
|
||
"price validation, which is still open; but it shows where a newcomer's credibility comes from, "
|
||
"and why the data side leads in every supplier and investor conversation."),
|
||
T(["Stage", "What is recorded"], [
|
||
["Audio intake", "File received, checksums, versions, who handled it, approval trail; the files "
|
||
"themselves sit in an encrypted, access-logged client vault"],
|
||
["Mastering", "Session log, engineer, settings, the artist's approvals at the master-plan and "
|
||
"master gates"],
|
||
["Cutting", "Lacquer serial, lathe parameters and the Sillitoe lathe's own session files (cue "
|
||
"sheet, groove export, stylus hours), microscope check, dead-wax scribe"],
|
||
["Galvanics", "Silvering and plating bath IDs, rectifier current and ampere-hours, bath "
|
||
"chemistry, father/mother/stamper genealogy (which stamper came from which mother "
|
||
"from which father); all in-house from launch"],
|
||
["Stamper preparation", "Back-finish, punch and coin as station check-ins (the Sibert machines "
|
||
"have no data interface); the punched centre slug kept as the stamper's "
|
||
"test coupon"],
|
||
["Pressing", "Press, operator, shift, stamper serials, per-cycle temperatures, pressures and "
|
||
"cycle time, PVC compound lot and virgin/regrind mix, label lot"],
|
||
["Quality control", "Optical result for every record, audio score for every sampled record, "
|
||
"test-pressing approval, reject counts and reasons"],
|
||
["Finishing and packaging", "Trimming, sleeving, carton and sleeve lots; every unit's dead-wax "
|
||
"code checked against its jacket barcode"],
|
||
["Fulfilment", "Warehouse location, shipment or dropshipping consignment, carrier tracking per "
|
||
"end customer"],
|
||
["Archive", "Father and mother of every side, with box and shelf position"],
|
||
], widths_mm=[38, 132]),
|
||
H3("How it is built: one system of record, machine data beside it"),
|
||
P("**ERPNext is the plant's only system of record** (decided October 2026). ERPNext is an "
|
||
"open-source ERP with no licence fee. Every record of the business and of production lives in "
|
||
"it: customers, prices, orders and the three artist approval gates, invoices and payments, stock "
|
||
"and compound lots, work orders and job cards, quality inspections, and the serial number of "
|
||
"every lacquer, father, mother and stamper with its parent. What the project builds are tools "
|
||
"and interfaces that read and write ERPNext: station kiosks, the customer portal, the artist "
|
||
"platform, instrument adapters and reports. None of them keeps business records of its own, so "
|
||
"a trace and an invoice always point at the same order."),
|
||
P("**Machine data stays beside it, keyed to it.** What machines produce at machine speed "
|
||
"(per-cycle press rows, the optical result of every record, audio captures, instrument raw files, "
|
||
"1 Hz time series of temperatures, energy and water) is too much for an ERP. It lives in a "
|
||
"machine-data store on the plant's core server, every row carrying the ERPNext job card, batch "
|
||
"and serial number it belongs to; ERPNext receives totals and verdicts per run, lot and shipment. "
|
||
"Rows are written once and never changed (append-only, each event carrying the hash of the one "
|
||
"before), and corrections are new entries that reference the old, so the record a customer sees "
|
||
"can be trusted."),
|
||
P("**It runs on a fleet B4L already operates.** Every plant server is a NixOS machine declared in "
|
||
"B4L's existing fleet repository (its clan), so a failed machine is rebuilt from the repository "
|
||
"instead of by hand, and the plant reuses the fleet's mesh network, DNS, monitoring and backups "
|
||
"instead of building them again. The factory application (cnx-factory, its own repository) uses "
|
||
"the Rust web stack B4L already runs for its other tools. Vendor instrument PCs stay appliances "
|
||
"that export into this estate and host nothing of ours. The plant runs without the internet: a "
|
||
"WAN outage stops only the customer portal, off-site backup and remote support, which catch up "
|
||
"when it returns."),
|
||
P("**Machine data access is a purchasing condition.** Every equipment RFQ carries a data clause: "
|
||
"for the presses, OPC UA (or Siemens S7) read access licensed and enabled, the full tag list "
|
||
"with the cycle counter as a tag, and no vendor cloud agent as a warranty condition; for the "
|
||
"boilers, chillers and compressor, Modbus with the register map delivered; for the air "
|
||
"conditioning, BACnet or Modbus read access to the building management system. The question is "
|
||
"free before a purchase order and expensive after it."),
|
||
B([
|
||
"**Log at the source.** Machine data comes from the machine, never from transcription; manual "
|
||
"steps get a badge tap and a scan at a station kiosk, not paperwork.",
|
||
"**Counters, not clocks.** Every press cycle carries the press's own cycle counter and every "
|
||
"measurement the serial of the part it was read from; wall-clock time is recorded, but two "
|
||
"systems are never joined on it.",
|
||
"**Environment attached.** Temperature, humidity and particulates of every zone are logged on "
|
||
"the same timeline, and each press cycle carries a snapshot of them.",
|
||
"**Operators see it first.** Every live value is shown at the station where it can change the "
|
||
"next cycle before it becomes a report. Sibert's advice after Haarlem was exactly this: "
|
||
"feedback loops the staff use to improve production decide whether a plant succeeds.",
|
||
"**Kept as long as it matters.** Logs for the life of the customer relationship; genealogy for "
|
||
"as long as the archive holds the metal.",
|
||
]),
|
||
P("**Identity travels with the product.** The matrix code scribed into the lacquer's dead wax "
|
||
"propagates through father, mother and stamper to every pressed record. A small angular fiducial "
|
||
"scribed beside it makes each part's rotation camera-readable at any stage, and lets the packing "
|
||
"station read the code on a finished record and match it to the jacket barcode. Nickel parts "
|
||
"additionally get a laser-marked serial on the back, as the optical-disc industry marked its "
|
||
"stampers; lacquers are never lasered (nitrocellulose is flammable) and records are never lasered "
|
||
"(burning PVC releases hydrochloric acid)."),
|
||
P("**The metal archive.** Decided in October 2026: the father **and** the mother of every side are "
|
||
"archived. As a rule of thumb a mother yields about ten stamper sets and a father five to ten "
|
||
"mothers, so a worn mother is regrown from the father without recutting the lacquer, and a "
|
||
"repress years later starts from metal the plant already holds. The archive room gets mobile "
|
||
"shelving (section 6.2); every box and shelf position has an address, and each part's serial "
|
||
"number in ERPNext carries its location, so a repress order says which box to pull."),
|
||
CALL("Why this is a product feature, not an internal file", [
|
||
"**Customers see their order.** A per-order portal reads the customer's own records and machine "
|
||
"data, without exposing anyone else's: progress through the three gates, copies pressed so far, "
|
||
"the compound lot's lab certificate, the listening checks. The investor demo shows the per-copy "
|
||
"version, a 'record passport' reached from the code on the sleeve (IDs simulated). Labels ask "
|
||
"about pre-release security and provenance before they send masters; this answers both.",
|
||
"**A complaint resolves backwards.** One noisy record resolves to its stamper, press, cycle, "
|
||
"operator, compound lot and packaging lot, and from the stamper back through mother and father "
|
||
"to the lacquer and the approved master. Root cause takes minutes, not a week of guessing.",
|
||
"**Stampers retire on data.** Audio scores trending down against a stamper's play count become "
|
||
"an automatic retirement signal instead of a customer complaint.",
|
||
"**Represses start from the shelf.** The archive location of every father and mother sits on its "
|
||
"serial number, so a repress is a regrow, not a recut.",
|
||
]),
|
||
P("**Cost and build.** The factory software is estimated at USD 60k to 170k, the ERPNext "
|
||
"implementation (configuration with Thai tax through Ecosoft's Thai localisation, the "
|
||
"integration, packaging for NixOS) at USD 15k to 50k, and the artist platform's public side at "
|
||
"USD 40k to 90k: the 115k to 310k software block in section 8 (estimates). No vendor sells a "
|
||
"turnkey version; it is a development project. Version 1 (intake, gates, genealogy, press runs "
|
||
"and cycles, the compound lot gate, packaging scan, shipments) goes live during commissioning, "
|
||
"and the network, servers and edge collectors go in before the machinery arrives, so vendor "
|
||
"engineers plug into a finished network and the first test pressings are already in the system. "
|
||
"Running it needs one automation and IT engineer from the build onward. Open design work: whether "
|
||
"the semi-automatic HRP 12 presses expose PLC data or need the priced sensor fallback (asked in "
|
||
"the Newbilt re-quote); how a press hands its cycle counter to the vision system; reading the "
|
||
"scribed dead-wax code with a camera on black and coloured vinyl (tested with samples first); "
|
||
"retention and PDPA handling for operator-linked records; Thai payroll and BOI raw-material "
|
||
"reporting in ERPNext."),
|
||
|
||
H2("5.2 Metrology: measuring the metal before it presses a single record"),
|
||
P("A stamper is a 0.2 to 0.3 mm nickel disc carrying a spiral ridge 40 to 80 microns wide and about "
|
||
"28 microns high, 200 to 350 turns per inch. Industry practice, even at respected stamper houses, "
|
||
"is to check its thickness with a hand micrometer at ten points on sacrificial blanks, with "
|
||
"nothing logged. A top-notch plant measures the metal without contact, per serial, and makes an "
|
||
"accept or reject decision on data before the next plating generation or the press mounting."),
|
||
T(["Instrument", "What it measures", "How it is used", "When"], [
|
||
["XRF thickness gauge (Fischer or Bowman class)", "Nickel deposit thickness, non-destructive",
|
||
"Per serial, read on the outer land zones; replaces the ten-point micrometer. Target total "
|
||
"thickness variation 10 to 20 microns", "At launch"],
|
||
["Inline machine vision", "Cosmetic defects", "100% of parts, fast", "At launch"],
|
||
["3D laser confocal microscope (Keyence VK-X class)", "Groove cross-section, wall roughness, "
|
||
"micro-defects; 20 nm vertical, ~120 nm lateral resolution, non-contact", "Sampled radial "
|
||
"zones (lead-in, outer, mid, inner) on fathers, mothers and stampers; the full spiral is not "
|
||
"feasible and not needed. The optical-disc industry verified its nickel stampers with this "
|
||
"instrument class", pick("From revenue", "At launch")],
|
||
["Wide-area optical profiler (Keyence VR-6000 class)", "Form, flatness, gross defects; 0.1 "
|
||
"micron height resolution, ~1 s per field, HDR mode for mirror-bright nickel",
|
||
"Fast whole-part mapping", pick("From revenue", "At launch")],
|
||
["Stylus profilometer", "Traceable reference", "Calibrates the optical instruments",
|
||
"With the optical instruments"],
|
||
], widths_mm=[38, 46, 56, 30], font_pt=8.5),
|
||
P("**Hardness comes free with the punch.** The Sibert punch leaves one centre slug per stamper. "
|
||
"Marked with the part serial, it is a per-stamper coupon for hardness and thickness, logged "
|
||
"against the plating bath, as the optical-disc industry measured stamper hardness on the punched "
|
||
"centre rather than on the part. A fresh nickel bath plates soft at first, which changes how "
|
||
"stampers punch and finish, so this is the cheapest bath check the plant has. The structure of "
|
||
"that industry's stamper specification (thickness, flatness, hardness, back roughness, centre "
|
||
"hole, eccentricity, burr, visual defects) is the model for the acceptance specification this "
|
||
"plant still has to write."),
|
||
P("Integration is real but not turnkey: the instruments export CSV and raw 3D data and support "
|
||
"scripting, but there is no off-the-shelf connector to a factory system. A small watcher at the "
|
||
"metrology bench stamps each result with the part serial scanned from its back, writes the "
|
||
"verdict to the part's quality inspection in ERPNext and the raw file to the machine-data store."),
|
||
CALL(f"Metrology in {name()}: " + pick("the launch tier", "the full stack at launch"), pick([
|
||
"**At launch: XRF, inline vision and the audio station**, USD 170k to 460k (5.6M to 15.2M THB, "
|
||
"estimate, section 8). Every father, mother and stamper still gets its nickel thickness "
|
||
"measured per serial by XRF and its surface screened by vision, and every record is still "
|
||
"inspected optically on the three presses, logged per cycle and sampled by the audio station "
|
||
"(section 5.3).",
|
||
"**From revenue: the laser confocal and the wide-area profiler**, USD 180k to 350k (estimate). "
|
||
"Buying them later takes ~8.8M THB out of the capital round at the midpoint, one of the six "
|
||
"levers that bring the plan to ~180M THB. Until they arrive, groove geometry and form on the "
|
||
"metal are judged indirectly, through the test pressing and the audio station, as most plants "
|
||
"do today.",
|
||
"The data path is the same from the first day, so the later instruments plug in without "
|
||
"rework. Distributor quotes for the metrology stack are one of the four requests that settle "
|
||
"the budget.",
|
||
], [
|
||
"**At launch: the full stack.** The metrology and QC block is USD 350k to 810k (11.6M to 26.7M "
|
||
"THB, estimate, section 8): XRF, laser confocal, wide-area profiler, inline vision on the presses "
|
||
"and the audio station. Every father, mother and stamper is measured before the next plating "
|
||
"generation or the press. The block was priced with inline vision on three presses, so the "
|
||
"cameras for the second Duplex system are to quote.",
|
||
"**If quotes land high,** the laser confocal and the wide-area profiler (USD 180k to 350k, "
|
||
"estimate) are the part that can wait and be bought from revenue: thickness and cosmetics "
|
||
"would still be measured on every part, and groove geometry judged through the test pressing "
|
||
"and the audio station meanwhile, as most plants do today.",
|
||
"Either way the data path is the same, so later instruments plug in without rework. "
|
||
"Distributor quotes for the metrology stack are one of the four requests that settle the "
|
||
"budget.",
|
||
])),
|
||
|
||
H2("5.3 Quality control: three layers for every record, one gate for every material"),
|
||
P("Full automated audio checking of every record is physically impossible: a 12-inch record plays "
|
||
"for about 40 minutes and a press makes a new one every 25 to 30 seconds, so one press outruns "
|
||
"roughly 80 to 95 full-time listening stations. No playback-QC robot exists anywhere. The credible "
|
||
"maximum-automation design is layered, and it is described to customers exactly as it is: 100% "
|
||
"optical plus per-cycle telemetry plus sampled audio, with human ears approving every test "
|
||
"pressing."),
|
||
T(["Layer", "What", "Catches", "Status"], [
|
||
["1. 100% inline optical inspection", "Darkfield line-scan cameras at the press unloader "
|
||
"inspect every record at line speed", "Non-fill (dull patches where PVC did not fill the "
|
||
"stamper), stitching and flow lines, warp, off-centre spindle holes, surface debris, wrong or "
|
||
"off-centre labels. Non-fill and stitching correlate with audible defects, so this is a strong "
|
||
"proxy for audio quality", "Custom integration of general machine vision (Keyence or Cognex "
|
||
"class) on all " + pick("three", "five") + " presses; no vinyl-specific "
|
||
"product exists"],
|
||
["2. Press telemetry, every cycle", "Mould temperatures, pressures, cycle time, extruder values, "
|
||
"yields and drift alerts from the press PLC", "Process drift before it becomes a defect; the "
|
||
"record-level context for every other check", "Proven in the industry (Viryl's ADAPT model). "
|
||
"The Classic's Siemens PLC offers OPC UA (vendor "
|
||
"statement); for the HRP 12 the re-quote asks, "
|
||
"with a sensor fallback priced"],
|
||
["3. Automated audio comparison, sampled", "Needle-drop capture with automated analysis: "
|
||
"spectral-envelope comparison against the source master, click and pop counting, noise floor "
|
||
"from lead-in silence, channel balance; score and pass/fail to the record", "Wrong master cut "
|
||
"into good-looking grooves, EQ and mastering errors, speed and pitch problems; what no camera "
|
||
"can see", "Buildable from proven parts (Stamper Discs' Fonograph approach, iZotope-class "
|
||
"algorithms); first of its kind as a whole; " + pick("in the launch tier",
|
||
"at launch")],
|
||
], widths_mm=[30, 46, 54, 40], font_pt=8.5),
|
||
P("**Sampling rule for layer 3:** every test pressing and first-off per stamper, plus pulled "
|
||
"samples densifying as the stamper ages (a stamper lasts roughly 1,000 to 2,000 records; the "
|
||
"industry rule of thumb is a spot-play around every 50th)."),
|
||
H3("The materials lab"),
|
||
P("Every incoming compound lot passes a gate before it reaches a press, and its lot ID follows every "
|
||
"record pressed from it. Per lot, in-house from day one, on benchtop instruments with data "
|
||
"export: certificate of analysis against the agreed specification, moisture (the most common "
|
||
"cause of noisy surfaces), heat stability (PVC degradation releases hydrochloric acid and shows "
|
||
"as discoloration and noise), density, colour and gloss, granulate size and dust, specks on "
|
||
"pressed test plaques. In a climate of 60 to 90% ambient humidity a moisture result is only "
|
||
"comparable if the sample is taken sealed and conditioned the same way every time, so sample "
|
||
"conditioning is part of the method. New lots, and especially new suppliers, are released only by "
|
||
"a test pressing on a production press. This day-one tier is estimated at USD 55k to 150k and is "
|
||
"in the launch investment. The mature tier (torque rheometry, DSC, FTIR, ~USD 120k to 240k) is "
|
||
"deferred: Payap University's Faculty of Pharmacy and Chiang Mai University's science faculties "
|
||
"are the places to ask for contract testing in between (which instruments they hold is "
|
||
"unconfirmed). Supplier qualification uses an external lab for K-value, stabiliser "
|
||
"identification (legacy lead rejected) and heavy metals for export. The in-house regrind stream "
|
||
"has its own contamination gate. This protocol is how Thai and regional compounds are qualified "
|
||
"against the European references."),
|
||
H3("Packaging QC"),
|
||
P("Incoming cartons and sleeves are checked per delivery: dimensions (records must fit without "
|
||
"force; spine width per title), board grammage, print quality against the customer-approved "
|
||
"proof (spectrophotometer Delta E for colour-critical jobs), lamination and seam strength, inner "
|
||
"sleeve scuff risk. At assembly a camera reads the scribed dead-wax code (a handheld scanner "
|
||
"cannot read it reliably on black vinyl) and checks it against the jacket barcode, so a record "
|
||
"in the wrong jacket is caught systematically rather than being unlikely, and every unit's "
|
||
"barcode is verified. Results go back to Ploy Printing per packaging lot."),
|
||
|
||
H2("5.4 Efficiency: recover before you generate"),
|
||
P("The pressing machinery is a modest electrical load: 32 kVA connected for a full Duplex line. The "
|
||
"real demand sits in the utilities around it. " + pick(
|
||
"At launch the three presses need 450 to 540 kg/h of saturated steam at 10 bar / 180 °C and "
|
||
"~391.5 kW of cooling at a hot-afternoon peak; the utility backbone is built for the "
|
||
"five-press fleet (750 to 900 kg/h of steam, up to ~650 kW of cooling). ",
|
||
"At launch the five presses need 750 to 900 kg/h of saturated steam at 10 bar / 180 °C and "
|
||
"~652.5 kW of cooling at a hot-afternoon peak, on a utility backbone with rooms for four "
|
||
"boiler and four chiller modules. ") +
|
||
"On top comes whole-plant air conditioning in a tropical climate. Newbilt excludes "
|
||
"steam and cooling from its scope, so these systems are ours to design, and the design rests on "
|
||
"one observation: the steam's job is to heat the moulds and the cooling water's job is to remove "
|
||
"that same heat again. Roughly 98% of the press cooling load is heat the steam put into the "
|
||
"moulds, and the press cooling return leaves at about 60 °C. That warm return, the condensate and "
|
||
"a fired boiler's flue gas are heat the plant reuses before it generates anything new."),
|
||
H3("Utilities: backbone once, modules with the presses"),
|
||
P("Everything that is cheap to oversize now and costly to change in a running plant is built once, "
|
||
"for the five-press fleet: the boiler hall and the chiller compound with room for four modules "
|
||
"each, the steam main and condensate return, the cooling mains, the heat-exchanger frame and "
|
||
"tanks, and hydraulic and compressed-air ring mains with a valved, capped tee at every press "
|
||
"position. The machines that make steam and cold water come in identical modules: " + pick(
|
||
"at launch two 500 kg/h boilers (B-1, B-2) for the 450 to 540 kg/h peak and two 250 kW "
|
||
"air-cooled chillers rated at 40 °C ambient (CH-1, CH-2) for ~391.5 kW, sequenced lead and "
|
||
"lag by one controller. Either boiler alone carries 93 to 111% of the steam demand; one "
|
||
"chiller out leaves ~64% of the cooling peak. The boiler bodies come through the Chinese "
|
||
"route and the compressor from a Chinese brand's Thai office (below). ",
|
||
"at launch two 500 kg/h boilers (B-1, B-2) for the 750 to 900 kg/h peak and three 250 kW "
|
||
"air-cooled chillers rated at 40 °C ambient (CH-1 to CH-3) for ~652.5 kW, sequenced lead "
|
||
"and lag by one controller; the boilers and the compressor come from Thai suppliers "
|
||
"(below). Five presses on two boilers leave no spare: a third module (B-3) is an RFQ option "
|
||
"outside the plan price, and without it a boiler fault costs about two presses until it is "
|
||
"fixed; one chiller out leaves ~77% of the cooling peak. ") +
|
||
"Identical modules mean one set of spares "
|
||
"and one service routine, N+1 later is one more module rather than a redesign, and the plant "
|
||
"never runs one oversized boiler at poor part load. Four boilers carry about eight presses with "
|
||
"one in reserve; four 250 kW chillers carry the five-press fleet with the fourth in reserve, and "
|
||
"pads for the next chiller frame up (about 350 kW, estimate) are a priced option in the chiller "
|
||
"RFQ. The central hydraulic plant around the Newbilt aggregates (standby pump set, accumulator "
|
||
"station, ring main) is not costed yet; a Thai hydraulic power unit builder quotes it."),
|
||
T(["Measure", "What it does", "Effect"], [
|
||
["1. Flue-gas economizer (fired boilers)", "Recovers stack heat into the boiler feedwater; the "
|
||
"first measure to investigate on a biomass or LPG bank (an electric boiler has no flue gas)",
|
||
"Outlet and stack temperatures are vendor figures; rice-husk ash is abrasive, so the RFQ asks "
|
||
"for cleaning, wear protection and a bypass"],
|
||
["2. Condensate return", "As much clean, hot condensate back to the feed tank as possible",
|
||
"Less water, treatment and fuel. Steam and cooling water share the mould channels, so the "
|
||
"condensate is only as clean as the cooling loop: a conductivity sensor diverts off-spec "
|
||
"condensate"],
|
||
["3. Feedwater heat pump, if it pays", "Lifts the ~60 °C press return into feedwater at 90 to "
|
||
"95 °C, cutting the boiler's work and the chiller's load at once", "With condensate return, "
|
||
"roughly 10 to 15% of steam energy. With most condensate returned the remaining feed-tank load "
|
||
"is small, so it may not pay; the press return profile Newbilt is asked for decides"],
|
||
["Waste heat for low-grade loads", "The label dry oven and the air conditioning's "
|
||
"dehumidification reheat run on recovered press heat", "Displaces fresh electricity in two "
|
||
"continuous loads"],
|
||
["Steam accumulator", "Presses draw steam in bursts; an accumulator (a Newbilt option) lets the "
|
||
"boilers ride the peaks", "Steadier firing; whether a modular bank needs it is a re-quote "
|
||
"question"],
|
||
["Closed loop, air-cooled chillers", "The press returns drain open into a vented warm tank and "
|
||
"go back through a plate heat exchanger to the chillers; no open 'dirty water' loop as in the "
|
||
"reference schematic, and no cooling tower", "No process water discharged; the largest water "
|
||
"draw of the earlier water-cooled concept (tower "
|
||
"evaporation) is gone"],
|
||
["Regrind loop", "In-house grinder returns trimmings and rejects to the extruder at 20% of "
|
||
"the feed", "Scrap is feedstock, not landfill; ~20% less virgin compound"],
|
||
], widths_mm=[38, 66, 66], font_pt=8.5),
|
||
P("Three things were checked and ruled out. Heat pumps cannot make the final 10 bar / 180 °C steam "
|
||
"(commercial units top out around 120 to 165 °C, and core utility reliability is the wrong place "
|
||
"to pioneer). Ground-source heat exchange does not work in Thailand (the ground sits at 28 to "
|
||
"30 °C, too cold for process heat and warmer than the cooling loop wants). Solar-thermal "
|
||
"feedwater preheat only reaches the 60 to 90 °C the heat recovery already gives for free, "
|
||
"concentrating collectors need strong direct sun that northern haze does not give, and the roof "
|
||
"earns more as PV. The boiler only does the final lift, from already-hot feedwater."),
|
||
H3("The grid tariff, and what it decides"),
|
||
P("The plant is on PEA's time-of-use tariff 3.2.2 (medium general service at 22 kV; the flat rate "
|
||
"is closed to new customers), never a flat kWh price: a demand charge of 132.93 THB per kW of the "
|
||
"highest 15-minute demand in peak hours, 4.1839 THB/kWh in the peak window (09:00 to 22:00 on "
|
||
"weekdays) and 2.6037 THB/kWh off-peak, plus the Ft fuel adjustment (+0.1623 THB/kWh for "
|
||
"September to December 2026; it resets every four months) and reclaimable VAT. Two shifts put "
|
||
"about two thirds of process energy into peak hours: a blended ~3.81 THB/kWh before the demand "
|
||
"charge. " + pick("For the five-press fleet the backbone is built for", "For the five presses") +
|
||
", without electric steam, that is "
|
||
"roughly 4.5M to 6.8M THB a year before solar, 0.7M to 1.1M of it demand charge (estimates), on "
|
||
"an 800 to 1,000 kVA connection. Three design consequences:"),
|
||
B([
|
||
"**Biomass heat is far cheaper than electric steam** (below): the demand charge follows the "
|
||
"boiler's full-power draw, and the peak window covers 13 of the 16 production hours.",
|
||
"**The roof gets PV, not solar thermal.** Self-consumed PV is worth ~3.7 THB/kWh" + pick(
|
||
" of grid power displaced, less the PPA price the plant pays for it (below)", "") +
|
||
"; it cannot lower the demand charge, because the peak window runs to 22:00, long after "
|
||
"sunset.",
|
||
"**The battery is for ride-through, not peak shaving.** Charging off-peak and discharging at "
|
||
"peak earns ~70k THB a year for the 271 kWh stack, and it can hold demand down by only ~20 kW "
|
||
"(~30k THB a year; estimates). Its case is riding through grid dips and outages.",
|
||
]),
|
||
H3("Renewable energy"),
|
||
KV([
|
||
["Rooftop PV", "~247 kWp on the 1,523 m² monopitch roof (425 modules of a generic 580 W "
|
||
"placeholder; no module chosen yet), ~335 to 360 MWh a year, ~25 to 35% of mature "
|
||
"two-shift use (1,000 to 1,500 MWh). " + pick(
|
||
"Taken through a solar PPA (below): the plant pays the PPA price for this "
|
||
"power instead of buying the array, so its saving is the gap between that "
|
||
"price and the ~3.7 THB/kWh of grid power it displaces",
|
||
"Saves ~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)")],
|
||
["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 "
|
||
"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"],
|
||
["Roof design", "Monopitch at 10° falling toward ESE puts the whole roof on one plane at ~98% "
|
||
"of ideal yield; at this latitude orientation barely matters (under 2% across a "
|
||
"wide azimuth swing). 10° rather than shallower so the rains self-clean "
|
||
"burning-season dust"],
|
||
["Open checks", "Battery rack voltage against the chosen Deye model's window; Gobel safety "
|
||
"certifications (not published); EPC warranty on a mixed-vendor DC bus; yield "
|
||
"against PVGIS before committing" + pick("; the PPA offer itself, price and "
|
||
"terms", "")],
|
||
pick(["Solar PPA (this plan)", "An installer owns and finances the PV and the battery, and the "
|
||
"plant buys the power at a price still to quote (the 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 "
|
||
"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), "
|
||
"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 "
|
||
"very likely gives up that measure"]),
|
||
]),
|
||
H3("Steam: the open engineering choice"),
|
||
P("The boilers' fuel is still open; the modular bank works with either. There is no natural gas "
|
||
"pipeline in Northern Thailand, so gas means a bulk LPG tank on site with hazardous-storage "
|
||
"separation and licensing, and diesel means a fuel tank with price exposure. The two routes "
|
||
"without a fossil tank, compared for the same heat (~1,120 to 1,280 MWh a year at about 1.0 "
|
||
"million records, " + pick("the top of the plant's range", "the low end of the five presses' "
|
||
"range") + "; estimates):"),
|
||
T(["", "Electric boiler bank (~98%)", "Biomass boiler bank (~80%)"], [
|
||
["Price of heat", "~3.9 THB/kWh, plus the demand charge", "~0.5 to 0.9 THB/kWh at 1.35 to 2 "
|
||
"THB/kg delivered (reported market prices, October 2026; no supplier quote yet)"],
|
||
["Running cost, mature two shifts", "~5.2M to 6.0M THB a year, including 0.8M to 1.0M of extra "
|
||
"demand charge for the five-press bank", "~0.6M to 1.2M THB a year of fuel, plus handling "
|
||
"and ash"],
|
||
["Boiler package, 2 × 500 kg/h", pick("~2.8M to 5.5M THB through the Chinese route, the "
|
||
"plan's price (4.5M to 7M from Thai suppliers)",
|
||
"4.5M to 7M THB (Thai suppliers); the plan's price"),
|
||
"~6M to 10M THB, plus the fuel store"],
|
||
["Grid", "Peak ~950 to 1,330 kW: PEA Schedule 4, 1,250 to 1,600 kVA", "Unchanged, ~800 to "
|
||
"1,000 kVA"],
|
||
["Also", "Cleanest permitting, no fuel logistics, no stack", "Fuel contracts, a dry store sized "
|
||
"for the monsoon, ash handling, a 14 m stack and its emissions"],
|
||
], widths_mm=[36, 64, 70], font_pt=8.5),
|
||
P("**Reading it.** The electric boiler is the more efficient machine; biomass is by far the cheaper "
|
||
"heat. At maturity the fuel saving of ~4.0M to 5.4M THB a year repays the biomass premium in "
|
||
"under a year (estimate), so the earlier staged path (start electric, add biomass later) is a "
|
||
"permitting and fuel-logistics choice, not a cost one: every year on electric steam costs roughly "
|
||
"1.4M to 5.4M THB more. The site can decide it too: next to the pharmaceutical facility on Payap "
|
||
"land a biomass stack would be a hard sell, which favours electric or LPG there (section 6.1)."),
|
||
P("**Fuel.** A biomass bank burns roughly 350 to 400 tonnes of air-dry wood a year at about 1.0 "
|
||
"million records (~540 to 620 t as fresh chips, which is what the store and the monsoon stock are "
|
||
"sized for)" + pick("", ", up to ~550 t air-dry at 1.5 million (fuel follows records pressed, "
|
||
"not presses)") +
|
||
". Lamphun alone produces more than 900,000 t of farm residues a year (Maejo "
|
||
"University), so supply is not the constraint; price is. Reported prices follow diesel, so the "
|
||
"fuel contract gets a diesel clause and sources within ~50 km. The local price-setter is Ratch "
|
||
"Pathana's biomass buying centre at Pa Sak, Mueang Lamphun, which feeds a 9.6 MW cogeneration "
|
||
"plant and competes for the same fuel. The team's own 60 rai of forestry-classified land could "
|
||
"supply 80 to 135 t a year as short-rotation coppice once its title is checked; at market prices "
|
||
"that is worth only ~0.1M to 0.25M THB a year, so its value is supply security and the story "
|
||
"('records pressed with steam from our own trees'), not the fuel bill. Next step: written quotes "
|
||
"from Pa Sak and two or three chip suppliers, priced by moisture, before the boiler decision."),
|
||
P("**Where the boilers come from.** " + pick(
|
||
"The plan buys the two modules through the Chinese route: boiler bodies from a Chinese maker "
|
||
"with Thai references (ZOZEN, Sitong, Fangkuai, Taiguo), installed with the feed tank, pumps, "
|
||
"header, controls and piping by a Thai boiler contractor, for roughly 2.8M to 5.5M THB "
|
||
"installed against 4.5M to 7M from Thai suppliers, about 1.6M THB less at the midpoint. The "
|
||
"compressor is a Chinese brand bought through its Thai office (Kaishan and Denair have one), "
|
||
"so service stays local; with it the route saves ~1.9M THB at the midpoint (estimates from "
|
||
"listings, not quotes). ",
|
||
"The plan buys the two modules and the compressor from Thai suppliers (4.5M to 7M THB "
|
||
"installed for the boilers). Chinese makers with Thai references (ZOZEN, Sitong, Fangkuai, "
|
||
"Taiguo) could supply the boilers for roughly 2.8M to 5.5M THB installed, about 1.6M THB "
|
||
"less at the midpoint, and with a Chinese compressor brand bought through its Thai office "
|
||
"~1.9M less (estimates from listings, not quotes): a step if quotes land high. ") +
|
||
"The specification is a 1.25 MPa design to ASME Section I with the S stamp; most Chinese packaged "
|
||
"electric units are rated 0.4 to 0.8 MPa and cannot deliver 10 bar. An imported boiler must meet "
|
||
"TIS, ASME, JIS, EN or an equivalent standard and be verified by a certification body registered "
|
||
"with the Department of Industrial Works (DIW), engaged before the order (section 7). No mainland "
|
||
"maker has a verified Thai service partner, so a Thai boiler contractor and the certification "
|
||
"body are the service layer either way. Chillers and air conditioning, the larger blocks, have "
|
||
"not been checked for a Chinese route yet."),
|
||
H3("Water"),
|
||
P("Water arriving is still open: no source is confirmed for the candidate site (PWA mains, a "
|
||
"licensed deep well, or both), and a water analysis comes before the boiler and chiller RFQs "
|
||
"because it decides softener or RO. The earlier demand estimate of ~15 m³ a day (~20 with "
|
||
"margin) was over half cooling-tower evaporation and blowdown; the air-cooled chiller bank has "
|
||
"no tower, so that figure is now on the safe side until the water balance is redone with the "
|
||
"site. Storage is a dedicated ~200 m³ fire reserve plus a ~50 m³ raw-water tank. **No process "
|
||
"water is discharged:** cooling is a closed loop, condensate is returned, galvanics rinse water "
|
||
"goes through a zero-discharge evaporator with metal recovery and the DI water plant (USD 97k to "
|
||
"258k, in the launch investment) in a water-treatment building of its own next to galvanics, "
|
||
"the stamper back-finisher's spent water and filters take the same route, the workshop has no "
|
||
"floor drain, and solvents leave as controlled waste. This is a fixed design requirement, not an "
|
||
"aspiration to be traded away during engineering."),
|
||
H3("Climate control as a product"),
|
||
P("The whole plant runs under continuous control: 20 to 26 °C, 35 to 60% relative humidity, and "
|
||
"particulate filtration (F7 to F9 general, HEPA with positive pressure in the cutting room and "
|
||
"galvanics clean room), with sensors logging in every zone. Moisture in PVC compound causes "
|
||
"bubbles, non-fill and surface defects and drives cooling rate, hence flatness and warp; airborne "
|
||
"particulate embeds in the record surface and is the classic source of clicks and pops. Northern "
|
||
"Thailand's burning season (February to April) brings some of the world's worst PM2.5 episodes, "
|
||
"so a plant without filtration would press different records in March than in September. This "
|
||
"is the plant's largest utility line (THB 7.5M to 15M for ~1,500 m², plus THB 1.2M to 3.4M for "
|
||
"the two clean zones, estimates) and it is treated as part of the product, not as overhead. The "
|
||
"35% humidity floor is aggressive for the tropics and drives desiccant cost; if 45% proves "
|
||
"acceptable the cost drops materially, and that question is on the RFQ list."),
|
||
CALL("Efficiency in one paragraph, for the investor", "Steam and cooling are built once as a "
|
||
"backbone and filled with identical modules as presses arrive; heat is recovered from the "
|
||
"flue gas, the condensate and the press returns before more is generated; the roof carries PV "
|
||
"worth a quarter to a third of mature electricity use" + pick(" (through a solar PPA)", "") +
|
||
", with a battery for ride-through; no "
|
||
"process water is discharged; a fifth of the plastic is reclaimed; and biomass steam, if "
|
||
"chosen, costs a quarter to a tenth of electric steam. The same choices push the energy line "
|
||
"toward its low end, hedge Thai tariff rises, and convert into BOI tax value" + pick(
|
||
" through the Smart and Sustainable Industry measure", "") + " (section 7). They "
|
||
"also make the plant's sustainability story true rather than claimed, which matters to the "
|
||
"labels it sells to."),
|
||
|
||
# -------------------------------------------- 6 site and building
|
||
H1("6. Site and building"),
|
||
H2("6.1 Land: a long lease, three candidates"),
|
||
P("The site strategy is a **long-term lease of raw land**, on which the purpose-built plant is "
|
||
"constructed. Compared with buying 6 to 8 rai this keeps ~12M to 32M THB (~0.36M to 0.97M USD, "
|
||
"at the 2 to 4 million THB per rai the plan carried for a purchase) out of the capital round, "
|
||
"removes land from the balance sheet, and matches how most foreign-invested manufacturing in "
|
||
"Thailand holds its site. Three candidates are on file; nothing is signed."),
|
||
T(["", "Mueang Chi, Lamphun", "Northern Region Industrial Estate, Lamphun",
|
||
"Payap University land, Chiang Mai"], [
|
||
["Status", "Working candidate: the massing model, PV roof study and construction RFQ are sited "
|
||
"here", "Fallback", "New lead (October 2026): the university is interested in "
|
||
"leasing land to us. The point it gave fails zoning; its other "
|
||
"land is not checked yet"],
|
||
["Plot", "5-0-66.5 rai on the deed, narrow and skewed", "Leased estate plots", "Not known yet: "
|
||
"boundary, size and title to come"],
|
||
["To Chiang Mai old city", "~35 km", "Lamphun valley", "~5 km, on the Chiang Mai to Lampang "
|
||
"superhighway"],
|
||
["Zoning", "Unverified (agricultural land): the first check", "Industrial estate; licensing "
|
||
"through the estate", "At the point given: zone ย.7-1, very high density residential; record "
|
||
"pressing not permitted (Chiang Mai city plan in force from 25 May 2026)"],
|
||
["Galvanics effluent", "Ours to permit; zero discharge", "Shared central effluent treatment",
|
||
"Lessor's written consent on top of the permit"],
|
||
["Neighbours", "Agricultural", "Industrial", "A pharmaceutical facility under construction on "
|
||
"the same land"],
|
||
], widths_mm=[28, 44, 44, 54], font_pt=8.5),
|
||
P("**Galvanics now raises the bar for every site.** With the electroplating line in the plan, a "
|
||
"plot has to permit record pressing with a steam boiler **and** electroplating from day "
|
||
"one, not in a later phase. That favours the industrial estate (licensing through the estate, "
|
||
"shared effluent treatment) and makes zoning the first check everywhere else."),
|
||
P("**Payap University** approached the project and is interested in leasing land next to a "
|
||
"pharmaceutical facility under construction. The point it gave was checked on the land-use map "
|
||
"of the Department of Public Works and Town and Country Planning on 14 October 2026: zone ย.7-1, "
|
||
"very high density residential, where factory type 107 (whose definition names gramophone "
|
||
"records) is not permitted and type 72 is allowed only for repair, so a record plant cannot get "
|
||
"a factory licence there. The same city plan permits type 107 in its low density residential "
|
||
"and rural and agricultural zones, so Payap's other land is worth checking before the lead is "
|
||
"dropped (the map data is preliminary; the provincial town planning office confirms). Why it is "
|
||
"worth the checks: it is ~5 km from the old city, 25 to 30 km nearer the team, customers and the "
|
||
"airport than Mueang Chi, which helps tours, the artist platform and hiring; and Payap is a "
|
||
"partner, not only a landlord: it wants joint student programmes with us in mastering, lathe "
|
||
"cutting, IT and business administration, and its Faculty of Pharmacy has analytical labs that "
|
||
"could back the PVC lab. Any Payap plot is checked in this order, before any design work:"),
|
||
N([
|
||
"**Zoning:** the plot's zone in the Chiang Mai city plan allows a record-pressing factory with a "
|
||
"steam boiler and electroplating (the neighbour's pharmaceutical permit proves little).",
|
||
"**Lease-ability:** Chanote title, university council approval, and whether campus land of a "
|
||
"private university can be leased commercially; with Thai counsel, together with the lease "
|
||
"terms below.",
|
||
"**The GMP neighbour:** a pharmaceutical plant is sensitive to the boiler stack, galvanics "
|
||
"extraction, extrusion fumes, noise and trucks; emission and buffer rules go into the lease, "
|
||
"not after the first complaint.",
|
||
"**Flooding:** Payap describes the land as low-lying when bought; check the plot against the "
|
||
"2024 flood extents.",
|
||
"**Plot fit:** the building, the detached utility yard and a second building need 6 to 8 rai; "
|
||
"the Payap scenario model draws a 150 m square (14.1 rai) with room for the full press hall.",
|
||
"**Galvanics on a campus:** the lessor's written consent; zero discharge becomes a lease "
|
||
"condition, not only a commitment.",
|
||
]),
|
||
P("Nothing is re-sited until a Payap plot passes zoning and lease-ability: the model, the PV study, "
|
||
"the RFQ and the plant's network site code stay on Mueang Chi. The lease itself must meet these "
|
||
"conditions, which Thai counsel resolves before signature:"),
|
||
B([
|
||
"**Term and registration.** A lease over three years must be registered at the Land Office to "
|
||
"be enforceable; the ordinary maximum is 30 years, and for industrial and commercial use the "
|
||
"Hire of Immovable Property for Commerce and Industry Act allows up to 50 years for qualifying "
|
||
"projects. The plan assumes a registered 30-year lease with a contractual renewal option, and "
|
||
"will test the 50-year route with counsel.",
|
||
"**Building ownership.** The lease states that the buildings, foundations, tanks and fixed "
|
||
"plant belong to the company for the term, what happens to them at expiry, and that the company "
|
||
"may mortgage or assign them. Without this, financing the building is difficult.",
|
||
"**Lessor's title and encumbrances.** A clean Chanote title, no mortgage that could foreclose "
|
||
"over the tenant, consent from any co-owners. A lease of Sor Por Kor or forestry-classified land "
|
||
"is not acceptable.",
|
||
"**BOI.** BOI's land-ownership privilege for foreign-held promoted companies is simply not "
|
||
"used; leasing does not affect the promotion.",
|
||
"**Rent.** Not negotiated. The plan carries THB 0.3M to 1.0M a year (USD 9k to 30k) as an "
|
||
"estimate for 5 to 8 rai of agricultural land in the Lamphun valley, with the lease deposit and "
|
||
"first-year rent in the working-capital block; IEAT plots run higher, and Payap has named no "
|
||
"figure.",
|
||
]),
|
||
P("Land requirements: ~4 rai minimum, 6 to 8 rai comfortable with expansion; truck access and "
|
||
"turning, parking, the detached utility yard, a separated battery enclosure, and a medium-voltage "
|
||
"connection from PEA (800 to 1,000 kVA for the five-press backbone without electric steam, 1,250 "
|
||
"to 1,600 kVA with it)."),
|
||
|
||
H2("6.2 The building"),
|
||
IMG("renders/site-plan.png", 120, "Figure 2. Site plan on the candidate Mueang Chi parcel (massing "
|
||
"model, July 2026): main building with rooftop PV, utility yard, "
|
||
"fire and raw-water tanks, parking canopies and the phase 2 "
|
||
"building. It predates the crane, the visitor corridor and the "
|
||
"utility yard built for four modules. Source: parametric model, "
|
||
"project repository."),
|
||
P("The main building is a single-storey steel portal frame (pre-engineered) of **60 × 25 m "
|
||
"(1,500 m²)**, designed from day one for an overhead crane, with a 10° monopitch roof carrying the "
|
||
"PV array, low eave 7.0 m, high side ~11.4 m. The floor is a 200 mm slab rated 30 kN/m² (3 t/m², "
|
||
"the standard industrial class the presses and racking need) raised 1.2 m above ground, so that "
|
||
"two sealed loading docks work at trailer height and the docked trailer acts as the airlock. The "
|
||
"envelope is insulated PIR sandwich panel (100 mm roof, 75 mm walls) on a 2.5 m masonry dado, "
|
||
"taped and gasketed, because the building is air-conditioned and must be airtight against "
|
||
"smoke-season particulate; mineral-wool panels where fire compartmentation (EI 60 or 120) or "
|
||
"acoustics require them."),
|
||
T(["Zone", "Area"], [
|
||
["Semi-automatic press hall (Newbilt Duplex specification)", "~200 m²"],
|
||
["Automatic press zone", "~100 to 150 m²"],
|
||
["Galvanics clean room, water treatment, chemical storage", "~80 to 150 m²"],
|
||
["Mastering and cutting room", "~40 to 60 m²"],
|
||
["Stamper preparation", "~30 m²"],
|
||
["Packaging and finished-goods warehouse", "~300 to 500 m²"],
|
||
["Utility rooms (boiler, compressor, chiller, electrical)", "~100 to 150 m²"],
|
||
["Offices, QC and listening room, archive, IT, entrance", "~150 to 200 m²"],
|
||
["Maintenance workshop and machine bay (" + pick("crane-ready", "crane-served") + ")",
|
||
"~100 to 150 m²"],
|
||
[pick("Visitor corridor (glazed, ground level; built later, its strip kept free)",
|
||
"Visitor corridor (glazed, ground level)"), "~110 to 130 m²"],
|
||
["Circulation, walls, miscellaneous", "~150 to 250 m²"],
|
||
["**Total under roof**", "**~1,400 to 2,000 m²**, against 1,500 m² built"],
|
||
], widths_mm=[110, 60],
|
||
caption="Estimates. The boiler and chillers have since moved to the detached utility yard, which "
|
||
"frees floor the workshop and corridor take; water treatment is proposed in its own "
|
||
"building next to galvanics; cassette and CD-R duplication (~40 to 80 m² and ~20 to "
|
||
"40 m²" + pick(", a later step in this plan", "") + ") are not in the table yet. " + pick(
|
||
"", "The press rows size one Duplex system and the Classic; the second Duplex "
|
||
"system needs its own bay on top (~110 m² at the calculator's floor figure, "
|
||
"estimate). ") +
|
||
"At the lower half of the table everything fits in "
|
||
"1,500 m²; at the upper half, finished goods move to a second building."),
|
||
IMG("production-hall-layout-sketch.png", 170, "Figure 3. Rough layout sketch of the 60 × 25 m hall "
|
||
"(October 2026): machine door and workshop at the ramp end, then mastering, galvanics, stamper "
|
||
"prep, material area and lab, the press hall, inspection, QC and packaging along the glazed "
|
||
"visitor corridor" + pick(" (built later in this plan)", "") + ", with the 5 t crane runway "
|
||
"over the production compartment up to the warehouse fire wall. " + pick(
|
||
"It still draws two Classic positions (the plan installs one)",
|
||
"It still draws one Duplex system and two Classic positions (the plan installs two Duplex "
|
||
"systems and one Classic)") + " and "
|
||
"puts reception and the cutting room under the crane's travel, a conflict the Payap scenario "
|
||
"model resolves with a separate office building. All positions are estimates."),
|
||
P("Figure 4 shows the same plant as the calculator draws it for " + label() + ": the ground floor of a "
|
||
"whole site with the press hall cut open, the machines this plan installs and the free positions it "
|
||
"keeps for growth."),
|
||
IMG(pick("renders/calculator/plan-a-iso-gf.png", "renders/calculator/plan-b-iso-gf.png"), 170,
|
||
"Figure 4. The plant at a glance in the plant and business plan calculator, " + pick(
|
||
"Plan A preset: Duplex system 1 and the Classic in a press hall laid out for five Duplex bays "
|
||
"and four Classic positions, boiler modules B-1/B-2 and chillers CH-1/CH-2 (the free yard "
|
||
"positions are marked), the frame crane-ready with the crane rented",
|
||
"Plan B preset: Duplex systems 1 and 2 and the Classic in a press hall laid out for five Duplex "
|
||
"bays and four Classic positions, boiler modules B-1/B-2 and chillers CH-1 to CH-3 (the free "
|
||
"yard positions are marked), the 5 t crane and the cassette room") +
|
||
". Schematic render (docs/fleet-calculator.html, also at cnxvinyl.lol/demos/fleet-calculator/) of a "
|
||
"generic site after the Payap scenario model and the utility yard of scale.md, not the Mueang Chi "
|
||
"parcel of Figure 2; positions and envelopes are estimates, not to scale where the vendors publish "
|
||
"no footprint."),
|
||
H3("Crane, workshop and visitor corridor"),
|
||
B(pick([
|
||
"**A crane-ready frame, with the crane rented at first.** The frame, the runway and the machine "
|
||
"door are built for a 5 t overhead crane (single-girder, ~24 m span, inverter drives, radio "
|
||
"remote) over the whole production compartment, roughly 40 to 48 m of the 60 m, stopping at "
|
||
"the fire wall to the finished-goods warehouse. For the installations a mobile crane is hired, "
|
||
"and the crane itself is bought later if machine moves and maintenance lifts make it worth it. "
|
||
"The building is shaped for it from the start: a frame designed for crane loads, no "
|
||
"full-height cross walls in the crane zone (rooms there are lidded boxes, with removable "
|
||
"hatches where heavy kit goes in), and the cutting room kept outside it, away from the frame's "
|
||
"vibration. 5 t covers the heaviest known lift (a Newbilt HRP 12 press, 1,350 kg) with margin "
|
||
"until Newbilt states the Classic's weight; 3.2 t is the alternative price.",
|
||
"**A machine door** of ~4.5 × 5.0 m at the ramp end, opened a few times a year. Until a crane "
|
||
"is bought, the hired crane sets each machine on skates at the door threshold; with the crane, "
|
||
"a truck reverses up the ramp into the machine bay and the crane lifts the machine off the bed "
|
||
"inside.",
|
||
"**A maintenance workshop** of ~100 to 150 m² beside it, where a bought crane would park: a "
|
||
"service bay for one press-sized machine, benches, a hydraulic hose crimper, a spares store "
|
||
"tracked in ERPNext, and a hot-work corner, held at negative pressure so its dust never "
|
||
"reaches the presses. Newbilt service comes from Germany and Pheenix from Sweden; spares on "
|
||
"the shelf are the uptime lever.",
|
||
"**A glazed visitor corridor, built later.** The plan runs without public tours at first, but "
|
||
"the route is designed in: the strip along the car-park wall stays free and the stations "
|
||
"follow the process order, from the cutting-room window to packaging. Built, it is ~45 to 55 m "
|
||
"long and ~2.4 m clear, with its own filtered air at slight positive pressure and acoustic "
|
||
"glazing that brings the 80 to 90 dB(A) near the presses down to roughly 40 to 50 dB(A) "
|
||
"(estimates), so a guide talks without a headset and visitors need no PPE; a 1:12 accessible "
|
||
"ramp serves the entrance. Until it is built there are no public tours, and the tour route and "
|
||
"the Payap programmes start later.",
|
||
], [
|
||
"**A 5 t overhead crane** (single-girder, ~24 m span, inverter drives, radio remote) runs over "
|
||
"the whole production compartment, roughly 40 to 48 m of the 60 m, and stops at the fire wall "
|
||
"to the finished-goods warehouse. Machines are moved in, out and around without hiring a mobile "
|
||
"crane. It shapes the building: a frame designed for crane loads, no full-height cross walls in "
|
||
"the crane zone (rooms there are lidded boxes, with removable hatches where heavy kit goes in), "
|
||
"and the cutting room kept outside it, away from the frame's vibration. 5 t covers the heaviest "
|
||
"known lift (a Newbilt HRP 12 press, 1,350 kg) with margin until Newbilt states the Classic's "
|
||
"weight; 3.2 t is the alternative price.",
|
||
"**A machine door** of ~4.5 × 5.0 m at the ramp end, opened a few times a year: a truck reverses "
|
||
"up the ramp into the machine bay and the crane lifts the machine off the bed inside.",
|
||
"**A maintenance workshop** of ~100 to 150 m² beside it, where the crane parks: a service bay "
|
||
"for one press-sized machine, benches, a hydraulic hose crimper, a spares store tracked in "
|
||
"ERPNext, and a hot-work corner, held at negative pressure so its dust never reaches the "
|
||
"presses. Newbilt service comes from Germany and Pheenix from Sweden; spares on the shelf are "
|
||
"the uptime lever.",
|
||
"**A glazed visitor corridor** at ground level along the car-park wall (~45 to 55 m, ~2.4 m "
|
||
"clear), with stations in process order from the cutting-room window to packaging. It has its "
|
||
"own filtered air at slight positive pressure and acoustic glazing that brings the 80 to 90 "
|
||
"dB(A) near the presses down to roughly 40 to 50 dB(A) (estimates), so a guide talks without a "
|
||
"headset and visitors need no PPE; a 1:12 accessible ramp serves the entrance. Tours for "
|
||
"artists, labels, investors and schools can run several times a day without stopping "
|
||
"production.",
|
||
])),
|
||
H3("Utility yard and water-treatment building"),
|
||
T(["Detached utility yard (decided October 2026)", "Size (estimate)"], [
|
||
["Boiler hall, four 500 kg/h module positions (B-1 and B-2 at launch)", "~162 m² (18 × 9 m), "
|
||
"6.0 m high"],
|
||
["Biomass fuel store", "42 m²"],
|
||
["Chiller compound, open and screened, four pads (" + pick("CH-1 and CH-2", "CH-1 to CH-3") +
|
||
" at launch)", "~135 m² (12.5 × "
|
||
"10.8 m)"],
|
||
["Cooling pump and heat-exchanger room", "~40 m² (8 × 5 m)"],
|
||
["Flue stack", "14 m"],
|
||
["**Yard in all**", "**~379 m²**, against 178 m² before the four-module decision"],
|
||
], widths_mm=[110, 60],
|
||
caption="The fired case sets the boiler hall (an electric bank would need about half). No "
|
||
"cooling tower: the chillers are air-cooled. The rooms are built once for four modules "
|
||
"and the plant goes in one module at a time; the yard sits outside the main building "
|
||
"because the boiler must have its own room and biomass deliveries need yard access."),
|
||
P("**Water treatment gets its own building** (proposed, October 2026): ~12 × 10 m directly behind "
|
||
"galvanics, holding the zero-discharge effluent treatment, the DI water plant and the chemical "
|
||
"store. A buried duct carries the effluent by gravity from the galvanics floor at +1.2 m and "
|
||
"brings DI water back, and a covered crossing joins the two doors; the galvanics room keeps only "
|
||
"a chemical day store."),
|
||
P("**The archive room** holds the father and mother of every side, about 1,200 to 2,400 parts a "
|
||
"year at full capacity, on mobile archive shelving (A-Z Solutions of Vienna as the reference "
|
||
"specification, LPI Rack Range in Thailand to quote against it). In the Payap scenario's office "
|
||
"a room of about 4 × 5.75 m with four mobile carriages holds ~150 shelf metres, roughly 50,000 "
|
||
"parts or 20 years and more of output (estimates). It asks things of the building early: ~11 "
|
||
"kN/m² under the shelving block, so the archive stays on the ground slab at the full rating; "
|
||
"rails set into the floor screed at fit-out; clean-agent gas suppression; a water-leak sensor "
|
||
"along the rails. One open point: with fathers and mothers in one room, one event takes both, so "
|
||
"keeping the rarely pulled fathers in a second fire compartment or off site is on the list."),
|
||
H3("Site works and the second building"),
|
||
P("On the Mueang Chi parcel the site works are a ~444 m perimeter wall, one 10 m sliding gate with "
|
||
"a guard house, 4,387 m² of paving in two classes (1,608 m² heavy-duty for trucks, 2,779 m² "
|
||
"general), roofed parking for 10 cars and 30 scooters carrying ~40 kWp of PV, a ring foundation "
|
||
"for a 9 m fire-water tank with its pump house and one for a 5 m raw-water tank, a fire ring main "
|
||
"and hydrants, stormwater drainage and domestic sanitation. With the buildings, ~6,549 m² or 68% "
|
||
"of the modelled plot is sealed, so stormwater attenuation, quite possibly a detention pond, may "
|
||
"be a permit condition."),
|
||
P("**A second building is expansion, not a gap.** A 45 × 38 m (1,710 m²) phase 2 building fits the "
|
||
"plot's narrowing southern end with a two-bay sawtooth roof carrying ~251 kWp and a 20 m yard "
|
||
"between the two for fire separation and shared loading; coverage stays at 39% of the deed area. "
|
||
"It is where finished goods move to free production floor, where pressing capacity can double, "
|
||
"or where a CD replication line would go if that option is chosen (section 4.10). **The press "
|
||
"hall** is planned for Duplex systems, because the plant focuses on special pressings and "
|
||
"specials run only on the Duplex: five Duplex bays and four Classic positions (~73/27 by floor, "
|
||
"estimate). " + pick(
|
||
"This plan installs one Duplex system and one Classic; growth adds Duplex systems first, into "
|
||
"bays whose floor, utility positions and ring-main tees are kept from the start. Where the "
|
||
"second Duplex system would stand on the Mueang Chi footprint is not drawn yet; ",
|
||
"This plan installs two Duplex systems and one Classic at launch; growth adds Duplex systems "
|
||
"first. Where the second Duplex system stands on the Mueang Chi footprint is not drawn yet; ") +
|
||
"the Payap scenario model draws the five-press fleet."),
|
||
H3("What the construction RFQ asks"),
|
||
P("The budget-level construction RFQ, with quantities from the parametric model, asks contractors "
|
||
"for: the shell rate per m² at the insulated-panel specification (not a bare shed); heavy-duty "
|
||
"and general paving separately; a separate rate for mineral-wool panels at fire-compartment and "
|
||
"acoustic walls; the crane package separately (runway and frame premium, machine door, the crane, "
|
||
"and the hook height achieved under the 7.0 m eave, with +1.0 m on the eave as an option); the "
|
||
"utility yard with floors, pads and plinths for all four positions; a lump sum for the rest of "
|
||
"the site works; and the foundation assumption behind all of it. It excludes process machinery, "
|
||
"PV, air conditioning, boilers, chillers and tanks, sprinklers, fit-out and the PEA transformer, "
|
||
"and asks whether permit drawings for the building permit and the factory licence are included."),
|
||
H3("What the building costs, and what is not known"),
|
||
T(["Block", "USD", "THB", "Basis"], [
|
||
["Building ~1,500 m² plus civil and site works", "650k to 1,100k", "21.4M to 36.3M",
|
||
"estimate at 12,000 to 20,000 THB/m² for Thai pre-engineered steel to the insulated-panel "
|
||
"specification, plus ~20% site works"],
|
||
pick(["Crane-ready frame, runway and machine door; mobile crane rented for the installations",
|
||
"39k to 91k", "1.3M to 3.0M", "estimate: 40% of the crane block (USD 97k to 227k); the "
|
||
"crane is bought later if needed"],
|
||
["Overhead crane, runway, frame premium, machine door", "97k to 227k", "3.2M to 7.5M",
|
||
"estimate"]),
|
||
["Maintenance workshop and machine bay fit-out", "30k to 76k", "1.0M to 2.5M", "estimate; a "
|
||
"workshop lathe and CNC mill not priced"],
|
||
pick(["Visitor corridor and accessible entrance", "built later", "built later", "USD 67k to "
|
||
"148k (2.2M to 4.9M THB) when built, estimate; not in the plan price"],
|
||
["Visitor corridor and accessible entrance", "67k to 148k", "2.2M to 4.9M", "estimate; "
|
||
"building it later would take ~3.6M THB out at the midpoint"]),
|
||
["Utility yard for four boiler and four chiller modules", "73k to 122k", "2.4M to 4.0M",
|
||
"estimate at the building rate"],
|
||
["Water-treatment building next to galvanics", "52k to 87k", "1.7M to 2.9M", "estimate at the "
|
||
"building rate"],
|
||
pick(["**Together**", "**~0.84M to 1.48M**", "**~28M to 49M**", "sum of the blocks; the plan "
|
||
"carries no contingency (section 8)"],
|
||
["**Together**", "**~0.97M to 1.76M**", "**~32M to 58M**", "sum of the blocks; the plan "
|
||
"carries no contingency (section 8)"]),
|
||
], widths_mm=[50, 26, 26, 68], font_pt=8.5),
|
||
P("The single largest unknown is the ground. The Mueang Chi parcel is likely soft former paddy, and "
|
||
"a piled slab can add several hundred to 1,000+ THB/m² across the building, 4,387 m² of paving "
|
||
"and a 1,711 m³ fill platform. A soil boring test (THB 30k to 50k, in the phase 0 budget) comes "
|
||
"before any real number, and the building RFQ with a soil test is one of the four requests that "
|
||
"settle the budget. Also open: the crane's hook height under the 7.0 m eave; the archive's "
|
||
"mobile shelving (to quote); the valved branches and feeders for the empty utility positions; "
|
||
"and the fire-water volume, which the hydraulic design and the warehouse racking height set. " +
|
||
pick("Renting a crane for the installations while the frame, runway and machine door stay "
|
||
"crane-ready takes ~3.2M THB out at the midpoint, one of the six levers; the 5 t crane itself "
|
||
"is USD 30k to 76k supplied and installed (estimate) when it is bought.",
|
||
"Renting a mobile crane for the installations while the frame, runway and machine door stay "
|
||
"crane-ready would take ~3.2M THB out at the midpoint (estimate): a step if quotes land "
|
||
"high, not part of the plan.")),
|
||
|
||
H2("6.3 Safety, security and the irreplaceable"),
|
||
P("Worker safety is a founding priority on equal footing with the environmental commitments. The "
|
||
"press floor combines hydraulics at ~180 bar, saturated steam at 10 bar / 180 °C and hot PVC; "
|
||
"the galvanics room handles silver nitrate, nickel salts and acids. The plan provides "
|
||
"vendor-led commissioning training extending into an in-house programme, mandatory PPE per area, "
|
||
"and galvanics as a clean room with controlled access, extraction on every plating unit, "
|
||
"decontamination procedures, eyewash and emergency shower at the line, and a hard-wired "
|
||
"interlock (no extraction, no plating). A machine is lifted only after lockout (power isolated, "
|
||
"steam vented, hydraulics depressurised including the accumulator) and with a lift plan; hot work "
|
||
"stays in the workshop under a permit; the boilers run under a licensed boiler controller "
|
||
"(section 7)."),
|
||
P("Decided in October 2026: every member of staff, office included, gets group health insurance "
|
||
"(inpatient and outpatient) and a yearly check-up on top of social security, plus the "
|
||
"occupational checks Thai law requires for risk-factor work (press-floor heat and noise, "
|
||
"galvanics chemistry, maintenance) within 30 days of starting and yearly after. Everyone wears "
|
||
"the same company workwear (Strauss), with process PPE on top. Planning costs, estimates: ~15,000 "
|
||
"THB a head a year for insurance, ~2,500 for the check-up plus ~1,500 for risk-factor tests, and "
|
||
"workwear ~USD 9k a year at ~20 staff."),
|
||
P("Physical security is zoned: production, galvanics, chemical storage, the metal archive, IT, "
|
||
"shipping and " + pick("(once built) ", "") + "the visitor corridor each get badge or biometric "
|
||
"access with logs; CCTV at "
|
||
"entrances, perimeter, dock, production, chemicals and archive under a PDPA-compliant retention "
|
||
"policy. Two things are irreplaceable and get their own protection: **the metal archive** (a "
|
||
"destroyed father means recutting and re-plating a release; fire-rated room, climate control in "
|
||
"the tightest monitoring tier, access logging, clean-agent gas suppression because sprinkler "
|
||
"water would destroy paper records and corrode the metal) and **client audio** (pre-release "
|
||
"music is a leak target; an isolated, encrypted, access-logged vault, need-to-know access, and a "
|
||
"written policy the sales team can show labels)."),
|
||
P("Fire suppression is zoned, not full-building gas: clean agent only in small sealed high-value "
|
||
"rooms (archive, IT, switchrooms, control cabinets), water mist or sprinklers in production and "
|
||
"the carton-heavy warehouse, and detection and containment rather than suppression for the "
|
||
"battery enclosure. The site carries its own ~200 m³ fire reserve and pump set (electric duty, "
|
||
"diesel standby, jockey) because mains flow cannot be assumed; warehouse racking above about "
|
||
"3.7 m changes the sprinkler design and raises that volume, so the racking height is fixed "
|
||
"before the fire design. The property insurer is involved before the design is fixed."),
|
||
|
||
# ----------------------------------------------- 7 regulatory
|
||
H1("7. Regulatory: BOI promotion and licences"),
|
||
H2("7.1 BOI promotion"),
|
||
P("The project will apply for promotion by the Thailand Board of Investment. In BOI terms vinyl "
|
||
"pressing is basic plastic consumer-goods manufacturing (incentive Group B): no corporate income "
|
||
"tax holiday on the core activity, but the full non-tax package and machinery duty exemption. "
|
||
"The tax value is engineered on top through measures where this project happens to be strong, so "
|
||
"the application is pitched on " + pick("automation, technology content and energy efficiency",
|
||
"solar, automation and technology content") +
|
||
", not on pressing plastic "
|
||
"discs. The research behind this dates from July 2026, BOI revises its measures roughly every "
|
||
"year, and the exact activity sub-code needs confirmation by a BOI-registered consultant before "
|
||
"filing."),
|
||
T(["What BOI gives", "Why it matters here"], [
|
||
["Machinery import duty exemption", "Almost the entire launch equipment list is imported "
|
||
"(Germany, Sweden, the UK, Australia, Japan, China). Machinery imported duty-free is also "
|
||
"exempt from VAT at import (Revenue Department answer on BOI's FAQ, checked October 2026). The "
|
||
"investment blocks assume promotion: without it, ~5% duty on ~2.3M USD of imported machinery "
|
||
"(~0.11M USD) plus ~0.17M USD of import VAT, reclaimed only later (estimates for the " +
|
||
pick("full equipment list; this plan imports less at first",
|
||
"three-press equipment list; the second Duplex system adds to both") + ")."],
|
||
["100% foreign ownership and land privileges", "Overrides Foreign Business Act restrictions "
|
||
"for the promoted activity. The land-ownership privilege is unused under the lease strategy."],
|
||
["Visas and work permits via the One Stop Service", "Foreign commissioning engineers and the "
|
||
"technical consultant, without the four-Thai-employees-per-permit rule."],
|
||
["Raw material duty relief", "Exemption for export production; up to 90% reduction for "
|
||
"domestic sales. Relevant for imported PVC compound until a Thai source is qualified."],
|
||
["Solar and battery measure (Announcement 2/2568, April 2025)", "CIT exemption based on the "
|
||
"solar investment; PV modules, inverters, battery and battery inverters, and mounting are "
|
||
"eligible, capped at THB 12M, 30M or 40M of investment per MW depending on investment type. "
|
||
"It rewards a plant-owned array. " + pick(
|
||
"This plan takes the PV and the battery through a solar PPA, so the installer owns them "
|
||
"and the plant very likely gives up this measure (to confirm with the BOI consultant; "
|
||
"section 5.4).",
|
||
"This plan buys the ~247 kWp array and the 271 kWh battery, so their cost is the base of "
|
||
"the exemption (section 5.4).")],
|
||
["Smart and Sustainable Industry measure (Announcement 15/2565, refreshed July 2025)",
|
||
"Rewards automation, smart machinery and energy efficiency, typically 3 years of CIT exemption "
|
||
"capped around 50% of the qualifying upgrade spend. The automatic Classic, inline inspection, "
|
||
"metrology and heat recovery are the natural fit."],
|
||
["R&D merit", "At least 1% of revenue in Thai R&D adds 1 to 3 exemption years and can lift the "
|
||
"cap. Galvanics process development, recycled-PVC work and the audio-QC system could qualify; "
|
||
"whether R&D with Payap University and the joint student programmes count is to be checked."],
|
||
], widths_mm=[58, 112]),
|
||
P("**Requirements:** minimum THB 1M investment excluding land and working capital (cleared many "
|
||
"times over); debt-to-equity no higher than 3:1 for the life of the privileges, which shapes "
|
||
"the financing mix; modern machinery and process; progress reports, annual reports and machinery "
|
||
"lists. The plant's asset register and stock ledger in ERPNext are where the record of promoted "
|
||
"machinery and raw materials lives, from the first capex invoice."),
|
||
P("**Process:** file via the e-Investment system and present at an analyst meeting. BOI quotes "
|
||
"about 40 working days to a decision for projects under THB 200M and 60 to 90 working days for "
|
||
"larger tiers; at " + pick("~127M to 226M THB with the ramp-up reserve (~177M at the midpoint)",
|
||
"~162M to 286M THB with the ramp-up reserve (~224M 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 "
|
||
"from issuance; full operation is due by about 36 months. The Northern Economic Corridor "
|
||
"(Chiang Mai, Lamphun, Lampang) is promoted as a creative-economy base, which a music "
|
||
"manufacturing story fits; the current area add-ons for Lamphun must be confirmed with BOI "
|
||
"directly."),
|
||
H2("7.2 Factory licence, galvanics and boilers"),
|
||
P("BOI promotion does not replace the factory licence (Ror.Ngor. 4), hazardous-substance "
|
||
"registration for the plating chemistry, wastewater permitting or the boiler rules. **Galvanics "
|
||
"is in the plant from launch, so the electroplating line, its chemistry and its zero-discharge "
|
||
"effluent system are in the first factory licence application**, not a later amendment. The "
|
||
"earlier plan to keep galvanics out of the first licence to protect the schedule no longer "
|
||
"applies. Effluent is the most likely regulatory friction point regardless of BOI, and it now "
|
||
"sits on the path to the first paying release:"),
|
||
B([
|
||
"**The site must permit plating from day one** (section 6.1): zoning has to allow a "
|
||
"record-pressing factory with a steam boiler and an electroplating line. The industrial "
|
||
"estate's licensing and shared effluent treatment are the easiest path; on Mueang Chi the "
|
||
"permit is ours; on Payap land the lessor's written consent comes on top.",
|
||
"**Zero discharge is the design, and the application says so:** rinse water through the ZLD "
|
||
"evaporator with metal recovery, the back-finisher's spent water and filters by the same route, "
|
||
"solvents as controlled waste, no process water to the environment. It is the strongest answer "
|
||
"the plant can give to the effluent question.",
|
||
"**Permit drawings** for the building permit and the factory licence come from a licensed "
|
||
"engineer; the construction RFQ asks whether contractors include them (shell prices usually do "
|
||
"not), and stormwater attenuation may be a permit condition.",
|
||
]),
|
||
P("**Boilers (DIW rules).** The Ministerial Regulation on boilers B.E. 2549 and the Ministry of "
|
||
"Industry notification on boiler safety of the same year apply to every module, Thai or "
|
||
"imported: a design "
|
||
"to TIS or an international standard (ASME, JIS, EN or equivalent) checked and certified by a "
|
||
"DIW-registered certification body or licensed engineer; for an imported boiler, verification by "
|
||
"a registered certification body and the manufacturer's data report, design and inspection "
|
||
"reports filed with DIW; installation drawings checked and an inspection before first use "
|
||
"reported to DIW within 30 days; **a licensed boiler controller on site**; and **inspection at "
|
||
"least once a year**. The relief for small once-through units does not apply at ~10.5 bar (our "
|
||
"reading), and the labour-side regulation of 2021 adds licensed-engineer installation and "
|
||
"testing and a feedwater standard. " + pick(
|
||
"**This plan's two boiler bodies come from a Chinese maker, so they take the imported-boiler "
|
||
"route of the notification:** verification by a registered certification body with the full "
|
||
"dossier, and an ASME Section I design at 1.25 MPa with the S stamp, because a boiler built "
|
||
"to the Chinese GB code would rest on 'or equivalent' with no precedent found. ",
|
||
"The plan's modules come from Thai suppliers to the same ASME specification; a Chinese "
|
||
"boiler built to the Chinese GB code would rest on 'or equivalent' with no precedent found. ") +
|
||
"DIW has announced a "
|
||
"revision of the boiler, pressure-vessel and refrigeration rules, so they are rechecked before "
|
||
"the RFQ, and a certification body is engaged before any boiler order."),
|
||
P("**Other permits and duties:** the same 2021 labour regulation covers the overhead crane" +
|
||
pick(" once one is bought", "") + " (a "
|
||
"crane-industry summary puts cranes above 3 t on an engineer inspection every three months; to "
|
||
"confirm against the text before the capacity is chosen); hazardous-substance registration and "
|
||
"locked, inventoried storage for silver nitrate and nickel salts; the occupational health "
|
||
"check-ups (section 6.3); PDPA for CCTV, personnel and operator-linked production data; local "
|
||
"fire codes and the building permit during construction; and DIW manifests for used oil and "
|
||
"other controlled waste."),
|
||
CALL("Three things to settle before filing", [
|
||
"**Zoning before filing.** The BOI clocks (the import window and the deadline for full "
|
||
"operation) start at the certificate, and the margin on them is consumed by one scenario: "
|
||
"filing early and then finding the site does not work. Verify the chosen plot's zoning, "
|
||
"including plating, first.",
|
||
"**Scope.** " + pick(
|
||
"Cassette and CD-R duplication come later in this plan; whether they still go into the "
|
||
"first application (their machines then due inside its import window) or into a later "
|
||
"amendment is a question for the consultant. ",
|
||
"Cassette and CD-R duplication go into the application from the start. ") +
|
||
"CD replication would need new activity codes, which cannot be added casually afterwards, so the "
|
||
"investor's decision on CD (section 4.10) is needed before the filing date.",
|
||
"**Sequencing.** The plan's rule is that no machinery purchase order precedes the certificate, "
|
||
"because duty exemption is not retroactive. But the exemption attaches at importation, not at "
|
||
"contract signature. If equipment can be ordered with a deposit while the application is in "
|
||
"review, provided it clears customs after issuance and is on the approved machinery list, the "
|
||
"launch pulls forward by six to nine months. With the lathe, galvanics and Sibert line now on "
|
||
"the critical path alongside the presses, this is the first question for the BOI consultant and "
|
||
"the only item in the plan worth half a year.",
|
||
]),
|
||
P("Keep any future label, content or retail arm in a separate entity: media and service activities "
|
||
"carry different, sometimes Thai-ownership, conditions and would muddy a clean manufacturing "
|
||
"application. Poy Records as a label brand is therefore a separate question from the plant."),
|
||
]
|