Key takeaways
- Pre-kitting moves the 'what does it need?' decision from the machine to the warehouse, which cuts time per stop and truck inventory.
- Dynamic routing visits a device when revenue at risk, a fresh deadline or a service issue justifies it, not because it's Tuesday.
- Both depend on accurate planograms and time-stamped telemetry. Fix those first.
- Keep territories stable and let the daily route choose stops within them, so drivers keep their local knowledge and hosts keep their cadence.
- Measure visits per device per month against a clean baseline, paired with out-of-stocks, so you don't buy fewer visits with emptier shelves.
On a traditional route, the most important decision of the day gets made in the worst possible place: standing in front of the machine. The driver opens the door, counts slots, walks back to the truck for product, fills, guesses at what will sell by next week and moves on. Multiply that by 20 stops and you have a day spent counting things a computer already knows. Pre-kitting moves the “what does it need?” decision to the warehouse the night before. Dynamic routing moves the “does it need us today?” decision to the same place. Together, they’re the cheapest route capacity most operators will ever add.
Two definitions
- Pre-kitting: building one tote per device at the warehouse, packed with exact quantities from a telemetry-driven pick list. The driver carries the kit in, fills and leaves.
- Dynamic routing: choosing which devices to visit each day based on need, then sequencing those stops efficiently, instead of servicing every machine on a fixed weekly schedule.
Pre-kitting cuts the time at each stop. Dynamic routing cuts the number of stops. You can do the first without the second, but the second without the first just sends a driver with a fully loaded truck to fewer machines.
Prerequisites
Don’t start until these are true:
- Time-stamped telemetry from every device on the route, from connected machines or retrofit modules reporting DEX and MDB data
- Accurate planograms: slot, SKU and capacity, verified in the field rather than copied from a template
- A product master with case packs, shelf life and temperature zone
- A pick area organized by SKU, with a chilled zone for fresh food
- Labeled totes per device or stop
- A driver app to confirm fills and log exceptions (shorts, damages, pulls)
The planogram is the one people skip. If slot B4 is really cheddar crackers and the system thinks it’s pretzels, every pick list for that machine is wrong in two directions at once.
Pre-kitting, step by step
1. Build the pick list after the day’s sales
Generate lists late enough to capture the day’s selling, once evening traffic has tapered off. For most workplace routes, a list built at 2 p.m. misses the afternoon slump and the shift-change rush.
2. Compute fill quantities per slot
For each slot on tomorrow’s route:
Fill = target level − (current on-hand − forecast sales until the driver arrives), capped at capacity.
Example: a slot holds 12. At 9 p.m. it has 7. The forecast says 2 more will sell before tomorrow’s 10 a.m. visit, so expected on-hand on arrival is 5, and the kit carries 7 for that slot. If the forecast suggests a target below capacity, as it might for a slow fresh item, use the target instead. Our forecasting guide explains why that target should come from a demand range rather than a single average.
3. Add fresh rotation
List every fresh item that expires before the next planned visit. The driver pulls those and the kit carries replacements. Pulls get a reason code, so they show up as spoilage rather than shrink.
4. Pick and pack
One tote per device, labeled with the stop and device. Pack in slot order so the driver fills top to bottom without sorting. Chilled items go in a separate cold tote that stays in refrigeration until loading.
5. Verify
Scan or weigh every tote against its list before it leaves. A short tote that leaves the warehouse becomes phantom shrink at the machine.
6. Load in reverse stop order
The first stop’s totes go on the truck last, nearest the door.
7. Fill, confirm and log exceptions
At the machine, the driver fills from the kit and confirms in the app. There’s no counting; telemetry already knows the on-hand. Anything that didn’t fit, arrived damaged or was short gets logged, and that feeds tomorrow’s list.
Dynamic routing logic
The question for each device is simple: is a visit today worth more than it costs?
Reasons to visit:
- A top seller is projected to sell out before the next possible visit
- A fresh item is reaching its date
- There’s an open service ticket (a jammed coil, a reader fault, a temperature alarm)
- The location host has an agreed minimum cadence
- Cash needs collecting, where cash still exists
An illustrative calculation. Say a stop costs $25 in driver time and vehicle cost. A machine’s top two sellers are projected to sell out tomorrow afternoon, and the forecast puts the sales at risk over the following three days at $36, at a 40% margin. That’s $14.40 of margin at risk, so the visit isn’t worth it on stockouts alone. If the same machine also has a fresh pull due tomorrow, or sits in the same building as a machine that does need a visit, the answer flips. Good routing doesn’t evaluate stops in isolation: a stop two minutes from another stop costs far less than $25.
Sequencing. Once the day’s stops are chosen, ordering them is a vehicle routing problem with time windows: dock hours, building access, security check-in, parking, traffic, service time per stop and how long chilled totes can stay out of refrigeration. Software handles this well. Drivers handle what software doesn’t know, like which loading dock is blocked on Thursdays, so give them an easy way to feed that back into the plan.
Keep territories stable. Fully dynamic routes, where any driver might visit any machine, break the relationships and local knowledge that make routes run. A better pattern is stable territories with dynamic stop selection: the same driver covers the same area, but the stops within it change daily. Fresh-food sites get anchor days so hosts know when to expect deliveries.
Measuring visit reduction honestly
The headline metric is service visits per device per month. To make it mean something:
- Build a baseline of at least 8 weeks on the same devices before the change
- Normalize for devices added or removed during the period
- Separate scheduled restock visits from service calls
- Pair it with counter-metrics, because fewer visits are only good if shelves stay full
| Metric | Why it matters | What good looks like |
|---|---|---|
| Visits per device per month | The core capacity gain | Falls |
| Out-of-stock events per device | Proves you didn’t trade visits for empty slots | Falls or holds |
| Units filled per visit | Each visit does more work | Rises |
| Minutes per stop | Pre-kitting’s direct effect | Falls |
| Carry-back units | Kit accuracy | Trends toward zero |
| Fresh waste rate | Fewer visits can mean older food | Holds or falls |
A worked example. A route of 60 devices averages 12 visits per device per month: 720 visits. If visits fall by 27%, the average reduction we’ve measured across 8Kava deployments using pre-kitting and dynamic routing, that’s about 526 visits, freeing roughly 194 stops a month. At around 20 stops a day, that’s nearly 10 route-days a month: room to add locations without adding a truck.
Where it goes wrong
- Planogram drift. Slots get reassigned in the field and nobody updates the system.
- Telemetry gaps. A device that’s offline can’t report, so its pick list is a guess. Flag stale devices instead of kitting them blindly.
- Topping up anyway. Drivers who don’t trust the kit bring extra product “just in case,” and carry-back climbs. Trust is earned with a few weeks of accurate kits, so share kit accuracy with the drivers.
- Lists built too early, before the day’s last sales are in.
- Fresh food on a pure needs-based schedule. Fresh food needs a cadence, not just a threshold.
- No feedback loop. If exceptions logged at the machine don’t change tomorrow’s list, drivers stop logging them.
A rollout plan that works
Don’t switch a whole fleet overnight. Pick one route with reliable telemetry and a driver who’s curious rather than skeptical. Run pre-kitting alone for two to three weeks, until carry-back is low and the driver trusts the totes. Then turn on dynamic stop selection for that route, keeping fresh sites on anchor days. Compare the route against its own baseline and against a similar route that hasn’t changed. Once the numbers hold for a month, expand route by route. The warehouse layout usually needs one round of rearranging along the way; plan for it.
How 8Kava approaches this
Pre-kitting and dynamic routing are part of Forecasting & Auto-Replenishment on Kava OS Pro, and the driver app handles fills and exceptions. On Autopilot, Kava Agent drafts pick lists and re-sequences the day’s route around problems, with the operator approving. As an operations manager at a regional vending operator in Colorado put it: “The agent drafts tomorrow’s pick lists before my drivers wake up. I approve them over coffee.” For what this looks like at fleet scale, the Midwest operator case study shows a fleet that added 140 locations without adding a route.
