> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Coaching templates: curate the supervisor snippet library

> Manage the tenant-curated coaching-template library at Voice → Coaching Templates — create, edit, archive, and delete the vetted snippets supervisors insert into coaching notes and whispers.

# Coaching templates: curate the supervisor snippet library

**Voice → Coaching Templates** is the tenant's curated library of coaching snippets: the vetted phrases supervisors drop into coaching notes and whisper to agents mid-call, so floor coaching stays on-brand across shift changes. The coaching surface itself (plans, outcomes, the before/after effectiveness report) is covered in [Supervisor coaching](/guides/supervisor-coaching) and [Voice coaching plans](/guides/voice-coaching-plans); this guide walks the library management workflow end to end — where it lives, how to curate it, and who consumes it.

The library is a tenant-owned control: each tenant curates its own snippet set, and nothing here touches call routing or carriers — it only governs the text supervisors reuse.

## 1. Where the library lives

Open **Voice → Coaching Templates** in the dashboard. Owners and admins can curate the library; other roles get a permission screen, matching the API (only owners and admins can create, edit, or delete templates — everyone else gets `403`). Supervisors without the admin role consume the library read-only from the coaching-note composer on a call's detail page.

The page lists templates in a table with a search box (name, snippet, category, or locale) and a **Show archived** toggle. Each row shows the name, category, snippet, locale, status (active or archived), and row actions: **Edit**, **Archive** (or **Restore** for an archived row), and **Delete**. An active-count header tells you how many templates are currently offered to the pickers.

## 2. Create a template

Click **Create template** and fill four fields:

* **Name** — up to 120 characters, unique per tenant. Name it for the moment it serves ("De-escalate angry caller", "Verify identity before disclosing"), because the name is what a supervisor scans in the picker.
* **Category** — pick from the picker:
  * `de_escalation` — calm an upset caller
  * `discovery` — open-ended probe questions
  * `objection` — handle pricing or timeline pushback
  * `compliance` — required disclosure prompts
  * `closing` — ask-for-the-sale and wrap-up moves
  * `coaching` — direct guidance to the agent ("slow down", "pause")
  * `other` — catch-all when none of the above fits
* **Snippet** — the exact phrase or guidance, up to 500 characters. This is the text inserted into a coaching note or whispered, verbatim.
* **Locale** — optional (2–16 characters, e.g. `en` or `en-US`). Leave it blank to make the template available in every locale.

A duplicate name fails with `409 TEMPLATE_NAME_CONFLICT` — rename the new entry instead of accumulating near-duplicates, since the whole point of the library is one vetted phrasing per moment. The library caps at 1,000 templates per tenant (`409 TEMPLATE_LIMIT_EXCEEDED`), far above any realistic curation size.

## 3. Edit, archive, and delete

Open **Edit** from the row to change any subset of fields — name, category, snippet, locale, or the active state. Over the API this is `PATCH /voice/supervisor/coaching-templates/{id}`; send only the fields you're changing. Renaming to a name another template already holds returns `409 TEMPLATE_NAME_CONFLICT`, same as create.

**Archive** is the one-click `is_active` toggle on the row: archived templates disappear from the coaching-note picker and the whisper dropdown but stay in the library for audit. Flip **Show archived** to review them, and **Restore** brings one back with a click. Because the toggle is reversible, archive a stale snippet rather than deleting it.

**Delete** is a permanent removal. The dashboard asks you to confirm, and warns you to archive instead if you want the entry kept for analytics. Over the API, `DELETE /voice/supervisor/coaching-templates/{id}` removes the row outright; a missing id returns `404 TEMPLATE_NOT_FOUND`.

## 4. How the coaching-note composer consumes the library

The payoff for curation shows up where supervisors write notes. On a call's detail page (**Voice → Calls**, open a call), the coaching-note composer carries an **Insert template** picker that lists each active template as `Category · Name`; choosing one inserts the snippet body into the note. Archived templates never appear there, and the picker stays hidden entirely until the library has at least one active template — an empty library never clutters the composer.

The same active-only read feeds the mid-call whisper surface; see [Agent assist: whisper coaching](/guides/agent-assist-whisper-coaching). Curate once, and every supervisor writing a note or whispering a phrase draws from the same vetted set — which is why the library sits in a single flat category taxonomy instead of per-team sub-libraries.

## 5. API surface and architecture

Everything the dashboard does is one endpoint family, documented with the rest of the coaching surface in [Supervisor coaching](/guides/supervisor-coaching):

```bash theme={null}
# List (optionally filter by category / locale; include_archived=true shows the archive)
curl "https://api.orbit.devotel.io/api/v1/voice/supervisor/coaching-templates?category=de_escalation&page=1&pageSize=50" \
  -H "X-API-Key: dv_live_sk_your_key_here"

# Create / edit / delete
curl -X POST https://api.orbit.devotel.io/api/v1/voice/supervisor/coaching-templates \
  -H "X-API-Key: dv_live_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "name": "De-escalate angry caller", "category": "de_escalation",
        "body": "I hear you. Let me get this fixed for you right now." }'
```

The list response is a paginated envelope (`templates`, `total`, `page`, `pageSize`), so the dashboard's active count is the true library size, not the length of the current page. The category taxonomy deliberately mirrors the [skill catalog](/concepts/skill-catalog) architecture: one governed, flat vocabulary that queues, pickers, and routing filter on a single dimension, rather than a free-text tag soup. The same flat-enum choice drives the [voice skill certifications](/guides/voice-skill-certifications) surface.

## See also

* [Supervisor coaching](/guides/supervisor-coaching) — the API-level template calls alongside coaching plans and effectiveness reporting
* [Voice coaching plans](/guides/voice-coaching-plans) — the multi-week improvement cycle these snippets feed
* [Agent assist: whisper coaching](/guides/agent-assist-whisper-coaching) — the mid-call surface the library also serves
* [Build a contact-center QA program](/guides/quality-management-program) — the scoring loop that generates coaching moments
* [The skill catalog](/concepts/skill-catalog) — the governed-vocabulary pattern the category taxonomy mirrors
* [Error codes](/api-reference/error-codes) — the `409` conflict shapes for duplicate names and the library ceiling
