The workflow
Sales reps at home-service operators spend 10-15 minutes after each inbound call writing the recap. If the recap does not happen, the CRM goes stale and the follow-up workflow does not fire correctly.
We shipped an agent that listens to the call (via CallRail), writes the recap, logs it to the CRM, and flags follow-up actions. The rep reviews and hits approve. Time saved per call: 12-14 minutes.
Architecture
CallRail transcript flows via webhook to a small Cloudflare Worker. The worker sends the transcript to Claude Sonnet with a structured prompt. The response is parsed as JSON with fields matching the CRM schema: summary, next steps, follow-up date, qualification score, and concerns.
A second webhook pushes the structured recap into GoHighLevel. The rep sees a pre-filled recap in their CRM view and clicks approve or edit.
Prompt design
The first prompt we shipped was wordy. 600 tokens of instructions. The output was inconsistent and the rep had to edit too often.
The prompt we shipped in production is 180 tokens. It gives the model a role ("you are a sales operations assistant"), a target structure (JSON schema), three examples of good recaps from actual past calls, and a single instruction about tone: "match the voice of a rep who has been doing this for 15 years." Output quality jumped. Edit rate dropped from 42% to 11%.
Six months of numbers
Deployed across 8 home-service operators. 4,200+ calls processed. Rep approval rate sits at 89%. Edit rate before approval: 11%. Rejection rate (rep writes their own instead): 4%. Time saved per call: median 12 minutes.
Translated to dollars for a mid-size HVAC operator with 150 inbound calls a week, that is 30 rep-hours a week returned to selling activity. Which ends up being the more important number than API cost or model accuracy.
Where it goes next
The next iteration attaches the recap to a scoring model that predicts quote-to-close likelihood from the call content. Early signal is good; we are not ready to ship it into production workflows.
The broader point: AI integrations ship when the workflow is narrow and the human is still in the loop. "Replace the rep" is not the play. "Save the rep 12 minutes" is.