An AI Agent to automate delivery information collection.
Written By William Bowen
Last updated 22 days ago
Introduction
Ever wanted to track your deliveries in real-time without the constant back-and-forth? Our Logistics AI Agent does just that!
It automatically messages your drivers, collects their ETA, updates any delays, confirms delivery completion, and even requests paperworkβall without you lifting a finger.
Use cases
Here are 10 specific use cases for the Logistics AI Agent:
1. Last-Mile Delivery Tracking
β Automatically collect ETAs, delivery updates, and confirmation from drivers handling last-mile deliveries for e-commerce, food delivery, or courier services.
2. Freight & Trucking Coordination
β Manage long-haul trucking logistics by tracking driver progress, delays, and required paperwork across multiple stops.
3. Field Service & Maintenance Scheduling
β Ensure technicians arrive on time, log job completions, and upload service reports or photos after each site visit.
4. Warehouse & Distribution Center Operations
β Coordinate incoming and outgoing shipments, collect delivery confirmations, and track unloading times for warehouse teams.
5. Medical Supply & Pharmaceutical Deliveries
β Ensure critical medical deliveries (e.g., vaccines, blood samples, medications) arrive on time and require drivers to confirm temperature compliance.
6. Construction & Equipment Logistics
β Track heavy machinery or construction material deliveries, ensuring they reach job sites on schedule and confirming successful drop-offs.
7. Moving & Relocation Services
β Keep customers updated on truck arrival times, track the status of their belongings in transit, and confirm when everything has been delivered.
8. Event & Catering Delivery Coordination
β Ensure timely arrival of catering orders, event supplies, or rental equipment while collecting real-time status updates from delivery teams.
9. Auto Transport & Towing Services
β Track vehicle pickups, drop-offs, and any delays for auto transport companies moving cars across different locations.
10. Postal & Courier Service Optimisation
β Automate delivery tracking, collect proof of delivery, and log any issues for courier drivers handling large volumes of shipments.
With this AI Agent, logistics teams can save time, reduce manual coordination, and ensure smoother operations across industries. π
What you need
To build this, simply:
Copy the template below, or select it in our app.
Save the template.
Enable it on your phone number
Youβre ready to go!
Walkthrough video
Logic

Template
Example{
"$schema": "https://web-api.clerk.chat/pipeline-schema",
"name": "Logistics Agent Template",
"nodes": [
{
"type": "tool_runner",
"name": "Notes",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "json",
"nodeConfig": {
"type": "contact_tools",
"config": {},
"enabledTools": [
"set_attribute"
],
"tools": {
"set_attribute": {
"paramValues": {
"attributeName": {
"type": "fixed",
"value": "Notes"
},
"attributeValue": {
"path": "Notes",
"type": "pipeline-variable"
}
}
}
}
}
},
{
"type": "tool_runner",
"name": "Update Completed?",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "json",
"nodeConfig": {
"type": "contact_tools",
"config": {},
"enabledTools": [
"set_attribute"
],
"tools": {
"set_attribute": {
"paramValues": {
"attributeName": {
"type": "fixed",
"value": "Completed?"
},
"attributeValue": {
"path": "Completed?",
"type": "pipeline-variable"
}
}
}
}
}
},
{
"type": "template",
"name": "Paperwork",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "user_message",
"nodeConfig": {
"template": "Great. To finalise the delivery, please send a picture of your paperwork. Thanks in advance."
}
},
{
"type": "template",
"name": "Completed?",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "user_message",
"nodeConfig": {
"template": "Thanks for your ETA update. Please message back once the delivery is complete, or if your ETA changes."
}
},
{
"type": "template",
"name": "Find ETA",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "user_message",
"nodeConfig": {
"template": "Please message back with your ETA (date and time). Thanks!"
}
},
{
"type": "ai_bot",
"name": "Brain",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "json",
"nodeConfig": {
"modelProvider": "openai",
"modelVersion": null,
"maxTokens": null,
"temperature": null,
"variables": {},
"prompt": "# Goal:\n- Extract the driver's ETA. \n- Extract if the driver has completed the delivery job. \n- Extract any relevant notes.\n\n# Instructions: \nIf you cannot extract a required piece of data from the conversation, then leave the output empty, blank. (do not output 'no' or 'empty', just output nothing). \n\nExtract the driver's ETA in the following format: Date, Time. \n\n# Context:\nToday's date is: {{dateTimeIso}}",
"promptSections": [],
"sectionTemplates": {},
"responseSchema": {
"type": "object",
"required": [
"ETA",
"Notes",
"Completed?",
"next_agent"
],
"properties": {
"ETA": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Completed?": {
"type": "string"
},
"next_agent": {
"type": "string"
}
}
},
"opts": {
"sendStructuredConvo": true
}
}
},
{
"type": "tool_runner",
"name": "Update ETA",
"triggeredBy": [
"unreadMessage.fromAny"
],
"responseType": "json",
"nodeConfig": {
"type": "contact_tools",
"config": {},
"enabledTools": [
"set_attribute"
],
"tools": {
"set_attribute": {
"paramValues": {
"attributeName": {
"type": "fixed",
"value": "ETA"
},
"attributeValue": {
"path": "ETA",
"type": "pipeline-variable"
}
}
}
}
}
},
{
"type": "trigger",
"name": "Start",
"triggeredBy": [
"userMessage"
],
"responseType": "json"
}
],
"edges": [
{
"name": "(ETA)' N (Completed?)'",
"sourceNode": "Brain",
"destinationNode": "Find ETA",
"sourceVariables": null,
"filters": [
{
"type": "rule",
"config": {
"syntax": {
"isEmpty": [
{
"var": "message.ETA"
}
]
}
}
}
]
},
{
"name": null,
"sourceNode": "Update Completed?",
"destinationNode": "Notes",
"sourceVariables": null,
"filters": []
},
{
"name": null,
"sourceNode": "Update ETA",
"destinationNode": "Update Completed?",
"sourceVariables": null,
"filters": []
},
{
"name": "(ETA) N (Completed?)",
"sourceNode": "Brain",
"destinationNode": "Paperwork",
"sourceVariables": null,
"filters": [
{
"type": "rule",
"config": {
"syntax": {
"and": [
{
"!": [
{
"isEmpty": [
{
"var": "message.ETA"
}
]
}
]
},
{
"!": [
{
"isEmpty": [
{
"var": "message.Completed?"
}
]
}
]
}
]
}
}
}
]
},
{
"name": "(ETA) N (Completed?)'",
"sourceNode": "Brain",
"destinationNode": "Completed?",
"sourceVariables": null,
"filters": [
{
"type": "rule",
"config": {
"syntax": {
"and": [
{
"!": [
{
"isEmpty": [
{
"var": "message.ETA"
}
]
}
]
},
{
"isEmpty": [
{
"var": "message.Completed?"
}
]
}
]
}
}
}
]
},
{
"name": "Update contact properties",
"sourceNode": "Brain",
"destinationNode": "Update ETA",
"sourceVariables": null,
"filters": []
},
{
"name": "Conversational AI",
"sourceNode": "Start",
"destinationNode": "Brain",
"sourceVariables": null,
"filters": []
}
]
}