Daily delivery run sheet from Airtable, geocoded and routed
Every weekday at 7am, turn today's Airtable deliveries into a clustered stop order with coordinates, notes, and a one-tap Google Maps link in Slack.
Build an agent workflow that posts the driver's daily delivery run sheet to Slack every weekday morning.
Trigger: cron, every weekday (Monday through Friday) at 7:00am in the org's local timezone.
Workflow inputs the user should configure: the Airtable base ID and deliveries table name, the field names for address, status, delivery date, customer name, and notes, the depot's starting latitude and longitude (or address to geocode once), and the Slack channel or user ID that should receive the run sheet.
What the agent should do, in order:
1. Call Airtable's List Records on the deliveries table with a filterByFormula like AND({Status}='Scheduled', IS_SAME({Delivery Date}, TODAY(), 'day')) so it only pulls today's confirmed stops. Use the configured field names. Paginate if needed.
2. For each record, call TrueWay Geocoding's Geocode (Forward Geocoding) operation on the delivery address to get a latitude and longitude. Keep the original raw address alongside the coordinates. If a record fails to geocode (empty results array or non-200 response), add it to a 'needs attention' list with the customer name and raw address; do not drop the record silently.
3. Use the agent's own judgment to cluster the geocoded stops geographically and propose an efficient stop order that starts from the configured depot lat/lng, groups nearby drops together, and avoids zig-zagging across town. This is a smart first pass, not a guaranteed shortest path. Number the stops 1..N in the proposed order.
4. Build a single Slack message and send it with Slack's Send a Message operation to the configured channel or DM. The message should be one post (no thread) with this shape:
• A short header line with today's date and the stop count (e.g. 'Run sheet for Mon Jun 24: 9 stops').
• If there are any failed geocodes, a 'Needs attention before rolling' section at the top listing each problem record's customer name and raw address so dispatch can fix it.
• A numbered list 1..N with, on each line, the customer name, the address, the resolved coordinates as 'lat, lng', and any delivery notes from the Airtable record.
• A final line with a Google Maps multi-stop navigation URL built from the depot plus the ordered stop coordinates, in the form https://www.google.com/maps/dir/?api=1&origin=DEPOT_LAT,DEPOT_LNG&destination=LAST_LAT,LAST_LNG&waypoints=LAT1,LNG1|LAT2,LNG2|... so the driver can tap straight into navigation.
Use Slack mrkdwn formatting (*bold*, not **bold**). Keep the whole brief in a single message so the driver only sees one ping. If there are no scheduled deliveries for today, post a short 'No deliveries scheduled today' note instead of a full run sheet.
Confirmed operations to use: airtable.List Records, trueway-geocoding.Geocode (Forward Geocoding), slack.Send a Message. Stop-ordering and message drafting are the agent's job; everything else is straight API calls.
Additional information
What does this prompt do?
- Pulls today's scheduled deliveries from your Airtable dispatch table every weekday morning at 7am in your local timezone.
- Looks up the latitude and longitude of every drop-off address so the route is built from real coordinates, not just text.
- Groups nearby stops together starting from your depot and posts the proposed order, customer names, notes, and a multi-stop Google Maps link in one Slack message.
- Flags any address that did not match cleanly at the top so dispatch can fix it before the driver leaves the yard.
What do I need to use this?
- An Airtable base with a deliveries table that has at least an address, a status, a delivery date, and a notes field.
- An account for the geocoding service so addresses can be turned into map coordinates.
- A Slack workspace with the channel your driver or dispatcher reads each morning.
- Your depot or warehouse address or coordinates, used as the starting point of the route.
How can I customize it?
- Change the trigger time, the days it runs, or the timezone to match your operation (for example, 6am seven days a week).
- Point the workflow at a different Airtable view or status value so it only picks up stops that are confirmed for the day.
- Swap the Slack channel, send it as a direct message to the driver, or route to several channels by region or vehicle.
- Adjust the starting depot, set a max number of stops per run, or ask for two separate routes when there are too many deliveries for one truck.
Frequently asked questions
Will this work if I do not have a transportation management system?
What happens if an address does not match the map?
How are the stops ordered?
Can I get separate run sheets for multiple drivers?
Does the Slack message include navigation?
Stop hand-building the driver brief every morning.
Connect Airtable, the geocoder, and Slack once. Geni delivers a clean, ordered run sheet to your driver's channel every weekday at 7am.