Business plan: isometric calculator views instead of FreeCAD, software section with screenshots
- Cover and section 6.2 now use the isometric plant view of the plant and business plan calculator, drawn with each version's own preset: the cover (roofs, no labels), Figure 8 the site from above, Figure 9 the ground floor cut open, Figure 10 the press hall close up. The FreeCAD aerial render, the Mueang Chi site plan and the hall layout sketch are no longer in the plan; the captions say the calculator draws the Payap scenario model while the 6.2 text and zone table are the Mueang Chi hall. - New section 5.5 "The software: plant overview, factory console and artist platform" with six screenshots of the demos: the plant overview (simulated SCADA), the factory console press floor and its ERPNext link, the artist ordering offer, fan funding and the record passport. Simulated data is marked as such; the platform name stays undecided. - Figures renumbered (budget card 11, cash 12) and named in the section 15 source table. Renders in docs/renders/calculator/ and docs/renders/demos/; README bullet updated.
No files matched your search
@@ -17,7 +17,7 @@ def blocks():
|
||||
title="What It Takes to Build a Top-Notch Vinyl Plant",
|
||||
subtitle="Business plan for a full-service vinyl, cassette and CD manufacturing plant "
|
||||
"in the Chiang Mai region, Northern Thailand",
|
||||
image="renders/aerial-hero.png",
|
||||
image=pick("renders/calculator/plan-a-cover.png", "renders/calculator/plan-b-cover.png"),
|
||||
lines=[
|
||||
"**Prepared for:** the project's lead investor",
|
||||
"**Prepared by:** Simona Meesaiyati (Project Lead) and Alexander Grabowski (Technical Consultant), "
|
||||
@@ -34,7 +34,9 @@ def blocks():
|
||||
"This version is Plan B: the whole chain, cutting and galvanics included, with five presses "
|
||||
"at launch and everything in, at ~225M THB (~224M). A second version, Plan A (~180M THB), "
|
||||
"launches with three presses and six cost levers. ")
|
||||
+ "The plan price includes the ramp-up reserve and carries no contingency. Draft 0.3 replaces "
|
||||
+ "The plan price includes the ramp-up reserve and carries no contingency. Cover picture: the "
|
||||
"plant as the plant and business plan calculator draws this plan (schematic, Payap scenario "
|
||||
"layout, section 6.2). Draft 0.3 replaces "
|
||||
"draft 0.2 (October 2026), which described a single launch plant priced with a contingency.",
|
||||
))
|
||||
out.append(TOC())
|
||||
|
||||
@@ -497,6 +497,81 @@ def blocks():
|
||||
"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. "
|
||||
+ pick("", "The demo draws the launch plant (Duplex system 1 and the Classic); Plan B adds the "
|
||||
"second Duplex system to the same screen. ") +
|
||||
"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."),
|
||||
|
||||
# -------------------------------------------- 6 site and building
|
||||
H1("6. Site and building"),
|
||||
H2("6.1 Land: a long lease, three candidates"),
|
||||
@@ -584,12 +659,6 @@ def blocks():
|
||||
"to 1,600 kVA with it)."),
|
||||
|
||||
H2("6.2 The building"),
|
||||
IMG("renders/site-plan.png", 120, "Figure 2. Site plan on the candidate Mueang Chi parcel (massing "
|
||||
"model, July 2026): main building with rooftop PV, utility yard, "
|
||||
"fire and raw-water tanks, parking canopies and the phase 2 "
|
||||
"building. It predates the crane, the visitor corridor and the "
|
||||
"utility yard built for four modules. Source: parametric model, "
|
||||
"project repository."),
|
||||
P("The main building is a single-storey steel portal frame (pre-engineered) of **60 × 25 m "
|
||||
"(1,500 m²)**, designed from day one for an overhead crane, with a 10° monopitch roof carrying the "
|
||||
"PV array, low eave 7.0 m, high side ~11.4 m. The floor is a 200 mm slab rated 30 kN/m² (3 t/m², "
|
||||
@@ -624,31 +693,42 @@ def blocks():
|
||||
"estimate). ") +
|
||||
"At the lower half of the table everything fits in "
|
||||
"1,500 m²; at the upper half, finished goods move to a second building."),
|
||||
IMG("production-hall-layout-sketch.png", 170, "Figure 3. Rough layout sketch of the 60 × 25 m hall "
|
||||
"(October 2026): machine door and workshop at the ramp end, then mastering, galvanics, stamper "
|
||||
"prep, material area and lab, the press hall, inspection, QC and packaging along the glazed "
|
||||
"visitor corridor" + pick(" (built later in this plan)", "") + ", with the 5 t crane runway "
|
||||
"over the production compartment up to the warehouse fire wall. " + pick(
|
||||
"It still draws two Classic positions (the plan installs one)",
|
||||
"It still draws one Duplex system and two Classic positions (the plan installs two Duplex "
|
||||
"systems and one Classic)") + " and "
|
||||
"puts reception and the cutting room under the crane's travel, a conflict the Payap scenario "
|
||||
"model resolves with a separate office building. All positions are estimates."),
|
||||
P("Figure 4 shows the same plant as the calculator draws it for " + label() + ": the ground floor of a "
|
||||
"whole site with the press hall cut open, the machines this plan installs and the free positions it "
|
||||
"keeps for growth."),
|
||||
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 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: "
|
||||
"the factory with roof PV" + pick(" supplied through the solar PPA (the battery is drawn too; "
|
||||
"whether a PPA offer includes it is open)",
|
||||
" and battery, owned") +
|
||||
", the office, the utility yard (boiler hall and chiller compound built for four modules each, "
|
||||
"pump and heat-exchanger room, transformer, water treatment, PVC silos), parking with PV canopies "
|
||||
"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 4. The plant at a glance in the plant and business plan calculator, " + pick(
|
||||
"Plan A preset: Duplex system 1 and the Classic in a press hall laid out for five Duplex bays "
|
||||
"and four Classic positions, boiler modules B-1/B-2 and chillers CH-1/CH-2 (the free yard "
|
||||
"positions are marked), the frame crane-ready with the crane rented",
|
||||
"Plan B preset: Duplex systems 1 and 2 and the Classic in a press hall laid out for five Duplex "
|
||||
"bays and four Classic positions, boiler modules B-1/B-2 and chillers CH-1 to CH-3 (the free "
|
||||
"yard positions are marked), the 5 t crane and the cassette room") +
|
||||
". Schematic render (docs/fleet-calculator.html, also at cnxvinyl.lol/demos/fleet-calculator/) of a "
|
||||
"generic site after the Payap scenario model and the utility yard of scale.md, not the Mueang Chi "
|
||||
"parcel of Figure 2; positions and envelopes are estimates, not to scale where the vendors publish "
|
||||
"no footprint."),
|
||||
"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, boiler "
|
||||
"modules B-1 and B-2 and chillers CH-1 and CH-2, with B-3, B-4, CH-3 and CH-4 free",
|
||||
"Duplex systems 1 and 2 (four HRP 12 presses with their extruders) and the Classic; the "
|
||||
"dashed outlines are the free Duplex bays and Classic positions. In the yard, boiler modules "
|
||||
"B-1 and B-2 (B-3 and B-4 free) and chillers CH-1 to CH-3 (CH-4 free)") +
|
||||
". 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 "
|
||||
|
||||
@@ -496,10 +496,10 @@ def blocks():
|
||||
"the part of Plan B that can still return to a growth step, leaving the three-press launch "
|
||||
"plant."),
|
||||
]),
|
||||
P("Figure 5 is the budget check of the plant and business plan calculator with the " + label() +
|
||||
P("Figure 11 is the budget check of the plant and business plan calculator with the " + label() +
|
||||
" preset, contingency kept out of the total as in this plan."),
|
||||
IMG(pick("renders/calculator/plan-a-budget.png", "renders/calculator/plan-b-budget.png"), 160,
|
||||
"Figure 5. Budget card of the plant and business plan calculator, " + pick(
|
||||
"Figure 11. Budget card of the plant and business plan calculator, " + pick(
|
||||
"Plan A preset: 161.7M THB at the midpoint without contingency, 171.7M to 181.7M with the "
|
||||
"ramp-up reserve of 10M to 20M, inside 180M at the midpoint",
|
||||
"Plan B preset: 209.2M THB at the midpoint without contingency, 219.2M to 229.2M with the "
|
||||
@@ -794,7 +794,7 @@ def blocks():
|
||||
"exemptions shield part of early-year profits where there are any.",
|
||||
])),
|
||||
IMG(pick("renders/calculator/plan-a-cash.png", "renders/calculator/plan-b-cash.png"), 160,
|
||||
"Figure 6. Ten years of cash in the plant and business plan calculator, " + pick(
|
||||
"Figure 12. Ten years of cash in the plant and business plan calculator, " + pick(
|
||||
"Plan A preset: cash payback in year ~3.9, IRR ~25 %, NPV ~4.9M USD at 10 %",
|
||||
"Plan B preset: cash payback in year ~3.3, IRR ~32 %, NPV ~9.7M USD at 10 %") +
|
||||
". Year 0 is the midpoint investment plus the ramp-up reserve; years 1 to 3 sell 35, 70 and 90 % of "
|
||||
@@ -1261,7 +1261,8 @@ def blocks():
|
||||
"parametric model"],
|
||||
["fleet-calculator.html", "Plant and business plan calculator: target output and specials share to "
|
||||
"the Duplex/Classic mix, people, utilities, investment and the operating "
|
||||
"picture, with the Plan A and Plan B presets"],
|
||||
"picture, with the Plan A and Plan B presets and the isometric plant "
|
||||
"view (Figures 8 to 12)"],
|
||||
["equipment/pressing-line.md and equipment/newbilt/", "Press fleet strategy, hydraulic ring mains; "
|
||||
"Newbilt offer, site requirements, service "
|
||||
"rates, 2026 product flyers"],
|
||||
@@ -1276,11 +1277,13 @@ def blocks():
|
||||
"came after the show"],
|
||||
["suppliers/china-utilities.md", "Chinese boilers, compressed air and hydraulics; Thai rules for "
|
||||
"imported boilers; what the Chinese route saves"],
|
||||
["digital-factory.md", "Data platform: ERPNext as the only system of record, machine data, the "
|
||||
"factory application, the NixOS fleet"],
|
||||
["digital-factory.md (demos plant-operation.html, factory-console.html)", "Data platform: ERPNext "
|
||||
"as the only system of record, machine data, the factory application, the "
|
||||
"NixOS fleet; the plant overview and factory console demos (Figures 2 to 4)"],
|
||||
["artist-platform.md (demos artist-order.html, make-a-record.html)", "Upload and itemised price "
|
||||
"calculator, fan-funded "
|
||||
"campaigns"],
|
||||
"campaigns, the record "
|
||||
"passport (Figures 5 to 7)"],
|
||||
["process-flow.md, production-timeline.md", "The chain and its checks; order turnaround stage by "
|
||||
"stage, lead times and the repress path"],
|
||||
["traceability.md, quality-automation.md", "The traceability specification; metrology, layered "
|
||||
@@ -1298,8 +1301,10 @@ def blocks():
|
||||
["cnx_vinyl_parametric.FCStd, cnx_vinyl_parametric_payap.FCStd and renders/", "Parametric building "
|
||||
"and site models on "
|
||||
"the candidate "
|
||||
"plots, and their "
|
||||
"renders"],
|
||||
"plots (draft 0.2's "
|
||||
"figures; this draft "
|
||||
"uses the "
|
||||
"calculator's view)"],
|
||||
], widths_mm=[62, 108], font_pt=8.5),
|
||||
P("Vendor PDFs and spreadsheets are primary sources and reflect the state of negotiations at their file "
|
||||
"dates. Treat prices and lead times as snapshots, not commitments."),
|
||||
|
||||
|
After Width: | Height: | Size: 483 KiB |
|
Before Width: | Height: | Size: 556 KiB After Width: | Height: | Size: 556 KiB |
|
After Width: | Height: | Size: 854 KiB |
|
After Width: | Height: | Size: 506 KiB |
|
After Width: | Height: | Size: 485 KiB |
|
Before Width: | Height: | Size: 569 KiB After Width: | Height: | Size: 569 KiB |
|
After Width: | Height: | Size: 888 KiB |
|
After Width: | Height: | Size: 509 KiB |
|
After Width: | Height: | Size: 257 KiB |
|
After Width: | Height: | Size: 398 KiB |
|
After Width: | Height: | Size: 335 KiB |
|
After Width: | Height: | Size: 293 KiB |
|
After Width: | Height: | Size: 298 KiB |
|
After Width: | Height: | Size: 294 KiB |