Mixed-Portfolio Scheduling: Balancing Short Runs, Long Runs, and Repair Work
Textbook scheduling assumes you're either high-mix-low-volume or low-mix-high-volume. Real job shops are both, often on the same machine in the same week.
The schedule the textbooks teach assumes a shop you don't run
On Monday, machine 4 is two days into a three-day production run. Tuesday morning a customer calls: a fixture failed on their line, they're down, and the repair has to go somewhere today. Wednesday a 40-piece short run lands with a Friday due date and a setup that takes longer than the actual cutting. All three jobs want the same spindle, and the scheduling logic that handles any one of them cleanly comes apart the moment you try to handle all three on the same floor in the same week.
This is the normal state of a general job shop, and almost none of the published scheduling advice is written for it. The models assume you are one kind of shop. Real shops are several kinds at once, often on the same machine inside the same shift.
This article lays out a practical framework for mixed-portfolio production scheduling: how to think about short runs, long runs, and repair work as three different scheduling problems, and how to run all three on one set of machines without one job type quietly eating the others.
Why the high-mix / low-mix binary doesn't describe a real job shop
Most scheduling literature sorts manufacturers into two buckets. High-mix, low-volume (HMLV) shops run many different parts in small quantities, so the dominant cost is changeover and the dominant skill is fast setup. Low-mix, high-volume shops run a few parts in large quantities, so the dominant problem is line balancing and sustained throughput. Each bucket has its own textbook, its own metrics, and its own software pitch.
A general job shop is both at the same time. You take a standing 5,000-piece quarterly contract because it pays the rent and keeps a machine loaded. You take 30-piece prototype runs because they're high margin and they're how you win the next contract. And you take repair and rework because a good customer is down and you don't say no to a good customer who's down. This mixed posture is the default for most of the roughly 16,627 machine shops operating in the United States (NAICS 332710, Census County Business Patterns), the bulk of which are small, owner-operated, and built to say yes to whatever walks in the door.
The result is a portfolio, not a queue. The 5,000-piece job behaves like a high-volume problem. The 30-piece job behaves like a high-mix problem. The repair behaves like an emergency-room triage problem. Trying to schedule them with one rule — earliest due date, shortest job first, whatever your spreadsheet defaults to — optimizes for one job type and penalizes the other two.
Each job type pulls the schedule in a different direction
Before you can balance the three, you have to be honest about what each one actually costs you on the floor.
Short runs are setup-dominated. The cutting time is often the small part. Say a short run is 40 parts at six minutes each: four hours of spindle time. If the setup — fixturing, tooling, program proveout, first-article inspection — takes three hours, your setup-to-run ratio is 3:4. The part number that looks like a half-day job is really most of a day on the machine, and almost half of that day produces nothing. Schedule short runs as if cutting time is the whole job and you will be late on every one of them.
Long runs are capacity commitments, not jobs. A three-day production order doesn't occupy a slot; it occupies a machine. Everything you accept while it's running has to route around it or wait for it. The hidden risk is interruption: pull a long run off mid-stream to slot a rush job, and you pay for it twice — once to break down and re-fixture, and again to re-setup and re-prove when you put it back. A scheduling conflict that reaches the floor costs $250–$1,000 per incident in restart, resequencing, and lost capacity (Product Brief §2), and interrupting a long run is one of the most expensive ways to create one.
Repair work is arrival you can't schedule but have to absorb. You don't know it's coming, you can't quote a clean lead time, and the customer is usually down — which means the urgency is real, not manufactured. Repair work is the variable that makes the other two job types unpredictable, because every repair you accept comes out of capacity you had already promised somewhere else.
Setup time is the tax that decides whether short runs are profitable
The single highest-leverage move in a mixed portfolio is sequencing short runs by setup family rather than by due date alone. If three short runs this week share the same fixture, the same material, or the same tooling family, running them back-to-back lets you amortize one setup across three jobs instead of paying it three times.
This is where pure earliest-due-date scheduling actively hurts you. EDD might tell you to run job A Monday, job C Wednesday, and job A's twin job E Friday, when A and E share a setup and could have run together Monday with one changeover. The due dates are satisfied either way; the difference is two hours of setup you either spent or saved.
The discipline is simple to state and hard to do by hand: look at the week's short runs as a group, cluster them by what they share, and sequence within each cluster by due date. On a whiteboard or a spreadsheet, this clustering is invisible — you see a list of jobs, not the setups they have in common. Knowing how much you can actually take on without blowing setup time apart is the core of machine capacity planning for a job shop, and it's the first thing that breaks when the job mix gets wide.
Long runs need protection, and the protection has to be explicit
Once a long run starts, the cheapest schedule is the one that lets it finish uninterrupted. That means deciding — before the long run starts — which machine it owns and how much of the week it owns it for, then routing everything else around that commitment.
The failure mode is treating a long run as interruptible because it's "just sitting there cutting." It isn't sitting there; it's the most efficient state your shop reaches all week, because the setup is already paid and the machine is producing at full rate. Every interruption resets that. Protect long runs by reserving the machine for the duration, scheduling planned breaks (shift changes, preventive maintenance) into the run rather than letting them surprise you, and forcing any rush or repair that wants that machine to justify the double setup cost out loud before it's allowed to bump the run.
Protecting long runs is also how you protect on-time delivery across the whole shop. The long run is usually your largest customer commitment by piece count, and a missed long-run due date is a much bigger relationship problem than a missed 30-piece prototype.
There's also a partial-completion trap worth naming. A long run that's interrupted at 60% isn't 60% banked and safe — the remaining 40% now has to be re-fixtured, re-proven, and re-qualified, which can mean the back half costs more per piece than the front half did. When you weigh whether to bump a long run, weigh the true cost of finishing it twice, not just the hours left on the clock.
Repair work needs reserved capacity, not borrowed capacity
The instinct with an unplanned repair is to find the nearest open machine and jam it in. That's borrowing capacity from whatever was scheduled next, and it's how a single repair turns into three late jobs downstream.
The better approach is to reserve capacity for the unschedulable before you need it. If experience tells you that roughly one repair a week lands on your floor, then a week with zero reserved repair capacity is a week you've over-committed by one repair. Reserve a recurring buffer window on the machines that take the most repair work, and treat that buffer as real load even when it's empty. A quiet week means you pull a queued job forward into the buffer; a normal week means the buffer absorbs the repair without touching anything else.
Not every repair earns the buffer, though, and a triage rule keeps the buffer from being spent on the loudest caller instead of the most urgent job. A useful split: a customer who is fully down with no workaround takes the buffer immediately; a customer who is degraded but still running gets quoted into the next available window; and internal rework gets sequenced like any other short run unless it's blocking a shipment. Write the rule down once, and you stop re-litigating priority every time the phone rings.
This is the same muscle as handling rush orders without breaking the schedule: the shops that absorb disruption calmly are the ones that planned for disruption in the abstract before it arrived with a name and a due date. The difference with repair work is that the urgency is usually legitimate — a customer with a line down is a customer deciding whether you're the vendor they call next time.
A framework for running all three on one floor
Putting it together, a workable mixed-portfolio method comes down to five moves, run weekly:
- Classify every open job as short run, long run, or repair/rework. The three types get scheduled by different rules, so the first step is sorting them. A job's classification, not its due date, determines how you treat it.
- Reserve buffer capacity for repair work first. Before you load anything, block recurring repair windows on your highest-repair machines. Promised capacity that ignores repair is fiction.
- Place long runs as machine reservations, second. Assign each long run a machine and a protected duration. Everything else routes around these blocks.
- Cluster and sequence short runs by setup family, third. Group what shares setups, then order within each group by due date. This is where you recover the hours pure due-date scheduling throws away.
- Re-balance when reality moves. A repair lands, a long run finishes early, a short run's material slips. The schedule is a live document, not a Monday-morning artifact. When competing customer priorities collide, the same logic that governs multi-customer scheduling in a general job shop decides who waits.
None of these moves is exotic. What makes them hard is doing them on a static tool. A whiteboard shows you where jobs are, not what they share or what they'd cost to move. A spreadsheet can hold the data but can't show you, at a glance, that bumping Wednesday's long run to fit a repair will make two short runs late and force a duplicate setup.
Why a live capacity view is what actually makes this run
Every move above depends on seeing the whole portfolio at once: which machine each long run owns, where the repair buffer sits, which short runs share a setup, and what happens downstream when any one of them moves. That's a visual, finite-capacity problem — a Gantt view that enforces real machine limits and shows the ripple when you drag a job, rather than a list that lets you double-book a machine and find out on the floor.
Manual scheduling carries a real cost here. Independent industry analysis puts the hidden cost of manual production scheduling at roughly 5–10% of revenue for a typical job shop (Qlector 2025) — and a mixed portfolio, with its competing job types and constant re-balancing, sits at the high end of that range precisely because it's the hardest case to hold in your head.
If your shop runs short runs, long runs, and repair work on the same machines, the next step in your scheduling decision is to see whether a live, drag-and-drop capacity view changes how confidently you can commit. You can browse our scheduling templates and tools if you want to tighten up the spreadsheet version first, or skip the spreadsheet entirely and start a free trial to schedule your actual job mix against real machine capacity. No credit card required, 14-day trial.
Ready to go beyond the guide?
Most shops are on a live Gantt board within 60 minutes of sign-up, with their existing job list imported from Excel.
Get shop floor scheduling guides in your inbox
Practical articles for production managers — no spam, unsubscribe anytime.
Related articles
Scheduling an API-Certified Machining Operation: Traceability and Documentation Considerations
API-certified machining isn't just a quality label. It's a documentation chain that has to follow every part from raw ma…
Project-Based Scheduling for Oil & Gas Machine Shops: When the Rig Count Drives Demand
Oil & gas machining doesn't run on a manufacturing-belt rhythm. It runs on rig counts, capital project gates, and well c…
Long-Cycle Job Scheduling for Mold & Die Shops: The 12-Week Build Problem
Mold and die shops are the longest-cycle work in machining. A single program can occupy a machining center for 6–14 week…