Job Shop Tardiness, Intervention Case Study
Comparing capacity interventions in a furniture job shop: adding a second Table Saw vs improving Sander throughput, with cost analysis and ROI projections.
Setup
A furniture manufacturer runs a job shop with 8 jobs across 6 machines (Table Saw, CNC Router, Sander, Drill Press, Assembly Bench, Finishing Station). The shop runs one job set per week.
| Job | Ops | Deadline | Baseline |
|---|---|---|---|
| Nightstand (×2) | 5 | 60h | On time |
| Desk | 6 | 80h | On time |
| Bookshelf | 7 | 90h | On time |
| Coffee Table | 6 | 75h | Late +17h |
| Chair Set (×4) | 8 | 110h | Late +16h |
| Dining Table | 8 | 130h | Late +13h |
| Cabinet | 9 | 140h | Late +29h |
| Wardrobe | 9 | 160h | Late +46h |
58 operations total, each with a specific machine, duration, and precedence constraints.
The baseline schedule is already tight, we solve the job shop as a constraint optimization problem using Minizinc + OR-Tools CP-SAT, minimizing total tardiness. Even with an optimal schedule, 5 of 8 jobs are late with 121 hours of tardiness. This isn’t a planning problem; the tardiness is structural. It can’t be scheduled away, it requires a capacity intervention.
Choosing the Interventions
The baseline analysis surfaces two distinct bottleneck profiles:
| Machine | Utilisation | Critical Ops | Profile |
|---|---|---|---|
| Table Saw | 71% | 22 of 58 | Critical chokepoint, dominates the critical path |
| Sander | 36% | 1 of 58 | Amplifier, low utilisation but affects every tardy job |
A naive bottleneck analysis would target the Sander: it’s cheap to improve (low utilisation means a small speedup unlocks downstream slack) and it touches all five late jobs. The Table Saw is already heavily loaded, adding capacity looks expensive.
But the Table Saw sits on the critical path for nearly half the operations. If it’s the true bottleneck, adding capacity there could cascade improvements that no amount of Sander tuning can match.
We test both:
- Experiment A: Add a second Table Saw (CAPEX $45,000)
- Experiment B: Improve Sander throughput by 30% (CAPEX $8,000)
Results
KPI Comparison
| KPI | Baseline | +Table Saw | Δ A | Sander +30% | Δ B |
|---|---|---|---|---|---|
| Makespan | 206h | 178h | -13.6% | 202h | -1.9% |
| Max Tardiness | 46h | 18h | -60.9% | 42h | -8.7% |
| Avg Tardiness | 15.1h | 4.1h | -72.7% | 13.1h | -13.2% |
| Late Jobs | 5 | 3 | -2 | 5 | 0 |
| Late Job Ratio | 62.5% | 37.5% | -25.0pp | 62.5% | 0 |
| Deadline-Norm Tardiness | 96.7% | 22.2% | -74.5pp | 83% | -13.7pp |
| Load-Norm Tardiness | 22.7% | 6.2% | -16.5pp | 20.8% | -2.0pp |
| Critical Op Ratio | 44.8% | 25.9% | -19.0pp | 44.8% | 0 |
Machine Schedules (Side-by-Side)

Per-Job Tardiness

Cost Analysis
Assumptions:
- Tardiness penalty: $200 per hour of tardiness per job set
- Runs per week: 1
Baseline tardiness cost per job set: $24,200 (121 hours)
Experiment A: Add a second Table Saw (CAPEX $45,000)
- Tardiness savings per job set: $17,600 (88 hours × $200/hour)
- Payback period: 2.6 weeks (2.6 runs)
- First-year net savings: $870,200 (ROI: +1,934%)
Experiment B: Improve Sander throughput 30% (CAPEX $8,000)
- Tardiness savings per job set: $3,200 (16 hours × $200/hour)
- Payback period: 2.5 weeks (2.5 runs)
- First-year net savings: $158,400 (ROI: +1,980%)
Recommendation
| Tardiness (h) | Reduction | Savings/run | Payback | 1st-year net | |
|---|---|---|---|---|---|
| +Table Saw | 33h | 73% | $17,600 | 2.6 runs | $870,200 |
| Sander +30% | 105h | 13% | $3,200 | 2.5 runs | $158,400 |
Both interventions pay back in ~2.5 runs. The difference is magnitude: the second Table Saw delivers 73% tardiness reduction ($17,600 saved per run) vs. 13% ($3,200 per run) for the Sander upgrade.
- If capital is available ($45,000): add the second Table Saw, $870,200 in first-year net savings and the bottleneck is nearly eliminated.
- If capital-constrained ($8,000): the Sander upgrade still yields $158,400 first-year net with lower risk.
What This Shows
The naive bottleneck analysis recommended the Sander as the top intervention target. The counterfactual experiments tell a different story: the Table Saw’s dominance on the critical path means adding capacity there produces 5.5× more savings per run. The Sander, despite touching every late job, simply doesn’t constrain the schedule enough to matter.
This is why counterfactual experiments are essential, intuition about bottlenecks breaks down in constrained systems, and the only way to know which intervention wins is to run both and compare.