Nobody likes calling the cable company. You sit on hold, explain yourself twice, get transferred, and then have to decide on the spot whether the "special offer" is any good.
My internet bill had crept up to $86.54 a month, so I had a good reason to find out whether an AI voice agent could make that call for me. It mostly could, with me watching, and I closed the deal myself. Here's what I built, what went wrong, what it saved, and how I kept it on a short leash.
The setup: a phone line, a voice model, and me in the loop
The system has three pieces:
- A Twilio phone number with Twilio Media Streams. This carries the live call audio in and out.
- xAI's Grok Voice realtime API. This is the part that listens and talks on the call.
- My Mac mini. It runs the bridge between the two and is reachable from the internet through a Cloudflare tunnel. I didn't need to rent a cloud server.
How I supervised it
I didn't want an agent I couldn't see or stop. An agent negotiating on your account is acting with your authority, so I set it up to work for me, not instead of me.
Before the call, it got hard limits:
- No cancelling services. Not as a bluff, not as a tactic.
- No new contracts and no device purchases.
- Never guess a PIN or verification code. When Xfinity texted a code to my phone, I read it and passed it to the agent myself.
During the call, I was watching:
- I followed a live transcript in chat the whole time.
- I could send it steering notes, like "ask about the 1 Gig tier" or "don't accept that, ask what else is available."
- It stayed quiet until a person was on the line or I told it to speak.
At the end, I made the call:
- The agent couldn't hang up on its own. It ended the call only after I approved.
And it was honest with the other side:
- The agent told the Xfinity rep up front that it was an AI.
- The call was recorded with the rep's consent.
That's the whole arrangement. The agent did the dialing, the waiting, and the negotiating. I kept the judgment calls. And honestly, those limits mattered more than anything in the prompt. The goal is to save money without accidentally changing something you can't undo.
What went wrong, and what I fixed
The first attempts didn't go well. These lessons are the most useful part of the project:
1. Timing matters. My first tries were in the evening, and they failed because the retention department was closed. Retention is where the real offers live. A tireless agent doesn't help if the people it needs to reach have gone home.
2. Caller ID matters. I bought a local 925-area-code number for the agent to call from. An unfamiliar out-of-area number is a bad start when you want to sound like a normal customer.
3. Silence on hold isn't a cue to talk. Early versions narrated the hold time, filling dead air with commentary nobody needed. I stopped that and added a speak-on-demand mode, so the agent stays quiet until a real person picks up or I tell it to speak.
4. One small bug can cost you the ending. At the very end of the call, a keypad-tone (DTMF) bug dropped the line, which is the worst possible moment for a disconnect. Luckily, the Xfinity rep called me back, and I finished the deal myself on that callback. The agent had already done the long hold and the negotiating; I just closed it. I've since fixed the bug.
5. Hold time costs money. The successful call lasted about an hour and 45 minutes, and most of it was hold. A voice model bills while it listens to hold music, and my AI credits ran out before I could make a second call. If you build one of these, budget for the waiting, not just the talking.
The result
Here's what came out of that long call and the rep's callback:
- Speed: upgraded from 500 Mbps to 1 Gig
- Price: $86.54 a month down to $51.54 a month with autopay. The math: $110 list price, minus a $50-a-month discount guaranteed for 5 years, minus $10 for autopay, plus $1.54 in taxes.
- Gateway included, so no equipment rental fee
- Unlimited data
- 24 months of Peacock Premium at no charge
That's a bill cut by about 40%: $35 a month, or about $2,100 over five years. And the connection is twice as fast.
What this taught me about AI agents
The interesting part isn't that an AI can talk on the phone. It's what made this one work:
- A human stays in the loop. I could see everything as it happened and step in at any point.
- Clear limits beat a clever prompt. What the agent couldn't do mattered more than how persuasive it was.
- The real world is messy. Business hours, caller ID, hold music, keypad tones, dropped calls. Most of the work was handling those edges, not the conversation.
- Costs scale with time, not results. An agent that spends most of a nearly two-hour call on hold needs a budget, or a smarter way to wait.
Next up: the mobile bill
I'm not done. My mobile bill recently jumped from $123.65 to $166.28 a month. That's the next call. I haven't made it yet, so I don't have a result to share. When I do, I'll write it up here, good or bad.
If you manage a team, or just your own bills
Most of us have a list of calls nobody wants to make: vendors, renewals, billing disputes, appointment confirmations, follow-ups. Those are good candidates for an AI voice agent, as long as you build it with oversight, clear limits, and realistic expectations about cost and edge cases.
The win here wasn't only the $35 a month. The agent did the dialing, the waiting, and the negotiating for an hour and 45 minutes. I kept an eye on it, made every decision, and closed the deal myself on the callback.
Let's talk
This is the kind of work I do at AWH Industries: practical AI agents and automation, set up with guardrails so a person stays in charge. If there's a phone task or workflow eating your team's time, get in touch and we'll figure out together whether an agent makes sense for it.
Andy Halvorsen, AWH Industries