Out-of-office handoff: every open deal, its next step and risks on one Notion page
HubSpot + Granola + Notion
Who it's for
AEs and CSMs going on leave or vacation who want whoever covers them to know where every open deal stands, without a long handover meeting. HubSpot can be swapped for Salesforce, Attio or Pipedrive, Granola for Fireflies or Gong, and Notion for Airtable.
What you get
Handoff page draft for Priya Raman, Oct 20 to Oct 31. Sample output: every company and person in it is fictional.
Handoff: Jordan's open deals, Oct 20 to Oct 31. Covering: Priya Raman | Deal | Stage | Amount | Close date | Next step | Last call | |---|---|---|---|---|---| | Quarry Lane Analytics (fictional) renewal + upsell | Contract sent | $48,000 | Oct 31 | Sam Whitlock to return redlines by Oct 24 | Oct 14: legal asked for a shorter liability cap | | Larkspur Freightworks (fictional) new logo | Evaluation | $22,500 | Nov 15 | Pilot review with Dana Okafor, Oct 27 | Oct 9: pilot on 2 of 3 depots, third blocked by IT | | Mossgate Labs (fictional) expansion | Discovery | $12,000 | Dec 12 | None set | No Granola meeting found | Risks - Quarry Lane: close date is inside your leave. If the redlines slip, Sam has said finance needs 5 working days to sign. Quote from Oct 14 notes: "anything after the 24th goes to November." - Larkspur: the third depot needs IT sign-off. No date agreed. - Mossgate: no next step and no recent meeting. Check in on Oct 22 or move the close date when I'm back. Who to call: Sam Whitlock ([email protected]), Dana Okafor ([email protected]) Unmatched meetings: 'Weekly sync' on Oct 13 (no company in the title). Left out. Waiting for approval: create this page under 'Team handoffs' in Notion. Nothing has been created yet.
Time and cost
Estimate About 20–30 minutes before you leave, most of it checking the risks and matches.
Assumptions: One run before a two-week leave, over about 8 open deals with one recent meeting each.
- HubSpot: Reads only: one deal search for your open deals, plus a contact and company lookup per deal. Nothing is changed. Credit use not confirmed by HubSpot.
- Granola: One meeting list for the period, then one meeting read per matched deal, so about 8 reads. Credit use not confirmed by Granola.
- Notion: One search for the parent page, then one page created after you approve it. Credit use not confirmed by Notion.
Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.
MCP servers
Every server is confirmed in: ClaudeChatGPT
-
ClaudeChatGPTRead + writeCredits not confirmedNeeds admin or IT
https://mcp.hubspot.com -
ClaudeChatGPTClaude CodeRead onlyCredits not confirmed
https://mcp.granola.ai/mcp -
ClaudeChatGPTClaude CodeCursorCopilotRead + writeCredits not confirmed
https://mcp.notion.com/mcp
Set up in a chat app
Every server in this recipe is confirmed for Claude and ChatGPT. Connect each one, then paste the prompts below into one conversation.
- Connect HubSpot without code (Claude, ChatGPT)
- Connect Granola without code (Claude, ChatGPT)
- Connect Notion without code (Claude, ChatGPT)
Developer setup
Auth setup and mcp.json for Claude Code and Cursor
- HubSpot: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token. - Granola: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token. - Notion: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token.
Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.
{
"mcpServers": {
"hubspot": {
"url": "https://mcp.hubspot.com"
},
"granola": {
"url": "https://mcp.granola.ai/mcp"
},
"notion": {
"url": "https://mcp.notion.com/mcp"
}
}
}
Step-by-step prompts
- Find all my open deals in HubSpot. Show me a table: deal name, company, stage, amount, close date, next step, and main contact with email. Tell me how many there are. Don't change any records.
- List my Granola meetings from the last {days} days. Match each one to a deal by company name and show me the matches with meeting title and date. List meetings you can't match separately. If I keep a Granola folder per account, use it.
- For each deal, read the most recent matched meeting and give me a two-line summary, what was agreed, and any risk, with a short quote from the notes. Flag deals where the CRM next step doesn't match what the last call agreed, and deals with no meeting or no next step.
- Draft a handoff page for {colleague} covering {dates}: the deal table, risks by deal, who to call, and unmatched meetings. Show me the full text, and create it in Notion under {parent_page} only after I approve it.
Run it on a schedule (optional)
- This is a run-by-hand recipe. Do it two or three days before you leave, so you can fix gaps while you can still reach the customer.
- Run it again on your last afternoon to catch next steps that changed, and update the same page after you approve it instead of creating a second one.
- You can reuse the same prompts for a covering colleague's deals when you're the one covering.
Where this goes wrong
- A meeting matched to the wrong deal. This recipe matches meetings to deals by company name, so a vague or shared title can land on the wrong deal. Show each match with the meeting title and date, list unmatched meetings separately, and confirm before writing the page.
- Stale next steps passed on as current. The CRM next step may be older than the last call. Show the CRM next step next to what the latest meeting agreed, and flag every deal where they differ.
- Risks the notes never mentioned. The model may fill a risk column for every deal. Require a short quote or a CRM field for each risk, and write 'none found' where there isn't one.
- Deals missing from the page. Open deals owned by you but with an old close date can fall out of a date filter. Count your open deals in HubSpot first and check the page has the same number.
Gotchas
- HubSpot needs admin setup for most reps: non-admin users need a Super Admin to approve the connector first. HubSpot's connector follows the connected user's HubSpot permissions, so it only returns records that user can view.
- Granola is read-only and follows whichever Granola workspace is active, so switch workspaces first if you have more than one.
- In ChatGPT, Notion's help center names ChatGPT Pro as the supported tier.
- Using Salesforce instead? Use a SOQL query for your open opportunities and their contacts. Salesforce needs Enterprise Edition or above, an admin must create an External Client App for each client, and ChatGPT needs developer mode. Each tool call counts against the org's daily API request quota.
Download
Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.
Download out-of-office-handoff.md
New recipe and breakage notes every week
Vendor sites: HubSpot. If we join an affiliate program, these links will be labeled as affiliate links.