Manufacturing, 2025–26. Architect and sole engineer. Live.
Quoting and ERP app for a contract electronics manufacturer
I built a quoting tool for a contract electronics manufacturer that looks up parts, prices them, and lets customers approve online.
Private build. There is no public screenshot because the app sits behind a login.
Where it started
A contract electronics manufacturer assembles circuit boards for other companies. Before this, every quote was done by hand. A customer sent a bill of materials, the list of every part on the board. Someone in the office looked up each part, priced it at several order quantities, added assembly labor from a spreadsheet, and typed the result into a document. It took hours per quote, and there was no record of how the number was reached.
I built the app that does that work. It takes in the bill of materials (the BOM, from here on), fills in every line from three supplier catalogs, prices the job across quantity tiers and turnaround times, and produces the customer-facing overview, the PDF, and an online portal where the customer approves or rejects the quote.
Then it kept going. Once a quote is won, the parts get bought, received, and audited, so the BOM became the record everything downstream follows. The client isn't named because the website side of the engagement ran through another agency.
What made it hard
- Supplier lookups fail quietly. One vendor changed the shape of its answers, and every lookup against it came back empty, which looks exactly like a part that doesn't exist.
- The office's view and the customer's view are priced by two separate calculations, and they have to agree to the cent, or the quote is wrong in a way nobody notices until the invoice.
- When a person corrects a line, say a part changed from through-hole to surface mount, that correction has to survive the next automatic refresh. Otherwise it's lost without anyone knowing.
What I built
A correction a person made can't be overwritten by the machine
Refreshing prices from the suppliers must never put back a part someone fixed. So any field a person edits gets a lock, shown right on the row, and the automatic refresh skips it. Versions are numbered and dated, nothing fancier, because the client refused a scheme he'd have to explain to his staff.
I audited my own build and published it as the roadmap
Rather than wait for the client to find the bugs, I went through the whole codebase and wrote up fifty-four items in four tiers, from a tariff markup applied differently in two views down to a missing database index. The list is ordered by risk and it is the plan. Price accuracy first.
What isn't measured
- Hours saved per quote is one question to the client away and hasn't been asked. It's on the owed list.
- No count of quotes won against quotes sent. The app records the state; nobody has pulled the ratio.
- Whether the lock has actually saved a correction since it shipped isn't logged anywhere.
Built with
See for yourself
Private application, no public URL. Screenshots are scrubbed of branding and part numbers before they appear here.

Tell me what you're working on.
Send me a little about your project or the role you're hiring for. I'll tell you whether it sounds like a fit.