Spot the deals that went quiet before your pipeline review

By General Input

Open one board each week to see every open deal ranked by how long it has been since anyone at that company was actually on a call.

Integrations

  • Granola
  • HubSpot

Type

App

Categories

  • Sales
  • Operations

Build me a deal coverage board that answers one recurring question I ask every week: which of my open deals have gone quiet? I open this before my weekly pipeline review so the conversation starts from the gaps rather than from a rep's memory of who they last spoke to.

The main view is a single ranked table of my open deals. Each row shows the deal name, its stage, the amount, the deal owner, the date of the most recent Granola meeting with anyone at that company, the number of days since that conversation, and the total number of meetings held with the account. Sort the table so the longest silences float to the top. This sort order is the whole point of the board, so make days since last conversation the visually dominant column.

Pull the rows from HubSpot Search Deals, filtered to deals that are still open, meaning the stage is not closed won or closed lost. Deal records only carry a stage id, so resolve the human readable stage names through HubSpot List Pipelines and resolve owner ids into names through HubSpot List Owners. Get each account's company record and its website domain from HubSpot Search Companies, since that domain is the key the meeting matching depends on.

Match meetings to accounts app side, because Granola has no search endpoint. Page through Granola List Notes and read each note with Granola Get Note to get its attendees and its date, then compare the email domains of the attendees against the company domain from HubSpot. A note counts as a conversation with that account when at least one external attendee's email domain matches the company domain. Let me configure a list of internal domains, defaulted to my own company's domain, so that colleagues on the call never make a meeting look like a customer conversation.

Respect the Granola API limits carefully. List Notes uses cursor pagination with a maximum page size of 30, and the API sustains about 5 requests per second, so throttle the crawl and back off exponentially on any 429 response. Cache the note to company matching in app storage so the board loads fast instead of re listing my entire meeting history every time I open it. On refresh, only fetch what changed by passing the updated_after filter with the timestamp of the last successful sync, then merge the new matches into the cache. Give me a manual Refresh meetings button plus a visible last synced timestamp so I always know how current the board is.

Make the silence threshold a configurable setting with a default of 21 days. Any deal whose last conversation is older than the threshold gets visibly flagged as quiet. Deals with zero matched meetings should not be hidden. Render them as no conversations on record and sort them at the very top, since those are often the most at risk deals on the board.

Clicking any deal opens a detail view showing the full conversation timeline for that account, newest first. Every matched Granola meeting appears with its date, title, and attendee list, and the Granola summary renders inline and expandable so I can read the substance of a call without leaving the app. Show the deal's stage, amount, owner, and close date at the top of this view for context.

Put a Write account recap button on the detail view that kicks off a background agent. The agent reads every Granola note matched to that company, using Granola Get Note for the full summaries, and pulls the deal history from HubSpot with Get Deal and its associated notes. It then writes a state of the account brief covering four things: what the customer asked for, which objections are still unresolved, what commitments are outstanding on both sides including mine, and a recommended next step. The brief lands back in the app and renders inside the deal detail view, with the run status visible while the agent works so I know it is in progress.

Under each finished recap, give me a button that logs it onto the deal in HubSpot using Create Note, associated to that deal record. Only write when I click it, confirm once it has saved, and keep the recap in the app afterwards so the brief stays readable here even after it has been filed in the CRM.

Two constraints to build around. Granola is read only, so every write in this app goes to HubSpot and nothing is ever pushed back into Granola. A personal Granola API key only exposes the key owner's notes space, meaning their own notes, notes shared with them, and notes in private folders shared with them, so this is one rep's or one manager's coverage view. Keep the in app copy honest about that and do not describe the board as org wide visibility into every rep's calls.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it