On-Time Materials for a Czech Machine Builder: From 67% to 94% Supplier Reliability
One in three customer orders was delayed because raw materials didn’t arrive when MRP expected them. The Odoo scheduler trusted supplier quotes — but a Chinese PLC supplier quoting 45 days actually delivered in 30 to 130. Replacing static lead times with empirical P90 distributions lifted on-time material availability from 67% to 94% and cut emergency air freight by 70%.
The Client
A made-to-order industrial machinery manufacturer based in Moravia. Around 50 employees, annual revenue approximately 80M CZK. They produce custom conveyor systems, sorting lines, and packaging machinery for food and pharma. Over 2,000 BOM components sourced from 40+ suppliers across CZ, DE, IT, and CN. Odoo ERP with Manufacturing (MRP), Purchase, and Inventory modules.
The Problem: MRP Trusts Supplier Promises
Production delays on 1 in 3 customer orders. The Odoo MRP scheduler used a single static lead time per supplier — the “promised” lead time from the supplier’s quote. But actual delivery times varied wildly: German motor suppliers quoted 10 days but ranged 8–25. Chinese PLC suppliers quoted 45 days but ranged 30–130. MRP scheduled production start based on these averages, so 33% of the time at least one critical BOM component was missing.
Missing materials caused cascading delays: production team idle, next orders pushed back, penalty clauses triggered. Emergency air freight for late Chinese components cost approximately 400K CZK per year. The production manager spent 2+ hours daily chasing purchase orders and calling suppliers.
Step 1: Lead Time Inference from PO History
We extracted 2 years of purchase order data from Odoo: PO creation date, expected delivery date, and actual goods receipt date. We built empirical lead time distributions per supplier per component category. The gap between quoted and actual P90 was staggering: CZ electrical components were reliable (P90: 5 days vs. quoted 3). Chinese PLCs were not — P90 of 137 days against a 45-day quote, off by 92 days.
Step 2: The Fat Tail
The distribution is not normal — it’s bimodal with a fat tail. Most deliveries arrive within days, but a significant number take 30–150 days. An MRP scheduler using the average (or the stated lead time) will be caught off guard by the tail. Using the P90 captures 90% of actual deliveries and provides a realistic buffer.
Step 3: Critical Path Analysis
For 20 recent customer orders, we identified which BOM components were on the critical path. In 14 of 20 orders, the bottleneck was a Chinese-sourced component (PLC, sensor, or specialty actuator). In 4 of 20, it was a German motor on backorder. Chinese imports dominated delays because the lead time variance was enormous — a 30 to 130 day range.
Step 4: Supplier Scorecard
We ranked all 40+ suppliers by lead time reliability, variance, and trend. The worst 6 suppliers accounted for 80% of all production delays. This data was presented as an actionable scorecard for supplier negotiations — the client used it to renegotiate terms with 3 suppliers and replace 1.
The Solution
Four changes, deployed incrementally:
- Updated Odoo supplier lead times from stated values to P90 values for all 40+ suppliers. MRP now schedules purchase orders earlier — buying 22 days of buffer on German motors, 50 days on Chinese PLCs.
- Computed reorder points for 400+ stock items (fasteners, standard bearings, common steel profiles) using P90 lead times, written to Odoo orderpoints. These items are always in stock — no reason to wait for a customer order.
- Converted 12 PLC models and 8 sensor types from make-to-order to make-to-stock with computed min/max quantities. Total pre-stock investment: 350K CZK, less than one year of air freight costs.
- Delivered a supplier scorecard with quarterly refresh — distributions recomputed monthly from latest PO data, Odoo lead times updated automatically.
Results
| Metric | Before | After | Change |
|---|---|---|---|
| On-time material availability | 67% | 94% | +27 pp |
| Average order delay | 11 days | 2.5 days | -77% |
| Emergency air freight / year | 400K CZK | 120K CZK | -70% |
| PO chasing time (production manager) | 2+ hrs/day | 20 min/day | -85% |
| Customer penalty clauses / year | 8 | 1 | -87% |
Reduced air freight saved 280K CZK per year. Eliminated penalties saved approximately 350K CZK. Production throughput increased roughly 15% due to fewer idle days. The pre-stock investment of 350K CZK paid back within 6 months.