Ken asked for these three things on the 10 August call, more than once, and each time what came back was a cost total. This is the three things.
Vendor rates only. No plan price is proposed and none is agreed. Where something could not be verified, it says so instead of being filled in.
Built on Pipecat, in austin-voice-poc/bot.py. A call goes through these in order:
| What it does | Who | Which model | Paid? |
|---|---|---|---|
| Carries the call, streams the audio | Telnyx | TeXML app austin-voice | Yes — three meters |
| Knows when the caller stopped talking | Silero + Smart Turn | on our own server | No |
| Speech into text | Deepgram | nova-3 | Yes |
| Decides what to say | Anthropic | claude-haiku-4-5 | Yes |
| Text into speech | ElevenLabs | eleven_multilingual_v2 | Yes — the biggest line, 63% of a call |
| Books the job, writes the record | GoHighLevel + the inspector's ISN | — | Flat monthly |
eleven_turbo_v2_5Ken caught it: "we were sure that we are not using ElevenLabs turbo but multilingual."
He is right. The server's settings file reads ELEVENLABS_MODEL=eleven_multilingual_v2
— confirmed on 11 August and deliberately kept, because the fast model produced gibberish audio on
real calls. It costs double, and it is 63% of the cost of a call.
The mistake was reading the code's default and calling it "today". The bot falls back to turbo only when nothing is set — and something is set. A default is what happens when nobody decided; this was decided, on the server, in a file that is not in this repo.
The cost figures were never wrong. $0.064 a minute already had the expensive voice in it.
The web chat really does run eleven_turbo_v2_5 — that one is hard-coded, so part
two below stands.
The phone line, the audio stream, and the recording are three separate charges, not one.
It was in none of the July costings. Not hidden, not anyone's mistake: it simply isn't obvious that streaming the audio to our server is billed apart from carrying the call.
Working out when a caller has finished a sentence runs on our own server. It costs nothing per call and never shows on a bill.
Worth knowing precisely because it never shows on a bill — it does real work and is easy to forget is there at all.
These live in /opt/austin-voice/.env on the server — not the app's settings file. The bot reads its own. Change one, restart, done. No deploy.
| Setting | Today | What else it takes |
|---|---|---|
| Voice model | eleven_multilingual_v2set on the server — a decision, not a default | turbo — the code's fallback, half the price · flash — fastest, English only, produced gibberish on real calls |
| Listening model | nova-3 | others, but the local word list needs nova-3 |
| Language | English | multi turns Spanish on — Ken's ruling: not until he says so |
The phone bot does not update itself when we merge changes. It is copied to the server by hand and restarted. Everything else in the system deploys automatically.
Parker, James and web Josh all run in the same app as the dashboard.
| What it does | Who | Paid? |
|---|---|---|
| Hears the visitor | the visitor's own web browser | No — free, in any language |
| Decides what to say | Anthropic | Yes |
| Speaks back | ElevenLabs | Yes — only if they choose voice |
| Books and records | GoHighLevel | Flat monthly |
There is no listening bill at all. The visitor's own browser turns their speech into text. On the phone that is a real charge every minute. On the web it is free — and free in Spanish too.
The website pays half what the phone pays for the same voice. Same voice, same company, half the rate. The phone has been on the expensive model; the web never was.
Most visitors type instead of speaking, and typing costs nothing to answer out loud.
Ken spotted this on the call. James loads Parker's entire sales playbook — 73,000 characters of objection handling and price arguments — on top of his own two manuals.
That is why he costs more per conversation than the salesman does, even though his answers are shorter. Trimming it would roughly halve him.
He was given Parker's knowledge on purpose. Ken, in July: "people will ask, I thought when I signed up the program did this — and then James will be able to say, here's what the program really does." A paying customer with a wrong expectation is exactly who that is for.
The fix is to keep what the product does and drop the selling. That is a judgement about his job, so it goes to whoever wrote him.
Ken's question was the right one: "How much of that has to be done by a human? What are those factors? Then we have to see how much it costs, because people have to be paid."
These are the floor. No amount of building removes them, and they happen on every new client.
| Job | Why it needs a person |
|---|---|
| Move the phone number to us | A carrier form, a signature, and a wait. It cannot be hurried. And it is now required of every client. |
| Point the number at us | Done in Telnyx's own screens. Adding the number is only a third of the job — miss the other two and it answers as the wrong company. That has already happened once. |
| Any website or workflow inside GoHighLevel | Their system does not allow us to change these from code — read only. All of it is done by hand. |
| Google Business Profile | Google's own check — a postcard, a call, or a video. |
| Directory listings | Other companies' websites, most with no way in from code. |
| One test call before go-live | Somebody has to hear it. This is what catches a wrong company name, a wrong price, or a voice that sounds off. |
| Read the finished setup form | Those answers become what Josh says on every call. A wrong price typed here is quoted to every caller. |
These usually cost nothing. When they break, a person has to notice.
Looking after a client after they go live.
Nothing anywhere records how long that takes. Not one figure.
The AI runs about $21 to $31 a month on an average client. One forty-minute support call a month beats that at any real hourly rate.
This is the number that decides whether a price works, and it is the only one of the three that cannot be read out of the code. It needs measuring, not guessing — one column on a timesheet for one month.
After the caching fix, a phone call runs about six and a half cents a minute. A website chat is about a third of a phone call.
But that is not what sets the price. Two things are bigger:
The one-off list can be timed on the next client we set up. The ongoing one needs a month of writing it down. Neither is something the AI team can produce — and saying that plainly is the point of this page.