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

# Workflow Templates

> Start from a ready-made Voice Workflow — lead qualification, appointment booking, support triage, or a blank canvas.

# Workflow Templates

Templates are ready-made Voice Workflows you can load onto the canvas and adapt to
your business. Each one is a complete, validated starting point — a greeting, a few
branching phases, and (where useful) an [API Request](/docs/voice/workflows/api-request)
node and a [global](/docs/voice/workflows/transitions) for objections or escalation.
You edit the prompts, variables, and any URLs, then enable and save it.

<Note>
  Voice Workflows are in **alpha**. Open them in **Agent Studio → the left sidebar → Workflow**.
</Note>

## Loading a template

In the [builder](/docs/voice/workflows/builder) toolbar, click **Templates** and pick
one. The template loads onto the canvas and **auto-lays-out** as a clean top-down
tree — input handles on top, output handles on the bottom — ready to customize.

<Steps>
  <Step title="Open Templates">
    Click **Templates** in the builder toolbar.
  </Step>

  <Step title="Pick a starting point">
    Choose **Simple Assistant**, **Knowledge Q\&A**, **Lead Qualification**,
    **Appointment Booking**, **Support Triage**, or **Blank**. The graph appears on
    the canvas, already arranged top-down with the Start node marked.
  </Step>

  <Step title="Customize it">
    Use the **Inspector** to edit each node's prompt, its
    [extract / require variables](/docs/voice/workflows/nodes), and the edge
    conditions. Open the **Variables** panel to rename or retype the declared
    variables, and the **Settings** tab to adjust the Global Prompt and Director.
  </Step>

  <Step title="Point the API at your service">
    For templates that include an **API Request** node, click **Configure API** and
    replace the placeholder Base URL and endpoint with your own. See the
    [API Request](/docs/voice/workflows/api-request) page.
  </Step>

  <Step title="Validate, enable, test">
    Run **Validate** and fix any errors in the **Issues** tab. A loaded template
    starts **Disabled** — flip the toolbar toggle to **Enabled**, click **Save**,
    then **Test call**. See [Going Live](/docs/voice/workflows/publishing).
  </Step>
</Steps>

<Tip>
  Templates are a **starting point**, not a finished workflow — replace the
  placeholder API base URLs and tune every prompt for your business before you go
  live.
</Tip>

## The starter templates

<CardGroup cols={2}>
  <Card title="Simple Assistant" icon="wand-magic-sparkles">
    A clean **greet → help → end** starter — the **default** a new agent's workflow
    opens with. A good blank-ish base to build on.
  </Card>

  <Card title="Knowledge Q&A" icon="book-open">
    Greet, then look up the caller's question in the agent's
    [knowledge base](/docs/voice/workflows/knowledge) and answer it — with a
    graceful **not-found** path. Showcases the **Knowledge** node and found/not-found
    branching.
  </Card>

  <Card title="Lead Qualification" icon="filter">
    Greet the caller, ask for **consent** to continue, **qualify** them against
    your criteria, then **branch** to either book a call or move them to nurture.
    Includes an **objection-handling global** that triggers when the caller pushes
    back, handles the concern, and returns them to where they were.
  </Card>

  <Card title="Appointment Booking" icon="calendar-check">
    Collect **name**, **phone**, and a **preferred date**, then **check
    availability** with an [API Request](/docs/voice/workflows/api-request). A
    Condition branches on the result to **confirm** the slot or **offer an
    alternative**, then ends the call.
  </Card>

  <Card title="Support Triage" icon="headset">
    **Identify the caller's intent**, then **branch** to the right resolution path
    or **transfer to a human**. Includes an **escalation global** that hands the
    call to a person when the caller is frustrated or explicitly asks for one.
  </Card>

  <Card title="Blank" icon="file">
    A minimal **greet → end** starting point. Use this when you want to design a
    flow from scratch without removing pre-built nodes.
  </Card>
</CardGroup>

### What's inside each one

| Template                | Flow                                                                                 | Notable pieces                                                 |
| ----------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
| **Simple Assistant**    | greet → help → end                                                                   | The default starter; minimal and clean                         |
| **Knowledge Q\&A**      | greet → KB lookup → answer / not-found → loop or end                                 | **Knowledge** node + found/not-found branching                 |
| **Lead Qualification**  | greet → consent → qualify → branch → book / nurture                                  | Objection-handling **global** node                             |
| **Appointment Booking** | collect name / phone / date → check availability → confirm / offer alternative → end | **API Request** node + a Condition that branches on the result |
| **Support Triage**      | identify intent → resolve or **transfer** → end                                      | Escalation **global** node + a **Transfer** node               |
| **Blank**               | greet → end                                                                          | Minimal scaffold to build on                                   |

## Appointment Booking — the API in detail

The Appointment Booking template wires up a real availability check so you can see
how an [API Request](/docs/voice/workflows/api-request) node feeds a branch:

* A **Check Slot Availability** API Request node calls `GET /availability` with the
  `{{preferred_date}}` variable collected earlier in the flow.
* It maps the response field **`available`** into the boolean variable
  **`{{slot_available}}`**.
* The next [Condition](/docs/voice/workflows/nodes) node branches on
  **`{{slot_available}} == true`** — confirm the slot if the equation is true, or
  offer an alternative date if not.

Replace the placeholder Base URL with your scheduling service's HTTPS endpoint
(localhost and private IPs are blocked), and adjust the endpoint name, path, and
the response → variable mapping to match your API.

## After you load a template

A loaded template is just a draft on the canvas, and it starts **Disabled** —
nothing runs live until you enable it and save.

* **Edit the prompts.** Every node's prompt is placeholder copy. Rewrite it for
  your product, and tune the shared **Global Prompt** in the **Settings** tab for
  personality and rules that apply across the whole call.
* **Check the variables.** Open the **Variables** panel to confirm the declared
  [variable types](/docs/voice/workflows/transitions) (string, integer, number,
  boolean) and any enums fit your data.
* **Review the edges.** Click each edge to open the condition editor and confirm
  the [transitions](/docs/voice/workflows/transitions) — Unconditional, Prompt, or
  Equation — say what you mean.
* **Validate before going live.** Run **Validate**; the **Issues** tab lists
  errors and warnings. Then **enable**, **Save**, and head to
  [Going Live](/docs/voice/workflows/publishing).

<Info>
  An enabled Voice Workflow runs the workflow's own **Global Prompt + node prompts**
  — not the agent's Behavior-panel prompt. Tune the prompts inside the builder, not
  on the agent's Behavior panel.
</Info>
