Reads each new sales call transcript in your sheet and emails a deal breakdown, next steps and a follow-up draft to one address.
Uses
Claude
Gmail
Google Sheets
Email a deal breakdown after every sales call
spreadsheetUrl to blank.Set spreadsheetUrl to blank.sheetName to Transcripts.Set sheetName to Transcripts.recipientEmail to blank.Set recipientEmail to blank.maxPerRun to 5.Set maxPerRun to 5.minTranscriptChars to 300.Set minTranscriptChars to 300.spreadsheetUrl. Save it as sheet.Read the rows of spreadsheetUrl. Save it as sheet.headers to sheet.headers.Set headers to sheet.headers.headers doesn't contain StatusIf headers doesn't contain StatusYes
No
No steps
headers doesn't contain Call DateIf headers doesn't contain Call DateYes
No
No steps
headers doesn't contain ProspectIf headers doesn't contain ProspectYes
No
No steps
headers doesn't contain TranscriptIf headers doesn't contain TranscriptYes
No
No steps
rows to sheet.rows.Set rows to sheet.rows.analyzedCount to 0.Set analyzedCount to 0.tooShortCount to 0.Set tooShortCount to 0.waitingCount to 0.Set waitingCount to 0.row in rows:For each row in rows:row.Status and save it as rowStatus.Trim row.Status and save it as rowStatus.rowStatus isn't empty and rowStatus doesn't start with Too short to analyse…If rowStatus isn't empty and rowStatus doesn't start with Too short to analyse…Yes
No
No steps
row.Transcript and save it as transcript.Trim row.Transcript and save it as transcript.transcript is emptyIf transcript is emptyYes
No
No steps
transcript is less than minTranscriptCharsIf the length of transcript is less than minTranscriptCharsYes
rowStatus is emptyIf rowStatus is emptyYes
row of sheetName in spreadsheetUrl.Set Status: Too short to analyse on row row of sheetName in spreadsheetUrl.tooShortCount.Add 1 to tooShortCount.No
No steps
No
No steps
analyzedCount is greater than or equal to maxPerRunIf analyzedCount is greater than or equal to maxPerRunYes
waitingCount.Add 1 to waitingCount.No
No steps
row.Prospect and save it as prospect.Trim row.Prospect and save it as prospect.prospect is emptyIf prospect is emptyYes
prospect to Unnamed prospect.Change prospect to Unnamed prospect.No
No steps
row["Call Date"] and save it as callDate.Trim row["Call Date"] and save it as callDate.callDate is emptyIf callDate is emptyYes
callDate to Not recorded.Change callDate to Not recorded.No
No steps
prospect
Call date: callDate
Transcript:
<<<
transcript
>>>
Write the analysis as plain text for an email, using exactly these seven sections in this order and nothing outside them. Put each section title on its own line in capital letters, leave a blank line between sections, and start each bullet with - . Do not use Markdown: no asterisks, no # signs, no tables.
CALL SUMMARY
Three or four sentences: who was on the call, what the prospect is trying to do, what was discussed, and how it ended.
DEAL TEMPERATURE
One of Hot, Warm, Cold or At risk, then one sentence explaining the choice using something the prospect actually said.
WHAT THE PROSPECT TOLD US
One bullet each, in this order, quoting the prospect's own words where you can:
- Pain: the problem they want solved and what it costs them today.
- Desired outcome: what changes for them if it is solved, in their numbers if they gave any.
- Budget: any figure, range or budget-cycle detail stated.
- Decision process: who signs, what steps come before that, and any procurement, security or legal review named.
- Timeline: the dates or events they tied a decision to.
- Stakeholders: everyone named or referred to, with their role and where they stand.
- Objections and alternatives: what they pushed back on, and any other vendor, tool or in-house option mentioned.
BUYING SIGNALS AND RED FLAGS
Up to three buying signals and up to three red flags, each a bullet that quotes or closely paraphrases the moment in the transcript it comes from. If there were none of one kind, say so in one line.
ACTION PLAN
A numbered list. Each item on one line, formatted as: action - owner - due date - why it matters. The owner is a named person from the call. Include only actions that were agreed on the call or that follow directly from an explicit commitment. If no date was given, write no date agreed rather than inventing one. If no next step was agreed at all, make that the first item, because it is the most important thing this analysis can say.
BEFORE THE NEXT CALL
Two or three questions the prospect has not yet answered that the deal cannot progress without, and one thing to handle differently on the next call, each tied to a moment in this transcript.
SUGGESTED FOLLOW-UP EMAIL
A short draft to the main contact: a subject line, then a body of six sentences at most that recaps what was agreed, confirms the next step and its date, and asks for anything still needed from them. This is a draft for a person to review and send; it is not sent by this workflow.
Rules:
- Use only what is in the transcript. Never invent a name, number, date, company or commitment.
- Where the transcript does not cover a field, write Not stated on this call for that field. Do not fill a gap with an inference and do not drop the bullet.
- Do not open with a preamble, close with a summary, or restate these instructions.'. Save it as analysis.
Maximum response length: 4000analysis.response_text and save it as analysisText.Trim analysis.response_text and save it as analysisText.analysisText is less than 200If the length of analysisText is less than 200Yes
row of sheetName in spreadsheetUrl.Set Status: Needs review - no analysis came back from the AI on row row of sheetName in spreadsheetUrl.analyzedCount.Add 1 to analyzedCount.No
No steps
** with in analysisText and save it as analysisUnbolded.Replace ** with in analysisText and save it as analysisUnbolded.## with in analysisUnbolded and save it as analysisUnheaded.Replace ## with in analysisUnbolded and save it as analysisUnheaded.# with in analysisUnheaded and save it as analysisPlain.Replace # with in analysisUnheaded and save it as analysisPlain.Call analysis for , prospect, , call on , callDate, ".Join [Call analysis for , prospect, , call on , callDate, .
, analysisPlain,
──────────────────────────────
, Written by Claude from the transcript in row , row.row_number as text, of the ', sheetName, ' tab. Check anything that commits you to a date, a price or a promise against the recording before you act on it.] with nothing and save it as emailBody.recipientEmail.Send an email to recipientEmail.
Subject: Call analysis: prospect - callDateemailBodymarkErrorIf a step below fails, save the error as markErrorTry
Analyzed , today's date, - sent to , recipientEmail] joined by nothing on row row of sheetName in spreadsheetUrl.Set Status: [Analyzed , today's date, - sent to , recipientEmail] joined by nothing on row row of sheetName in spreadsheetUrl.On error
The analysis for row , row.row_number as text, (, prospect, ) was emailed to , recipientEmail, , but the row could not be marked as analyzed: , markError.message, . Type anything into that row's Status cell (for example Analyzed), or the same analysis will be sent again next hour.] joined by nothing.Stop and report a problem: [The analysis for row , row.row_number as text, (, prospect, ) was emailed to , recipientEmail, , but the row could not be marked as analyzed: , markError.message, . Type anything into that row's Status cell (for example Analyzed), or the same analysis will be sent again next hour.] joined by nothing.analyzedCount.Add 1 to analyzedCount.Calls analysed this run: , analyzedCount as text, . Still waiting for a later run: , waitingCount as text, . Newly marked too short to analyse: , tooShortCount as text, .] joined by nothing.Show in the output: [Calls analysed this run: , analyzedCount as text, . Still waiting for a later run: , waitingCount as text, . Newly marked too short to analyse: , tooShortCount as text, .] joined by nothing.