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.
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?
Does this only look at big deals?
How does it know who the buyer is on each deal?
Will it flood the channel with the same movers every week?
Can I run it more often than weekly?
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.