Sensitivity
If the forecast is off by +/- 15% or +/- 30%, what does total cost do? The asymmetry on the upside reveals where capacity bottlenecks compound. The SLA hit probability stresses the plan at the +15% upside case, the most common bad outcome ops planners actually face. Each scenario re-runs the day-over-day cascade, so upside cases compound non-linearly.
Probability that booked capacity covers actual demand within SLA.
How this forecaster works
"How much capacity do we need next week?" is the question logistics ops gets every Monday. The answer depends on the same five drivers across very different operations: forecast volume, productivity per resource, shrinkage (PTO + sickness), peak buffer (variance protection), and shift length. This tool runs the math for two distinct personas and lets you check how the answer changes under realistic forecast error.
V2 update (2026-05-15): rebuilt around operator feedback from a former Shopee BR logistics ops lead who runs hub occupation analysis as a daily workflow. Five upgrades: (1) day-over-day backlog cascade (today's overflow is tomorrow's effective inbound), (2) two-layer capacity model (processing throughput vs storage holdability), (3) storage occupation percent as a primary headline anchor with configurable alert threshold, (4) origin mix decomposition (Line haul / Seller / FBS) for Persona A, (5) operational levers card (boost capacity + negotiate origin defer) that activates when baseline peak crosses the alert.
Real-world impact
Illustrative scenarios drawn from operator practice. Numbers are realistic order-of-magnitude estimates, not measurements from any specific deployment.
Case 1: 3PL last-mile facing a 35% Q4 volume jump
SetupNetwork planner at a regional 3PL handling 12,000 daily parcels with 140 couriers and 18 vans across 3 hubs.
ProblemStandard linear model said add 50 couriers; gut said that was wrong because backlog from Day 1 would cascade into Day 3-4 vehicle saturation, but no one could quantify it cleanly. Wrong-sizing risk was roughly $180K either way (overhire or service collapse).
Tool surfacedV2 backlog cascade with 2-layer capacity showed couriers were not the bottleneck (occupation 78%); vans were (occupation 96% with origin mix shift from urban to peri-urban), recommending 8 extra vehicles and 22 couriers, not 50.
OutcomeQ4 ran at 94% on-time vs 89% prior year, courier overstaffing avoided, net cost vs the linear-model plan came out about $140K lower with better service.
Case 2: DTC fulfillment warehouse missing cutoff 3 days in 5
SetupOps manager at a DTC brand's contracted fulfillment site, 2 shifts, 60 pickers, 8 sorters, processing 8,000 orders per day with same-day cutoff at 2 PM.
ProblemSame-day promise was failing on roughly 60% of weekdays, refund and re-ship cost about $11K per missed-cutoff day, and the brand was threatening to switch 3PLs.
Tool surfacedForecaster's intraday view showed sorter capacity at 102% utilization 11 AM to 1 PM while pickers ran at 71%; the bottleneck was sortation, not pick. Adding 2 sorters on a split shift was modeled to fix it.
Outcome2 sorters added on a 10 AM start, cutoff miss rate dropped to 8% of days within 3 weeks, retained the brand account worth about $1.4M annually.
Day-over-day cascade
day[0].inboundEffective = forecast[0]
day[0].backlog = max(0, inboundEffective - processingCapacity)
day[0].occupation = backlog / storageCapacity
for d in 1..horizon:
day[d].inboundEffective = forecast[d] + day[d-1].backlog
day[d].backlog = max(0, inboundEffective - processingCapacity)
day[d].occupation = backlog / storageCapacity
Storage breach is a soft signal. Occupation can exceed 100% and is shown in red; the model does not cap it. Persona B uses the same cascade as a directional model, treating inbound + outbound as the total processable load.
Persona A · 3PL last-mile
processed_d = min(inboundEffective_d, processingCapacity)
arrivals_d = processed_d * inductionRate / 100
stops_d = arrivals_d / pkgPerStop
couriers_d = ceil(stops_d * shiftMin / routeStops / shiftMin
/ (1 - shrinkage) * (1 + peakBuffer))
vehicles_d = ceil(arrivals_d / vehicleCapacity * (1 + peakBuffer))
sort_hrs_d = processed_d / sortThroughputPerHour
dock_util_d = arrivals_d / (sortLines * sortThroughput * shiftH)
Persona B · Fulfillment warehouse
effective_out = forecast_out * (1 + damageRate)
productive_m = shiftHours * 60 - breaksMin
pickers = ceil(effective_out / pickerRate * 60 / productive_m
/ (1 - shrinkage) * (1 + peakBuffer))
packers = ceil(effective_out / packerRate ... same form)
receivers = ceil(forecast_in / receiverRate ... same form)
dock_demand_h = (forecast_in + forecast_out) / dockThroughputPerHour
dock_util = dock_demand_h / (dockDoors * shiftHours)
Sensitivity logic
For each of -30%, -15%, base, +15%, +30%, the forecast is scaled and the full pipeline re-runs. Cost typically grows roughly linearly on the downside but compresses on the upside (you cannot un-buy fixed shifts), and breaks asymmetrically once a resource saturates. The SLA hit probability formula is a heuristic: clamp(1 - max(0, demand - base_capacity) / demand, 0, 1). It treats capacity as locked to the base forecast (which is the realistic case for a Monday plan).
Where the numbers come from
- Time-of-day curves are fixed per persona in v1 (induction peaks around 08:00 for 3PL, delivery around 16:00, fulfillment outbound bimodal at 11:00 and 16:00). Real ops should fit curves to their own data; this tool calibrates curve shape to representative LATAM marketplace patterns.
- Shrinkage defaults 18-22% reflect typical operations including PTO, training, sickness, and breaks. Latin American 3PL ops often run higher (20-25%); US fulfillment with proper schedule adherence tools can hit 12-15%.
- Peak buffer 15-25% adds variance protection. The buffer compounds: if you forecast 10k packages with a 20% buffer, you staff for 12k. If the day comes in at 14k, you are still 14% short.
- Cost defaults are USD and approximate. Real 3PL courier costs vary 60-180 USD/day across LATAM depending on city, vehicle ownership model, and gig vs employed labor mix. Fulfillment hourly rates vary similarly.
What this tool is NOT
- It is not a substitute for a workforce management (WFM) platform or a real warehouse management system (WMS). Production WMS / TMS handle skill-based routing, real-time adherence, slot booking, and dock scheduling at the minute level. This tool calculates the headcount and fleet size that feeds those systems.
- It does not model returns flow capacity, multi-shift handoffs, per-zone WIP limits, or labor ramp-up time on new hires. For multi-quarter capacity plans those gaps matter.
- The intraday hourly view assumes one 24h horizon and one shift. Multi-day intraday and multi-shift are out of scope for v1.