Phony

Availableapp.erp.io/phony/calls

Calls

Calls are the harder half of the product and the one with the interesting constraints. Everything here is about latency and permission.

Direction
Inbound, plus limited callback
Record
Transcript, outcome, permission
Metered
$0.12 per minute
Recording
Off by default

A call record

Every call keeps who called, when, how long, the transcript, the outcome the agent recorded, and — for anything outbound — an explicit panel explaining why we were allowed to make this call. That panel is unusual and deliberate: it means the permission basis for a call is visible on the call rather than reconstructable from logs, which is the difference between being able to answer a complaint and not.

app.erp.io/phony/calls
Calls

Last 7 days · 56 calls · 312 minutes

AllQualified14Transferred6
WhenNumberDirectionLengthOutcome
Today 14:22+44 7700 900412Inbound4:12Transferred
Today 11:03+44 7700 900188Inbound2:48Qualified
Today 09:40+44 7700 900412Callback1:55Requested by caller
Yesterday 18:31+44 7700 900733Inbound0:38Wrong number
Yesterday 16:02+44 7700 900255Inbound6:20Booked
The call list. Outbound rows carry the basis that permitted them.

Where the latency goes

Conversational latency is the difference between an agent that feels like a conversation and one that feels like a machine. The pipeline has three stages, and it is worth knowing which one dominates, because the intuitive answer is wrong.

StageWhat it isShare of the delay
Speech to textHearing what was said.Small
ModelDeciding what to say — time to first token.Moderate
Text to speechSaying it.The largest single piece

Because speech synthesis dominates, the optimisations that help most are the ones that start speaking sooner rather than the ones that think faster. Below roughly 400 milliseconds the transcribe-think-speak shape stops being the constraint at all and a speech-to-speech model becomes necessary — which is a different architecture, not a tuning exercise.

Text-to-speech is also the biggest single cost

The same stage that dominates latency dominates cost — it is the majority of what a minute of call time actually costs to produce. That is why the price is a flat per-minute rate: the cost genuinely does scale with how long the agent spends talking.

Numbers and carriers

A number is attached to an agent. Inbound calls to it are answered by that agent. Adding a number is a configuration step rather than something you do yourself, because the carrier account a number sits on determines what the number is permitted to do — inbound-only numbers and numbers cleared for callbacks are not interchangeable.

Phone and web chat are two separate paths

The phone agent and the website chat agent share a brief and knowledge but run through completely different machinery. A fix to one does not fix the other, and a bug can be present in one and absent in the other. When reporting something, always say which channel — it is the first question and it determines where anybody looks.

What this does not do

No cold outbound

See the outbound ceiling.

No IVR menus

The agent answers. There is no press-one-for-sales tree in front of it.

No call queueing

Concurrent calls are answered by the agent; there is no hold queue for a human team.

No voicemail transcription of your existing system

Phony answers its own numbers.

No sub-400ms latency

Architectural, not a setting.

Questions

Can we port our existing number?

Ask. It depends on the carrier and the jurisdiction.

What happens if two people call at once?

Both are answered.

Is call time billed in whole minutes?

It is metered on actual duration.