Capture durable customer context in Mem0 after every Granola call

By General Input

When a new Granola note lands, an agent stores the durable facts about your customer in Mem0, logs a recap in HubSpot, and briefs the deal channel in Slack.

Integrations

  • Granola
  • Mem0
  • HubSpot
  • Slack

Type

Agentic Task

Categories

  • Sales

I want an agent workflow that captures the durable customer context from every Granola call into Mem0, so future agents and reps walk into the next conversation already knowing the customer. The trigger is a Granola poll trigger on new_note: whenever Granola finishes a new meeting note, the agent runs once.

When it runs, the agent should call Granola Get Note to pull the full note, including the summary, attendee list, calendar event, and the transcript. From the attendee list, identify the primary external attendee by their email address. If there is no external attendee (everyone shares my domain), stop immediately. Do not write anything to Mem0, HubSpot, or Slack.

Otherwise, reason carefully about what is genuinely worth remembering versus ephemeral chatter. Things worth remembering include: stated preferences ("they prefer async updates", "they only want one weekly sync"), named blockers ("legal review is gating procurement", "they need SOC2 before signing"), commitments we made ("we promised a sandbox by Friday"), decisions they agreed to ("they confirmed Q3 rollout"), and named tools or teams on their side ("their data team uses Snowflake", "Priya owns billing"). Things to skip: scheduling small talk, agenda housekeeping, summaries of what either side already said, and anything that will not still be true in a month.

Before writing anything, call Mem0 Search Memories scoped to user_id equal to the primary external attendee's email, with a semantic query built from the candidate facts. Drop any candidate that already exists in memory. For the remaining new facts, call Mem0 Add Memories scoped to the same user_id (the attendee's email) so all of this contact's memories accrue under one entity. Pass the facts as conversation messages so Mem0 extracts them cleanly.

After memories are saved, call HubSpot Get Contact using the attendee's email as the idProperty to look up the contact. If the contact exists, call HubSpot Create Note associated with that contact. The note body should be a tight recap of the meeting (under 200 words) followed by a short bulleted list of the durable facts you just stored in Mem0. If the contact does not exist in HubSpot, skip the HubSpot step rather than creating a new record.

Finally, send a Slack message to the deal's channel using Slack Send a Message. The message should be a four-bullet brief: who the meeting was with, the single most important decision or commitment, the most important blocker or open question, and the immediate next step we owe them. End with a link to the HubSpot contact record so anyone reading can jump straight there. If you cannot determine the right Slack channel for this deal, post to a default sales-recaps channel that I will configure.

Keep the whole thing tight. The HubSpot note recap stays under 200 words. The Slack brief is exactly four bullets plus the link. Mem0 only receives facts that pass the durable test and are not already on file. And the entire write path is skipped when no external attendees are present.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsA 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 reveals