HOLDLINE line open · simulation
Built on CALL-E · for the person whose job is making the same call forty times

A phone agent can answer a question it never asked.

HOLDLINE calls a list of places, asks them all the same thing, and gives you back only the answers the call actually established. The rest come back empty, with the reason.

28
real calls placed
6
defects a telephone found
400
labelled cases, offline
The problem

A patient is ready to leave hospital, and cannot.

Nobody has confirmed a bed. So a discharge coordinator rings a care home and meets this, before a person says a word — and then does it again, seven more times.

Ringing · Oakfield Care Home · 0:04
  1. 1For visiting hours and directions
  2. 2For the accounts office
  3. 3For admissions and placementsthe one you want
  4. 4To repeat these options
  5. 0To hold for reception2:12 of hold music
Two questions on the other side of that. Then hang up, and start again at the next home on the list.
One placement, by handOn the phoneWhat you end up with
Oakfield Care Home6:10bed, nursing level
Riverside Nursing4:48no answer
Belmont House7:22bed only
Five more on the list29:40three reached
Eight homes, one placement48:00five answers you can act on

Five placements a week puts that near four hours on the telephone. Those are assumptions, written down so you can change them. The hours are not the expensive part — a “yes, we have a bed” the call never established is, because the patient stays another night and the coordinator starts again tomorrow.

What it does

It checks the answer against what was said out loud.

A call result tells you what the model concluded. It does not tell you what was spoken, and nothing in it separates asked and not understood from never asked at all. Watch one call land.

What the agent said
What comes back
bed_available
waiting…
Nothing has been established yet.
nursing_level
waiting…
Nothing has been established yet.
verified

The agent raised it and a usable answer came back — quoted, so you can read it yourself.

asked_but_unclear

Asked. No usable answer.

unattributed

Something was asked and answered, but no probe for this field matches it. Withheld, and not accused of being invented.

never_asked

Nothing was asked that this value could answer. A value present here is flagged and withheld.

no_transcript

Nothing to check against, so nothing is credited.

Measured, including the cost

The catch rate and its price print on the same screen.

400 labelled cases, offline, no calls placed. Every figure below comes back from one command: npm run eval.

What a caller ends up believingAnswers returnedNever established
Trusting structured_result 35517850.1% wrong
Through the gate 13300.0% wrong
45/45invented values caught
0/44paraphrases wrongly accused
44real answers withheld — the price, published

A benchmark containing only the cases a system handles is marketing. That last figure is the cost of the zero above it, and it prints on every run.

Twenty-eight live calls

Six defects a real telephone found, that 167 tests could not.

Each was fixed in the same order: add the case to the corpus, measure the damage, then change the check. No transcript, recording or call id from any of them is kept in the repository.

01

A refusal written as a sentence

A call returned a whole sentence saying nothing had been established. The gate called it verified — its usable-value check knew only short tokens like unknown. Every value in 400 cases was one word long, so the corpus could not see its own worst case.

02

Our own number, read back to us

A phone tree read our outbound caller id aloud. The transcript kept it in national notation and our redaction matched E.164 only, so a full number reached a file the tool calls shareable. One notation is not every notation.

03

A statement counted as a question

The agent opened by naming the very thing it had been sent to find out, asked nothing, and those words happened to sit inside the probe. The gate credited a field on less evidence than it claims to require — the exact failure it exists to prevent, from the other direction.

04

The architecture, taken away

A multi-recipient call returns no transcript turns; the same numbers dialled one at a time do. The batch could verify nothing, so a batch is now one call per place. It reproduces in one command: npm run probe:fanout.

05

A pipeline that disagreed with itself

The gate credits a field only when a turn actually asked for it. The compiled task carried a goal, a routing hint and a disclosure — and nothing telling the agent to ask. Two calls came back with the agent having put no question of its own. The tests could not see it: the fake returns transcripts already full of questions.

06

The question that arrived without its mark

The agent asked, in plain interrogative order, and the turn was cut off before the question mark. The gate called it never asked and threw the field away — while crediting three other turns from the same call, each about the call rather than the subject, because each carried a mark. Measured: 44 of 44 genuine questions eaten before the fix, 0 of 44 after, with statements of purpose still caught 44/44.

Our fake transport was built from the documentation, so it returned transcripts the platform does not. A fake built from documentation models the documentation. Only a telephone models the telephone.

See it work

See it with no telephone, then with one.

The console runs the same engine against a local fake. A console reachable off its own machine is locked into simulation, whatever else is set — so a visitor cannot spend credits or ring anybody.

And when you want the telephone

No artifact of ours can prove this dials, so place the call yourself — your CALL-E account, your number. The plan runs with no key and reaches no network.

npm run call -- \
  --ask "Are you accepting new patients?" \
  --to '+1...' \
  --field accepting="accepting new patients" \
  --live

--live prints the masked numbers and waits for you to type LIVE. Drop it and nothing dials. An established field comes back with the turn that established it, quoted; one the call never covered comes back empty with the reason.