Daily GEO re-engagement drafts for stalled HubSpot deals

Every weekday at 8am, an agent finds stalled early-stage HubSpot deals, checks each account's AI search visibility, and DMs each owner a ranked list of copy-ready openers.

Agentic Task
HubSpotNexuscaleSlackSalesDaily DigestsContent GenerationNotifications & Alerts
PromptCreate

Build me an agent workflow that runs every weekday at 8am in the org's local timezone and generates GEO-anchored re-engagement drafts for stalled HubSpot deals.

Step 1. Use HubSpot Search Deals to pull all open deals currently sitting in early-funnel stages (default: Discovery and Qualification) that have not had a stage change in the last 7 or more days. Include the deal's owner id, primary associated company id, deal name, amount, stage, and last-activity timestamp. Group results by owner.

Step 2. For each deal, use HubSpot Get Company to fetch the associated company's primary domain (and name). If a deal has no associated company or the company has no domain on file, keep the deal in the list but flag it as "no domain" and skip Step 3 for it.

Step 3. For each unique company domain, call Nexuscale Check AI Visibility (GEO) to get that account's current visibility profile across generative-AI search engines (e.g. ChatGPT, Perplexity, Gemini). Cache the result per domain so multiple deals against the same account only cost one API call.

Step 4. For each deal, draft a short re-engagement opener (max 3 sentences, plain text, no em dashes) grounded in the Nexuscale reading:

  • If the account's GEO score is low, lean on a "here's what your buyers are seeing in ChatGPT when they search for your category" angle, and reference the specific weak signal Nexuscale returned (e.g. missing from top answers, cited competitor, thin coverage).

  • If the account's GEO score is high, use an "expand share of voice / defend the position" angle.

  • If Nexuscale returned no data or the deal had no domain, write a neutral opener that does not mention GEO at all.

Never invent GEO numbers, engine names, or competitor citations that Nexuscale did not return. Only cite figures that are present in the API response.

Step 5. For each deal, use HubSpot Create Note to write a note on the deal record containing (a) the drafted opener and (b) a 2-3 line plain-language GEO summary derived from the Nexuscale response (overall score, standout engines, notable competitor mentions, and any "no data" flags). Associate the note with the deal id.

Step 6. For each deal owner (as returned by HubSpot Get Owner), resolve their Slack user via their email address, open a DM with Slack Open a Conversation, then use Slack Send a Message to post their personalized daily digest. The DM should contain:

  • A one-line intro naming today's date and how many stalled deals were found.

  • A ranked list of the stalled deals, ordered by amount desc then by days-since-last-activity desc. For each: deal name, amount, stage, days idle, a link to the HubSpot deal, a 1-line GEO summary, and the drafted opener in a copy-ready block.

  • Owners with zero stalled deals should not receive a DM at all.

Constraints:

  • Openers stay under 3 sentences, plain and specific, no em dashes.

  • Do not send emails to prospects. This workflow only writes drafts (into HubSpot notes and Slack DMs) for the rep to review.

  • Never fabricate visibility scores, engine names, or citations that Nexuscale did not return.

  • If the whole run finds zero stalled deals, skip Slack entirely and finish quietly.

Additional information

What does this prompt do?
  • Pulls the HubSpot deals that have been sitting in Discovery or Qualification for 7 or more days, grouped by their owner.
  • Checks each account's current visibility across generative AI search engines like ChatGPT, Perplexity, and Gemini.
  • Drafts a short, specific re-engagement opener for every deal, grounded in what its buyers are actually seeing in AI search results.
  • Attaches the opener plus a plain-language visibility summary to the deal as a HubSpot note, so it lives with the record.
  • Sends each owner a Slack DM with their ranked stalled deals and copy-ready openers for the day.
What do I need to use this?
  • A HubSpot account with permission to read deals, companies, and owners, and to create notes.
  • A Nexuscale account with API access so the agent can pull AI search visibility scores for each company.
  • A connected Slack workspace where the agent can send direct messages to each deal owner.
  • Agreement on which pipeline stages count as "stalled early funnel" (defaults to Discovery and Qualification, 7+ days idle).
How can I customize it?
  • Adjust the schedule (send it at 7am, only on Mondays, or twice a week).
  • Change which stages count as stalled or how many days of inactivity trigger a nudge.
  • Swap the Slack DM for a shared team channel, or add the sales manager as a CC recipient.
  • Tune the opener style (more casual, more technical, or in a language other than English).

FAQs

What is a GEO visibility score and why use it as the hook?
GEO (generative engine optimization) is how visible your prospect's brand is when their buyers ask ChatGPT, Perplexity, or Gemini about their category. It is a fresh, specific data point most reps have never mentioned before, which makes for a stronger re-engagement opener than "just circling back."
Will the agent invent visibility numbers if Nexuscale does not return them?
No. The prompt tells the agent to only cite figures Nexuscale actually returned. If a company has no domain on file or Nexuscale has no data, the agent flags that in the summary and skips the score-based framing.
Can I run this only for one pipeline or one team?
Yes. When you set up the workflow you can scope the HubSpot deal search to a specific pipeline, team, or set of owners, so it only touches the deals you care about.
Does this send emails to prospects on its own?
No. The agent only writes drafts. Openers are attached to the HubSpot deal as a note and sent to the deal owner in Slack. The rep decides what to send and when.
What happens on days when a rep has no stalled deals?
The agent will skip the DM for that owner rather than send an empty message, so reps only hear from it when there is actually something to work on.

Related templates

Nudge Dynamics 365 deal owners about stale pipeline in Slack

Every weekday morning, an agent reviews your open Dynamics 365 pipeline and privately DMs each rep only the deals that need attention today.

Microsoft Dynamics 365
Slack
Agentic Task
Catch deployments that made your app slower or less reliable

Every hour we compare the 30 minutes before and after each release, and only speak up when a deployment genuinely degraded speed or reliability.

New Relic
Slack
Linear
Agentic Task
Filter spam from Netlify forms before it reaches your CRM

Every new form submission gets judged real or junk, sorted by intent, and only genuine sales leads land in HubSpot with an email brief waiting for your team.

Netlify
HubSpot
Gmail
Agentic Task
Log daily Mercury balances and alert when cash runs low

Every weekday morning, every account balance is logged to a spreadsheet, and you only hear about it in Slack when one drops below the limit you set.

Mercury
Google Sheets
Slack
Deterministic Code
Update Dynamics 365 deals automatically after every Gong call

After every recorded sales call, an agent updates the right deal in Dynamics 365 and posts a Slack recap of exactly what changed.

Gong
Microsoft Dynamics 365
Slack
Agentic Task
File contact sales form leads into Dynamics 365 without duplicates

Every contact sales form submission lands in Dynamics 365 as a clean lead, updating the record you already have instead of creating a second one.

Google Forms
Microsoft Dynamics 365
Slack
Deterministic Code

Turn stalled pipeline into ready-to-send openers by 8am.

Connect HubSpot, Nexuscale, and Slack once, and Geni ships each rep their daily nudge list before they open their laptop.