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)

comparison_gantt

Per-Job Tardiness

tardiness_comparison


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.