Endro Health distributes in-vitro diagnostic products. Its procurement covers 366 SKUs, ordered in 60-day cycles. Ordering decisions were made by hand from data exported from the ERP system, Odoo. In diagnostics the margin for error is small. Order too little and clients face stockouts. Order too much and stock expires on the shelf. Every decision also had to be justified afterwards, and that was hard to do without a record of the reasoning behind it.
The domain and stakeholder needs were analysed first, and several solution directions were compared. The deciding factor was explainability. A procurement decision in a healthcare supply chain has to be traceable and owned by a person, so a black-box model was ruled out as the decision-maker. The core is therefore fully rule-based. Machine learning runs alongside as a challenger model, for comparison only. The first phase was deliberately kept standalone and file-based. It has no live connection to Odoo, it does not write back to the ERP and it never places orders itself. It was built and tested on anonymised ERP export data.
ERP exports are uploaded into a web application. A rule engine evaluates every product and produces a ranked list of ordering recommendations. Each one comes with a confidence score, warnings and the full chain of rules that led to it. Review follows fixed roles. The Depot Analyst checks the recommendations and flags anything that needs attention. The Procurement Manager accepts, modifies or rejects each one with a stated reason. The CDO has oversight of the whole process. Every action is logged in an audit trail. Accepted lines are combined into an ordering session that can be exported. The ML challenger’s output is shown next to the rule engine’s, so the two can be compared without the model taking over the decision.
The prototype works end to end, from ERP export to ordering session. It was tested on three levels: automated tests (around 91% backend and 85% frontend code coverage), a backtest against historical orders, and a cognitive walkthrough with three participants, whose findings led to interface improvements. In the backtest, the rule engine stayed close to the ML challenger on agreement with past orders while remaining fully explainable. A direct link to Odoo is the recommended next step.