Business plan
The forecast for selling the console, generated from our cost figures by
scripts/business/bp_model.py. It shows, for each of three legal forms:
- Unit economics: what one unit leaves after VAT, fees, shipping and parts.
- Break-even: how many units per year cover the fixed costs.
- Three-year forecast: revenue, profit, taxes with INPS, and what reaches the owner, under three volume scenarios.
- Cash low point: the money needed before sales pay for themselves, because each production batch is paid up front.
How to update it
- Put the figures in
scripts/business/costs.yaml. For each one, setstatus: realand give the quote or invoice innote. - Run
python3 scripts/business/bp_model.py --update-doc. This rewrites the generated block below. - Or run
/business-plan, which collects the figures, runs the model and explains the result.
Every input that is not a quote is listed at the top of the generated block, so a forecast is never read as if it were built on real numbers.
JLCPCB quotes for the board
Two JLCPCB quotes for the same board (PCB 4 layers, 1.6 mm, HASL; parts mounted on both sides). Splitting them gives the part of each line paid once per order and the part paid per board, which is what the model uses for any order size. USD at 0.92 EUR.
| Line | 5 boards (order W2026041704500077) | 50 boards (cart, 2026-10-16) | Fixed per order | Per board |
|---|---|---|---|---|
| PCB | $31.44 | $109.95 | $22.72 | $1.75 |
| PCBA (parts + mounting) | $164.69 | $556.32 | $121.18 | $8.70 |
| Shipping | $24.29 | $124.65 (7.37 kg) | $13.14 | $2.23 |
| Total | $220.42 | $790.92 | ||
| Per board | $44.08 | $15.82 |
- At 5 boards the PCBA line is mostly its fixed part: setup on both sides, stencils and extended-part fees.
- At 50, parts and mounting cost $8.70 per board. That is less than the parts alone bought from LCSC for 5 sets (10.80 EUR per board).
- With import VAT and clearance, 5 boards landed at about 270 EUR. That gives a clearance fee of about 22.60 EUR per parcel.
- From about 10 boards per order, PCBA costs the same as placing the parts ourselves, and at 50 it is cheaper. See Assembly: our own or JLCPCB PCBA below.
Forecast
Generated by scripts/business/bp_model.py from costs.yaml and tax_it.yaml (2026).
| Input | Status | Note |
|---|---|---|
fx_usd_eur | placeholder | update on the day of the quote |
price.retail_gross | placeholder | consumer price incl. VAT (B2C) |
channels[own webshop] | placeholder | |
channels[marketplace] | placeholder | |
unit_costs.battery | placeholder | LiPo 103665 3000 mAh since 2026-11-01 (AliExpress 1005012931343083); price NOT yet given — still the 5000 mAh cell's single-piece 6.00 (user, 2026-10-15); needs UN38.3 + MSDS |
unit_costs.speaker | prototype | |
unit_costs.buttons_misc | placeholder | button caps, inserts, FPC, wires |
unit_costs.packaging | placeholder | box, foam, manual, labels (WEEE bin, CE) |
assembly_routes.self.unit_costs.assembly_test | placeholder | place + reflow + fix + fit display/battery/case + flash + test: ~40 min at 15 EUR/h |
assembly_routes.self.shipments.jlcpcb | placeholder | fixed part as on the PCBA quotes; bare PCBs weigh ~40% of an assembled board (estimate) |
assembly_routes.self.shipments.lcsc | placeholder | parts, paste, SD cards, screws, speaker, button caps |
assembly_routes.self.one_off.assembly_tools | placeholder | hot plate / reflow, tweezers, microscope |
assembly_routes.pcba.unit_costs.assembly_test | placeholder | fit display/battery/case + flash + test: ~15 min at 15 EUR/h |
shipments.display | placeholder | panel seller |
shipments.battery | placeholder | lithium cells travel on dedicated lines (UN38.3) |
shipments.case | placeholder | case maker; bulky, by volume weight |
per_order.shipping_to_customer | placeholder | cost to us; see shipping_charged |
per_order.shipping_charged | placeholder | what the customer pays for shipping, net |
rates.returns | placeholder | 14-day withdrawal right (Codice del Consumo art. 52) |
rates.warranty | placeholder | 2-year legal guarantee: share of revenue set aside |
rates.eu_sales_share | placeholder | B2C sales to other EU states (OSS above 10k EUR) |
one_off.precompliance_scan | placeholder | one day in an EMC chamber before the formal test (500-1000), so a failure is fixed before paying for the full test |
one_off.emc_radio_tests | placeholder | RED art. 3.1b/3.2: EN 301 489-1/-17, EN 55032/55035, EN 300 328 partly covered by the ESP32-S3 module reports (3000-6000) |
one_off.rf_exposure | placeholder | RED art. 3.1a: EN 62479 low-power assessment (300-800) |
one_off.safety_report | placeholder | RED art. 3.1a: EN 62368-1 (1500-3500); EN 62133-2 and UN 38.3 for the cell come from its supplier |
one_off.cybersecurity | placeholder | EN 18031-1 self-assessment with Espressif's templates (own work + a review); a notified body adds 3000-8000 if a restriction applies |
one_off.rohs_reach | placeholder | supplier declarations + spot XRF screening |
one_off.tech_file_manual | placeholder | Declaration of Conformity, technical file, Italian manual and warnings, labels (CE, WEEE bin, battery) |
one_off.enclosure_tooling | placeholder | injection mould if leaving 3D print |
one_off.company_setup | placeholder | P.IVA / SRLS notary, chamber of commerce |
one_off.website_brand | placeholder | |
one_off.trademark | placeholder | EUIPO 1 class ~850 EUR |
one_off.first_marketing | placeholder | |
monthly_fixed.accountant | placeholder | commercialista; SRL costs more |
monthly_fixed.insurance | placeholder | product liability (RC prodotti) |
monthly_fixed.software_hosting | placeholder | |
monthly_fixed.weee_batteries | placeholder | RAEE + pile consortium fees, CONAI |
monthly_fixed.marketing | placeholder | |
one_off_amortization_years | placeholder | the commercialista decides: 1-5 years |
srl_extra_yearly | placeholder | |
inventory.paid_upfront | placeholder | share of a batch paid at order |
Every figure below moves with them. Replace them with quotes, then regenerate.
Not yet checked against the sources: forfettario, irpef, inps_commercianti, srl, iva, customs. Run /fiscal-italy to check them; a commercialista confirms the final choice.
Cost inputs
Every figure the forecast uses, with where it comes from. EUR, net of VAT.
Per console, any assembly route
| Item | EUR | Parcel | Duty | Status | Source |
|---|---|---|---|---|---|
| pcb_bare | 1.61 | jlcpcb | 0.0% | real | JLCPCB $1.745 per PCB: split of two quotes, 5 pcs $31.44 (order W2026041704500077) and 50 pcs $109.95 (cart 2026-10-16), at 0.92 EUR/USD |
| display | 8.00 | display | 0.0% | real | ILI9488 3.95in, single-piece price (user, 2026-10-15); lower in stock |
| battery | 6.00 | battery | 2.7% | placeholder | LiPo 103665 3000 mAh since 2026-11-01 (AliExpress 1005012931343083); price NOT yet given — still the 5000 mAh cell's single-piece 6.00 (user, 2026-10-15); needs UN38.3 + MSDS |
| speaker | 0.90 | lcsc | 2.0% | prototype | |
| enclosure | 30.00 | case | 6.5% | real | rough case 30 EUR, custom up to 100 EUR (user, 2026-10-15); the low end is used |
| screws | 0.30 | lcsc | 3.7% | real | per console (user, 2026-10-15) |
| buttons_misc | 1.70 | lcsc | 0.0% | placeholder | button caps, inserts, FPC, wires |
| sd_card | 3.00 | lcsc | 0.0% | real | per card (user, 2026-10-15); only if shipped in the box; must not contain ROMs |
| packaging | 2.50 | 0.0% | placeholder | box, foam, manual, labels (WEEE bin, CE) | |
| pcb_order_fee (per order) | 20.90 | 0.0% | real | JLCPCB fixed part of a PCB order, $22.72 (same two quotes; the user's '22 EUR fee'), not shipping |
Assembly route self
Bare PCBs from JLCPCB, parts from LCSC, we place them with a stencil and reflow.
| Item | EUR | Parcel | Duty | Status | Source |
|---|---|---|---|---|---|
| solder_paste | 0.20 | lcsc | 0.0% | real | 10 EUR per 50 g (user, 2026-10-15); ~1 g per board through the stencil is an estimate |
| components | 10.80 | lcsc | 0.0% | real | board parts, 54 EUR per 5 PCBs (user, 2026-10-15) |
| assembly_test | 10.00 | 0.0% | placeholder | place + reflow + fix + fit display/battery/case + flash + test: ~40 min at 15 EUR/h | |
| stencil (once) | 22.00 | 0.0% | real | JLCPCB stencil, reusable (user, 2026-10-15) | |
| assembly_tools (once) | 150.00 | 0.0% | placeholder | hot plate / reflow, tweezers, microscope |
| Parcel | Courier | + per console | Customs clearance | Status | Source |
|---|---|---|---|---|---|
| jlcpcb | 12.09 | 0.80 | 22.60 | placeholder | fixed part as on the PCBA quotes; bare PCBs weigh ~40% of an assembled board (estimate) |
| lcsc | 18.00 | 0.00 | 12.00 | placeholder | parts, paste, SD cards, screws, speaker, button caps |
Assembly route pcba (used by the forecast)
JLCPCB makes the PCB and mounts every part; we fit display, battery and case.
| Item | EUR | Parcel | Duty | Status | Source |
|---|---|---|---|---|---|
| pcba | 8.01 | jlcpcb | 0.0% | real | parts + mounting, both sides, $8.70 per board: split of PCBA $164.69 for 5 (order W2026041704500077) and $556.32 for 50 (cart 2026-10-16); duty 0% (assembled board for a console, HS 9504.50 / 8473.30: confirm with the broker) |
| assembly_test | 4.00 | 0.0% | placeholder | fit display/battery/case + flash + test: ~15 min at 15 EUR/h | |
| pcba_setup (per order) | 111.49 | 0.0% | real | fixed part of a PCBA order, $121.18 (setup both sides, stencils, extended-part fees), from the same two quotes |
| Parcel | Courier | + per console | Customs clearance | Status | Source |
|---|---|---|---|---|---|
| jlcpcb | 12.09 | 2.05 | 22.60 | real | shipping $13.14 + $2.23 per board: split of $24.29 for 5 and $124.65 for 50 (7.37 kg); clearance = the user's 270 EUR landed for 5 - (goods + shipping) x 1.22 |
Parcels merged: lcsc travels in jlcpcb.
Parcels from China, any route (per production order)
| Parcel | Courier | + per console | Customs clearance | Status | Source |
|---|---|---|---|---|---|
| display | 8.00 | 0.00 | 12.00 | placeholder | panel seller |
| battery | 12.00 | 0.00 | 12.00 | placeholder | lithium cells travel on dedicated lines (UN38.3) |
| case | 15.00 | 0.00 | 12.00 | placeholder | case maker; bulky, by volume weight |
Duty is waived on a parcel worth up to 150 EUR (rule being removed by the EU, see tax_it.yaml). Import VAT is paid at customs on every parcel: recovered by the VAT-registered forms, a cost in the forfettario.
One-off and monthly
| Item | EUR | When | Status | Source |
|---|---|---|---|---|
| precompliance_scan | 800 | once | placeholder | one day in an EMC chamber before the formal test (500-1000), so a failure is fixed before paying for the full test |
| emc_radio_tests | 4,000 | once | placeholder | RED art. 3.1b/3.2: EN 301 489-1/-17, EN 55032/55035, EN 300 328 partly covered by the ESP32-S3 module reports (3000-6000) |
| rf_exposure | 500 | once | placeholder | RED art. 3.1a: EN 62479 low-power assessment (300-800) |
| safety_report | 2,500 | once | placeholder | RED art. 3.1a: EN 62368-1 (1500-3500); EN 62133-2 and UN 38.3 for the cell come from its supplier |
| cybersecurity | 1,500 | once | placeholder | EN 18031-1 self-assessment with Espressif's templates (own work + a review); a notified body adds 3000-8000 if a restriction applies |
| rohs_reach | 300 | once | placeholder | supplier declarations + spot XRF screening |
| registrations | 230 | once | real | RAEE register 46 (30 + 16 stamp) + battery register 184 (168 + 16 stamp), Chamber of Commerce pages 2025 |
| tech_file_manual | 500 | once | placeholder | Declaration of Conformity, technical file, Italian manual and warnings, labels (CE, WEEE bin, battery) |
| enclosure_tooling | 0 | once | placeholder | injection mould if leaving 3D print |
| company_setup | 500 | once | placeholder | P.IVA / SRLS notary, chamber of commerce |
| website_brand | 1,500 | once | placeholder | |
| trademark | 900 | once | placeholder | EUIPO 1 class ~850 EUR |
| first_marketing | 2,000 | once | placeholder | |
| accountant | 150 | monthly | placeholder | commercialista; SRL costs more |
| insurance | 40 | monthly | placeholder | product liability (RC prodotti) |
| software_hosting | 40 | monthly | placeholder | |
| weee_batteries | 25 | monthly | placeholder | RAEE + pile consortium fees, CONAI |
| marketing | 300 | monthly | placeholder |
Cost per console by order size
Sole trader, ordinary (VAT recovered). Only the per-order costs (fees, parcels, duty above the waiver) change with the order size; part prices stay at the quoted quantities.
| Units per order | Parts + assembly | Shipping from China + customs | Cost per console | Cash per order |
|---|---|---|---|---|
| 5 | 92.50 | 23.19 | 115.69 | 578 |
| 10 | 79.26 | 14.60 | 93.86 | 939 |
| 50 | 68.67 | 6.30 | 74.97 | 3 749 |
| 100 | 67.34 | 5.25 | 72.59 | 7 259 |
Assembly: our own or JLCPCB PCBA
Per console, parcels and customs included. Our time is part of the cost, valued at an hourly rate. Import VAT is paid at customs: the ordinary regime and the SRL recover it (it is only cash advanced), the forfettario does not (it is in its cost column). Part prices stay at the quoted quantities: a lower price at volume (LCSC parts for 50 sets) favours the route it belongs to.
| Units per order | Route | Parts + assembly | of which our time | Duty | Clearance + courier | Cost, ordinary | Import VAT advanced | Cost, forfettario | Cash per order |
|---|---|---|---|---|---|---|---|---|---|
| 5 | self | 79.19 | 10.00 | 0.00 | 27.94 | 107.13 | 16.79 | 130.70 | 570 |
| 5 | pcba | 92.50 | 4.00 | 0.00 | 23.19 | 115.69 | 15.62 | 141.14 | 637 |
| 10 | self | 77.10 | 10.00 | 1.98 | 14.37 | 93.45 | 15.80 | 114.01 | 992 |
| 10 | pcba | 79.26 | 4.00 | 1.98 | 12.62 | 93.86 | 15.02 | 114.51 | 1 049 |
| 50 | self | 75.43 | 10.00 | 2.14 | 3.51 | 81.08 | 14.69 | 98.92 | 4 288 |
| 50 | pcba | 68.67 | 4.00 | 2.14 | 4.16 | 74.97 | 14.22 | 91.47 | 4 260 |
| 100 | self | 75.22 | 10.00 | 2.14 | 2.16 | 79.52 | 14.54 | 97.01 | 8 406 |
| 100 | pcba | 67.34 | 4.00 | 2.14 | 3.11 | 72.59 | 14.12 | 88.56 | 8 271 |
When PCBA wins. JLCPCB's assembly price per board (parts + mounting, its per-order share included, the PCB itself excluded: both routes pay it) at which the two routes cost the same, ordinary regime. A quote below it makes PCBA cheaper:
| Units per order | Break-even assembly price per board | This quote |
|---|---|---|
| 5 | 21.75 | 30.31 |
| 10 | 18.75 | 19.16 |
| 50 | 16.35 | 10.24 |
| 100 | 16.05 | 9.12 |
Unit economics
EUR per unit sold, at a shelf price of 129.00 EUR incl. VAT.
| Sole trader, forfettario | Sole trader, ordinary | SRL / SRLS | |
|---|---|---|---|
| Revenue (net of VAT and returns) | 122.55 | 100.45 | 100.45 |
| Sales channel fees | 11.87 | 10.16 | 10.16 |
| Shipping (net) | 8.54 | 7.00 | 7.00 |
| Warranty reserve | 3.68 | 3.01 | 3.01 |
| Parts, assembly, order fees | 83.77 | 68.67 | 68.67 |
| Shipping from China + customs | 7.69 | 6.30 | 6.30 |
| Contribution margin | 7.00 | 5.30 | 5.30 |
| Fixed costs per year | 8 020 | 6 660 | 9 160 |
| One-off costs (launch) | 18 581 | 15 230 | 15 230 |
| Break-even units/year (fixed costs only) | 1 146 | 1 257 | 1 729 |
Launch costs per console
The one-off costs (15 230 EUR, of which 10 330 for certification and registrations) spread over the consoles sold in three years. A hardware revision needs new test reports, so the certification is spread only over the units of the design it covers.
| Scenario | Units in 3 years | Certification per console | All one-off per console |
|---|---|---|---|
| pessimistic | 850 | 12.15 | 17.92 |
| base | 2 200 | 4.70 | 6.92 |
| optimistic | 5 100 | 2.03 | 2.99 |
In the books (ordinary regime, SRL) the one-off costs are deducted over 3 years (one_off_amortization_years); the forfettario deducts nothing.
Three-year forecast
Profit is before taxes; taxes include INPS. Net to owner is for the SRL what reaches the owner if all profit is paid out as dividends. Cash low point is the deepest the bank account goes in a monthly simulation: the money needed up front.
Scenario: pessimistic (150 / 300 / 400 units)
| Form | Year | Revenue | Profit | Taxes + INPS | Net to owner |
|---|---|---|---|---|---|
| Sole trader, forfettario | 1 | 18 382 | -13 163 | 4 931 | -18 094 |
| 2 | 36 765 | -12 113 | 6 960 | -19 073 | |
| 3 | 49 020 | -11 413 | 9 280 | -20 694 | |
| Sole trader, ordinary | 1 | 15 068 | -10 942 | 4 542 | -15 484 |
| 2 | 30 135 | -10 147 | 4 542 | -14 689 | |
| 3 | 40 180 | -9 617 | 4 542 | -14 159 | |
| SRL / SRLS | 1 | 15 068 | -13 442 | 4 542 | -17 984 |
| 2 | 30 135 | -12 647 | 4 542 | -17 189 | |
| 3 | 40 180 | -12 117 | 4 542 | -16 659 |
Cash low point: Sole trader, forfettario -62 435 · Sole trader, ordinary -48 080 · SRL / SRLS -55 580
- Sole trader, forfettario, year 2: from this year EU B2C sales ~11,030 EUR above 10000: destination VAT through OSS (not modelled)
- Sole trader, ordinary, year 3: from this year EU B2C sales ~12,054 EUR above 10000: destination VAT through OSS (not modelled)
- SRL / SRLS, year 3: from this year EU B2C sales ~12,054 EUR above 10000: destination VAT through OSS (not modelled)
Scenario: base (300 / 700 / 1200 units)
| Form | Year | Revenue | Profit | Taxes + INPS | Net to owner |
|---|---|---|---|---|---|
| Sole trader, forfettario | 1 | 36 765 | -12 113 | 6 960 | -19 073 |
| 2 | 85 785 | -9 314 | 16 240 | -25 554 | |
| 3 (ordinary) | 120 541 | -6 494 | 4 542 | -11 036 | |
| Sole trader, ordinary | 1 | 30 135 | -10 147 | 4 542 | -14 689 |
| 2 | 70 316 | -8 027 | 4 542 | -12 569 | |
| 3 | 120 541 | -5 377 | 4 542 | -9 919 | |
| SRL / SRLS | 1 | 30 135 | -12 647 | 4 542 | -17 189 |
| 2 | 70 316 | -10 527 | 4 542 | -15 069 | |
| 3 | 120 541 | -7 877 | 4 542 | -12 419 |
Cash low point: Sole trader, forfettario -63 167 · Sole trader, ordinary -43 855 · SRL / SRLS -51 147
- Sole trader, forfettario, year 1: from this year EU B2C sales ~11,030 EUR above 10000: destination VAT through OSS (not modelled)
- Sole trader, forfettario, year 2: revenue above 85000: ordinary regime from next year
- Sole trader, ordinary, year 2: from this year EU B2C sales ~21,095 EUR above 10000: destination VAT through OSS (not modelled)
- SRL / SRLS, year 2: from this year EU B2C sales ~21,095 EUR above 10000: destination VAT through OSS (not modelled)
Scenario: optimistic (600 / 1500 / 3000 units)
| Form | Year | Revenue | Profit | Taxes + INPS | Net to owner |
|---|---|---|---|---|---|
| Sole trader, forfettario | 1 | 73 530 | -10 013 | 13 920 | -23 934 |
| 2 (ordinary) | 150 676 | -4 904 | 4 542 | -9 446 | |
| 3 (ordinary) | 301 352 | 3 046 | 4 542 | -1 496 | |
| Sole trader, ordinary | 1 | 60 270 | -8 557 | 4 542 | -13 099 |
| 2 | 150 676 | -3 787 | 4 542 | -8 329 | |
| 3 | 301 352 | 4 163 | 4 542 | -379 | |
| SRL / SRLS | 1 | 60 270 | -11 057 | 4 542 | -15 599 |
| 2 | 150 676 | -6 287 | 4 542 | -10 829 | |
| 3 | 301 352 | 1 663 | 5 006 | -3 343 |
Cash low point: Sole trader, forfettario -58 316 · Sole trader, ordinary -45 248 · SRL / SRLS -50 248
- Sole trader, forfettario, year 1: from this year EU B2C sales ~22,059 EUR above 10000: destination VAT through OSS (not modelled)
- Sole trader, forfettario, year 2: revenue above 100000: out of the forfettario this year, ordinary regime
- Sole trader, ordinary, year 1: from this year EU B2C sales ~18,081 EUR above 10000: destination VAT through OSS (not modelled)
- SRL / SRLS, year 1: from this year EU B2C sales ~18,081 EUR above 10000: destination VAT through OSS (not modelled)
Model simplifications
- VAT is netted for the VAT-registered forms; in the forfettario no VAT is charged and input VAT is a cost.
- One-off costs are paid in cash before launch and deducted over
one_off_amortization_years; losses are not carried forward. - Returned units are refunded and written off; taxes are paid at the end of each year (really: acconti and saldo in June/November).
- Forfettario tax is on revenue x coefficient, not on real profit: when real costs exceed (1 - coefficient) of revenue, it taxes a profit that does not exist.
- SRL: IRAP approximated on the operating profit (no employees); the working partner pays INPS commercianti on at least the minimale.