voicebot

engine: …
identity
pipeline
Forms 2/3 run on the native engines only (native_py / native_rs) — pipecat and livekit are cascaded-only.
STT — speech to text
LLM
TTS — text to speech
VAD — voice activity (Silero)
greeting
recording-consent line
Spoken at the start of the call (the "this call may be recorded" disclosure). It is folded into the opener: before or appended to the greeting. Default ON for the India (DPDP) posture. An empty line is treated as OFF.
timers
call patch — doc 35 transfer to the owner

On by default for new bots (ruled 13 Aug 2026). With this off, the LLM has no transfer_to_owner tool and the Live tab's Patch to me fails with transfer is not enabled for this bot. The destination is never configured here — Django dials the owner's own user.phone (#CL-35-14, so no prompt can redirect a patch).

dead-air filler — doc 44 pool

What the bot says when the real reply is slow. Off by default for fresh bots (doc 44 decision). The pool rotates and never repeats the last-used line within a call; an empty pool falls back to the single line. The 10 s stuck-tier backstop always speaks the single line, even with this off. Every line here is pre-synthesized into the audio cache on Save.

held context unlock — mid-call staged context (docs 44/49)

Django stages the user's saved instructions that could not bind by number (staged.instructions in the pack). Scoreboard by default for new bots (ruled 13 Aug 2026; off = instant rollback). The tool gives the model fetch_context (cascaded form only); the watcher matches every committed caller turn engine-side and pushes on a clean match; both share one matcher: keyword tier first, LLM tier on a miss. scoreboard is the doc-49 context engine — deterministic commit-path matching with same-turn injection and gap questions, plus the promoted fetch_context as the post-settle door. The prompt carries name+topic labels only — content never rides the prompt.

WhatsApp location share — doc 51

On by default. Runs only when a PINNED location instruction rides the call's pack; off = the bot only ever speaks the address aloud. Grace covers a "Hi" that arrives after the call ends.

live rolling summary — the two-line card pair (plan 63)

On by default. A separate cheap LLM side-lane summarizes after committed caller turns and streams call.summary to the live card. Fire-and-forget: it can never delay a turn. Global kill: VOICEBOT_ROLLING_SUMMARY_ENABLED.

tool wait lines — doc 44 per-tool intermediate messages

Per HTTP tool declared on this bot: where its wait line comes from, the static line, and the time-progress ladder. Progress signals are local-tools-only in v1 (fetch_context above) — an HTTP tool is one POST, one response, so it gets the time ladder only.

guardrails — per-bot screening rails

Each rail is one block of the screened-call prompt. Uncheck to drop it from THIS bot (conditional rails then never arm); edit the text to override it. Text identical to the shipped default is stored as "no override", so default-text bots keep tracking code updates. The backend save-time scans (sensitive-info flag, profanity block) are a separate floor these switches do not touch.

Loading rail defaults…
instructions — bot-level instruction text

Every instruction the system itself teaches or speaks on this bot's calls — engine addenda (end-call, transfer), screening teachings, assistant-mode prompts, wrap-up nudges and the abuse warn/close lines. These are not part of the persona prompt above; they are the machinery's own words. Edit to override for THIS bot; text identical to the shipped default is stored as "no override", so default-text bots keep tracking code updates. Some texts carry machine tokens (<<END_CALL>>, {line}, tool names) — a save that drops a required token is rejected.

Loading instruction defaults…