Daily "add a stop" Slack briefing for field reps

Every weekday at 7am, turn each rep's scheduled customer visits into a fuller day by suggesting nearby overdue accounts that fit between their meetings.

Agentic Task
GeolocationGoogle CalendarHubSpotSlack BotSalesOperationsDaily DigestsMeeting Workflows
PromptCreate

Build an agent workflow that runs every weekday at 7am in the rep's local time zone and sends each field sales rep a personalized 'fill the gaps in your sales day' briefing as a Slack DM. The point is to turn already-scheduled customer visits into a fuller, route-optimized day, the same outcome Badger Maps and Map My Customers' Smart Planner sell as their headline feature.

Trigger: cron, weekdays at 7am. The workflow should run once per rep. Default to one rep for the initial setup, with the rep's identity (Slack user, HubSpot owner id, Google Calendar) configurable, and structure the agent so adding more reps later is straightforward.

Step 1. Pull today's events from Google Calendar with List Events for the rep's primary calendar, scoped to today in the rep's time zone. Keep only events that have a real street address in the location field (skip Zoom links, internal meetings with no address, and home-office blocks). Sort the surviving meetings by start time. If there are zero qualifying meetings, send a short Slack DM saying there is nothing to optimize today and stop.

Step 2. Use Geolocation Forward Geocode on each kept meeting's address to get coordinates plus the metro or city. Treat the geocoded city or metro as the rep's working area for the day.

Step 3. Find candidate add-on accounts with HubSpot Search Companies. Filter to companies whose owner is the rep receiving the brief, whose city or metro matches one of today's meeting areas (pre-filter on city, state, or postal code before doing any travel-time math, because Distance Matrix charges per origin times destination element and we want to keep candidates to a sane number, ideally under about 25), and whose last-activity date is older than the configurable 'stale account' threshold (default 60 days). Return at least the address, owner, last-activity date, and current deal stage if present.

Step 4. Score detour cost with Geolocation Calculate Distance Matrix. For each candidate, compute the extra travel time it would add if inserted into the existing route. The simplest version: for each adjacent pair of scheduled meetings, measure (meeting A to candidate to meeting B) versus (meeting A to meeting B) and call the difference the round-trip detour. Also consider inserting before the first meeting or after the last one. Drop any candidate whose smallest detour exceeds the configurable max (default 20 minutes round trip).

Step 5. Pick the best 2 to 3 add-on stops (configurable). Prefer candidates that combine a small detour with a strong 'worth the visit' signal: longest time since last touch, meaningful open deal stage, larger company. Slot each pick into the position in the day where its detour is smallest, so the final ordered itinerary reads naturally between scheduled meetings.

Step 6. Send the result as a Slack DM to the rep using Slack Bot Send a Message (DM the rep's Slack user id). Format the message as the full ordered day, listing each existing meeting in order with its time and address, and the recommended add-on accounts inserted in the right slot. For each add-on, include the account name, address, the extra minutes it adds round trip, and one short line on why it is worth the detour (for example: '94 days since last touch, open Proposal-stage deal'). Use Slack mrkdwn formatting.

Configurable knobs to expose at the top of the agent's instructions: rep identity (Slack user, HubSpot owner, Google Calendar), schedule and time zone, stale-account threshold in days (default 60), max round-trip detour in minutes (default 20), number of add-on stops to recommend (default 2 to 3), and whether to suggest only the rep's owned accounts (default true) or any account in their territory.

Quality bar: keep the Distance Matrix call cheap by always pre-filtering candidates to the same metro before scoring; never suggest a stop that does not have a clean street address; if HubSpot returns nothing eligible, still send a Slack DM with the ordered scheduled day so the rep gets their itinerary.

Additional information

What does this prompt do?
  • Pulls each rep's calendar for the day and keeps only the visits that have a real street address, so the briefing is grounded in actual travel.
  • Looks up other accounts the rep owns that are in the same metro and have not been touched in a while, and ranks them by how little extra driving they would add to the day.
  • Drops anything that would blow the rep's detour budget, then picks the best two or three add-on stops and slots them between existing meetings in the right order.
  • Sends each rep a personal Slack message with the full ordered itinerary, the extra minutes each add-on adds, and a one-line reason the account is worth the visit.
What do I need to use this?
  • A Google Calendar account so we can read today's scheduled visits for each rep.
  • A HubSpot account where companies have addresses, owners, and a last-activity date the rep keeps reasonably up to date.
  • A Slack workspace so each rep can be sent a personal direct message in the morning.
  • A Geolocation connection for the address lookups and travel-time scoring that pick the right add-on stops.
How can I customize it?
  • Change the schedule, the time zone, or which days of the week the briefing runs.
  • Adjust the 'stale account' threshold (default 60 days), the maximum extra driving you will accept per add-on (default 20 minutes round trip), and how many add-on stops to recommend (default 2 to 3).
  • Decide who gets messaged: each rep in a personal DM, a shared sales channel, or a sales manager who wants the team view.
  • Tweak which accounts are eligible. By default we only suggest companies owned by the rep receiving the brief, but you can open it up to any account in their territory.

Frequently asked questions

Do I need to give my reps any new tools?
No. The reps keep using their normal calendar and HubSpot. The briefing arrives in Slack each morning before they start driving, and they decide which add-on stops to take.
What does 'no activity in 60 days' actually mean?
It uses HubSpot's last-activity date on the company, which covers logged calls, emails, meetings, and notes. You can move the threshold up or down to match how your team defines a stale account.
How does it decide which add-on stops to suggest?
It scores nearby owned accounts by how little extra driving they would add to the day, drops anything over your detour budget, and prefers accounts that have gone the longest without a touch or sit at a meaningful deal stage.
Will this work if my reps share a HubSpot pipeline?
Yes. The briefing filters to accounts owned by the rep getting the message, so each person only sees their own book. If you want a manager-level view across the team, tell us during setup.
Is this just Badger Maps or Map My Customers in Slack?
It is the same outcome: a route-aware daily plan that surfaces nearby overdue accounts. The difference is that it runs on the CRM and calendar you already pay for, lands in Slack with no new app to install, and you can change the rules whenever you want.

Stop letting your reps drive past overdue accounts.

Connect Google Calendar, HubSpot, and Slack once, and every weekday at 7am each rep gets a route-aware plan with the right add-on stops slotted in.