Whissle conversation-flow suite
Headache intake — designed flow, over voice
Whether a designed clinical-intake flow survives a real caller: red flags raised, topics covered out of order, uncertainty, time pressure — and whether the agent ends the call itself.
Ran on
claude-haiku-4-5
the cheapest and fastest model in its family
provider Anthropic
The harness pinned nothing — no model, no provider, no reasoning-depth or speed setting. Those request controls did not exist on the benchmark endpoint when these runs were made, so every arm inherited the production deployment default.
Read from the deployment default in force on each run date, not from the run's own record: the endpoint did not report which model served a turn until after these runs, and no run artifact names one. Automatic failover to the secondary provider (Gemini 2.5 Flash) is logged but not recorded per turn, so we cannot rule out that a small fraction of turns was served by it.
Spoken through
recognition the production speech configuration — a third-party engine chosen by language routing; the run does not record which
synthesis the production synthesis configuration; the run does not record which engine served it
Whissle metadata head — not in the path
Whissle's metadata head — the emotion, intent and entity tags our cascade emits beside the transcript — is not deployed in production, so it was not in the path for any spoken run on this page. These numbers were set without it.
Established by an audit of the production speech configuration, not recorded by the run. The runs log no engine per session, so we can state the configuration they ran against but not which engine served any individual turn.
No published comparator
Run 7 August 2026.
Every metric this run produced
| Metric | Value | Sample | Interval |
|---|---|---|---|
| Task successHeadline95% Wilson score interval, computed here from the pass count. The harness does not emit an interval; this is derived, not reported. | 70.0% | 7 of 10 tasks | 95% CI 39.7–89.2% |
| Reached a clean close95% Wilson score interval, computed here from the pass count. The harness does not emit an interval; this is derived, not reported. | 40.0% | 4 of 10 tasks | 95% CI 16.8–68.7% |
Run this yourself
You will need: Node 18+ and uv, and a Whissle workspace key (Settings → API keys on whissle.ai). Nothing else — the simulated caller and the flow analyzer both route through Whissle's own model API, so there is no third-party key to obtain.
git clone https://github.com/WhissleAI/tau2-bench-w && cd tau2-bench-w
uv sync
export WHISSLE_BASE=... WHISSLE_API_KEY=...
./run_flow_sim.sh --agent-type headache_enrollment --sessions 10The ten caller personas ship with the harness, so a re-run is on the identical scenario set and directly comparable with the numbers above.
Running a benchmark straight from the Whissle CLI is on the roadmap and does not exist yet — the CLI manages agents, calls and records today, and we are not going to print a command on this page that would fail when you paste it. Until it lands, the harness above is the path.
What we measured against
Our arm in every row below
Whissle ran on
claude-haiku-4-5
the cheapest and fastest model in its family
provider Anthropic
The harness pinned nothing — no model, no provider, no reasoning-depth or speed setting. Those request controls did not exist on the benchmark endpoint when these runs were made, so every arm inherited the production deployment default.
Read from the deployment default in force on each run date, not from the run's own record: the endpoint did not report which model served a turn until after these runs, and no run artifact names one. Automatic failover to the secondary provider (Gemini 2.5 Flash) is logged but not recorded per turn, so we cannot rule out that a small fraction of turns was served by it.
Scoring 70.0% over 10 scored tasks. Where a row below names a different model, that difference is listed with the others.
No setup-matched baseline yet
We have not yet run another model through this exact harness — same domain, same task set, same user simulator, same pass^1, same concurrency — so there is no head-to-head to show. Published figures for other systems appear below for context, greyed, with the reasons they are not directly comparable. When a matched run lands it will appear here as a real comparison.
Nobody publishes a comparable figure for this benchmark at this modality, so we show none. An invented comparator would be worse than an empty column.
What was thrown away
Attempted
10
Scored
10
Excluded
0
None excluded — the sample is the whole attempt.
One of the ten never established a session — an infrastructure failure, not agent behaviour. We counted it as a miss rather than excluding it. Excluding it would read 7 of 9 (77.8) instead of 7 of 10 (70.0), and we would rather publish the harder number than the one we could defend.
What this number can and cannot be put beside
Our own suite and our own analyzer — comparable with our previous run on the identical scenario set, and with nothing outside this page. Clean close is the stricter bar: the agent has to end the call itself, not trail off once the caller's goal is met.
Comparable with
- Other runs of this same benchmark on this page, at the same modality (Voice).
- Runs of this benchmark on the same arm — claude-haiku-4-5 (the cheapest and fastest model in its family). A run on a different model is a different experiment.
- Other Pass^1 figures — one attempt per task, no best-of-n.
Not comparable with
- Any external leaderboard — no published figure exists for this suite at this modality, so we show none.
- Text-modality leaderboards. The tasks are the same but the input is spoken, which is a strictly harder problem.
- Any figure produced with Whissle's metadata head in the path. It was not in this one — the run used the production speech configuration, and that head is not deployed there.
- Anything requiring a confidence interval. N=10 is diagnostic, not conclusive.
- Independently-judged results. A rule-based auditor that replays the session against the flow's declared spec. It is deterministic rather than an opinion — but we built it and we run it, so it is not an independent verdict. Treat these numbers as our own instrumentation, not as third-party validation.
What passing and failing look like
No published cases for this run
The same benchmark over time
+20.0 on the previous run (50.0 → 70.0), over 2 runs on record.
| Run date | Score | Scored | Excluded | Ran on | Status |
|---|---|---|---|---|---|
| 5 Aug 2026 | 50.0%(5 of 10) | 10 | 0 | Not recorded | Preliminary |
| 7 Aug 2026 | 70.0%(7 of 10) | 10 | 0 | claude-haiku-4-5 | Preliminary |
How this run was produced
- Agent under test
- A flow-enabled Whissle agent running the headache-intake flow over a real voice session.
- How it was run
- An LLM-driven simulated caller with a persona and a goal, run against a flow-enabled agent over a real voice session, then audited by a deterministic rule analyzer against the flow's declared spec.
- Model config
- Model claude-haiku-4-5Provider Anthropicthe cheapest and fastest model in its family, in its own vendor's lineup.The harness pinned nothing — no model, no provider, no reasoning-depth or speed setting. Those request controls did not exist on the benchmark endpoint when these runs were made, so every arm inherited the production deployment default.Read from the deployment default in force on each run date, not from the run's own record: the endpoint did not report which model served a turn until after these runs, and no run artifact names one. Automatic failover to the secondary provider (Gemini 2.5 Flash) is logged but not recorded per turn, so we cannot rule out that a small fraction of turns was served by it.
- Speech path
- Recognition the production speech configuration — a third-party engine chosen by language routing; the run does not record whichSynthesis the production synthesis configuration; the run does not record which engine served itWhissle metadata head — not in the path.Whissle's metadata head — the emotion, intent and entity tags our cascade emits beside the transcript — is not deployed in production, so it was not in the path for any spoken run on this page. These numbers were set without it.Established by an audit of the production speech configuration, not recorded by the run. The runs log no engine per session, so we can state the configuration they ran against but not which engine served any individual turn.
- Judge
- Our own judge — Whissle deterministic flow analyzer. A rule-based auditor that replays the session against the flow's declared spec. It is deterministic rather than an opinion — but we built it and we run it, so it is not an independent verdict. Treat these numbers as our own instrumentation, not as third-party validation.
- Sampling
- Ten authored caller personas, held fixed between runs so two runs are comparable: urgent red flags, skipped topics, out-of-order answers, chronic uncertainty, time pressure. Population: The headache-intake flow's full scenario set. No seed — the selection was not randomised. 1 attempt per task.
- Run date
- 7 August 2026
- Harness commit
- Not recorded for this run. Newer runs pin the commit.
- Cost
- Not recorded for this run.
- Artifact
results/whissle/flow_sim/