Meeting transcripts from tools like Granola, Otter.ai, or Fireflies can be fed directly to Claude Code along with supporting context like emails and Slack messages. Claude Code reads the raw transcript, extracts key discussion points, and drafts a structured proposal in about 15 minutes across three iteration rounds. The AI cross-references actual source material rather than relying on memory, reducing the risk of misremembering details from the call.
What is a meeting-to-proposal workflow?
A meeting-to-proposal workflow converts a recorded sales call into a finished client proposal using AI. A transcription tool captures the call as text, Claude Code reads the transcript alongside supporting context (emails, Slack messages), and produces a structured draft with the client’s own language and discussed scope. Three rounds of iteration refine it into a sendable document.
You get off a sales call. The potential client liked what they heard. Now you need to write a proposal, and you have a week’s worth of other work already waiting.
The old path: dig through your notes, try to reconstruct what was said, open a blank doc, write a proposal from scratch.
The new path: your meeting was recorded, the transcript exists, and you can go from raw audio to a polished proposal in about 15 minutes.
Here’s exactly how that works.
What you need
A transcription tool. This is software that converts your recorded call into text. Popular options:
- Granola records meetings locally on your Mac and caches transcripts to your hard drive. No cloud upload, good for sensitive calls.
- Otter.ai records calls and creates a searchable transcript with speaker labels.
- Fireflies.ai joins your Zoom/Meet calls automatically and generates transcripts with notes.
- Descript is more of a video editor but also produces transcripts.
- Apple’s built-in Voice Memos can transcribe recordings directly on device (iOS/macOS).
Any of these will work. The output is the same: a text file (or copy-pasteable text) of what was said on the call.
Claude Code. This is an AI coding assistant made by Anthropic that runs in your terminal. Unlike the Claude chat interface, Claude Code can read files from your computer, search your Slack workspace, write documents, and take actions on your behalf. It’s the tool that does the heavy lifting here.
Your existing context. Emails you’ve exchanged, Slack messages about the deal, your own notes. The more context Claude Code has, the better the proposal.
Step 1: Get the transcript
After your call ends, export or locate the transcript from your transcription tool.
If you use Granola, transcripts are cached locally. You can find them by searching for the client name in Granola’s interface. One thing to know: Granola sometimes tracks that a transcript exists without fully writing it to a readable file. If that happens, you may need to dig into the raw cache folder. On Mac, that’s in ~/Library/Application Support/Granola/. The files are JSON format, and the transcript text may be nested inside a JSON string inside the outer JSON. You can open the file in any text editor and copy out the relevant content.
Speaker labels in Granola often come through as “?” instead of real names. That’s a known limitation. It doesn’t matter much for this workflow since you’ll know which parts were you talking and which were the client.
If you use Otter.ai or Fireflies, just export the transcript as a text file. Both have export buttons in the interface.
Step 2: Gather your other context
Before handing the transcript to Claude Code, collect the supporting material. This is what separates a generic proposal from one that actually sounds like you know the client.
The useful stuff:
- Emails you’ve exchanged with the client
- Slack messages from your team about the deal (pricing conversations, notes from anyone who introduced you, prep material)
- Any brief notes you took during or right after the call
- Your standard proposal template, if you have one
The more of this you have, the less Claude Code has to guess.
Step 3: Feed everything to Claude Code
Open Claude Code in your terminal and tell it what you’re trying to do. Something like:
I had a sales call yesterday with [Company Name]. I have the transcript at ~/Documents/call-transcript.txt. I also have some Slack context about this deal. Can you help me write a proposal?
Claude Code can read the transcript file directly. If you also give it access to your Slack workspace via Slack’s MCP (Model Context Protocol, which is a way for AI tools to connect to external services), it can search your message history for relevant threads. So it can pull up that pricing conversation from two weeks ago, or the briefing notes your colleague sent before the call.
If Slack MCP isn’t set up, just paste the relevant Slack messages into the chat along with the transcript.
Step 4: Let it draft, then iterate
Claude Code will produce a first-draft proposal. It won’t be final on the first pass. Plan for about three rounds of iteration:
- First draft: Claude structures the proposal from the raw material. It figures out what the client said they needed, what you discussed as a solution, and what scope looks like.
- Second pass: You read it and mark what’s wrong or missing. Claude adjusts.
- Third pass: Tone, pricing language, any specific asks. Done.
Fifteen minutes total, not counting the call itself.
The moment that made this worth writing
Here’s the specific thing that happened when this workflow was first built, and why it matters beyond the time savings.
The person using it thought a colleague had confirmed a certain price point was fine to quote. They remembered it that way. When Claude Code searched the actual Slack thread, the message said the opposite: “I can’t raise the price on this.”
The human memory was wrong. The written record was right. Claude caught it because it was reading the actual source material, not reconstructing from memory.
That’s the real value here. You’re not just speeding up a task. You’re reducing the chance that you misremember something important before walking into a negotiation.
What the proposal output looks like
A solid AI-generated first draft will include:
- Summary of what was discussed on the call
- Problem statement in the client’s own language (pulled from the transcript)
- Proposed scope and deliverables
- Timeline
- Pricing (based on what was discussed, though you’ll want to double-check this section)
- Next steps
The language will need your personal touch. Clients can tell when a proposal sounds like a form letter. But having the structure and the client’s specific language already in there is most of the work.
A note on Granola specifically
If you’re using a Mac and do a lot of calls, Granola is worth trying. It records locally, which means no audio is being sent to a third-party server during your calls. The transcript quality is good. The interface is simple.
The cache location means you can also access older transcripts even if you didn’t explicitly save them at the time. That’s useful if you’re retroactively trying to write up a proposal from a call last week.
It doesn’t have great speaker labeling (the “?” issue above), and the file format is a little buried, but both of those are easy to work around once you know about them.
The bigger workflow
If you’re turning call insights into social content, the ghostwriting LinkedIn posts workflow covers how to match someone’s voice.
This isn’t just for proposals. The same pattern works for:
- Project kickoff notes. Record the kickoff call, pull out action items and decisions, email a summary to the client.
- Discovery write-ups. Convert a 45-minute discovery call into a structured brief.
- Follow-up emails. After any call, generate a concise recap of what was agreed.
The pattern is always the same: call gets recorded, transcript comes out, Claude Code reads transcript plus context, structured output comes back.
Further reading
- Granola for local Mac call recording and transcription
- Otter.ai for cloud-based call transcription with speaker labels
- Claude Code documentation for getting started with Claude Code
- Anthropic’s MCP documentation for connecting Claude Code to tools like Slack
Common Questions
How do I turn a meeting recording into a client proposal?
Export the transcript from your recording tool (Granola, Otter.ai, Fireflies), gather supporting context like emails and Slack messages, and feed everything to Claude Code. It drafts a proposal using the client’s own words and discussed scope. Plan for three rounds of iteration.
What transcription tools work with Claude Code?
Any tool that produces text output works. Granola (local Mac recording), Otter.ai (cloud with speaker labels), Fireflies (auto-joins Zoom/Meet), and Descript all produce transcripts Claude Code can read. Apple Voice Memos also transcribes recordings.
Can Claude Code access Slack messages for proposal context?
Yes, if Slack MCP (Model Context Protocol) is configured. Claude Code can search your Slack workspace for relevant threads about the deal, pricing discussions, and prep notes. If MCP is not set up, paste relevant messages directly into the chat.
How long does it take to write a proposal with Claude Code?
About 15 minutes across three iteration rounds. The first draft structures the proposal from raw material. The second pass incorporates your corrections. The third pass handles tone and pricing language.
A note from Alex: hi i’m alex - i run code for creatives. i’m a writer so i feel that it is important to say - i had claude write this piece based on my ideas and ramblings, voice notes, and teachings. the concepts were mine but the words themselves aren’t. i want to say that because its important for me to distinguish, as a writer, what is written ‘by me’ and what’s not. maybe that idea will seem insane and antiquated in a year, i’m not sure, but for now it helps me feel okay about putting stuff out there like this that a) i know is helpful and b) is not MY voice but exists within the umbrella of my business and work. If you have any thoughts or musings on this, i’d genuinely love to hear them - its an open question, all of this stuff, and my guess is as good as yours.