# End of turn (/conversation/end-of-turn)

End-of-turn detection decides when the caller has finished speaking. Too eager
and the agent talks over people mid-thought. Too cautious and every reply
starts with dead air. It is the largest controllable part of
[TTFB](/concepts#where-latency-goes).

```yaml title="config.cuelo"
turns:
  controller: turn-1-mini
  # threshold: 0.36       end-of-turn probability needed
  # min_silence: 60       ms of quiet before the model may decide
  # max_silence: 1500     ms after which the turn ends regardless
```

## Controllers [#controllers]

| Value         | How it decides                                                                                                                                                 | Languages    | Best for                         |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | -------------------------------- |
| `turn-1-mini` | A streaming model scores every 20 ms whether the turn is over. In our tests it answers about 140 ms after the caller stops and holds through "um, so…" pauses. | English      | The default.                     |
| `smart-turn`  | At each pause of `min_silence` ms (default 200), Smart Turn v3 judges whether the speaker _sounds_ done.                                                       | Multilingual | Non-English calls.               |
| `vad`         | Fixed silence: the turn ends after `min_silence` ms (default 500).                                                                                             | Any          | Predictability over naturalness. |
| `maai`        | MaAI Voice Activity Projection from both voices. Also decides interruptions.                                                                                   | English      | Full-duplex experiments.         |

## Tuning [#tuning]

| Field         | Default (turn-1-mini / smart-turn / vad) | Raise it to…                       | Lower it to…         |
| ------------- | ---------------------------------------- | ---------------------------------- | -------------------- |
| `threshold`   | 0.36 / 0.5 / –                           | cut people off less                | answer faster        |
| `min_silence` | 60 / 200 / 500 ms                        | ignore short breaths               | react sooner         |
| `max_silence` | 1500 ms                                  | wait for slow, thoughtful speakers | never leave dead air |

Tune against real calls. In the dashboard's latency tab, `vad_tail` is the
silence the model needed. **Premature** counts replies that were cancelled before any audio played,
because the caller kept talking. Lower `threshold` until premature turn ends start
to appear, then step back.

## Why finalize matters [#why-finalize-matters]

When the controller fires `turn_end`, Cuelo asks the STT to **finalize**: flush
a final transcript right away instead of waiting for the provider's own
endpointing, which is slower. That's the `finalize`
stage in the latency breakdown, typically 50–150 ms. Every STT provider in
Cuelo implements it.

## Pairing with backchannels [#pairing-with-backchannels]

End-of-turn models often fire on the pause right after the agent says "mhm".
`backchannel_hold` makes the agent wait before taking that turn. See
[Backchannels](/conversation/backchannels).