QBR deck draft: pipeline, revenue and attribution numbers in one Notion outline

HubSpot + Stripe + HockeyStack + Notion

Who it's for

Sales leaders and RevOps who build the QBR deck by hand from the CRM, billing and attribution tools. You get a slide-by-slide outline in Notion with every number and its source, ready to move into your slides. HubSpot can be swapped for Salesforce or Attio, and Notion for Airtable.

What you get

Notion outline draft with a numbers check. Sample output: every company and person in it is fictional.

Draft Notion page: 'Q3 QBR deck outline' (not created yet)

Slide 1. Q3 at a glance
- New business closed won: $412K from 18 deals (HubSpot, Jul 1 to Sep 30)
- Revenue collected: $1.18M from 214 paid invoices, refunds $14K shown separately (Stripe, same dates)
- Pipeline created: $2.6M from 71 deals (HubSpot)

Slide 2. Where pipeline came from (HockeyStack report 'Pipeline by channel', sourced)
| Channel | Deals | Amount |
|---|---|---|
| Outbound | 25 | $910K |
| Paid search | 22 | $780K |
| Events | 14 | $640K |
| Organic | 10 | $270K |

Slide 3. Biggest wins
- Quarry Lane Analytics (fictional), $96K, owner Priya Raman
- Fernhill Software (fictional), $54K, owner Alex Rivera

Slide 4. Gaps and asks: two placeholders for you to fill in.

Numbers check:
- HubSpot closed won $412K vs Stripe new subscriptions $388K. The $24K gap is Larkspur Freightworks (fictional), whose first invoice is dated Oct 3.
- HockeyStack shows 71 deals created, HubSpot shows 71. Matches.

Reply 'create' to make this page under 'QBRs' in Notion.

Time and cost

Estimate About 30–45 minutes, most of it checking the numbers.

Assumptions: One quarterly run: one HubSpot pipeline, one quarter of Stripe invoices and subscriptions, one HockeyStack report and one Notion page.

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

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.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • HubSpot: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • Stripe: Sign in with OAuth, or pass an API key as a Bearer token for headless use.
  • HockeyStack: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • Notion: Sign in with OAuth in your client (run /mcp in 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"
    },
    "stripe": {
      "url": "https://mcp.stripe.com"
      // headless alternative: "headers": { "Authorization": "Bearer YOUR_STRIPE_API_KEY" }
    },
    "hockeystack": {
      "url": "https://mcp.hockeystack.com/mcp"
    },
    "notion": {
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Step-by-step prompts

  1. Find HubSpot deals in {pipeline} created or closed between {quarter_start} and {quarter_end}. Show me pipeline created, closed won and closed lost with counts and amounts, open pipeline by stage, and the top five wins. Don't change any records.
  2. In Stripe, read paid invoices, refunds, and new and cancelled subscriptions for the same dates. Show me revenue collected with refunds on a separate line, and new subscriptions by customer. Compare them with HubSpot closed-won deals and list every mismatch. Don't create or change anything in Stripe.
  3. Search my HockeyStack reports for pipeline by channel. Use {report_name} for the same dates and show sourced pipeline by channel with deal counts and amounts. If no saved report fits, preview one and show me its definition. Don't save anything.
  4. Draft a QBR deck outline with one section per slide: at a glance, where pipeline came from, revenue, biggest wins, and gaps and asks. Put the source and date range under every number, and add a numbers check listing each mismatch. Find {parent_page} in Notion and show me the full draft.
  5. After I approve the draft, create it as one page under {parent_page} in Notion. Give me the link, and don't edit any other page.

Run it on a schedule (optional)

Where this goes wrong

Gotchas

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 qbr-deck-draft.md

Vendor sites: HubSpot. If we join an affiliate program, these links will be labeled as affiliate links.