Your HubSpot portal has a call log graveyard. 600 logged calls, and the note on most of them reads "intro call, went well." The rep who knew what actually happened on those calls left in March. The context is not even gone: it sits in pasted transcripts, in meeting notes typed at 6pm, in email threads hanging off the same deals, spread across records nobody is ever going to reread. So the next rep opens a renewal account, scrolls a timeline that tells them nothing, and starts the relationship over from the company website.
The job is plain to state: read every call, meeting, and note, and write a tight summary in one format, with the next step, into each record. Everything around that one sentence is the problem. HubSpot's own AI does not reach backward to calls that already happened, note and meeting bodies are not even in a standard export, and nothing native shows your team 600 rewrites before the CRM the forecast leans on changes. The fix is to move the work: every record as a local file, the agent summarizing at file speed, every summary a diff someone reads before a word writes back.
Your options
Reading and retyping by hand
For the 10 accounts that matter most this quarter, this is still the best option: a human reads the old notes, the thread, the transcript a notetaker left behind, and writes the summary a human would want. The math is what kills it as a plan. 600 calls at 4 minutes of reading and typing each is 40 hours, and HubSpot gives that work no shortcut. Engagement bodies have no bulk edit in the UI, and notes, calls, and meetings are missing from standard exports entirely, because they are engagement records, not properties. Getting the bodies out at all means the API, a custom activity report on a Professional plan, or a third-party tool. Meanwhile the person who feels the pain of thin notes is rarely the person writing them, so the front of the log refills as the back gets cleared.
HubSpot's built-in AI
For new calls, HubSpot's own summaries are real. Record a call through a supported provider on a Sales Hub or Service Hub Professional or Enterprise seat and the AI writes a structured summary: purpose, key points, decisions, sentiment, next steps. The fit ends at the word new. Summaries apply only to new recordings, with no retroactive pass over the calls already in your portal, and a call logged as typed notes gets no summary at all. The summary field is read-only in a fixed format, the Breeze record summary in the sidebar cannot be saved to the record or run in bulk, and transcription is metered by the hour. The graveyard is exactly the part this does not cover.
A call recorder with CRM sync
Notetaker and call-recording tools own the step nothing else on this page touches: the audio. They join the meeting, transcribe it, and push a summary and a transcript link into the matched record as a note, automatically. If your problem is the next 600 calls, buy one; the typed-note era of your CRM should end. It does not fix the last 600. A recorder cannot reach a call that was never recorded, each tool writes its own format into its own notes, and the typed notes and threads already sitting in the CRM are outside its job. The graveyard predates the tool, and stays.
A script on the CRM API
Calls, meetings, and notes are real objects in HubSpot's CRM API with writable body fields, so a developer can pull everything, run each body through a model, and batch the summaries back 100 records per request. Credit where due: this reaches the whole log, and it is the same plumbing Scratch publishes through. The costs are the usual ones. The API meters reading: an agent wired in through an MCP server fetches records call by call, so 600 calls plus the notes and threads around them is thousands of fetches before the model has seen the corpus once, and every question it asks afterward is another metered pass. The same questions against local files are 1-second greps. And every write lands on the live CRM the moment it runs. A bad prompt overwrites 600 bodies at API speed, and the raw notes it replaced were your only copy.
Scratch
Scratch is the script route with the write button taken away from the model. Your calls, meetings, and notes come down as files on your laptop, next to the contacts, companies, and deals they belong to. The agent reads each raw body and whatever transcript text already lives in the records, writes one consistent summary with the next step, and can grep years of history in a second along the way. Every summary comes back as a word-level diff next to the original, your team approves what writes back, and every published record can be reverted, one record at a time. Two honest limits. Scratch does not transcribe audio; recorders own that step. And the review is real reading, on purpose, because this is the system your pipeline numbers come from.
| Option | Reaches the existing log | One consistent format | Review before the CRM changes | Undo after |
|---|---|---|---|---|
| By hand | Yes, at 40 hours | If you hold the line | You are the review | No |
| HubSpot's built-in AI | New recordings only | Fixed sections, read-only | No | No |
| Call recorder | New meetings only | Its format, not yours | No | No |
| Script on the CRM API | Yes | Yes | Only if you build it | No |
| Scratch | Yes | Yes, your format | Every summary, as a diff | Per record, even after publish |
How the loop works on your call log
- Scratch pulls your engagements into files. Every call, meeting, and note lands as its own file in a folder on your laptop, body text included, with the contacts, companies, and deals they hang off as files beside them. Emails come down too, read-only, for context. Nothing in HubSpot has changed, and nothing will until the last step.
- Your AI writes the summaries. Point Claude, Codex, Cursor, or Copilot at the folder with the brief. Summarize every call and meeting from the last 2 years into 5 lines: who was on it, what they wanted, objections, outcome, next step. Keep the original notes below the summary. Flag anything too thin to summarize instead of padding it. The agent works like an analyst with the whole corpus open: it greps the log to see what it is dealing with, reads the deal and contact files for context a single note never had, scripts the format so all 600 summaries match, and drafts at file speed. That is 99% of the work, done on your laptop, with no HubSpot token anywhere in it.
- Your team reviews every diff and publishes. Scratch shows each record as a word-level diff: the new summary, the untouched raw notes beneath it, next to what HubSpot holds today. Validators run first if you set them: a length cap, a required next-step line, a rule that nothing outside the body field moves. Approve, and Scratch writes only those records back through the CRM API, at the API's own pace, one approved record at a time. The last 1%, deciding what the record of your customer relationships actually says, stays with your team. It stays reversible too: reject a published record and the original body comes back.
Start with one rep's last quarter. When those diffs read the way a handoff should, send the agent through the rest of the graveyard.
What a readable log is for
- A new rep reads an account's whole history in 5 minutes, in one format, instead of untangling 5 years of one-off styles.
- One grep finds every call that mentioned pricing, a rival category, or churn risk, across every year you have, and turns the matches into a table.
- Renewal and QBR prep becomes reading 6 summaries with next steps, not rereading everything ever logged.
- When the log is done, the same loop runs on the records the calls hang off. Everything Scratch edits in HubSpot is the full list.
Questions people ask
Can it summarize calls that were never recorded?
It can. The agent summarizes whatever was written down: the long note typed after the demo, the pasted email thread, the meeting body a notetaker filled in. What it cannot do is recover a call nobody captured. A record that says "intro call, went well" and nothing else has nothing to summarize, and the brief should tell the agent to flag those instead of inventing detail. The flags become your list of accounts where the context really did leave in March.
Will I lose the original notes?
No. The summary does not have to replace anything. The usual brief puts the summary at the top and keeps the raw text below it in the same engagement body, and the diff shows exactly that shape before it ships to the HubSpot record. If you do choose to drop a rambling original, the prior version stays next to the published one in Scratch, per record, and reverting puts it back.
Does this transcribe my call recordings?
No. Scratch works on text already in your records. Recording and transcription belong to your calling setup or a notetaker tool, and those tools typically write their transcript and summary into the HubSpot record as a note. Once that text is on the record, it is in the files, and the agent reads it like everything else.
Why not HubSpot's own AI call summaries?
Use them, for the calls they cover. A new call recorded through a supported provider on a Professional or Enterprise seat gets a structured summary automatically, and that is worth having. They do not reach backward. There is no retroactive pass over existing calls, a call logged as typed notes gets nothing, and the summary lands in a read-only field with fixed sections. This page exists for everything those sentences exclude.
Can I find every call that mentioned pricing or a competitor?
Yes. Once the bodies are files, that is one grep across every year you have, and the agent can turn the matches into a table with deal names and dates. Inside HubSpot, searching note bodies means one record's timeline at a time or a list filter, and tracked terms require an Enterprise plan with Conversation Intelligence, a super admin to manage them, and a backfill that covers recordings from the past 30 days.
Will deal amounts or pipeline stages change?
No. The pass writes summary text into call, meeting, and note bodies. Deals, stages, and amounts live in separate files the brief never sends the agent to, and if it strays anyway, the stray arrives as a diff you did not ask for and you reject it. Nothing unapproved writes back.
Does the AI get write access to my live CRM?
No. It reads and writes files in a folder on your laptop, and there is no HubSpot token in its environment to find. The only write path belongs to Scratch, opens after your approval, and carries only the records you approved.
Do I need Sales Hub Professional or Enterprise?
No. The seat and plan requirements on this page belong to HubSpot's own AI features. Scratch is a desktop app, not a HubSpot add-on, and the AI is whichever agent you already use, on the plan you already pay for.
Do I need to be technical?
No. The greps and scripts in step 2 are the agent's work, not yours. You install a desktop app, connect HubSpot, write the brief in plain English, and read a tracked-changes view. Approving is a click.
See it on your own call log
The graveyard stops growing the day summaries become someone's 10-minute review instead of someone's 40-hour project. See it run on your call log →, or download Scratch free and pull one rep's last quarter this afternoon. Scratch is free to try, and the AI is whichever agent you already pay for.