Spot job changes in your open deals every Monday

Each Monday at 8am, scan open pipeline deals over your threshold for buyers who switched companies, update HubSpot, assign a follow-up, and post a Slack alert with the deal at risk.

Agentic Task
HubSpotProspeoSlackSalesOperationsNotifications & AlertsLead EnrichmentData Sync
PromptCreate

Every Monday at 8am ET, run this workflow as an autonomous agent.

Step 1. Pull all open pipeline deals worth chasing using HubSpot Search Deals. Filter to dealstage NOT IN the closed-won and closed-lost stage ids for the relevant pipeline, and amount greater than or equal to a threshold the user sets at setup time (default $25,000). Page through all results. For each deal, capture the deal id, deal name, amount, dealstage label, hubspot_owner_id, and the associated primary contact id.

Step 2. For each deal, fetch the primary contact via HubSpot List Contacts, requesting these properties: firstname, lastname, email, company, jobtitle, hs_lastmodifieddate, and a custom contact property called prospeo_dataset_version if it exists. If a deal has no primary contact, log it and skip the deal.

Step 3. For each contact, call Prospeo Enrich Person using the contact's email as the lookup. Prospeo returns the verified current employer, current job title, and a dataset_version field that bumps when the underlying record is refreshed.

Step 4. Decide whether the contact has actually moved. If Prospeo's dataset_version equals the value previously stored on the HubSpot contact (prospeo_dataset_version), treat the lookup as stale and skip this contact entirely. Do not write back to HubSpot, do not create a task, do not add to the digest. This prevents re-flagging the same person on every run. If the dataset_version is new, compare Prospeo's current company and current title against the company and jobtitle fields on the HubSpot contact. Use agent judgement to decide if the change is meaningful: a new employer is always meaningful; a title change is meaningful when it reflects a real role shift (for example Senior PM to VP Product, or Director Marketing to CMO) but not for trivial reformatting (Sr. to Senior, capitalization differences). If meaningful, treat the contact as moved.

Step 5. For each contact flagged as moved, do all three of the following. (a) Update the HubSpot contact record using HubSpot Update Contact. Set company to the new company, jobtitle to the new title, and prospeo_dataset_version to the new dataset_version from Prospeo. Do not overwrite any other fields. (b) Create a follow-up task using HubSpot Create Task. Assign it to the deal owner (hubspot_owner_id captured in step 1). Subject: 'Re-engage {contact_name}, moved to {new_company}, deal at risk: {deal_name}'. Due date one business day from now. Associate the task with both the contact and the deal. (c) Add the mover to an in-memory digest buffer with contact name, old company arrow new company, old title arrow new title, deal name, deal amount, deal stage, deal owner name, and a HubSpot deep link to the deal record (https://app.hubspot.com/contacts/<portalId>/deal/<dealId>).

Step 6. After processing every deal, post ONE grouped digest message to a revenue Slack channel (for example #revenue or #pipeline-alerts) using Slack Send a Message. The message should lead with a one-line header showing total open deals scanned, total movers found, and total open pipeline dollars at risk (sum of deal amounts for movers). List each mover on its own line in plain English, for example: '{Name} moved from {old_company} ({old_title}) to {new_company} ({new_title}). At risk: {deal_name}, ${amount}, owned by {owner}, {deep link}.' Order movers by deal amount, largest first. Use a friendly, scannable tone, not a robotic table.

Step 7. If zero movers are found, skip the Slack post entirely. Do not send an empty digest. Do not write back to HubSpot for any contact whose data hasn't changed.

Make the deal amount threshold, the open/closed stage ids, the target Slack channel, and the meaningfulness rules for title changes configurable inputs at setup time so a non-technical user can tune them without editing the workflow.

Additional information

What does this prompt do?
  • Looks at every open deal in your pipeline above the amount you set, finds the primary contact, and checks whether that buyer has switched companies or job titles.
  • Updates the contact record in HubSpot with the new employer and title for anyone who moved, so your CRM stops chasing a ghost.
  • Creates a follow-up task on the deal for the owner, so they can reach out at the new company before the opportunity goes cold.
  • Posts a single Slack alert in your revenue channel with each mover, where they went, the deal at risk, and how much pipeline is on the line.
What do I need to use this?
  • A HubSpot account with open deals and a primary contact associated to each deal.
  • A Prospeo account for the person lookup that confirms current employer and title.
  • A Slack workspace with a channel for the alert, your revenue or pipeline channel works well.
How can I customize it?
  • Change the minimum deal size, the deal stages it scans, or the day and time the scan runs.
  • Pick which Slack channel the alert posts in and tweak the tone or fields included for each mover.
  • Adjust what counts as a meaningful change, for example any title bump versus only a new employer.

Frequently asked questions

What happens if a buyer's role hasn't changed?
Nothing. The agent quietly skips contacts whose data hasn't moved, so the Slack channel only lights up when there is a real deal at risk and your CRM stays clean.
Does this only look at big deals?
By default it filters to open deals above an amount threshold you set, so the alerts stay focused on deals that actually move the forecast. You can change or remove the threshold during setup.
How does it know who the buyer is on each deal?
It uses the primary contact you've associated with the deal in HubSpot. If a deal has no primary contact, the agent skips it and notes it in the run summary.
Will it flood the channel with the same movers every week?
No. The agent stamps each contact with the version of the data it last checked, so a person who already moved doesn't show up again until their record actually changes.
Can I run it more often than weekly?
Yes. Most teams pick Monday morning because job changes are rare and weekly keeps the signal high, but you can move it to daily or any cadence during setup.

Related templates

Weekend football matchday preview, posted to Slack

Every Friday, get a ready-to-read preview of your league's weekend matches, with positions, form, scorers to watch, and predicted results, posted to Slack.

API-Sports
Slack
Agentic Task
Weekly Braintree revenue and refund report for finance

Every Monday morning, finance leadership gets a clear recap of last week's Braintree sales, refunds, and disputes by email and Slack.

Braintree
Gmail
Slack
Agentic Task
Screen new HubSpot contacts for data breach exposure

The moment a new contact lands in HubSpot, we check their email against known data breaches and flag the high-risk ones so your team can act fast.

Have I Been Pwned
HubSpot
Slack Bot
Agentic Task
Daily IP reputation screening with Slack threat alerts

Every morning we check your list of IP addresses for abusive activity, update your spreadsheet, and alert your team only about the risky ones.

AbuseIPDB
Google Sheets
Slack
Agentic Task
Turn Heroku deploys into a readable Slack changelog

Every time you ship to Heroku, we post a clear summary to Slack listing what changed, who deployed it, and whether it was a rollback.

Heroku
GitHub
Slack
Agentic Task
Enrich and prioritize new Help Scout tickets in Slack

The moment a new Help Scout conversation arrives, we check the customer in your CRM, flag high-value accounts, and post a priority alert to Slack before anyone touches it.

Help Scout
HubSpot
Slack Bot
Agentic Task

Catch deals slipping before they slip.

Connect HubSpot, Prospeo, and Slack once, and Geni scans your open pipeline every Monday for buyer job changes that put real revenue at risk.