How to give Claude Code memory of every customer conversation
Updated
The short answer. Claude Code remembers your customers when you keep a short summary in CLAUDE.md and connect the places your conversations live as MCP servers, so it searches them instead of holding them. Connect HubSpot, Gong and Gmail, write a skill that asks all three, and you have a working setup today. It works well for one person. When your team starts using it, you need a single store behind it that holds every meeting and email, resolved to the same people and deals, with each person's permissions applied.
You probably have part of this running already: a repo with a CLAUDE.md that knows your pipeline, a few skills, maybe a folder of call notes. You were right to start there, because Claude Code is good at working through a folder of text. This guide covers the setup that works today, step by step, then what changes as more accounts and more teammates arrive.
What Claude Code remembers on its own
Every session starts with a fresh context window. Two things load at startup:
| Memory | Where it lives | What loads | Use it for |
|---|---|---|---|
| CLAUDE.md | ./CLAUDE.md (shared through git), ~/.claude/CLAUDE.md (you, every project), ./CLAUDE.local.md (you, this project, gitignored) |
The whole file, every session, plus anything it imports with @path |
Instructions and standing context |
| Auto memory | Notes Claude Code writes from your corrections | The first 200 lines or 25KB | Preferences and patterns Claude learns |
Anthropic's guidance is to keep each CLAUDE.md under 200 lines, because longer files use more context and get followed less consistently. Imports help you organize but don't save context, since imported files also load at launch. A year of call transcripts won't fit, and trying makes every answer worse. CLAUDE.md is for what Claude should always know. Customer history belongs somewhere Claude can search.
Step 1: Put standing context in CLAUDE.md
Write the few lines Claude needs on every customer question, and point it at where the rest lives:
## Customers
- Our top 20 accounts and their owners: @customers/ACCOUNTS.md
- "Pilot" means a paid 30-day trial. "Expansion" means a second team at an existing customer.
- Deals live in HubSpot. Calls live in Gong. Email lives in Gmail.
- Before answering anything about an account, use the account-brief skill.
- Cite the call, email or record behind every claim.
Keep ACCOUNTS.md short, a table with one line per account. If a line in it is something only you should see, move it to CLAUDE.local.md.
Step 2: Export what you already have into a folder
Since the history can't live in CLAUDE.md, the quickest win is a folder Claude can grep. Export transcripts and notes as Markdown, one file per conversation:
customers/
acme.com/
2026-09-30-pricing-call.md
2026-10-08-security-review.md
notes.md
Claude Code finds what it needs with its own search tools. A scheduled script that re-exports new calls keeps the folder current. Add the folder to .gitignore if the repo is shared, because everyone with access to the repo sees every file in it.
Step 3: Connect HubSpot, Gong and Gmail over MCP
A folder is a snapshot, current as of the last export. MCP servers let Claude Code query the live system during the session. The command for a remote server is claude mcp add --transport http <name> <url>. Add --scope user to use it in every project, or --scope project to write it to a .mcp.json your team shares. Then run /mcp inside Claude Code to sign in.
HubSpot. HubSpot runs a remote MCP server. The example in Claude Code's docs:
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
HubSpot's developer docs say a HubSpot account admin connects first, then other users in the account can connect. Contacts, companies, deals, tickets, and engagements such as calls, emails, meetings and notes are readable and writable. Users, teams and owners are read-only.
Gong. Gong's official server is at https://mcp.gong.io/mcp. A Gong technical admin creates an MCP integration under Company Settings > Ecosystem > API > Integrations, chooses Personal Access, and enters Claude's redirect URIs. Gong then issues a client ID and secret. You add the server as a custom connector in Claude with those credentials and sign in with your own Gong account. For Claude Code, add Gong this way too: connectors you add in Claude carry over to Claude Code when you're logged in with a claude.ai account.
Gong's server is read-only. Its three tools, ask_account, ask_deal and generate_brief, analyze calls and emails in a time range and, in Gong's words, return "AI-generated insights". Community Gong servers on GitHub call Gong's REST API with an access key and secret, and that one key sees everything in the account.
Gmail. Add Claude's Gmail connector in Claude's settings. Like the Gong connector, it carries into Claude Code with your claude.ai login. It reads your own mailbox.
Claude Code loads MCP tool definitions on demand through tool search, so adding servers costs little context until Claude uses them.
Step 4: Write a skill that asks all three
With three servers connected, give Claude a routine for the most common question. Save this as .claude/skills/account-brief/SKILL.md:
---
name: account-brief
description: Brief me on a customer account. Use when asked about an account, a deal, or what's going on with a company.
---
1. Find the company in HubSpot by domain. Get open deals, stage, amount, owner, last activity.
2. Ask Gong for a brief on the account over the last 90 days.
3. Search Gmail for threads with that domain in the last 30 days. Read the three most recent.
4. Read customers/<domain>/notes.md if it exists.
5. Write: who's involved and who signs, what they said they need, what we promised and whether we sent it, open risks.
6. Put the source after every line: the deal, the call date, or the email subject.
Ask "what's going on with Acme?" and Claude runs the routine. For one person working twenty accounts, this setup is good.
What breaks as you add accounts and teammates
The setup above has one reader, and it joins three systems inside one context window every time you ask. Each of those choices has a cost that grows.
Claude re-does the joins on every question. HubSpot knows Jane as a contact record, Gong as a call participant, Gmail as an address. Claude matches them on each question, from scratch, and a nickname in Gong or a personal email address breaks the match without telling you. Nothing remembers the match for next time.
Results get cut. Claude Code warns when one MCP tool result passes 10,000 tokens and caps results at 25,000 tokens by default. Larger results are saved to a file and Claude gets the path. A year of email with a large account hits that fast, so answers start working from partial history.
You get summaries where you wanted quotes. "What did their CFO say about price?" needs the words the CFO used. A server that returns generated analysis gives you a summary of the call, and a summary can't be checked against the recording.
The folder goes stale. The export script runs on a laptop. When the laptop sleeps, the folder stops, and nothing tells Claude the newest call is missing.
The second person sees a different company. Your Gmail connector sees your mailbox. Your teammate's account brief misses every thread you had with Acme, and yours misses theirs. Pooling the threads into the shared folder fixes that and creates a worse problem: everyone with repo access now reads everyone's mail, including the HR thread nobody meant to export. Each person also has to connect each server, and a HubSpot admin and a Gong admin have to act before anyone can start.
Nobody checks the skill. When account-brief starts missing calls because a field changed, the person who notices is the rep reading the brief, or the customer reading the follow-up.
Keep the repo and the skills. What has to change sits underneath Claude Code: one store holding every conversation, matched once to the right people and deals, current without a laptop, and with each thread's visibility decided before anyone reads it. The guide to building a context graph covers how to build that store yourself.
The Day AI path: one MCP server for the whole customer record
Day AI provides the context graph and agent control plane to quickly and securely upgrade your company brain. It can also serve as an AI-native CRM, or run on top of Salesforce or HubSpot. For Claude Code, it replaces the export folder and the per-source joins with one MCP server, and keeps your CLAUDE.md, your skills and your repo as they are.
Behind the server:
- Meetings from Day AI's notetaker, which writes each meeting into the graph when it ends, and from Gong and Granola, which connect with their full history. Imported calls keep their transcripts, so Claude Code can page through a Gong call or quote a Granola meeting the same way it does a notetaker recording.
- Email and calendar from each person's own Gmail and Google Calendar, shared according to that person's sharing rules. Day AI decides who can see each thread as the mail arrives, and when a message sits in several inboxes, a private rule from any of them keeps it private. Email comes from Google Workspace today. Outlook mail doesn't sync into the graph.
- Slack from the moment the Day AI app joins a channel.
- Your CRM and other tools, because Day AI supports connecting MCP servers. Day AI's agents read from any server you connect, and if it supports writes, an agent writes to it when you ask or a scheduled skill does it on a cadence. Connect the HubSpot or Salesforce MCP and you get two-way sync: a skill can update deal stages, notes and fields after every call, or pull CRM data into the graph on a schedule. Each person connects with their own login.
- One record per person, company and deal, with every source resolved to it, and answers that cite the call clip or the message they came from.
Connect it
claude mcp add --transport http day-ai --scope user https://day.ai/api/mcp
Then run /mcp inside Claude Code and sign in through the browser. The setup page at day.ai/mcp also covers Claude (web, desktop and mobile) and Cursor. If you add Day AI from Claude's connector directory, it carries into Claude Code the same way the Gong connector does.
Because each person signs in with OAuth and the server acts with that person's permissions, a project-scoped .mcp.json with just the URL is safe to commit. No key goes in the repo, and each teammate who uses it sees only what their own permissions allow:
{
"mcpServers": {
"day-ai": { "type": "http", "url": "https://day.ai/api/mcp" }
}
}
Day AI is priced per agent: Turbo $30, Professional $75 and Executive $250 per agent per month, or $24, $60 and $200 billed annually, with volume discounts above 20 agents and no usage pricing. MCP access starts at Turbo, and some tools are reserved for higher tiers. Teammates can join on Free seats at $0 in a workspace with at least one Professional agent or higher. Free seats capture meetings, email and calendar into the graph, and can't connect over MCP. Plans are at day.ai/pricing.
What Claude Code can call
The SDK's TOOLS.md lists every tool by tier. The ones an account brief uses:
| Tool | What it does |
|---|---|
search_objects |
Searches people, companies, deals, meetings, emails, tasks and pages, with property, relationship and time filters |
read_crm_schema |
Returns your workspace's real properties, custom properties and relationships |
get_meeting_recording_context |
Returns a meeting's title, date, participants and transcript, paged to stay within token limits. fullTranscript returns the raw transcript with speakers and timestamps |
get_context_for_meeting_recording_citations |
Returns the exact quotes from a meeting that answer a question, with citations |
read_object_history, read_property_history |
Show how a record or a value changed, and who changed it |
create_email_draft |
Drafts an email (a draft, not a send) |
Your account-brief skill shrinks to two steps: look the company up by domain, then search its meetings and emails since a date. The joins happened when the data arrived, and a long transcript comes back in pages, or as the quotes that answer the question, so it stays under Claude Code's result cap.
Day AI's own marketing team runs its Claude Code repo on this server. The repo's agents search the team's people, companies and deals, write pages and run campaigns through Day AI's MCP.
Grade what you've built
Before you move anything, you can see how your current folder measures up. Run Day AI's open-source evaluation skill inside it:
npx skills add day-ai/company-brain-evaluation
Then run /company-brain-evaluation in Claude Code. It surveys your folder read-only, grades meeting recording, email, Slack and your CRM against four requirements (safety, performance, capability, adoption), asks what success looks like, and writes one file, COMPANY-BRAIN-UPGRADE.md, with a plan you can carry out on your own or on Day AI. It's free to run.
Build your own on top
The Day AI SDK is an MIT-licensed TypeScript client for the same server, with OAuth, token refresh and example apps. With the Claude Agent SDK, you can give a scheduled agent read-only access by listing the tools it may call:
allowedTools: [
'mcp__day-ai__search_objects',
'mcp__day-ai__read_crm_schema',
'mcp__day-ai__get_meeting_recording_context',
]
Your HubSpot server can stay connected in Claude Code too. Inside Day AI, the HubSpot MCP is what keeps the graph and your CRM in two-way sync, and teams that want something custom build it on the SDK.