01 — The situation
Procurement that has to withstand inspection.
Our client is a state-owned construction company. Procurement here doesn't end at choosing the cheapest supplier — every step must be reproducible if it is ever examined.
The process is long: procurement plan, announcement, supplier bids, evaluation, award, contract, then addenda if anything changes. Each stage has someone entitled to approve it, and the order cannot be skipped.
02 — The problem
Three kinds of user who must not see each other.
Three parties with different interests, and some information must never cross between them:
- Internal staff — drafting plans, evaluating, and approving according to their tier.
- External suppliers — submitting bids, and never seeing another supplier's bid.
- Managers in the field — approving from a phone, not from a desk.
03 — What we did
Separating the doors, not merely hiding the buttons.
Four decisions.
- 01
Three separate applications, not one app with three roles
Staff, suppliers, and mobile users enter through different applications. Hiding menus by role inside one application is fragile — a single misconfiguration and a supplier sees an internal page. The doors were separated from the start.
- 02
Approval tiers held as data, not written into code
Organisation charts change: people move, positions are added. If approval tiers live in the code, every transfer means another development cycle. So the tiers are data the client can configure.
- 03
Bids sealed until the moment they are opened
Submitted bids cannot be seen by anyone — internal staff included — until the scheduled opening. This isn't politeness; it is what makes the process defensible.
- 04
Every change leaves a trail that cannot be erased
Who changed what, when, and from which value to which. Contract addenda included. During an inspection, what's needed isn't a conclusion but the sequence of events.
04 — The outcome
Used for real procurement for four years.
All three applications ran in production and were used for genuine procurement, not trials. We maintained them for four years, through several changes to the organisation chart and internal rules.
Those rule changes could be followed without another development cycle, because the approval tiers were designed to be changed from outside.
05 — What keeps it standing
What was asked for wasn't speed. It was explicability.
In a procurement system, speeding things up by skipping a step is a net loss — because what is judged isn't the speed but whether each decision can be shown again.
So we never built a shortcut, however easy it would have been. A system that lets one step be skipped fails its client at the worst possible moment: under inspection.
