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

# Voice Agent

> Give each MSP an AI phone agent that takes calls, captures intake, and creates PSA tickets.

The Voice Agent is a per-MSP AI phone agent that answers calls, captures structured intake from the caller, and creates a ticket in your connected PSA. Use it as an after-hours line, an overflow line, or a primary helpdesk number — point your existing PBX at the Rallied number and forward calls to it.

Each MSP gets one Voice Agent. It runs on Twilio (carrier) and Vapi (speech-to-text, LLM, text-to-speech) and dispatches into the first connected PSA — ConnectWise, HaloPSA, or Autotask, in that order.

## What happens on a call

1. **Caller dials the Rallied number.** Twilio routes the call to Vapi, which plays your configured greeting.
2. **The agent collects intake.** It asks for the caller's name, company, and a description of the issue. Speech is transcribed in real time.
3. **The caller is matched to a client and contact.** Rallied tries three steps in order: phone number → company name → name within company. The matched company is what scopes the resulting ticket.
4. **A ticket is created in your PSA.** The end-of-call report from Vapi is posted to Rallied, which dispatches to your connected PSA (ConnectWise → HaloPSA → Autotask priority order). The ticket uses the defaults configured on the Voice tab.
5. **The call is logged.** Every call is saved to the call history with status, duration, transcript, and recording — regardless of whether the ticket was created successfully.

<Note>
  Call history is preserved even if the Voice Agent is later disabled or its phone number is released. Disabling the agent stops new calls; it does not erase the audit trail.
</Note>

## Enabling the Voice Agent

Open an MSP's detail page and click the **Voice** tab. Then:

<Steps>
  <Step title="Click Enable">
    The dashboard provisions a Twilio number for your MSP and registers it with Vapi as an inbound assistant. This usually takes a few seconds. While provisioning, the action area shows a spinner; once complete, the new phone number appears next to the **ON** badge.
  </Step>

  <Step title="Configure defaults on the Settings sub-tab">
    Set the greeting and PSA defaults (board, status, company, contact) used when the caller can't be auto-matched. See [Settings](#settings) below.
  </Step>

  <Step title="Forward your helpdesk line">
    In your PBX or carrier console, forward the helpdesk number you advertise to the new Rallied number. Test with a single call before pointing production traffic at it.
  </Step>
</Steps>

To turn the agent off, click the toggle next to **ON** and confirm. Disabling releases the Twilio number, deletes the Vapi assistant, and drops the configuration. Call history is retained.

## Settings

The **Settings** sub-tab on the Voice tab controls how the agent behaves on every call.

| Field                       | What it does                                                                                                                                                                                     |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Greeting**                | What callers hear first. Identify as AI to set expectations — for example, "Hi, you've reached the helpdesk. I'm an AI assistant. I'll take down the details so a technician can call you back." |
| **Default Board**           | The PSA board (ConnectWise) or queue (HaloPSA / Autotask) tickets are created on.                                                                                                                |
| **Default Status**          | The status applied to new tickets.                                                                                                                                                               |
| **Default Company**         | Fallback client when the caller's number doesn't match any client on file.                                                                                                                       |
| **Default Contact**         | Fallback contact within the default company. Type to search — contacts are looked up live in your PSA.                                                                                           |
| **Save call transcription** | Attach the text transcript to the created ticket as an internal note.                                                                                                                            |
| **Save call recording**     | Attach the audio recording to the created ticket.                                                                                                                                                |

Defaults are applied only when caller matching falls through. If the agent identifies the caller's company and contact from the inbound number or the conversation, those values override the defaults on the resulting ticket.

<Note>
  Ticket source is no longer set from the Voice tab. Each PSA's tenant-default source is used automatically — no per-tenant configuration is required, and source values that don't exist in your PSA can no longer fail ticket creation.
</Note>

<Tip>
  The **Default Contact** dropdown is a search-on-type combobox. Start typing a name and Rallied queries your PSA's contact list in real time, scoped to the company you've selected as the default. This works the same way against ConnectWise, HaloPSA, and Autotask.
</Tip>

<Note>
  Tickets created by the Voice Agent use your PSA tenant's default source — Rallied no longer asks you to pick one. Source picklists vary per tenant and aren't safe to default centrally; ConnectWise tickets fall back to the tenant's configured service source, and Autotask uses its tenant default unless overridden by Rallied operations.
</Note>

## Caller matching

The agent attaches each call to a client using a three-step match, in order:

1. **Phone number.** If the inbound caller ID matches a contact's phone number in your PSA, the ticket is attached to that contact's company.
2. **Company name.** If the caller states their company and it exactly matches a company on file, the ticket is attached there. Matches are exact to avoid cross-tenant routing — a caller saying "Acme" will not match "Acme Construction".
3. **Name within company.** Once the company is known, the agent attempts to match the spoken caller name to a contact in that company.

If all three steps fall through, the ticket is created against the **Default Company** and **Default Contact** you configured on the Settings sub-tab. The matched company name is recorded on the call so you can audit how each call was routed.

## Call history

The **Call history** sub-tab lists every call the Voice Agent has handled, including:

* **Caller** — the matched contact name (or the raw caller ID if no match was made)
* **Company** — the matched company
* **Started / duration** — when the call came in and how long it lasted
* **Urgency** — extracted from the conversation by the LLM (`low`, `normal`, `high`, `urgent`)
* **Ticket** — a link to the PSA ticket the call created, when one was created

Calls appear here regardless of whether ticket creation succeeded. If a PSA dispatch failed, the call is still logged so you can see what happened and follow up manually.

## PSA support

The Voice Agent dispatches into one PSA per MSP — the first connected integration in this priority order:

| PSA         | Status                                                            |
| ----------- | ----------------------------------------------------------------- |
| ConnectWise | Supported — boards, statuses, companies, search-on-type contacts. |
| HaloPSA     | Supported — queues, statuses, companies, search-on-type contacts. |
| Autotask    | Supported — queues, statuses, companies, search-on-type contacts. |

If your MSP has more than one PSA connected, the Voice Agent uses the first in the list above. Multi-PSA selection is not yet user-configurable.

<Note>
  Rallied lifts the per-list cap on Boards, Statuses, and Companies across all three PSAs, so very large MSPs see their full lists in the dropdowns. Contacts are queried on-demand instead of eagerly loaded — the form stays fast even when a client has thousands of contacts.
</Note>

## Limitations

* **One Voice Agent per MSP.** All clients under that MSP share a single number and a single greeting.
* **Single PSA per call.** The agent dispatches to one PSA only — the first connected of ConnectWise, HaloPSA, or Autotask.
* **Exact company name match.** Fuzzy matching is intentionally disabled to prevent cross-tenant ticket leakage.
* **US-format phone numbers** are formatted for display; other formats render as raw E.164.
