Workflow A · One-pager
Driver Check-In Line
01 · Use case
Truck drivers call their broker several times a day to report where they are, and dispatchers spend hours on these calls. Sam, the voice agent on the Ridgeline Freight check-in line, looks up the load and works out the remaining drive time from public map APIs. It then tells the driver whether they will make the delivery appointment and logs the check-in, with a priority and a draft customer notice, for dispatch.
02 · High-level flow
- 01Web call
The driver calls in. Sam asks for the load number and reads it back digit by digit to confirm it.
- 02
get_loadtoolLooks up the load in a mock TMS and returns the delivery address and appointment time. If the load isn't found, Sam asks once more, then promises a dispatcher callback.
- 03
drive_timetoolGeocodes the driver's city with Open-Meteo, gets the remaining drive time from OSRM, and a code step compares it with the time left before the appointment: on time, at risk (under 60 min to spare) or late.
- 04The API result steers the call
If the driver is on track, Sam reads back the ETA. If late, Sam asks for the reason and a new ETA. If the city can't be found or routing fails, Sam asks for the driver's own ETA and never guesses.
- 05After the call
Extract pulls the load number, driver, location, ETA and delay reason. Classify labels the call on time, at risk, late, breakdown, accident or unverified. Generate writes a priority (P1–P4), the dispatcher's next action and a customer notice.
- 06Write-back
One row per call goes to the
load_check_instable in Twin, with the extracted fields, the system's verdict, the classification and the ops notes.
03 · Components used
- Inbound Voice AgentSam, a single fixed voice, with a transcriber hint for 5-digit load numbers
- Web call trigger onlyNo phone number bought, no outbound calls
- 2+ tool calls
get_loadanddrive_time - AI nodeGenerate, which writes the priority, next action and customer notice
- Public API call, result used in the flowOpen-Meteo geocoding and OSRM routing; their drive time decides on time, at risk or late, and that decides what Sam says next
- Classify nodeLoad status (6 classes)
- Extract nodeCheck-in details (5 fields)
- Write-back nodeWrite to Twin,
load_check_instable - Code steps (Python Sandbox)Mock TMS lookup, the on-time/late decision, and formatting the tool results for the agent
04 · Design
The on-time or late verdict comes from code using the routing API's drive time, not from the LLM, so the same load and city always give the same answer.
Sam may only state times a tool returned, and every failure has a path that falls back to the driver's own ETA or a dispatcher callback, so the agent never invents a number.