New docs/artist-platform.md: upload master and artwork with automatic audio, artwork and rights checks; an itemised price calculator for every customer (per-title vs per-copy lines, price-per-copy curve, lead time from the production-timeline quote table, versioned price list); and fan-funded campaigns that press and dropship per fan once the goal is reached, refund otherwise. Covers goal maths, payments (charge into a ring-fenced account, CNX as seller of record, legal opinion first; the Qrates failure as the design rule), repress pre-orders, architecture on the cnx-factory stack with the public side on a fleet machine, PDPA, phasing (calculator public early as a run-size probe, campaigns only after first releases ship), cost and open decisions. Backlinks from README, process flow, production timeline, revenue model, digital factory and roadmap items 1 and 20; total investment added-scope table gains the platform line.
19 KiB
Artist Platform: Upload, Price Calculator and Fan-Funded Pressing
A web platform where anyone who wants records made, from a bedroom artist to a label, can:
- Configure a record in a calculator and get a transparent, itemised offer: what every line costs, which costs are per title and which per copy, how the price per copy falls with quantity, and when it ships.
- Upload the master and the artwork, and have both checked before anyone pays for anything.
- Either order directly, as any label would, or launch a fan-funded campaign: a page the artist shares with fans, who pre-order their copy. If enough fans commit before the deadline, the plant presses and ships each fan's copy. If not, every fan is refunded and nobody is left with a garage full of records.
The calculator is for every customer. The campaign is the part that opens vinyl to artists who could never front the cost of a run. Both sit on top of what the plan already has: the stages and the three artist gates in process flow, the lead times in production timeline, the order intake, client vault and customer portal in digital factory, and the dropshipping already in the fulfillment step. Every figure on this page without a source is an estimate.
Why it fits this plant
- The bottom of the Thai market is unserved. The one Thai plant we have seen quotes a 150-unit minimum that is "rarely accepted because the cost is way too high", so runs under 300 are effectively unavailable (revenue model). The reason is a per-title cost (imported stampers, outsourced cutting) that does not shrink with the run. In-house cutting and plating collapses it, which makes short runs viable for CNX in a way they are not for an importer of metalwork. Short runs need a channel; this is it.
- Fan funding removes the artist's risk. What stops an indie artist ordering 200 records is not the price per copy, it is paying for all 200 up front without knowing whether they sell. A campaign turns that around: the fans pay first, the run is exactly as big as the demand.
- CNX owns the presses. The known platforms of this kind are brokers over a network of other people's plants. A plant-owned platform controls its own price, schedule and quality, and keeps the margin on manufacturing instead of a commission.
- Transparency is already the brand. The plan is built on traceability that customers can see. The same event log can tell a fan "cut on 12 March, plated, test pressing approved by the artist, pressing now, ships next week", automatically and truthfully.
Who else does this, and the lesson
| Model | Notes | |
|---|---|---|
| Qrates (Japan, global) | Crowdfunding plus pressing through partner plants, with a profit calculator for the artist | Its site carries a notice (October 2026) that the service is suspended "due to unforeseen financial difficulties"; artists report funded projects caught in the wind-down |
| Diggers Factory (France) | Upload tracks and artwork, set a sales goal; if missed, the project is cancelled and everyone refunded, or the artist funds the rest; about 8 weeks of manufacturing after success (2023 description); also sells direct pressing paid up front | An on-demand network rather than a single plant |
| elasticStage (UK) | Each record made when it is ordered, no minimum, no campaign | Its own on-demand production technology; a different answer to the same problem |
The Qrates lesson is the design rule for the money: fan payments are held apart from the company's own money and are never working capital, so that if anything goes wrong, fans can be refunded and artists keep their projects. See "Payments" below.
The calculator
What the customer chooses
| Choice | Options |
|---|---|
| Format | 12" LP, 10", 7"; single or double disc; 33⅓ or 45 rpm |
| Weight | 140 g, 180 g |
| Colour | Black, solid colour, marbled or splatter (the semi-automatic line's speciality) |
| Quantity | Free entry, with the price-per-copy curve shown live |
| Labels | Printed, pressed into the record (the only kind this plant makes) |
| Inner sleeve | Paper, poly-lined |
| Jacket | None (customer supplies), plain, printed single, printed gatefold; printed by the local packaging partner |
| Extras | Insert, hype sticker, shrink wrap, numbered edition |
| Audio services | Customer supplies a vinyl-ready master, or CNX vinyl mastering per side |
| Metal | Lacquer cutting and stampers (in-house; bridge stampers from Stamper Discs until the galvanics line exists) |
| Test pressings | Number of copies for the artist |
| Delivery | Bulk to one address, dropship to each buyer, or collect at the plant |
What the customer gets back
- Every line itemised, grouped into per title (mastering, cutting, stampers, test pressings, setup) and per copy (pressing, labels, sleeve, jacket, extras), with pass-through items such as the printed jacket marked as such.
- The price per copy against quantity as a curve, so it is obvious why 100 copies cost more each than 500, and where the steps are.
- A lead time in weeks from the quote table in production timeline: counted from test-pressing approval, with the stages before it shown separately as "typically X weeks, subject to your approvals", exactly as that page says a quote should be made.
- An offer with a validity date and the price-list version it was computed from.
How it computes
Price = sum of the per-title lines + quantity × sum of the per-copy lines, with quantity tiers where a supplier's price steps (jacket print runs). All rates come from one versioned price list in the factory application, and every offer records the version it used, so any old offer can be reproduced to the baht. That follows the append-only rule the factory application already applies to everything else.
Transparency rules, so the word means something:
- every line visible, no fees that appear later;
- pass-through costs (the jacket) shown at what the partner charges plus a stated handling margin;
- quoted in THB for Thai customers and in USD for export customers, the currency choice the revenue model already recommends deciding early.
What it looks like with numbers
An illustration of the shape, using the midpoints of the working assumptions in the revenue model: 38,000 THB per title (mastering, cutting, stampers, test pressings; range 19,000 to 57,000), 132 THB per copy for pressing, labels, inner sleeve and assembly (range 115 to 150), plus ~100 THB per copy for a printed jacket and shrink at short run (estimate, until the packaging partner quotes). Black 12", 140 g:
| Copies | Per-title share per copy | Per copy | Per copy, all in | Order total |
|---|---|---|---|---|
| 100 | 380 | 232 | ~612 THB | ~61,200 THB |
| 200 | 190 | 232 | ~422 THB | ~84,400 THB |
| 300 | 127 | 232 | ~359 THB | ~107,600 THB |
| 500 | 76 | 232 | ~308 THB | ~154,000 THB |
| 1,000 | 38 | 232 | ~270 THB | ~270,000 THB |
Do not read the level off this table. At these Western-benchmark rates the 300-copy price lands near 360 THB, while the Thai market pays 650 to 950 THB for 300 today. That is the very gap the revenue model flags as its biggest open question. The real price list is set after market validation (roadmap item 1); the calculator only makes whatever prices are chosen legible.
Fan-funded campaigns
Before the campaign goes live
Nothing goes in front of fans that the plant cannot make:
- Upload: master files (WAV/FLAC/AIFF) with checksums at both ends, resumable for album-size uploads, straight into the encrypted client vault (module 2 of the factory application).
- Automatic audio checks, reported to the artist within minutes: format, sample rate and bit depth, clipping and true peak, side length against the chosen format, and low-frequency phase problems that make a groove hard to cut.
- Automatic artwork preflight: label and jacket files against the templates (size, centre hole and safe area for the pressed-in label, bleed, resolution, colour space), with a rendered mock-up of the jacket and the vinyl colour.
- Engineer check: a cutting engineer confirms side length and level are cuttable. On a Sillitoe lathe this is a number from the software's virtual groove (disk capacity in percent) without a test cut; see vendor landscape.
- Rights: the artist confirms they own or have licensed the recordings and the compositions (covers need a mechanical licence), and an automatic audio fingerprint check (open tools such as Chromaprint/AcoustID) catches obvious bootlegs before a person looks.
- Gate 1, master plan approved, recorded as the event the process flow already defines, plus the approved artwork proof that packaging QC later checks print against.
The campaign page
- Artwork mock-up, story, track list, short audio previews (a few seconds to a minute per track at reduced quality, rendered by the plant from the master; the full master never leaves the vault, which matters because pre-release audio is a leak target per facility security)
- Price per copy, shipping by destination, goal, progress, deadline, estimated ship month (campaign close plus the quoted lead time), and what happens if the goal is missed
- Sharing built for where the fans are: a link, a QR code for gigs and merch tables, and LINE alongside the international networks; Thai and English
- Duration chosen by the artist, 14 to 45 days (estimate)
The goal
The goal is the larger of two numbers:
- the plant's minimum campaign run, set by setup and stamper economics on the semi-automatic line (100 copies as a planning figure, to be decided), and
- the artist's break-even: the copies at which the fan price covers the per-title costs, the per-copy costs and the payment fees.
With the illustration above and a fan price of 1,200 THB (an example, not a recommendation) and payment fees of about 3.5%: break-even is 38,000 / (1,200 − 42 − 232) ≈ 41 copies, so the goal is the 100-copy minimum. At 100 copies the artist keeps about 546 THB a copy, at 300 about 799 THB, because the per-title cost spreads. The calculator shows the artist this before launch, for any price they type in. Shipping is charged to the fan separately at checkout, at cost.
Over-subscription is good news: the run is pressed at the final number plus the artist's own copies and the spares the reject allowance already covers. An artist can cap a campaign for a limited, numbered edition.
Payments
The decision that matters most, and the one Qrates got wrong.
| A. Charge at pledge, refund on failure | B. Save card, charge at success | |
|---|---|---|
| How | Fan pays when pledging; money held in a ring-fenced account; automatic refund if the goal is missed | Card stored by the payment provider; charged only when the campaign succeeds |
| Thai fit | Works with PromptPay QR, cards and wallets, which is how Thai fans pay | Cards only; excludes PromptPay |
| Risk | CNX holds fan money for the campaign's length: must be ring-fenced and legally clean | Some charges fail at the end, so a campaign that "succeeded" can come up short |
| Note | Refund paths differ by payment method; confirm each with the provider | A card authorisation cannot simply be held: Opn (Omise) allows an authorise-and-capture pause of up to 7 days, far short of a campaign |
Recommended: A, with three rules. Fan money sits in a separate account and is never used for operations until the campaign succeeds. CNX is the seller of record to the fan (CNX makes and sells the record, the artist licenses the music and receives the margin), which keeps VAT, consumer protection and refunds in one place. And before the first campaign, a Thai legal opinion on whether holding pre-order money for a third party's project needs anything beyond that, for example under the Bank of Thailand's payment-service rules. Card data never touches CNX servers: the provider's hosted payment page or fields keep it out of scope.
When the campaign succeeds
The campaign becomes a production order and runs the normal chain: vinyl mastering if ordered and gate 2 (master approved by the artist), cutting (only now, because a lacquer has to be plated within one to three days), stampers, test pressings and gate 3 (artist approves the test pressing; a photo or short video of it to the fans is cheap marketing), the run, packaging, and dropshipping one parcel per fan with tracking, which is fulfillment step 9 as already planned.
Fans follow it on the campaign page, fed from the factory application's event log: the progress is the plant's own record, not a status someone remembers to update. If a stage slips, the estimated ship month moves and every fan is told.
An optional "test pressing first" campaign does mastering, cutting and test pressings before launch, so fans hear and see the real record. The artist pays the per-title services up front for it; it suits artists with an audience but no track record.
When it does not succeed
Automatic refunds to every fan, or, if the artist chooses, the artist pays the shortfall and the run goes ahead at the minimum (the Diggers Factory option). The artist's uploaded master and artwork stay in the vault for a second attempt.
After the first run: repress on demand
Once a title exists, its mother sits in the archive and a repress takes 1.5 to 2.5 weeks of plant time (production timeline). The campaign page can reopen as "pre-order the repress, pressed when 100 more are in", which turns one release into a recurring one. This is the part a plant with in-house plating can offer and a broker cannot.
For labels and regular customers
The same calculator and upload path, with an account:
- negotiated rates as a customer-specific price-list version;
- direct orders with a deposit instead of a campaign;
- the three gates approved in the customer portal (digital factory, modules 1 to 3 and 10);
- bulk delivery, dropshipping, or both.
How it is built
Same stack and same rules as the factory application in
digital factory: Rust (axum, SQLx, minijinja,
HTMX) on PostgreSQL, in the cnx-factory repository, packaged as a
flake, deployed by the clan. The platform extends modules 1 (orders and
releases), 2 (audio intake and the client vault), 3 (the gates) and 10
(customer portal) with a price list and calculator, campaigns, pledges,
payments and per-fan shipments.
Where the public side runs. The digital factory plan accepts that a WAN outage at the plant stops the customer portal. That is acceptable for a label checking an order, not for a campaign page in the hour an artist posts it, or for payment-provider webhooks. Proposal:
- the public process (calculator, campaign pages, checkout, payment
webhooks, upload staging) runs on a fleet machine with a public
address,
web01or a sibling declared in the clan the same way, with its own small PostgreSQL for campaigns and pledges; - the plant core stays the authority for everything with a
production identity: when a campaign succeeds it becomes an order on
vinyl-core, and from then on the fan-facing progress is read through the plant, as the portal is. Design decision 7 ("the portal is a view, not a copy") still holds for production data; campaigns and pledges are new data that start life in public; - uploads land encrypted in a staging area on the public machine, are pulled over the mesh into the client vault, checksum-verified on both sides, and deleted from staging; previews are rendered on the plant and published outwards, so a full master never rests outside the vault.
No SaaS beyond the payment provider (Opn/Omise, 2C2P or a bank gateway, to be chosen), in line with the plan's standing rule that every plant service runs on the NixOS fleet.
Personal data. Fans' names and addresses are personal data under PDPA, with CNX as controller as the seller of record. An artist gets fan contact details only where the fan ticked a consent box; that list is worth a lot to an artist, and consent is what makes it legal to hand over.
The calculator is also a research instrument
Every configuration anyone builds, anonymously logged, is a data point on what people actually want to order: run size, colour, weight, packaging, how many walk away at which price. The revenue model's open run-size question (roadmap item 1) is exactly that distribution. So the calculator should go public long before the plant exists, with indicative prices and a "tell me when it opens" list, and no payments.
Phasing
| Roadmap phase | Platform step |
|---|---|
| 0 to 1, validate | Public calculator with indicative prices and an interest list; configuration logging feeds market validation |
| 3, build | Direct orders, uploads, automatic checks and gates, as part of factory application v1 |
| 4, launch | Campaigns go live after the first paying releases have shipped and lead times have been measured. No fan money is taken against a plant that has not yet delivered |
| 5, expand | Repress pre-orders, numbered editions, international shipping at scale, cassette and CD formats from the business plan's scope |
Rough cost (estimate)
| Item | THB | USD |
|---|---|---|
| Public side on top of the factory application: calculator, campaigns, payments, uploads and previews, preflight, fan accounts | 1.3M – 3.0M | 40k – 90k |
| Hosting | on the existing fleet | negligible |
| Payment fees | per transaction, inside the fan price | about 3 to 4% on cards, less on PromptPay (to be confirmed with the provider) |
Not yet in the roll-up in total investment; listed there as added scope.
Risks
- Most crowdfunding campaigns fail, and each failed one still costs CNX checking and setup time. A small non-refundable setup fee, credited against the order if the campaign succeeds, is one answer; decide it before launch.
- Lumpy demand. Campaigns end on dates nobody controls. The scheduler in the factory application should see live campaigns, weighted by how close they are to their goal, and cap how many can close in the same week.
- Fans are not labels. They expect a perfect record and a date. Clear wording on what vinyl sounds like, the artist's test-pressing approval, and honest ship months carry most of this.
- Rights. Someone will upload music that is not theirs. Warranty, fingerprint check, a human look, and a takedown route.
- Money. Covered by the payment rules above; the legal opinion comes before the first campaign, not after.
Open decisions
- Seller of record: CNX (recommended) or the artist.
- Payment model: charge-and-refund into a ring-fenced account (recommended) or save-card-and-charge; legal opinion either way.
- Fee model: margin inside the published price list only (recommended, it is what "transparent" means) or a separate platform commission.
- Minimum campaign run: 100 copies as the planning figure.
- Public price list: fully public rates, or public list prices with account-specific rates for labels.
- Hosting split: public process on a fleet machine as proposed, or everything on the plant core at launch volumes.
- Name: under CNX Vinyl, Poy Records, or its own brand.