Solutions · Transport & logistics
When the client asks where the parcel is, the agent does not guess: it calls the courier, asks them, and comes back with the answer.
Voice dispatching, built as a mechanism, not as a promise: a table with explicit states, three attempts two minutes apart, the call result written in a structured way, and a filter that removes the driver’s number from everything that reaches the model, so it cannot be dictated to the client.
Already builtMecanismul de dispecerizare e scris și migrat în platforma noastră vocală: tabela `courier_calls` cu șapte stări posibile, trei încercări implicite, pauză de 120.000 ms între ele și rezultatul apelului păstrat structurat, plus cinci funcții de server care o folosesc — inițierea apelului către curier, verificarea rezultatului, mătura pentru apelurile rămase agățate, identificarea celui care sună înapoi și webhookul de după apel. A doua implementare e filtrul de ieșire scris pentru un client din transport, care elimină recursiv câmpurile de contact ale șoferului din rezultatul uneltei, păstrând numerele dispeceratului. Rezerva, spusă înainte să întrebi: partea de telefon trece printr-o gazdă SIP, iar gazda prin care merg liniile noastre de test nu răspunde la data scrierii — nu-ți dăm un număr de demonstrație pe care nu l-am putea ridica în fața ta.
In a transport or delivery company, most incoming calls are the same question asked by different people: where is the cargo, what time will it arrive, why has it not arrived. The answer is not in a document and not in a system — it is in the driver’s head, while driving. The dispatcher connects the dots: takes the client’s call, calls the driver, returns to the client. This work takes one whole person and is done a hundred times a day, with the same three sentences.
We built exactly this chain, as a mechanism with states, not as a marketing function. An agent talks to the client. When it needs an answer it does not have, it calls a function that starts a second call — to the courier — linked to the conversation it came from. That call has its own row in a table, with a status that moves through `calling`, `in_progress`, `retrying`, `completed`, `failed`, `no_answer`, `timeout`, with the attempt number, with a maximum of three attempts and a two-minute pause between them. The result is written in a structured way: a summary of what the courier said, the estimated time, the position.
The part that is easy to miss and which we treat as a requirement, not as a precaution: the driver’s phone number must not reach the client. It is not an instruction written in the agent prompt, because an instruction in a prompt can be bypassed. It is a filter that recursively walks the tool result and removes the driver’s contact fields before that result reaches the model — while keeping the dispatch numbers. What has been removed cannot be dictated, no matter how the agent is asked.
And the most important limit is one of infrastructure, not intelligence: a voice agent on the phone depends on a SIP host between your operator and the platform. When that host goes down, calls do not go out, and the defect signature is recognisable — request expired, empty call identifier, zero duration. The host through which our test lines pass does not respond as of the writing of this page. On the web, the voice route is verifiable today; on the phone, the first step of any work is to establish which host your numbers enter through.