04 · The calls
Five decisions, each with the road not taken.
Every tradeoff went through one filter: does this serve this team's specific workflow? If not, it was cut. Here is what got chosen, what got rejected, and the tradeoff each call accepted.
01
Local hosting, not SaaS.
Rejected: a cloud hosted deployment
Defence adjacent work carries security requirements that a shared cloud does not satisfy comfortably, and the team wanted the system to keep working without internet. Production runs on the company's own server. The public demo exists so the work can be shown without exposing anything real.
02
Six states, not one quantity.
Rejected: a single inventory table with a count
Available, Issued, Rejected, Maintenance, Damaged, and Ordered but not received. The simpler model would have shipped days earlier and then lied constantly, because a part in maintenance is not available and a part on order is not missing. The schema had to match the bench.
03
Workflow specific, not feature rich.
Rejected: a generic tool with everything switched on
The team knew exactly what they needed, so custom beat generic. Task based navigation with a small number of named actions, and the fewest clicks to finish a real job, because a tool that needs training in an R and D lab does not get used twice.
04
QA lives inside receiving.
Rejected: accepting stock on arrival and sorting quality later
Parts arrive, get checked, and are accepted or rejected before they can ever be issued. Putting the quality gate in the intake flow is what makes Rejected a first class state rather than a note someone forgot to write down.
05
AI assisted delivery, product led direction.
Rejected: writing it all by hand, or buying a licence
Lovable plus Supabase compressed build time by roughly 70 percent, which bought back the weeks that went into discovery and prioritisation. The leverage was not the speed of the code. It was spending that saved time on the right problem.