Skip to content

Commit 721c0b3

Browse files
committed
chore(inbound-support): address review feedback, fix system prompt
1 parent 77aaefd commit 721c0b3

File tree

12 files changed

+88
-86
lines changed

12 files changed

+88
-86
lines changed

fern/docs.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ navigation:
112112
- section: Examples
113113
icon: fa-light fa-code
114114
contents:
115-
- page: Banking customer support
116-
path: examples/banking-customer-support.mdx
115+
- page: Inbound customer support
116+
path: examples/inbound-support.mdx
117117
icon: fa-light fa-phone-volume
118118
- page: Outbound sales
119119
path: examples/outbound-sales.mdx
@@ -684,9 +684,7 @@ redirects:
684684
- source: "/outbound_sales"
685685
destination: "/examples/outbound-sales"
686686
- source: "/technical_support"
687-
destination: "/examples/banking-customer-support"
688-
- source: "/examples/inbound-support"
689-
destination: "/examples/banking-customer-support"
687+
destination: "/examples/inbound-support"
690688
- source: "/pizza_website"
691689
destination: "/examples/pizza-website"
692690
- source: "/outbound_call_python"

fern/examples/banking-customer-support.mdx renamed to fern/examples/inbound-support.mdx

Lines changed: 84 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,43 @@
11
---
2-
title: Banking Customer Support 💳
2+
title: Inbound customer support
33
subtitle: Build a banking customer support agent that can process inbound phone calls and assist with common banking issues.
4-
slug: examples/banking-customer-support
5-
description: A practical example of how to build a banking customer support agent that can process inbound phone calls and assist with common banking issues.
4+
slug: examples/inbound-support
5+
description: Build a voice AI banking support agent with tools for account lookup, balance and transaction retrieval.
66
---
77

8-
By following this example, you'll learn how to:
8+
## Overview
99

10-
* Create a voice AI assistant that answers inbound support calls 24/7 on a dedicated phone line.
11-
* Build custom tools to facilitate customer support without human intervention.
12-
* Make an automated test suite to ensure your assistant is working as expected.
10+
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.
11+
12+
**Agent Capabilities:**
13+
* Account lookup and verification via phone number
14+
* Balance and transaction history retrieval
15+
16+
**What You'll Build:**
17+
* Retrieval tools and CSV knowledge bases for account/transaction data
18+
* Voice test suites for automated quality assurance
19+
* Inbound phone number configuration for 24/7 availability
1320

1421
## Prerequisites
1522

1623
* A [Vapi account](https://dashboard.vapi.ai/).
1724

1825
## Scenario
1926

20-
We will be creating a customer support agent for VapiBank, a bank that wants to provide 24/7 support to consumers. It will be capable of:
21-
22-
* identifying the caller's account
23-
* retrieving current balance
24-
* processing lost card claims
25-
* disputing transactions
27+
We will be creating a customer support agent for VapiBank, a bank that wants to provide 24/7 support to consumers.
2628

2729

2830
---
2931

30-
## 1. Creating a Knowledge Base
32+
## 1. Create a Knowledge Base
3133

3234
<Steps>
3335
<Step title="Download the spreadsheets">
3436
<div className="flex gap-2">
35-
<Download src="../static/spreadsheets/banking-customer-support/accounts.csv">
37+
<Download src="../static/spreadsheets/inbound-support/accounts.csv">
3638
<Button intent="primary">Download accounts.csv</Button>
3739
</Download>
38-
<Download src="../static/spreadsheets/banking-customer-support/transactions.csv">
40+
<Download src="../static/spreadsheets/inbound-support/transactions.csv">
3941
<Button intent="primary">Download transactions.csv</Button>
4042
</Download>
4143
</div>
@@ -49,11 +51,11 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
4951
</Step>
5052
</Steps>
5153

52-
<video autoPlay loop muted src="../static/videos/banking-customer-support/upload-files.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
54+
<video autoPlay loop muted src="../static/videos/inbound-support/upload-files.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
5355

5456
---
5557

56-
## 2. Creating an Assistant
58+
## 2. Create an Assistant
5759

5860
<Steps>
5961
<Step title="Open the Vapi Dashboard">
@@ -69,11 +71,11 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
6971
</Step>
7072
</Steps>
7173

72-
<video autoPlay loop muted src="../static/videos/banking-customer-support/create-assistant.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
74+
<video autoPlay loop muted src="../static/videos/inbound-support/create-assistant.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
7375

7476
---
7577

76-
## 3. Configuring an Assistant
78+
## 3. Configure an Assistant
7779

7880
<Steps>
7981
<Step title="Update the introduction message">
@@ -86,56 +88,58 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
8688
<Step title="Update the system prompt">
8789
Update `System Prompt` to:
8890

89-
```txt title="System Prompt" maxLines=10
90-
# VapiBank - Phone Support Agent Prompt
91-
92-
## Identity & Purpose
93-
You are **Tom**, VapiBank's friendly, 24x7 phone-support voice assistant. Do not introduce yourself after the first message.
94-
You resolve two common requests without human intervention:
95-
1. **Check balance**
96-
2. **Report lost / stolen card** (immediately lock the card)
97-
98-
## Data Source
99-
A CSV named **accounts.csv** is loaded in context. Columns:
100-
`account_id, name, phone_last4, balance, card_status, email`.
101-
102-
## Available Tools
103-
1. **get_balance** → returns `balance` for given account holder name.
104-
2. **lock_card** → locks card to prevent unauthorized use.
105-
106-
## Conversation Flow
107-
1. **Greeting**
108-
> “Hi, this is Tom at VapiBank. May I have the last four digits of the phone number on your account?”
109-
110-
2. **Account Verification**
111-
• After caller answers → call **lookup_account**.
112-
• Read back the returned `name` for confirmation.
113-
• If no match after 2 tries → apologize and transfer.
114-
115-
3. **Handle Intent**
116-
Ask: “How can I help you today—balance, lost card, or dispute a charge?”
117-
118-
**Balance** → call **get_balance** → read result.
119-
**Lost card** → call **secure_card** with `action:"lost_card"` → confirm card is locked.
120-
**Dispute** → gather date & amount → call **secure_card** with `action:"dispute"` + meta details → give `ticketId`.
121-
122-
4. **Close**
123-
> “Is there anything else I can help you with?”
124-
If no → thank the caller and end the call.
125-
126-
## Style & Tone
127-
* Warm, concise, ≤ 30 words per reply.
128-
* One question at a time.
129-
* Repeat critical numbers slowly (“Your ticket ID is 8 7 1 4”).
130-
* Empathize with frustration but remain efficient.
131-
132-
## Edge Cases
133-
* **No CSV match** → transfer to human.
134-
* **Duplicate intents** → answer latest request, then ask if anything else.
135-
* **Caller upset** → apologize, escalate urgency flag (`meta.urgent=true`) in **secure_card**.
136-
137-
(Remember: never reveal CSV data beyond what the caller is entitled to.)
138-
```
91+
```txt title="System Prompt" maxLines=10
92+
# VapiBank - Phone Support Agent Prompt
93+
94+
## Identity & Purpose
95+
You are **Tom**, VapiBank's friendly, 24x7 phone-support voice assistant. Do not introduce yourself after the first message.
96+
You help customers with account inquiries:
97+
98+
1. **Check balance**
99+
2. **View recent transactions**
100+
101+
## Data Sources
102+
You have access to CSV files with account and transaction data:
103+
- **accounts.csv**: `account_id, name, phone_last4, balance, card_status, email`
104+
- **transactions.csv**: transaction history for all accounts
105+
106+
## Available Tools
107+
1. **lookup_account** → verify customer identity using phone number
108+
2. **get_balance** → returns current balance for verified account
109+
3. **get_recent_transactions** → returns recent transaction history
110+
111+
## Conversation Flow
112+
1. **Greeting**
113+
> "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?"
114+
115+
2. **Account Verification**
116+
* After caller provides phone digits → call **lookup_account**
117+
* Read back the returned `name` for confirmation
118+
* If no match after 2 tries → apologize and offer to transfer
119+
120+
3. **Handle Request**
121+
Ask: "How can I help you today—check your balance or review recent transactions?"
122+
123+
**Balance** → call **get_balance** → read current balance
124+
**Transactions** → call **get_recent_transactions** → summarize recent activity
125+
126+
4. **Close**
127+
> "Is there anything else I can help you with today?"
128+
If no → thank the caller and end the call
129+
130+
## Style & Tone
131+
* Warm, concise, ≤ 30 words per reply
132+
* One question at a time
133+
* Repeat important numbers slowly and clearly
134+
* Professional but friendly tone
135+
136+
## Edge Cases
137+
* **No account match** → offer to transfer to human agent
138+
* **Multiple requests** → handle each request, then ask if anything else needed
139+
* **Technical issues** → apologize and offer callback or transfer
140+
141+
(Remember: only share account information with verified account holders.)
142+
```
139143
</Step>
140144
<Step title="Configure LLM settings (optional)">
141145
Configure the LLM settings to your liking.
@@ -151,11 +155,11 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
151155
</Step>
152156
</Steps>
153157

154-
<video autoPlay loop muted src="../static/videos/banking-customer-support/configure-assistant.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
158+
<video autoPlay loop muted src="../static/videos/inbound-support/configure-assistant.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
155159

156160
---
157161

158-
## 4. Adding Tools to an Assistant
162+
## 4. Add Tools to an Assistant
159163

160164
<Steps>
161165
<Step title="Navigate to Tools">
@@ -226,11 +230,11 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
226230
</Step>
227231
</Steps>
228232

229-
<video autoPlay loop muted src="../static/videos/banking-customer-support/assistant-tools.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
233+
<video autoPlay loop muted src="../static/videos/inbound-support/assistant-tools.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
230234

231235
---
232236

233-
## 5. Assigning a Phone Number to an Assistant
237+
## 5. Assign a Phone Number to an Assistant
234238

235239
<Steps>
236240
<Step title="Navigate to Phone Numbers">
@@ -248,11 +252,11 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
248252
</Step>
249253
</Steps>
250254

251-
<video autoPlay loop muted src="../static/videos/banking-customer-support/assign-phone-number.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
255+
<video autoPlay loop muted src="../static/videos/inbound-support/assign-phone-number.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
252256

253257
---
254258

255-
## 6. Creating a Test Suite for an Assistant
259+
## 6. Create a Test Suite for an Assistant
256260

257261
<Steps>
258262
<Step title="Navigate to Test Suites page">
@@ -269,18 +273,18 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
269273
- Use the following prompt to generate the test case:
270274

271275
```txt title="Test Case Prompt" wordWrap
272-
Ensure that the assistant correctly captures customer name, email, and issue description when creating a support ticket.
276+
Test that the assistant can verify a customer account using phone number, retrieve their current balance, and provide recent transaction history.
273277
```
274278

275279
- Accept the generated test case.
276280
</Step>
277281
</Steps>
278282

279-
<video autoPlay loop muted src="../static/videos/banking-customer-support/create-test-suite.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
283+
<video autoPlay loop muted src="../static/videos/inbound-support/create-test-suite.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
280284

281285
---
282286

283-
## 7. Running the Test Suite on an Assistant
287+
## 7. Run the Test Suite on an Assistant
284288

285289
<Steps>
286290
<Step title="Navigate to Test Suites page">
@@ -294,7 +298,7 @@ We will be creating a customer support agent for VapiBank, a bank that wants to
294298
</Step>
295299
</Steps>
296300

297-
<video autoPlay loop muted src="../static/videos/banking-customer-support/run-test-suite.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
301+
<video autoPlay loop muted src="../static/videos/inbound-support/run-test-suite.mp4" type="video/mp4" style={{ aspectRatio: '16 / 9', width: '100%' }} />
298302

299303
## Next Steps
300304

fern/overview.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Explore end-to-end examples for some common voice workflows:
6767
icon="phone"
6868
iconType="solid"
6969
color="#f5ac4c"
70-
href="/examples/banking-customer-support"
70+
href="/examples/inbound-support"
7171
>
7272
We'll build a 24/7 customer support hotline that can create support tickets via phone.
7373
</Card>

0 commit comments

Comments
 (0)