diff --git a/fern/docs.yml b/fern/docs.yml
index b8dc7ff5c..c7c537051 100644
--- a/fern/docs.yml
+++ b/fern/docs.yml
@@ -112,12 +112,12 @@ navigation:
- section: Examples
icon: fa-light fa-code
contents:
+ - page: Inbound support
+ path: examples/inbound-support.mdx
+ icon: fa-light fa-phone-volume
- page: Outbound sales
path: examples/outbound-sales.mdx
icon: fa-light fa-money-bill-wave
- - page: Inbound support
- path: examples/inbound-support.mdx
- icon: fa-light fa-user-headset
- page: Pizza website
path: examples/pizza-website.mdx
icon: fa-light fa-pizza-slice
@@ -187,7 +187,7 @@ navigation:
contents:
- page: Query tool
path: knowledge-base/using-query-tool.mdx
- icon: fa-light fa-magnifying-glass
+ icon: fa-light fa-magnifying-glass
- page: Trieve integration
path: knowledge-base/integrating-with-trieve.mdx
icon: fa-light fa-brain
@@ -508,7 +508,7 @@ navigation:
- page: MCP server
path: sdk/mcp-server.mdx
icon: fa-light fa-server
-
+
- tab: sdks
layout:
- section: Client SDKs
diff --git a/fern/examples/inbound-support.mdx b/fern/examples/inbound-support.mdx
index 1e3fd37b7..2264655e1 100644
--- a/fern/examples/inbound-support.mdx
+++ b/fern/examples/inbound-support.mdx
@@ -1,160 +1,314 @@
---
-title: Inbound Support Example ⚙️
-subtitle: Let's build a technical support assistant that remembers where we left off.
+title: Inbound customer support
+subtitle: Build a banking customer support agent that can process inbound phone calls and assist with common banking issues.
slug: examples/inbound-support
+description: Build a voice AI banking support agent with tools for account lookup, balance and transaction retrieval.
---
+## Overview
-We want a phone number we can call to get technical support. We want the assistant to use a provided set of troubleshooting guides to help walk the caller through solving their issue.
+Build a banking support agent with function tools, CSV knowledge bases, and voice test suites. The agent handles account verification, balance inquiries, and transaction history via phone calls.
-As a bonus, we also want the assistant to remember by the phone number of the caller where we left off if we get disconnected.
+**Agent Capabilities:**
+* Account lookup and verification via phone number
+* Balance and transaction history retrieval
+
+**What You'll Build:**
+* Retrieval tools and CSV knowledge bases for account/transaction data
+* Voice test suites for automated quality assurance
+* Inbound phone number configuration for 24/7 availability
+
+## Prerequisites
+
+* A [Vapi account](https://dashboard.vapi.ai/).
+
+## Scenario
+
+We will be creating a customer support agent for VapiBank, a bank that wants to provide 24/7 support to consumers.
+
+
+---
+
+## 1. Create a Knowledge Base
-
- We'll start by taking a look at the [Assistant API
- reference](/api-reference/assistants/create-assistant) and define our
- assistant:
-
- ```json
- {
- "transcriber":{
- "provider": "deepgram",
- "keywords": ["iPhone:1", "MacBook:1.5", "iPad:1", "iMac:0.8", "Watch:1", "TV:1", "Apple:2"],
- },
- "model": {
- "provider": "openai",
- "model": "gpt-4",
- "messages": [
- {
- "role": "system",
- "content": "You're a technical support assistant. You're helping a customer troubleshoot their Apple device. You can ask the customer questions, and you can use the following troubleshooting guides to help the customer solve their issue: ..."
- }
- ],
- "tools": [
- {
- "type": "transferCall",
- "destinations": [
- {
- "type": "number",
- "number": "+16054440129",
- "message": "I am forwarding your call to Department A. Please stay on the line."
- }
- ]
- }
- ]
- },
- "firstMessage": "Hey, I'm an A.I. assistant for Apple. I can help you troubleshoot your Apple device. What's the issue?",
- "recordingEnabled": true,
- }
- ```
-
- - `transcriber` - We're defining this to make sure the transcriber picks up the custom words related to our devices.
- - `model` - We're using the OpenAI GPT-3.5-turbo model. It's much faster and preferred if we don't need GPT-4.
- - `transferCall` tool in `model.tools` - Since we've added this, the assistant will be provided the [transferCall](/assistants#transfer-call) function to use if the caller asks to be transferred to a person.
- - `messages` - We're defining the assistant's instructions for how to run the call.
- - `firstMessage` - This is the first message the assistant will say when the user picks up.
- - `recordingEnabled` - We're recording the call so we can hear the conversation later.
+
+
+
+
+
+
+
+
+
+
+
+ In your Vapi dashboard, click `Files` in the left sidebar.
+
+
+ - Click `Choose file`. Upload both `accounts.csv` and `transactions.csv` files.
+ - Note the file IDs. We'll need them later to create tools.
+
+
-
+
- Since we want the assistant to remember where we left off, its configuration is going to change based on the caller. So, we're not going to use [temporary assistants](/assistants/persistent-assistants).
+---
- For this example, we're going to store the conversation on our server between calls and use the [Server URL's `assistant-request`](/server-url#retrieving-assistants) to fetch a new configuration based on the caller every time someone calls.
+## 2. Create an Assistant
+
+
+ Go to [dashboard.vapi.ai](https://dashboard.vapi.ai) and log in to your account.
+
+
+ Click `Assistants` in the left sidebar.
+
+
+ - Click `Create Assistant`.
+ - Select `Blank Template` as your starting point.
+ - Change assistant name to `Tom`.
-
- We'll create a phone number for inbound calls using the [Phone Numbers API](/api-reference/phone-numbers/create).
+
+
+
- ```json
- {
- "id": "c86b5177-5cd8-447f-9013-99e307a8a7bb",
- "orgId": "aa4c36ba-db21-4ce0-9c6e-99e307a8a7bb",
- "provider": "vapi",
- "number": "+11234567890",
- "createdAt": "2023-09-29T21:44:37.946Z",
- "updatedAt": "2023-12-08T00:57:24.706Z",
- }
+---
+
+## 3. Configure an Assistant
+
+
+
+ Update `First Message` to:
+
+ ```txt title="First Message" wordWrap
+ Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?
```
+
+
+ Update `System Prompt` to:
+```txt title="System Prompt" maxLines=10
+# VapiBank - Phone Support Agent Prompt
+
+## Identity & Purpose
+You are **Tom**, VapiBank's friendly, 24x7 phone-support voice assistant. Do not introduce yourself after the first message.
+You help customers with account inquiries:
+
+1. **Check balance**
+2. **View recent transactions**
+
+## Data Sources
+You have access to CSV files with account and transaction data:
+- **accounts.csv**: `account_id, name, phone_last4, balance, card_status, email`
+- **transactions.csv**: transaction history for all accounts
+
+## Available Tools
+1. **lookup_account** → verify customer identity using phone number
+2. **get_balance** → returns current balance for verified account
+3. **get_recent_transactions** → returns recent transaction history
+
+## Conversation Flow
+1. **Greeting**
+ > "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?"
+
+2. **Account Verification**
+ * After caller provides phone digits → call **lookup_account**
+ * Read back the returned `name` for confirmation
+ * If no match after 2 tries → apologize and offer to transfer
+
+3. **Handle Request**
+ Ask: "How can I help you today—check your balance or review recent transactions?"
+
+ **Balance** → call **get_balance** → read current balance
+ **Transactions** → call **get_recent_transactions** → summarize recent activity
+
+4. **Close**
+ > "Is there anything else I can help you with today?"
+ If no → thank the caller and end the call
+
+## Style & Tone
+* Warm, concise, ≤ 30 words per reply
+* One question at a time
+* Repeat important numbers slowly and clearly
+* Professional but friendly tone
+
+## Edge Cases
+* **No account match** → offer to transfer to human agent
+* **Multiple requests** → handle each request, then ask if anything else needed
+* **Technical issues** → apologize and offer callback or transfer
+
+(Remember: only share account information with verified account holders.)
+```
-
- When someone calls our number, we want to fetch the assistant configuration from our server. We'll use the [Server URL's `assistant-request`](/server-url#retrieving-assistants) to do this.
-
- First, we'll create an endpoint on our server for Vapi to hit. It'll receive messages as shown in the [Assistant Request](/server-url#retrieving-assistants-calling) docs. Once created, we'll add that endpoint URL to the **Server URL** field in the Account page on the [Vapi Dashboard](https://dashboard.vapi.ai).
-
-
-
- We'll want to save the conversation at the end of the call for the next time they call. We'll use the [Server URL's `end-of-call-report`](/server-url#end-of-call-report) message to do this.
-
- At the end of each call, we'll get a message like this:
-
- ```json
- {
- "message": {
- "type": "end-of-call-report",
- "endedReason": "hangup",
- "call": { Call Object },
- "recordingUrl": "https://vapi-public.s3.amazonaws.com/recordings/1234.wav",
- "summary": "The user mentioned they were having an issue with their iPhone restarting randomly. They restarted their phone, but the issue persisted. They mentioned they were using an iPhone 12 Pro Max. They mentioned they were using iOS 15.",
- "transcript": "Hey, I'm an A.I. assistant for Apple...",
- "messages":[
- {
- "role": "assistant",
- "message": "Hey, I'm an A.I. assistant for Apple. I can help you troubleshoot your Apple device. What's the issue?",
- },
- {
- "role": "user",
- "message": "Yeah I'm having an issue with my iPhone restarting randomly.",
- },
- ...
- ]
- }
- }
- ```
-
- We'll save the `call.customer.number` and `summary` fields to our database for the next time they call.
-
-
- When our number receives a call, Vapi will also hit our server's endpoint with a message like this:
-
- ```json
- {
- "message": {
- "type": "assistant-request",
- "call": { Call Object },
- }
- }
- ```
+
+ Configure the LLM settings to your liking.
+ - Select any provider and model you like (you will see cost and latency estimates).
+ - You can configure the files available to the LLM as knowledge base.
+ - You can specify the temperature and max tokens of the LLM.
+
+
+ Click `Publish` to save your changes.
+
+
+ Click `Talk to Assistant` to test it out.
+
+
+
+
+
+---
+
+## 4. Add Tools to an Assistant
- We'll check our database to see if we have a conversation for this caller. If we do, we'll create an assistant configuration like in Step 1 and respond with it:
-
- ```json
- {
- "assistant": {
- ...
- "model": {
- "provider": "openai",
- "model": "gpt-4",
- "messages": [
- {
- "role": "system",
- "content": "You're a technical support assistant. Here's where we left off: ..."
- }
- ]
- },
- ...
- }
- }
+
+
+ Open your [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Tools` in the left sidebar.
+
+
+ - Click `Create Tool`.
+ - Select `Function` as your tool type.
+ - Change tool name to `get_balance`.
+ - Add the following function description:
+
+ ```txt title="Function Description" wordWrap
+ Retrieve the balance for an account based on provided account holder name and last 4 digits of the phone number.
+ ```
+ - Scroll down to the `Knowledge Bases` section and add the following knowledge base:
+
+ - Name: `accounts`
+ Description: `Use this to retrieve account information`
+ File IDs: ``
+
+
+ - Click `Create Tool`.
+ - Select `Function` as your tool type.
+ - Change tool name to `get_recent_transactions`.
+ - Add the following function description:
+
+ ```txt title="Function Description" wordWrap
+ Return the three most recent transactions for a specific account.
+ ```
+ - Scroll down to the `Knowledge Bases` section and add the following knowledge bases:
+
+ - Name: `accounts`
+ Description: `Use this to retrieve account information`
+ File IDs: ``
+
+ - Name: `transactions`
+ Description: `Use this to retrieve transactions`
+ File IDs: ``
+
+
+ - Click `Create Tool`.
+ - Select `Function` as your tool type.
+ - Change tool name to `lookup_account`.
+ - Add the following function description:
+
+ ```txt title="Function Description" wordWrap
+ Look up account based on provided name and last 4 digits of the phone number.
+ ```
+ - Scroll down to the `Knowledge Bases` section and add the following knowledge bases:
+
+ - Name: `accounts`
+ Description: `Use this to retrieve account information`
+ File IDs: ``
+
+
+ - Click `Assistants` in the left sidebar.
+ - Make sure `Tom` is selected in the list of assistants.
+ - Scroll down until you see `Tools` accordion. Expand it.
+ - In the expanded accordion, add `get_balance` and `get_recent_transactions` tools.
+ - Click `Publish` to save your changes.
+
+
+ - While we're here, let's give our assistant ability to hang up.
+ - Expand the `Predefined Functions` accordion.
+ - Toggle `Enable End Call Function` to `On`.
+ - Here you can add a forwarding phone number to transfer the call to (in case assistant is unable to resolve the issue).
+ - Click `Publish` to save your changes.
+
+
+
+
+
+---
+
+## 5. Assign a Phone Number to an Assistant
+
+
+
+ Open your [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Phone Numbers` in the left sidebar.
+
+
+ - Click `Create Phone Number`.
+ - Stick with `Free Vapi Number`.
+ - Enter your preferred area code (e.g. `530`).
+
+
+ - Set the `Phone Number Name` to `Vapi Support Hotline`.
+ - Under `Inbound Settings` find `Assistant` dropdown and select `Tom` from the list.
+ - Changes are saved automatically.
+
+
+
+
+
+---
+
+## 6. Create a Test Suite for an Assistant
+
+
+
+ - Open your [dashboard.vapi.ai](https://dashboard.vapi.ai).
+ - Below the `Build` section, find and expand the `Test` section.
+ - In the expanded section, click `Voice Test Suites`.
+
+
+ - On the `Test Suites` page, click `Create Test Suite`.
+ - Click on `New Test Suite` and change the name to `Support Hotline Test Suite`.
+ - Set the `Assistant` to `Bobby`.
+ - Set the `Phone Number` to `Vapi Support Hotline`.
+ - Under `Test Cases`, click `Generate Tests`.
+ - Use the following prompt to generate the test case:
+
+ ```txt title="Test Case Prompt" wordWrap
+ Test that the assistant can verify a customer account using phone number, retrieve their current balance, and provide recent transaction history.
```
- If we don't, we'll just respond with the assistant configuration from Step 1.
+ - Accept the generated test case.
+
+
-
+
-
- We'll call our number and see if it works. Give it a call, and tell it you're having an issue with your iPhone restarting randomly.
+---
- Hang up, and call back. Then ask what the issue was. The assistant should remember where we left off.
+## 7. Run the Test Suite on an Assistant
+
+
+ Open your [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Assistants` in the left sidebar.
+
+
+ - Click on `Support Hotline Test Suite` in the list of test suites.
+ - Click on `Run Test Suite` button.
+ - Wait for the test suite to finish running.
+ - You will see the results of the test suite in the `Test Results` section.
+
+
+
+## Next Steps
+
+Just like that, you've built a 24/7 customer support hotline that can handle inbound calls, create support tickets, and run automated tests to ensure it's working as expected.
+
+Consider the reading the following guides to further enhance your assistant:
+
+* [**Knowledge Bases**](../knowledge-base/) - Attach a Trieve KB so the agent can answer FAQs inline.
+* [**External Integrations**](../tools/) - Configure integrations with [Google Calendar](../tools/google-calendar), [Google Sheets](../tools/google-sheets), [Slack](../tools/slack), etc.
+
+
+Need help? Chat with the team on our [Discord](https://discord.com/invite/pUFNcf2WmH) or mention us on [X/Twitter](https://x.com/Vapi_AI).
+
diff --git a/fern/overview.mdx b/fern/overview.mdx
index ff51a7def..c54dc8a7a 100644
--- a/fern/overview.mdx
+++ b/fern/overview.mdx
@@ -63,13 +63,13 @@ Explore end-to-end examples for some common voice workflows:
We'll build an outbound sales agent that can schedule appointments.
- We'll build an technical support assistant that remembers where we left off.
+ We'll build a customer support agent that can process inbound phone calls and assist with common banking issues.
-
diff --git a/fern/static/spreadsheets/inbound-support/accounts.csv b/fern/static/spreadsheets/inbound-support/accounts.csv
new file mode 100644
index 000000000..de27c6f04
--- /dev/null
+++ b/fern/static/spreadsheets/inbound-support/accounts.csv
@@ -0,0 +1,2 @@
+account_id,name,phone_last4,balance,card_status,email
+acc_001,John Doe,1234,2534.67,active,john.doe@example.com
diff --git a/fern/static/spreadsheets/inbound-support/transactions.csv b/fern/static/spreadsheets/inbound-support/transactions.csv
new file mode 100644
index 000000000..aecb0024e
--- /dev/null
+++ b/fern/static/spreadsheets/inbound-support/transactions.csv
@@ -0,0 +1,4 @@
+account_id,date,description,amount
+acc_001,2025-05-24,Coffee Shop,-4.50
+acc_001,2025-05-23,Payroll Deposit,+2500.00
+acc_001,2025-05-22,Gas Station,-45.12
diff --git a/fern/static/videos/inbound-support/assign-phone-number.mp4 b/fern/static/videos/inbound-support/assign-phone-number.mp4
new file mode 100644
index 000000000..638615272
Binary files /dev/null and b/fern/static/videos/inbound-support/assign-phone-number.mp4 differ
diff --git a/fern/static/videos/inbound-support/assistant-tools.mp4 b/fern/static/videos/inbound-support/assistant-tools.mp4
new file mode 100644
index 000000000..65c0604b5
Binary files /dev/null and b/fern/static/videos/inbound-support/assistant-tools.mp4 differ
diff --git a/fern/static/videos/inbound-support/configure-assistant.mp4 b/fern/static/videos/inbound-support/configure-assistant.mp4
new file mode 100644
index 000000000..ddb8ae9fe
Binary files /dev/null and b/fern/static/videos/inbound-support/configure-assistant.mp4 differ
diff --git a/fern/static/videos/inbound-support/create-assistant.mp4 b/fern/static/videos/inbound-support/create-assistant.mp4
new file mode 100644
index 000000000..5117d7850
Binary files /dev/null and b/fern/static/videos/inbound-support/create-assistant.mp4 differ
diff --git a/fern/static/videos/inbound-support/create-test-suite.mp4 b/fern/static/videos/inbound-support/create-test-suite.mp4
new file mode 100644
index 000000000..9a2c26d74
Binary files /dev/null and b/fern/static/videos/inbound-support/create-test-suite.mp4 differ
diff --git a/fern/static/videos/inbound-support/run-test-suite.mp4 b/fern/static/videos/inbound-support/run-test-suite.mp4
new file mode 100644
index 000000000..5d2c102eb
Binary files /dev/null and b/fern/static/videos/inbound-support/run-test-suite.mp4 differ
diff --git a/fern/static/videos/inbound-support/upload-files.mp4 b/fern/static/videos/inbound-support/upload-files.mp4
new file mode 100644
index 000000000..bf1d43dd7
Binary files /dev/null and b/fern/static/videos/inbound-support/upload-files.mp4 differ