Income plans, one per form of value¶
Status: proposal — awaiting decision, 2026-09-16. The map is value-forms; this is the "how" for each row. Where a plan already exists it is linked, not restated: services are in first-money, the three recurring offers in recurring-revenue, the store in products-business. Each section ends with the first three moves, a 90-day target and the number that says whether it works. Two people, one SMT line, no outside money: every plan starts with something that already exists.
1. Product — boards people buy¶
Ideas - The three no-lab boards in products-business (a regulator carrier, a USB-C PD sink, a programmer/UPDI front end), each a block we already have on a 25×25 mm board. - A Universal Tester lite: the fixture-board idea sold as a kit with the pogo-pin note as its manual. Buyers are other small shops, the note is already written. - A bench label kit: our 2×1.5 in label templates plus a roll, sold to people who run the same Zebra. Tiny, but it turns a SOP into a product.
The play. One product page per board that teaches (the note is the page), a Tindie listing first because it has buyers and no store to build, own store second. 3× landed cost or it is not made. Runs of 50.
First three moves. Pick the three boards (decision in products-business). Tag the first
one hw/<board>/A so the fab pack exists. Order 50 bare boards and build 20 on the line.
90 days. Three listed, 50 units sold in total, one product note published per board.
Number. Gross margin per unit after Tindie's cut ≥ 60 %; units per month.
2. Service — the core¶
Ideas: the fixed-price offers already priced in first-money (EOL assessment $750, CRA readiness review $1,200, USB-C PD review $500 / block $1,500), plus two more of the same shape from notes to come: DFM review before you order ($400, 3 days) and firmware port scoping ($900, 5 days). Every note becomes an offer with a price and a deadline.
The play. An offers page on the site, a deposit link, the intake form. Assessments are priced so a company can say yes without a purchase order; the redesign that follows is the real job. Local first: Research Triangle firms, the makerspaces, the two universities' spin-outs, through the LinkedIn pipeline that already posts.
First three moves. Publish the offers page with the three existing offers. Add the deposit link. Send ten direct messages to Triangle hardware companies naming one offer each. 90 days. Two paid assessments, one of them converted into a redesign. Number. Assessments sold per month; conversion to redesign.
3. Shared resource — sell the line's idle time¶
Ideas - Contract assembly, prototype quantities: 5–50 boards for other small shops, using their fab pack. The fab pack format we generate is the intake format we ask for. - Open bench hours: a half-day on the reflow oven and tester with one of us present, for hobbyists and students. Small money, big top-of-funnel. - Stencil and paste service: a niche people pay for because nobody local does it.
The play. Quote from the fab pack: gerbers, CPL and BOM give us the count and the parts; price = parts + placements × rate + setup. The Neoden and the YY1 job generator make setup cheap. Limit to boards our line can do (no BGA under 0.5 mm until proven).
First three moves. Write the assembly intake page: "send us the zip". Set the placement rate and setup fee. Do one run for a friendly customer at cost to get photos and a testimonial. 90 days. Three paid runs. Number. Line hours sold per month; revenue per line hour.
4. Subscription — recurring money¶
Ideas: the obsolescence-and-compliance watch in recurring-revenue ($79/month per product, or an annual plan), a firmware maintenance retainer (CVE watch on the libraries a product ships with, one patched release per quarter, the CRA obligation carried for them), and a spares agreement (we hold their last-time-buy parts and one built spare, billed monthly).
The play. Sell it as the follow-on to every assessment and every board we ship: the customer already has the BOM in our ERP, so the marginal cost is near zero. The report is generated, not written; the human hour goes into the yearly review call.
First three moves. Point the lifecycle tool at a customer BOM (task 101). Write the monthly report template and send one to ourselves for a month. Offer it to the robot customer first. 90 days. Two subscriptions. Number. Monthly recurring revenue; churn.
5. Resale — only bundled¶
Ideas: a parts kit next to each product (the reel we already stock, cut to count), and curated starter kits for a note (the USB-C PD note with the connector, the controller and the passives in a bag). Never a catalogue, never competing with DigiKey.
The play. Kits are packed from stock the ERP already tracks; the label printer prints the bag label. Price at 2× the parts. First three moves. Pick one note that names a parts list. Bag ten kits. List with the note. 90 days. Decide from one kit whether it sells at all. Number. Kit attach rate on product orders.
6. Lease — rent the tester¶
Ideas: a fixture-plus-tester rental for a customer's own production run (weekly rate, deposit, we set it up), and a loaner programmer/fixture while we hold their reels.
The play. Only for customers whose fixture we built, so the asset is already known. Weekly rate around 10 % of the fixture's build price, deposit equal to the replacement cost, a signed one-page agreement from terms-and-warranty. First three moves. Write the one-page rental terms. Price the current fixture. Offer it in the next fixture quote as an option line. 90 days. One rental, or the evidence nobody wants it. Number. Utilisation of the fixture per month.
7. Agency — no¶
Representing a fab or a parts line would pay a few percent for a lot of sales work and pull us off engineering. What would change the verdict: a fab that pays for design referrals in a way that does not require us to sell; the affiliate links in first-money are the harmless version of this and are already planned.
8. Audience aggregation — build it, do not sell it yet¶
Ideas: keep the notes-to-social pipeline running, add a newsletter (the subscribe block exists), and a YouTube bench series from the shoot videos. Monetisation later is sponsor mentions from tool makers and the affiliate links.
The play. The audience is for buckets 1, 2 and 4; treat every subscriber as a future assessment or product buyer. No ads on the site, ever. First three moves. Weekly note cadence held. One video per month cut from the shoot footage. Newsletter sent monthly with the notes and one offer. 90 days. 500 subscribers across newsletter and LinkedIn. Number. Subscribers; assessments booked from a note.
9. Loan — no¶
Net terms are a loan we make, not money we earn. Rule: deposits on every job, net-30 only for repeat customers with a history, never for the first order. Nothing to build.
10. Option — deposits that hold a slot¶
Ideas: a production slot reservation (a customer pays a deposit to hold a build week; credited against the run, forfeited if they cancel late), and reserved capacity for the repeat-build customer as part of the blanket agreement.
The play. It costs nothing and it smooths the schedule. Put it in the quote template as a line, and in the repeat-build agreement. First three moves. Add the deposit line to the quote template (SOP-011 area). Add "reserved capacity" to the repeat-build agreement draft. Use it on the next quote. 90 days. Every quote carries it. Number. Deposit money received per month; late cancellations avoided.
11. Insurance — later, from tester data¶
Ideas: an extended warranty on assembled boards priced from the tester's failure data, and a guaranteed lead time with a credit if we miss it.
The play. Not until the Universal Tester has recorded a few hundred units so the failure rate is a number, not a guess. Then a warranty at 3–5 % of the unit price is a real product. First three moves. Keep the tester results in the ERP per serial. Review the failure rate at 300 units. Draft the warranty terms from terms-and-warranty then. Number. Field failure rate; warranty claims per 100 units.
12. Capital — no, for now¶
Equity in a customer's product in exchange for design work needs a lawyer, a cap table and a track record we do not have. What would change the verdict: a repeat customer with revenue asking for it, and cash in the bank so it is a choice, not a need.
The order, and what to do this month¶
Service (2) and option (10) start now: they are pages and template lines. Shared resource (3) and subscription (4) follow with one friendly customer each. Product (1) starts the day the first assessment is paid. Everything else waits for a number.
This month: the offers page with deposit links; the assembly intake page; the deposit line in the quote template; the lifecycle tool pointed at one customer BOM; the three product boards chosen. Five things, all reusing what exists.
What Angel decides¶
- Approve the plan order, or move a bucket up.
- Pick the friendly customer for buckets 3 and 4.
- Confirm the placement rate and setup fee for contract assembly (a number I should not invent).
Log¶
- 2026-09-16: written as the per-bucket "how" under the twelve-forms map.
- 2026-10-13: Contract-assembly quote inputs (Angel): NRE $200 first build, 25% markup on bought-in cost (JLCPCB boards/stencil, Digi-Key/Mouser parts) = 20% gross margin; shop rate to be set higher than $75/h. Turnkey model: boards + stencil from JLCPCB, parts from Digi-Key/Mouser via part-lookup. Measured YY1 throughput: Remote Cow 006 MCU (bottom) side, 2×6 panel = 94 placements/board × 12 = 1,128 placements in ~1 h, i.e. ≈1,100 placements/h with feeders already loaded (PNP-Neoden
Cow Remote 006/Remote_Cow_bot_2x6.csv, 23 feeders). Still needed: reel-load minutes per new feeder, whether the 1 h includes paste and reflow. - 2026-10-13: Rates set (Angel): $110/h, 25% markup, $200 NRE, $310 minimum; paste 5 min + reflow 5 min per panel side, 5 min per new reel (the 1 h YY1 figure is placement only). Calculator
src/lib/assembly-quote.ts+scripts/assembly-quote.test.mjson site branchassembly-quote(local commit, not pushed). Panelizing matters: 10 boards × 80 parts = $831 single vs $666 in panels of 10. THT 20 s/joint and test 3 min/board are guesses to time on the bench. - 2026-10-13: Quote calculator now takes board size: rejects boards the line can't take (manual quote) and auto-fills boards per panel (5 mm rails, 2 mm gap). YY1 limits used: 249×350 mm dual-side feeders / 315×350 single-side, max part 18×18 mm, 12 mm tall (from a resale.de listing, not NeoDen's datasheet; confirm). Oven tray size still unknown (LINE.oven in src/lib/assembly-quote.ts).
- 2026-10-13: Reflow oven = Whizoo DIY build (Controleo3), working tray 200×260 mm (whizoo.com build guide) — the line's real size limit, smaller than the YY1. Largest single board ≈190×250 mm with 5 mm rails. Calculator gives 12 Remotes per panel, matching the real 2×6 job.
- 2026-10-13: Parts > 18×18 mm or > 12 mm tall and BGA < 0.5 mm pitch → manual quote (Angel). In calculator (e30da94). Gap found: part-lookup returns only price @1/@100 + stock, no full price breaks, MOQ or part dimensions — needed for parts cost and the big-part check.
- 2026-10-13: Two-stage quoting (Angel): website shows a RANGE from typical per-piece costs by designator+package (passives narrow, ICs wide) and a placeholder JLCPCB formula — no distributor calls; on Submit, the final quote uses part-lookup (Digi-Key/Mouser APIs) and Angel sends it. estimateRange() on site branch assembly-quote. Remote-Cow-like job, 10 boards: $482–1,013 ($48–101/board) — range narrows once piece costs are calibrated from the part-lookup cache and JLCPCB quotes are tabled.
- 2026-10-13: Spares confirmed (Angel): +10 per passive line, +2 per other line, in both the range and the final quote. Next input: JLCPCB price grid from Angel (2/4 layers × 50×50/100×100/180×240 mm × 5/10/25/50, stencil, shipping, tariff).
- 2026-10-13: JLCPCB price table in calculator from Angel's quotes (FR-4 1.6, LF HASL): 2L ≤100×100 promo $4/5/12/30 @5/10/25/50; 2L 180×240 $40 @5, $200 @50 incl stencil; 4L 50×50 $8 @5, $52 @50; 4L 100×100 $100 @50; 4L 180×240 $305 @50; stencil $11.28 (2L) / $12 (4L); shipping $41 (≤10 small) → $50 → $60–70 → $240 (50 large). Open: tariff/duties % (JLC.tariffPct = 0 placeholder), stencil '1128' read as $11.28. Remote-like range now $51–99/board @10, $28–72 @50; the remaining spread is the per-piece part guesses.
- 2026-10-13: JLCPCB shipping figures are DHL DDP (duties/tariff included); stencil confirmed $11.28. Wiring /tools/assembly-check to estimateRange() on site branch assembly-quote (Sonnet worker); range shown after the lead gate, board W×H + qty inputs, newReels = BOM lines (conservative), THT/programming/coating left to the final quote.
- 2026-10-13: /tools/assembly-check shows the instant range (EN/ES) — commit on site branch assembly-quote, verified on local dev at 375 px (sample 8-layer Feather, 10 boards: $824–1,798) and the manual-quote path. NOT pushed, NOT on the dev preview or production. Known: 6+ layer boards priced as 4-layer in the range.
- 2026-10-13: assembly-quote branch pushed and deployed as a branch preview on the dev project: https://assembly-quote.embeddedera-site.pages.dev/tools/assembly-check/ (EN+ES serve 200 with the estimate block). apple-style and production untouched.
- 2026-10-13: RELEASED instant assembly price range to production (Angel approved): the 9 assembly-quote commits cherry-picked onto main (origin/main @ 8cc2427), NOT a merge of apple-style — apple-style still carries ~20 unreleased commits (note revisions after failed review, photos, tools move). Also merged into apple-style (dev). Live: embeddedera.com/tools/assembly-check (+/es) serve the estimate. Next: part-lookup full price breaks/MOQ/dimensions → server final-quote job → Gmail draft with cost/price/margin; SOP for contract-assembly quoting (Sales).