# Field service dispatch board that ranks the closest tech

> See today's unassigned jobs and every technician's lane on one screen, with real drive times and a best fit suggestion on every card.

- Workflow type: app
- Services: Geolocation, Airtable, Slack Bot
- Categories: Operations
- Published: 2026-08-24

## What it does

- One screen for the morning: unassigned jobs on the left, a lane for each technician, and every card showing the customer address, time window, priority, and the drive time from that tech's previous stop.
- A ranked best fit suggestion on each unassigned job, worked out from real driving distance from where each technician already is, instead of who looks free on paper.
- Assign or reorder a job with a click and it saves straight back to your jobs table, so the board and your records never drift apart.
- A Rebuild today's routes button that re-sequences every technician's stops to cut total drive time, respects time windows and priority, and posts the finished run sheets to your dispatch channel.

## What you'll need

- An Airtable base with a table of jobs (customer, service address, time window, priority, status, assigned technician) and a table of technicians (name and where they start the day)
- A Slack workspace and the dispatch channel where run sheets should be posted
- A daily drive time limit, if you want the board to flag technicians pushing past it
- No separate maps account to set up. Address lookups, distances, and directions are built in.

## Prompt

Build me a morning dispatch board for our field service team. It is one screen the dispatcher opens at the start of every day: a column of today's unassigned jobs on the left, and a lane for each technician beside it holding that tech's stops in running order.

Data sources. Jobs and technicians both live in Airtable. Use Airtable List Records to load today's jobs (customer name, service address, time window start and end, priority, status, assigned technician, and stop order) and to load the technician roster (name, where they start the day, and an optional per-tech daily drive time limit). Filter jobs to today's date.

What each card shows. Every job card shows the customer address, the time window, the priority, and the drive time from that technician's previous stop. Cards in the unassigned column additionally show a ranked best fit suggestion naming the two or three technicians who are closest, with the extra drive time each one would take on.

Making the distances real. Use Geolocation Forward Geocode to turn every job's service address and every technician's start location into coordinates, and cache those coordinates back onto the Airtable record so the same addresses are not geocoded again every morning. Use Geolocation Calculate Distance Matrix with each technician's current end of route position as the origins and the unassigned job locations as the destinations, and rank the best fit suggestions from that result. Once a technician's day is set, use Geolocation Get Directions across their ordered stops to build the turn by turn running order and the per leg drive times shown on the cards.

Actions on the board. The dispatcher can assign an unassigned job to a technician, move a job from one technician's lane to another, and reorder stops within a lane. Each of those writes straight back with Airtable Update Record, setting the assigned technician and the stop order, and the affected lane recalculates its drive times immediately.

Background agent. Add a Rebuild today's routes button that kicks off a background agent. The agent re-sequences every technician's stops to cut total drive time while respecting each job's time window and its priority, so a high priority job never gets pushed late just to save a few minutes of driving. It writes the new stop order back with Airtable Update Multiple Records, then posts the finalized run sheets to the dispatch channel with Slack Bot Send a Message, one clean run sheet per technician listing the stops in order with addresses, time windows, and drive times. When the agent finishes, the board refreshes to the new order and shows what moved and how much total drive time was saved.

Guardrails. Show a running total drive time at the top of each technician's lane, compared against a configurable daily limit, and clearly flag anyone pushing past it. Keep unassigned jobs pinned in the left column, and keep a separate pinned section for unroutable jobs, meaning an address that failed to geocode, a job no technician can reach inside its time window, or a job with no time window set at all. Nothing should silently fall off the board. The daily drive time limit should be editable inside the app.

## How to customize

- Change the daily drive time limit, or set a different one for each technician
- Decide what best fit means to you: simply closest, or closest that still clears the job's time window and priority
- Choose whether the rebuild posts one run sheet per technician or a single combined roundup, and which channel it lands in

## FAQ

### Does this replace our Airtable base?

No. Airtable stays the system of record. The board reads today's jobs and technicians from your existing tables and writes assignments and stop order back to those same records, so anyone still working in Airtable sees the same picture.

### How does it know which technician is closest?

It turns each job's service address into a map location, then measures the actual driving distance and time from where each technician's route currently ends. That is what produces the ranked best fit list on an unassigned card, rather than a straight line guess.

### What happens to a job with a bad address?

It stays pinned on the board in an unroutable section with the reason shown, such as an address that could not be found or a time window nobody can reach in time. Nothing is silently dropped from the day.

### Can the dispatcher overrule the suggestions?

Yes. The best fit ranking is only a suggestion. Dispatchers can assign any job to any technician and reorder stops by hand, and the drive time totals update to reflect whatever they chose.

### What does the rebuild button actually change?

It re-sequences the order of each technician's existing stops to cut total driving, keeping time windows and job priority intact. It does not invent or cancel jobs, and the new order is written back to Airtable along with run sheets posted to your dispatch channel.

Use this prompt in General Input: https://www.generalinput.com/prompts/field-service-dispatch-board-that-ranks-the-closest-tech