Context
Our sales rep answers calls from new leads, mostly from Thumbtack and Google. Our residential script is followed firmly, and every hesitant customer should leave the call with a quote, a reserved time and a deadline to decide. I used to check that by downloading two random calls a week and reviewing them by hand.
What I built
- Finds the calls. Every five minutes it checks our customer line in Quo for finished calls that lasted a minute or more and were handled by our team.
- Filters for free. Before any AI runs, it skips active customers, cleaners and job applicants, contacts marked do-not-disturb, and leads whose sales call was already coached.
- Screens, then coaches. A small, cheap model reads the call first and decides whether it was the real shot at the sale. Only that call gets full coaching, and earlier calls with the same number come along as context.
- Posts to Slack. The coaching lands in Slack within minutes of the call. It also tracks speed to lead, the minutes from a lead coming in to our first call.
- Learns from me. When I reply to a review in Slack with a correction, Claude turns it into a written rule, the coach follows it from then on, and it confirms in the thread.
- Protects card numbers. Card numbers and security codes said on a call are masked before anything goes to the AI or gets saved.
- Catches up and sums up. If my laptop was asleep, it covers the missed calls in one catch-up summary instead of a flood of messages. On the first of each month it posts a monthly summary.
Results
- The real sales call with every new lead gets coached, instead of two random calls a week
- Feedback lands in Slack the same day as the call
- The only running cost is API usage, and the cheap screening step keeps that low
A weekly version of the review runs in a bigger project: A weekly KPI engine: n8n, Looker Studio and AI sales-call review.