Dispatch Algorithm
The dispatch algorithm picks the best shuttle for each waiting ticket by weighing how urgent the ticket is against how well each shuttle fits the job. This page explains the factors it considers and what you can tune.
How the Best Match Is Chosen
Every cycle, the system looks at each waiting ticket alongside each available shuttle and decides which pairing makes the most sense. The best pairing is dispatched first, then the system re-checks the remaining tickets and shuttles and repeats — so assignments always reflect the latest situation in the yard.
To decide, it weighs five factors — three about how urgent the ticket is, two about how well the shuttle fits the job:
| Factor | What it considers | Default weight |
|---|---|---|
| Sequence | Where the ticket sits in the dispatcher's manually-ordered work queue | 20% |
| Due date | How soon the ticket is due — overdue tickets count as most urgent | 25% |
| Label priority | How important the ticket's labels are (Critical → Low) | 15% |
| Proximity | How close the shuttle is to the ticket's pickup location | 25% |
| Workload | How busy the shuttle already is compared to its capacity | 15% |
The weights set how much each factor matters. A higher weight means that factor has more pull on the final decision — so a 25% proximity weight means distance influences the choice more than a 15% workload weight does. You control these weights in Admin Settings to match how your yard runs.
Assigning Several Tickets at Once
When a shuttle picks up more than one ticket in a cycle, the system measures proximity from where the shuttle will end up after each job, not from where it started. So once a ticket is assigned, the next ticket is matched based on where that work leaves the shuttle — which keeps multi-ticket runs clustered close together and cuts down on backtracking across the yard.
Seeing the Priority Score
In the Dispatch Queue panel of the Dispatch screen, hover any ticket row to see its current priority score on a 0–100 scale (higher = dispatched sooner):
Priority score: 87/100
This score reflects the ticket-side factors (sequence, due date, and label priority) under your current settings, so 100 means "as urgent as this ticket can be." The queue is always sorted with the most urgent ticket on top, so the first row is the next ticket up for dispatch.
Preemption
If every eligible shuttle is already full, the system can still make room for a much more urgent ticket through preemption. When a new ticket is significantly more urgent than the least-urgent ticket a shuttle is currently holding, that less-urgent ticket is bumped back into the queue and the urgent one takes its place.
Safeguards keep this from causing churn:
- Only tickets that haven't been started yet can be bumped — work already in progress is never interrupted
- A ticket can only be bumped once per cycle
- A bumped ticket goes straight back into the queue and is reconsidered on the next cycle
Dispatch Queue Behavior
- Tickets are processed in urgency order (most urgent first)
- If no eligible shuttle is found, the ticket stays in the queue and the attempt counter increments
- After 10 failed attempts (configurable), the ticket is marked unassignable and removed from the queue. It requires manual assignment by a Dispatch user.
- Queue items automatically expire after 7 days
Configurable Settings
These settings can be adjusted in Admin Settings:
| Setting | Default | Description |
|---|---|---|
| Max Retry Attempts | 10 | Dispatch cycles before a ticket is marked unassignable |
| Max Concurrent Tickets per Shuttle | 5 | Hard capacity cap per shuttle |
| Sequence Weight % | 20 | How much the dispatcher's manual ordering matters |
| Due Date Weight % | 25 | How much approaching due dates push tickets up |
| Label Priority Weight % | 15 | How much label priority (Critical/High/Normal/Low) matters |
| Proximity Weight % | 25 | How much distance to the ticket origin matters |
| Workload Weight % | 15 | How much current ticket count matters |
The five weight percentages must sum to 100.
- Small yard, clustered locations: Lower proximity weight (shuttles are always close) and raise workload weight to balance assignments across the fleet
- Large yard, spread-out locations: Raise proximity weight so the closest shuttle gets the job
- Time-sensitive operations: Raise due-date and label-priority weights so urgent work jumps the queue faster
- Dispatcher-driven ordering: Raise sequence weight if your dispatchers actively curate the work queue order