"""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 (~215M THB, the same launch plant with everything in, none of the levers); 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 three " "presses and the audio station. Every father, mother and stamper is measured before the next " "plating generation or the press, and groove geometry and form on the metal are measured from " "the first release.", "**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 three 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 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, on a utility backbone with rooms for four " "boiler and four chiller modules, so the second Duplex system plugs in when revenue pays for " "it. ") + "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 " "the biomass boilers' flue gas are heat the plant reuses before it generates anything new."), H3("Utilities: backbone once, modules with the presses"), P("Everything that is cheap to oversize now and costly to change in a running plant is built once, " "for the five-press fleet: the boiler hall and the chiller compound with room for four modules " "each, the steam main and condensate return, the cooling mains, the heat-exchanger frame and " "tanks, and hydraulic and compressed-air ring mains with a valved, capped tee at every press " "position. The machines that make steam and cold water come in identical modules: at launch " "two 500 kg/h biomass boilers (B-1, B-2) for the 450 to 540 kg/h peak (one ~1 t/h package is " "the alternative) and two 250 kW air-cooled chillers rated at 40 °C ambient (CH-1, CH-2) for " "~391.5 kW, sequenced lead and lag by one controller. Either boiler alone carries 93 to 111% of " "the steam demand; one chiller out leaves ~64% of the cooling peak. Both plans make their steam " "from biomass (below); " + pick( "the boilers come from a Thai maker and the compressor from a Chinese brand's Thai office. ", "the boilers and the compressor come from Thai suppliers, with local service. ") + "Identical modules mean one set of spares " "and one service routine, N+1 later is one more module rather than a redesign, and the plant " "never runs one oversized boiler at poor part load. Four boilers carry about eight presses with " "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 the biomass bank (an electric boiler has no flue gas)", "Outlet and stack temperatures are vendor figures; rice-husk ash is abrasive, so the RFQ asks " "for cleaning, wear protection and a bypass"], ["2. Condensate return", "As much clean, hot condensate back to the feed tank as possible", "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. For the five-press fleet the backbone is built for, on biomass steam with no electric " "boiler on the grid, that is roughly 4.5M to 6.8M THB a year before solar, 0.7M to 1.1M of it " "demand charge, on an 800 to 1,000 kVA connection; the launch plant's peak demand is ~264 kW, " "against ~980 kW had its steam been electric (estimates). Three design consequences:"), B([ "**Steam comes from biomass in both plans,** because biomass heat is far cheaper than " "electric steam (below): an electric boiler's full-power draw would set the demand charge, and " "the peak window covers 13 of the 16 production hours.", "**The factory roof gets PV, not solar thermal.** Self-consumed PV is worth ~3.7 THB/kWh" + pick( " of grid power displaced, less the PPA price the plant pays for it (below)", "") + "; surplus earns nothing, because a factory on PEA's grid runs zero export (below); and PV " "cannot lower the demand charge, because the peak window runs to 22:00, long after sunset.", "**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([ ["PV on the factory roof", "~520 kWp (decided October 2026: PV on the factory only, the other " "roofs PV-ready). In the Payap scenario model the calculator draws " "the factory roof at ~523 kWp (901 modules of a generic 580 W " "placeholder; no module chosen yet). ~730 to 780 MWh a year at " "1,400 to 1,500 kWh/kWp, ~87% of it used on site (~633 MWh: two " "shifts on 300 days, a ~60 kW base load off-shift and the " "battery), about 61% of the launch plant's ~1,036 MWh a year of " "electricity with biomass steam (estimates). " + pick( "Taken through a solar PPA (below): the plant pays the PPA price for this power instead of " "buying the array, so its saving is the gap between that price and the ~3.7 THB/kWh of " "grid power it displaces", "Saves ~2.3M to 2.5M THB a year at ~3.7 THB/kWh self-consumed and pays back in ~4.1 to 5.8 " "years at 20 to 26 THB/W installed (estimates)")], ["Why ~520 kWp", "With biomass steam the running load is ~230 kW, with no electric boilers. An " "hourly sketch (two shifts on 300 days, ~60 kW off-shift base load, the 271 kWh " "battery, PEA's time-of-use tariff with Ft, 23,000 THB/kWp, 25 years at 8%) " "puts the best array at ~500 to 550 kWp: the net present value peaks there, and " "the kWp above ~550 lose money because more of their yield is curtailed. The " "factory roof's ~520 kWp sits at that optimum (estimates)"], ["PV-ready: office roof and canopies", "The office roof (~65 kWp) and the car and scooter canopies " "(~54 kWp: car ~42, scooter ~13) are built ready for panels: structure rated for them (~20 kg/m² " "plus wind uplift), conduit and a cable route to the main board, and a spare way for a later " "inverter. Panels go on when the load rises with the second Duplex system: ~120 kWp for ~2.4M " "to 3.1M THB at 20 to 26 THB/W (estimate). The preparation is small (estimate) and sits in the " "building and site works; the construction RFQ already specifies canopy steel carrying PV"], ["Zero export", "The ~13% the plant cannot use, mostly on Sundays and holidays, is curtailed, not " "sold: a factory on PEA's grid runs zero export, with no payment for surplus and " "a zero-export controller (reverse-power relay) as part of the interconnection " "(CapSolar and Sahawatthanakit, 2026)"], ["On the Mueang Chi hall", "The factory roof of the 60 × 25 m hall of section 6.2 takes only " "~247 kWp (425 modules on the 1,523 m² monopitch roof), about half " "the optimum; its parking canopies are PV-ready too (~40 to 54 kWp). " "More would need ground mount on the ~70 m of plot behind the " "building (not covered by the rooftop exemption, so it may still " "need a factory permit) or the phase 2 roof (~251 kWp)"], ["Battery", "271 kWh Gobel Power LiFePO4 rack (15 stacked 18 kWh packs, 8,000+ cycles), USD " "39,900 to 58,000 listed (battery only; ~2.0M to 3.5M THB installed with enclosure, fire protection and " "controls, estimate), 50 to 60 day lead. Roughly an hour of the chiller bank's " "peak draw: ride-through, not off-grid autonomy"], ["Inverters", "Deye three-phase hybrid units (30 to 80 kW class), ~430 kVA in all (about nine 50 kW " "units, estimate); " "Thai distribution via Solar Nicolo; Deye is a supported protocol on the Gobel " "battery management"], ["Roof design", "Monopitch at 10° falling toward ESE puts the whole roof on one plane at ~98% " "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"], ["Permits", "Since Ministerial Regulation No. 3 B.E. 2567 (in force 28 December 2024) rooftop " "solar outside industrial estates is not a factory, so it needs no Ror.Ngor. 4 " "licence at any size. At ~430 kVA of inverters, under the 1,000 kVA line of the " "Energy Regulatory Commission (ERC), an ERC exemption notification replaces a " "generation licence. PEA approves the interconnection with zero-export control in 3 " "to 6 months, filed in parallel with procurement (CapSolar, 2026); the roof load is " "in the building permit. Inside an industrial estate IEAT rules apply on top"], ["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 PPA covers the ~520 kWp factory " "roof; the calculator carries 3.0 THB/kWh (estimate) for the ~633 MWh used on site, ~1.9M " "THB or ~0.06M USD a year on the energy line. That keeps the PV EPC (USD 315k to 410k, " "10.4M to 13.5M THB at 20 to 26 THB/W) and the battery (USD 61k to 106k) out of the capital " "round: ~14.7M THB less at the midpoint, one of the six levers in section 8. The launch " "plant's power bill (~0.36M THB a month before solar with biomass steam: ~1,036 MWh at the " "blended ~3.81 THB/kWh plus the demand charge, estimate) is well above the 100,000 THB a " "month CapSolar asks of a PPA site; PPA discounts run 10 to 15 % off the tariff at MEAei " "and 10 to 30 % at CapSolar, so the calculator's ~21 % is to be quoted. Leasing gives up no BOI benefit on the array: BOI stopped promoting solar " "installations on 1 July 2025 (Announcement 3/2568, section 7.1). A PPA developer selling " "the power can still be promoted (activity 7.1.2); whether that shows in the price is for " "the negotiation (CapSolar, 2026). What the PPA costs against owning is the power bill " "above and, if the PPA includes the battery, the battery's possible BOI eligibility as " "storage (to confirm with the BOI consultant). The PPA offer is asked against the " "specification above"], ["Owned (this plan)", "The plant buys the array and the battery: PV EPC USD 315k to 410k " "(10.4M to 13.5M THB for ~520 kWp on the factory roof, 20 to 26 THB/W installed with " "inverters at Thai 2026 market prices; the PV-ready canopy steel and conduit are in the " "building and site works) and the battery, installed, USD 61k to 106k (2.0M to 3.5M THB): " "~14.7M THB together at the midpoint, estimates, section 8. Owning them saves the power bill " "a PPA would carry: at the calculator's 3.0 THB/kWh (estimate, to quote) for the ~633 MWh " "used on site, ~1.9M THB or ~0.06M USD a year. A solar PPA (an installer owns and finances " "them, the plant buys the power at a price still to quote) would take ~14.7M THB out of the " "capital round at the midpoint at the cost of that bill. The array itself carries no BOI benefit: BOI " "stopped promoting solar installations on 1 July 2025 (Announcement 3/2568, section " "7.1); the owned battery may still qualify as storage (to confirm with the BOI " "consultant)"]), ]), H3("Steam: biomass in both plans"), P("Both plans make their steam from biomass (decided October 2026): two 500 kg/h biomass modules " "(B-1, B-2) or one ~1 t/h package, Getabec class, 6M to 10M THB installed with the fuel feed, " "grate and dust control, plus a fuel store and handling block of 1.0M to 2.0M THB (a covered " "store, a chip bay, ash bins and a compact loader; utilities CSV, estimates). The electric boiler " "bank (4.5M to 7M THB from Thai suppliers, 2.8M to 5.5M through the Chinese route) is now the " "alternative, not the plan. There is no natural gas pipeline in Northern Thailand, so gas would " "mean a bulk LPG tank on site with hazardous-storage separation and licensing, and diesel a fuel " "tank with price exposure. The two routes without a fossil tank, compared for the launch plant " "at ~850k records a year (~1,403 t of steam, ~954 MWh of heat; estimates):"), T(["", "Biomass boiler bank (~80%): the plan", "Electric boiler bank (~98%): the alternative"], [ ["Price of heat", "~0.5 to 0.9 THB/kWh at 1.35 to 2 THB/kg delivered (reported market prices, " "October 2026; no supplier quote yet), ~0.7 planned", "~3.9 THB/kWh, plus the demand charge"], ["Running cost, launch plant", "~0.67M THB a year of fuel at ~0.7 THB/kWh: about 300 t of " "air-dry wood or ~460 t of fresh chips, plus handling and ash", "~4.9M THB a year: ~973 MWh at " "the blended ~3.81 THB/kWh plus the demand charge on 2 × 360 kW of boilers"], ["Boiler package, 2 × 500 kg/h", "~6M to 10M THB installed, plus 1.0M to 2.0M for the fuel " "store and handling", "4.5M to 7M THB from Thai suppliers, ~2.8M to 5.5M through the Chinese " "route"], ["Grid", "Launch plant peak demand ~264 kW; 800 to 1,000 kVA for the five-press backbone", "~980 kW at launch; the five presses ~950 to 1,330 kW, PEA Schedule 4, 1,250 to 1,600 kVA"], ["Also", "Fuel contracts and a monsoon stock, ash handling, a 14 m flue stack with a dust " "collector, more maintenance, a certified boiler attendant, emission limits in the permit", "Cleanest permitting, no fuel logistics, no stack"], ], widths_mm=[32, 70, 68], font_pt=8.5), P("**Reading it.** The electric boiler is the more efficient machine; biomass is by far the cheaper " "heat. At launch biomass saves **~4.2M THB (~0.13M USD) a year** against electric steam, so it " "repays its higher price and the fuel store (~3.8M to 5.4M THB more at the midpoints than a Thai " "or a Chinese electric bank) in about a year (estimates). Without electric boilers the plant's " "demand stays at ~264 kW instead of ~980 kW, which also means a smaller transformer and PEA " "deposit (not re-priced; an upside). The earlier staged path (start electric, add biomass later) " "is dropped: each year on electric steam would cost about that ~4.2M THB more. The site still " "matters: next to the pharmaceutical facility on Payap land a biomass stack is a hard sell, so " "the GMP-neighbour check (section 6.1) asks about it before any design work, and the electric " "bank is the fall-back there."), P("**What biomass brings with it.** Fuel contracts and a dry stock for the monsoon: the 42 m² store " "drawn in the utility yard holds ~6 to 7 weeks of fresh chips, and a 3-month monsoon stock needs " "~80 m² (estimates). Ash to handle and dispose of. The 14 m flue stack and the dust collector, " "already drawn in the utility yard. More maintenance than an electric bank, and a certified boiler " "attendant from the maintenance team as the licensed boiler controller (section 7.2). Boiler " "registration and the air-emission limits for a solid-fuel boiler in the permit work (to confirm, " "section 7.2). And a visible point source in Chiang Mai's burning season (February to April): dust " "control matters for the story as much as for the permit, and buying farm residues that would " "otherwise be burned in the fields is the other half of that story."), P("**Fuel.** The launch plant burns about 300 t of air-dry wood or ~460 t of fresh chips a year at " "~850k records; the five-press fleet at about 1.0 million records would burn 350 to 400 t air-dry " "(~540 to 620 t as fresh chips; estimates). Lamphun alone produces more than 900,000 t of farm " "residues a year (Maejo University), so supply is not the constraint; price is. Reported prices " "follow diesel, so the fuel contract gets a diesel clause and sources within ~50 km. The local " "price-setter is Ratch Pathana's biomass buying centre at Pa Sak, Mueang Lamphun, which feeds a " "9.6 MW cogeneration plant and competes for the same fuel. The team's own 60 rai of " "forestry-classified land could supply 80 to 135 t a year as short-rotation coppice, an upside " "once its title is checked; at market prices that is worth only ~0.1M to 0.25M THB a year, so its " "value is supply security and the story ('records pressed with steam from our own trees'), not " "the fuel bill. Next step: written quotes from Pa Sak and two or three chip suppliers, priced by " "moisture, before the boiler order."), P("**Where the boilers come from.** Both plans price the biomass modules from a Thai maker with " "Thai fabrication and service (Getabec class, 6M to 10M THB installed; utilities CSV, estimate). " "Chinese makers build biomass boilers too (ZOZEN DZL, Sitong DZL and SZL, Taiguo, Yongxing), but " "none is priced yet: the Chinese route checked so far priced only electric boilers. " + pick( "That makes a Chinese biomass quote a decision point for this plan: one ~2M THB or more below " "the Thai package would bring Plan A back under 180M THB at the midpoint. What this plan takes " "through the Chinese route is the compressor, a Chinese brand bought through its Thai office " "(Kaishan and Denair have one) so service stays local, ~0.25M THB less at the midpoint " "(estimate from listings, not a quote). ", "A Chinese biomass quote is a step if quotes land high, and so is a Chinese compressor brand " "bought through its Thai office (Kaishan and Denair have one), ~0.25M THB less at the midpoint " "(estimate from listings, not a quote); this plan buys the compressor from a Thai supplier. ") + "Any module, Thai or imported, is specified as a 1.25 MPa design to ASME Section I with the S " "stamp (most Chinese packaged electric units are rated 0.4 to 0.8 MPa and cannot deliver 10 bar). " "An imported boiler must meet TIS, ASME, JIS, EN or an equivalent standard and be verified by a " "certification body registered with the Department of Industrial Works (DIW), engaged before the " "order (section 7). No mainland maker has a verified Thai service partner, so for an imported " "boiler a Thai boiler contractor and the certification body would be the service layer. Chillers " "and air conditioning, the larger blocks, have not been checked for a Chinese route yet."), H3("Water"), P("Water arriving is still open: no source is confirmed for the candidate site (PWA mains, a " "licensed deep well, or both), and a water analysis comes before the boiler and chiller RFQs " "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; steam comes from " "biomass in both plans, at about a seventh of what electric steam would cost (~0.67M against " "~4.9M THB a year at launch, estimate); the factory roof carries PV" + pick(" through a solar PPA", "") + " (~520 kWp, ~61% of the launch plant's electricity, " "estimate), with the office roof and the canopies ready for more panels and a battery for " "ride-through; no process water is discharged; and a fifth of the plastic is reclaimed. The " "same choices push the energy line " "toward its low end and hedge Thai tariff rises; the heat recovery and automation can count " "toward BOI's Smart and Sustainable Industry measure" + pick( "", " and the owned battery may qualify as storage") + " (section 7.1; BOI no longer " "promotes solar installations). They " "also make the plant's sustainability story true rather than claimed, which matters to the " "labels it sells to."), H2("5.5 The software: plant overview, factory console and artist platform"), P("Three pieces of software carry the traceability and the customer promise of this plan into daily " "work. All three exist today as working demos on the project's test site, run on simulated data: " "orders, customers, IDs and measurements are invented, while the stages, checks, cycle times and " "shifts follow the plan. They show investors, vendors and future staff what is being built. The " "production versions are the development project of section 5.1 (software block USD 115k to 310k, " "estimate), built on ERPNext as the plant's only system of record."), H3("Plant overview (SCADA)"), P("One screen for the whole plant: the metal path from audio intake through mastering, lathe cutting, " "the Pheenix Alpha galvanics line and Sibert stamper prep to the stamper rack; the press hall with " "its presses, extruders, material lab and compound silos; inspection, packaging and fulfilment; and " "underneath them the utilities (steam, process cooling, compressed air, hydraulics, water treatment, " "energy and PV, HVAC). The demo animates the launch plant at real cycle times, from real time up " "to 3600× (a day in 24 seconds); every station opens with its figures and the source of each, and " "the three artist gates show how many titles wait at each. In the plant the same screen is fed " "from the machine-data store instead of the simulation: the presses over OPC UA, boilers, chillers " "and compressor over Modbus (the data clause in every equipment RFQ). Alarms go to the shift's " "phones and keep working with the internet down."), IMG("renders/demos/scada.png", 170, "Figure 2. Plant overview (simulated SCADA) of the launch plant, running at 60×: header with shift, " "presses running, cycles an hour, good records and rejects, metal in work, steam pressure, plant " "load and solar; metal path on top, press hall and finishing in the middle, utilities below. " "Demo (docs/plant-operation.html), simulated values."), H3("Back office: the factory console on ERPNext"), P("The factory application (working name cnx-factory) is the plant's working interface. It shows the " "press floor with live counters per press, stamper life and the optical result of every record; " "work orders per station in kiosk form (badge in, scan what the step asks for, confirm); the " "material lab gate with lots on hold; stamper metrology and the lacquer, father, mother and stamper " "genealogy; the hash-chained event log; and the customer portal of the same orders. It keeps no " "business records of its own: orders, job cards, batches, inspections, metal parts, deliveries and " "invoices are posted to ERPNext through an outbox, so no press waits for the ERP, and the office " "works in ERPNext's own desk for purchasing, accounts, stock and planning."), IMG("renders/demos/factory-floor.png", 165, "Figure 3. Factory console, press floor: good and rejected records today, presses running, orders " "in production and waiting at an artist gate, compound on hold; one card per press with its order, " "progress, stamper set and play count, cycle time and steam temperature; the optical inspection " "stream keyed by stamper, press and cycle time; what needs attention. Demo " "(docs/factory-console.html), simulated orders and values; the demo runs one Duplex system and " "one Classic."), IMG("renders/demos/factory-erp.png", 165, "Figure 4. The ERPNext link: every posting the floor makes (job cards, serial numbers of lacquers, " "fathers, mothers and stampers, quality inspections, artist gates, downtime entries, purchase " "receipts), its document name in ERPNext and its outbox status. Demo, simulated documents."), H3("Artist platform: order, fund and follow a record"), P("The artist platform is the plant's front door for every customer. The customer configures the " "record against a to-scale mock-up; uploads music and artwork, which are checked in the browser " "and never uploaded in the demo (format, sample rate and bit depth, clipping, side length; artwork " "size, spine, bleed, resolution and colour against downloadable templates); approves the master " "plan, the first of the three artist gates; and receives an itemised offer with its lead time. In " "the demo's example a 12-inch black LP with a printed jacket costs 37,836 THB once per title and " "343 THB a copy all in at 300 copies (indicative prices, estimates)."), IMG("renders/demos/artist-offer.png", 160, "Figure 5. Artist ordering: the itemised offer, per title (mastering, lacquers, cutting, " "electroforming with the father and mother kept for represses, press setup, test pressings) and " "per copy (pressing, sleeve, assembly, printed jacket, shrink wrap), with the mock-up and the " "lead time. Demo (docs/artist-order.html), price list demo-0.1, indicative."), P("The artist then orders directly or runs a fan-funded campaign: fans pre-order at the artist's price " "into a ring-fenced account, the plant presses from 100 copies, and if the goal is missed every fan " "is refunded. At a fan price of 1,200 THB the artist needs 100 fans, breaks even at 41 and keeps " "~548 THB a copy at the goal. After delivery each copy has a record passport, reached from the code " "on its sleeve: the traceability record of that one copy, from the approved master through lacquer, " "father, mother and stamper to the press cycle and the packing scan. Campaigns go live only after " "the first paying releases have shipped and lead times are measured. The public side is costed at " "USD 40k to 90k within the software block (estimate). The platform's name is undecided."), IMG("renders/demos/fan-funding.png", 160, "Figure 6. Fan funding in the investor demo of the platform: the artist sets the fan price and " "the deadline; the fans needed follow from the 100-copy minimum and the break-even, with what the " "artist keeps. Demo (docs/make-a-record.html), indicative prices."), IMG("renders/demos/record-passport.png", 160, "Figure 7. Record passport of one copy: the record key (stamper, press, cycle time, side) and the " "chain from master to shipment, with the repress path from the archived father and mother. IDs " "and times are simulated."), H2("5.6 Open source throughout, and a service for other plants"), P("**Everything the plant runs and everything the project builds is open source,** with a short " "list of exceptions named below. Every server is a NixOS machine declared in one repository, " "B4L's fleet repository built on clan-core; the fleet it declares already runs B4L's DNS, mail, " "monitoring, backups, a public reverse proxy and the first site gateway. The plant adds a gateway, a core " "server, a backup server, edge collectors and station kiosks to the same inventory. Any machine " "is rebuilt from the repository, and a second plant is one more inventory entry. ERPNext is the " "only system of record (section 5.1), self-hosted on NixOS through the community packaging " "frappe-nix."), T(["Component", "What it does", "Licence"], [ ["NixOS (nixpkgs), clan-core", "Every server, declared and deployed from one repository", "MIT"], ["ERPNext on the Frappe framework", "The only system of record: orders, gates, stock, job " "cards, metal genealogy, inspections, accounts", "GPLv3 (ERPNext), MIT (Frappe); no licence " "or per-seat fee"], ["PostgreSQL, VictoriaMetrics, Telegraf, Mosquitto (MQTT)", "Machine-data store, time series, " "collection and messaging from presses, utilities and instruments", "PostgreSQL licence, " "Apache-2.0, MIT, EPL-2.0"], ["Grafana, Caddy, BorgBackup", "Dashboards and alerts, the web proxy, encrypted backups", "AGPLv3, Apache-2.0, BSD"], ["cnx-factory (ours)", "Kiosks, press floor, QC, genealogy, customer portal; Rust (axum, SQLx, " "minijinja, HTMX), packaged as a Nix flake", "To be published"], ["Plant overview, artist platform (name undecided), plant and business plan calculator (ours)", "The software of section 5.5", "To be published"], ["FreeCAD, LibreOffice", "The plant model; this business plan's build", "LGPL, MPL-2.0"], ], widths_mm=[52, 82, 36], font_pt=8.5, caption="Licences as published by each project, checked October 2026. Firmware inside the " "machines is not in the table (below)."), B([ "**Our own code is published as open source.** The licence is still to decide: AGPL-3.0 keeps " "hosted copies open as well; Apache-2.0 or MIT is the easiest for other plants to adopt.", "**What is not open, said plainly:** the firmware and HMIs inside the machines and instruments " "(Newbilt's Siemens PLC, Pheenix's Beckhoff PLC, Keyence and the vision controllers), the " "inverter and battery firmware, the vendors' OPC UA licences, and the access-point controller " "in the fleet's router module. They are treated as appliances: they export data into the NixOS " "estate under the data clause of every equipment RFQ (section 5.1) and host none of our " "services.", "**What it gives the business:** no licence fees (ERPNext charges no fee per seat, so a new " "kiosk or office user costs nothing in licences); no lock-in to a software vendor; every " "machine reproducible from the repository; and a record customers can audit, because the " "hash-chained event log and the code that writes it can both be inspected.", ]), P("**Later: a service for other pressing plants.** Once the plant has run the stack in production " "for at least a year, the project can work with other pressing plants worldwide in three ways: " "an open vinyl plant stack (the NixOS modules, an ERPNext app for pressing with stampers, test " "pressings and genealogy, and press adapters for Newbilt and Pheenix machines over OPC UA, S7 " "and ADS); services (factory automation and data acquisition integration and commissioning at " "other plants, remote monitoring and support, hosting of ERPNext and the factory application, " "training); and shared development, with each plant contributing the adapters for its own " "machines. **None of this is in the plan's revenue:** like stamper supply to other plants, it is " "an upside with no price or volume yet, and it starts only after the plant has proved the stack " "on its own floor."), # -------------------------------------------- 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 biomass-fired steam boiler **and** electroplating " "from day " "one, not in a later phase. That favours the industrial estate (licensing through the estate, " "shared effluent treatment) and makes zoning the first check everywhere else."), P("**Payap University** approached the project and is interested in leasing land next to a " "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 " "biomass-fired steam boiler and electroplating (the neighbour's pharmaceutical permit proves " "little).", "**Lease-ability:** Chanote title, university council approval, and whether campus land of a " "private university can be leased commercially; with Thai counsel, together with the lease " "terms below.", "**The GMP neighbour:** a pharmaceutical plant is sensitive to the biomass boiler's stack, galvanics " "extraction, extrusion fumes, noise and trucks; emission and buffer rules go into the lease, " "not after the first complaint.", "**Flooding:** Payap describes the land as low-lying when bought; check the plot against the " "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 with truck access for biomass deliveries, a " "separated battery enclosure, and a medium-voltage connection from PEA (800 to 1,000 kVA for the " "five-press backbone on biomass steam; electric steam would need 1,250 to 1,600 kVA)."), H2("6.2 The building"), P("The main building is a single-storey steel portal frame (pre-engineered) of **60 × 25 m " "(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. " "At the lower half of the table everything fits in " "1,500 m²; at the upper half, finished goods move to a second building."), P("Figures 8 to 10 show the plant as the plant and business plan calculator draws it for " + label() + ". The calculator draws the Payap scenario model (section 6.1): a 128 × 25 m production floor in " "process order along the glazed visitor corridor, a two-storey office, the detached utility yard " "and a press hall of ~870 m² laid out for five Duplex bays and four Classic positions, on a " "150 × 150 m placeholder plot. The building described above and the zone table are the 60 × 25 m " "hall for Mueang Chi; which layout is built is decided once a plot passes zoning and lease-ability. " + "The views look at the front of the site: the road, the car park, the office and the " "visitor-corridor facade are in the foreground. " + "The calculator itself is interactive: rotate, zoom, switch floors and tap any object for its " "figures and their source."), IMG(pick("renders/calculator/plan-a-iso-roof.png", "renders/calculator/plan-b-iso-roof.png"), 170, "Figure 8. The site from above, " + label() + " preset of the plant and business plan calculator: " "PV on the factory roof, ~520 kWp" + pick(", supplied through the solar PPA (the battery is drawn " "too; whether a PPA offer includes it is open)", ", owned with the battery") + ", with the office roof and the car and scooter canopies PV-ready and without panels; the " "utility yard (biomass boiler hall and chiller compound built for four modules each, the " "biomass fuel store, the flue stack and dust collector, pump and heat-exchanger room, " "transformer, water treatment, PVC silos) and the phase 2 reserve. Schematic render of the " "Payap scenario model (docs/fleet-calculator.html); positions and envelopes are estimates."), IMG(pick("renders/calculator/plan-a-iso-gf.png", "renders/calculator/plan-b-iso-gf.png"), 170, "Figure 9. Ground floor with the roofs cut away, " + label() + " preset: from the west end the " "staff entry, workshop, galvanics (PASU, PPPU, PDPU, PMPB), Sibert stamper prep, metrology" + pick(" (launch tier)", "") + ", PVC lab and colour store, then the press hall, optical inspection, " "finishing and packaging, the warehouse and dispatch; the office with reception, lathe and cutting " "room, listening room and archive. " + pick( "The frame is crane-ready with the crane rented; the visitor corridor, cassette and CD-R come " "later. ", "With the 5 t crane, the visitor corridor and the cassette and CD-R rooms. ") + "Schematic, estimates."), IMG(pick("renders/calculator/plan-a-iso-hall.png", "renders/calculator/plan-b-iso-hall.png"), 170, "Figure 10. The press hall close up, " + label() + " preset: " + pick( "Duplex system 1 (two HRP 12 presses with their extruders) and the Classic; the dashed " "outlines are the free Duplex bays and Classic positions for growth. In the yard, biomass " "boiler modules B-1 and B-2 with the fuel store, flue stack and dust collector, and chillers " "CH-1 and CH-2, with B-3, B-4, CH-3 and CH-4 free", "Duplex system 1 (two HRP 12 presses with their extruders) and the Classic, in a hall laid " "out for five Duplex bays and four Classic positions; the dashed outlines are the free bays " "and positions for growth. In the yard, biomass boiler modules B-1 and B-2 with the fuel " "store, flue stack and dust collector, and chillers CH-1 and CH-2, with B-3, B-4, CH-3 and " "CH-4 free; the 5 t crane over the hall, the visitor corridor " "and the cassette and CD-R rooms are in place") + ". Schematic, estimates."), H3("Crane, workshop and visitor corridor"), 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, and the tour route and the Payap programmes start with the plant.", ])), H3("Utility yard and water-treatment building"), T(["Detached utility yard (decided October 2026)", "Size (estimate)"], [ ["Boiler hall, four 500 kg/h biomass module positions (B-1 and B-2 at launch)", "~162 m² (18 × 9 m), " "6.0 m high"], ["Biomass fuel store (~6 to 7 weeks of fresh chips; ~80 m² would hold a 3-month monsoon " "stock)", "42 m² drawn"], ["Chiller compound, open and screened, four pads (CH-1 and CH-2" " at launch)", "~135 m² (12.5 × " "10.8 m)"], ["Cooling pump and heat-exchanger room", "~40 m² (8 × 5 m)"], ["Flue stack, with the dust collector and fans along the boiler hall's back wall", "14 m"], ["**Yard in all**", "**~379 m²**, against 178 m² before the four-module decision"], ], widths_mm=[110, 60], caption="The biomass bank of both plans sets the boiler hall (an electric bank would need about half). No " "cooling tower: the chillers are air-cooled. The rooms are built once for four modules " "and the plant goes in one module at a time; the yard sits outside the main building " "because the boiler must have its own room and biomass deliveries need yard access."), 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 under PV-ready canopies (steel for ~40 " "kWp of panels in the construction RFQ; panels later), a ring foundation " "for a 9 m fire-water tank with its pump house and one for a 5 m raw-water tank, a fire ring main " "and hydrants, stormwater drainage and domestic sanitation. With the buildings, ~6,549 m² or 68% " "of the modelled plot is sealed, so stormwater attenuation, quite possibly a detention pond, may " "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). 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; " "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. " "The PV-ready provisions (the canopy steel it already specifies, roof loads for panels, conduit to " "the main board and a spare way for a later inverter) belong to the same works."), H3("What the building costs, and what is not known"), T(["Block", "USD", "THB", "Basis"], [ ["Building ~1,500 m² plus civil and site works", "650k to 1,100k", "21.4M to 36.3M", "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; the biomass fuel store and handling (1.0M to 2.0M THB) sit in " "the utilities block"], ["Water-treatment building next to galvanics", "52k to 87k", "1.7M to 2.9M", "estimate at the " "building rate"], pick(["**Together**", "**~0.84M to 1.48M**", "**~28M to 49M**", "sum of the blocks; the plan " "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 biomass boilers run under a licensed boiler " "controller, a certified attendant from the maintenance team (section 7.2)."), P("Decided in October 2026: every member of staff, office included, gets group health insurance " "(inpatient and outpatient) and a yearly check-up on top of social security, plus the " "occupational checks Thai law requires for risk-factor work (press-floor heat and noise, " "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", "automation, full metrology and energy efficiency") + ", not on pressing plastic " "discs. The research behind this dates from July 2026 (the solar rules rechecked in October " "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", "full equipment list") + ")."], ["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."], ["Battery storage, alternative-energy measure (Announcement 3/2568, in force 1 July 2025)", "BOI no longer promotes solar installations, rooftop or farm, for applications from 1 July " "2025: Announcement 3/2568 took them out of the measure and ended the per-MW solar caps set in " "April 2025, so the array earns no CIT exemption whoever owns it. What remains is battery " "energy storage and its inverters, with the investment eligible for the CIT exemption capped " "at THB 12M per MW (B Global Law, January 2026; to confirm with the BOI consultant). " + pick( "In this plan the battery comes through the solar PPA if the offer includes it, and then " "the plant owns nothing that qualifies; bought by the plant, the 271 kWh battery (2.0M to " "3.5M THB installed, estimate) may qualify (section 5.4).", "This plan owns the 271 kWh battery (2.0M to 3.5M THB installed, estimate), which may " "qualify; its eligible value under the cap is for the BOI consultant (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("~132M to 233M THB with the ramp-up reserve (~182M at the midpoint)", "~156M to 277M THB with the ramp-up reserve (~217M at the midpoint)") + " the plan sits around that line, so the consultant " "confirms which applies. In practice it is roughly 4 to 6 months end to end to the certificate; " "the company is incorporated under it; machinery is imported within a window commonly 30 months " "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, the boiler rules or the air-emission " "limits for the biomass boiler's stack. **Galvanics " "is in the plant from launch, so the electroplating line, its chemistry and its zero-discharge " "effluent system are in the first factory licence application**, not a later amendment. The " "earlier plan to keep galvanics out of the first licence to protect the schedule no longer " "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 biomass-fired steam boiler and an electroplating line. The industrial " "estate's licensing and shared effluent treatment are the easiest path; on Mueang Chi the " "permit is ours; on Payap land the lessor's written consent comes on top.", "**Zero discharge is the design, and the application says so:** rinse water through the ZLD " "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. Both plans price the biomass modules from a Thai maker to the " "ASME specification of section 5.4. A Chinese biomass boiler" + pick( " (the open decision point of section 5.4)", "") + " would take the imported-boiler route of " "the notification: verification by a registered certification body with the full dossier, and an " "ASME Section I design at 1.25 MPa with the S stamp, because a boiler built to the Chinese GB code " "would rest on 'or equivalent' with no precedent found. **Biomass adds to the permit work** (to " "confirm with the permit engineer before the RFQ): the boiler registered with DIW; the air-emission " "limits for a solid-fuel boiler met at the 14 m stack, with the dust collector in the boiler " "package; the fuel store and ash handling in the factory licence drawings; and the licensed " "boiler controller, a certified attendant from the maintenance team. " + "DIW has announced a " "revision of the boiler, pressure-vessel and refrigeration rules, so they are rechecked before " "the RFQ, and a certification body is engaged before any boiler order."), 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; the solar papers (no factory licence " "for rooftop PV since 28 December 2024, an ERC exemption notification under 1,000 kVA, and PEA " "interconnection approval with zero-export control in 3 to 6 months; section 5.4); 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."), ]