Website and Mobile Chatbot
Project type
Building on the success of our original chatbot, this case study explores the evolution to a more powerful and flexible LLM-based assistant. View the original rules-based project here.
LLM-powered virtual assistant for a financial services platform
Role: Lead Conversation & Prompt Systems Designer
Tools Used
Prompt libraries, evaluation workflows, Dialogflow + LLM orchestration, Figma, Lucidchart

🧩 Problem
The contact center faced high call volumes and slow resolution times, but the (legacy) Financial Services bot plateaued due to rigid flows and misunderstanding of ambiguous queries. For example, when a user said, 'My card is acting weird,' the rules-based system couldn't handle the ambiguity, leading to escalation. The team needed a more intelligent, adaptive assistant to reduce support load without sacrificing safety or clarity.
Gen AI-Driven Approach
I redesigned the original bot experience using LLM-based interaction design, anchored on:
-
Prompt Templates for each high-volume task:
e.g., “You are a professional, helpful assistant. A user wants to check their account balance. First, verify identity.
Then, offer balance details in clear, plain language…”
-
Few-shot examples for tricky intents:
-
“My card’s acting weird” → classify as “lock card” vs. “report fraud”
-
Edge-case prompting: “Ask clarifying questions before acting.”
-
-
Chain-of-thought reasoning for multi-step issues
e.g., Suspicious charge: verify identity → check last 5 charges → escalate if user says “not mine”
-
Persona Shaping through system-level guidance
-
Tone prompt: “Keep language friendly and reassuring. No banking jargon. Always explain next steps.”
-
💡Solution with Simulated Outcomes
I developed a solution that aims for the following key outcomes: over 92% intent coverage with a 38% increase in autonomous handling. Additionally, it ensures 100% fallback to maintain accuracy, safety, and enterprise of the LLM.
Features:
-
Modified user account settings
-
Tracked and summarized spending habits
-
Sent bill reminders and processed payments
-
Locked misplaced debit cards
-
Answers FAQs and route complex queries to live agents
📊 Projected Outcomes
-
💬 92%+ natural language coverage across customer intents
-
🤖 38% more queries handled without handoff compared to deterministic flow
-
🔐 0 critical hallucinations or unsupported claims (guardrails, prompt testing)
-
✅ 100% coverage of fallback and escalation paths with confidence thresholds
Prompt System Strategy
🧠 What I learned
-
LLMs produce the best results when prompts are domain-scoped (role-anchored and outcome-tuned).
-
Guardrails are a collaborative effort between design and engineering.
-
Memory and tone shaping can unlock trust, especially for high-stakes domains like finance.
-
Modular flows improve adaptability. Designing the bot around modular tasks like “lock card,” “make payment,” or “update contact info” makes it easier to test, reuse, and scale.
FinBot's Logic & Flow Diagram (Yaml)
User Message
│
├──▶ Is the message a supported task?
│ └── Yes ▶ Store as pendingIntent (if not authenticated)
│ └──▶ Proceed to Authentication
│ └── No ▶ Use Fallback Tone (redirect to supported tasks)
│
Authentication Flow:
│
├──▶ Prompt: Full Name
├──▶ Prompt: Email Address
├──▶ Prompt: Last 4 of SSN
│
├──▶ Do inputs match a Test User?
│ └── Yes:
│ ├── Set `authStatus = true`
│ ├── Set `lastAuthTime = now`
│ ├── Reset `authAttempts`
│ ├── Replay pendingIntent (if any)
│ └── Respond with confirmation
│
│ └── No:
│ ├── Increment `authAttempts`
│ ├── First Failure: Ask to retry
│ └── Second Failure: Escalate to Human (or flag if offline)
│
Post-Auth Session:
│
├──▶ If authStatus = true AND lastAuthTime
│ ├── Allow task execution
│ ├── Handle:
│ │ ├── Lock/Replace Cards
│ │ ├── Show Spending (and Breakdown)
│ │ ├── Reset Password
│ │ ├── Confirm Contact Info
│ │ └── Charge Disputes
│ └── Update response memory as needed
│
└──▶ Else ▶ Re-authenticate
Other Flows:
├──▶ Spending Breakdown
│ ├── Auth Required
│ ├── Respond with total
│ ├── Ask if user wants category breakdown
│ └── Show per-category details if available
│
├──▶ Card Locking
│ └── Confirm which card(s) and lock
│
├──▶ Frustration Detected (e.g. “HELP ME”)
│ └── Escalate or flag for follow-up
│
└──▶ “Switch User”
└── Clear user info, reset session, restart auth

🧪 Test the FinBot Experience
Want to see FinBot in action? You can simulate a real customer journey using our test users. Here's how:
✅ What You Can Try
FinBot supports a secure, natural conversation flow to handle common tasks like:
-
Viewing last month's total spending
-
Locking or replacing a debit or credit card
-
Resetting your login or password
-
Disputing a charge (simulated)
-
Confirming account details (name, email)
-
All features require identity verification to simulate real-world protections.
Chat with FinBot - Gen AI Mode
🚀 How to Get Started
1. Pick a Suggested Task
-
Try selecting one of the pre-filled quick prompts like:
-
📄 “What did I spend last month?”
-
🔐 “Lock or replace a card”
-
🔑 “Reset my login or password”
-
2. Choose a Test User to Autofill Credentials
-
For faster testing, select one of the user info buttons:
-
Brittany Young britt@gmail.com 5678
-
Tyler Smith tyler@gmail.com 1234
-
-
This autofills a test user’s name, email, and SSN to simulate secure authentication.
Note: You can also can enter those details into the chat window. e.g, Name, followed by email, then the last four of the sample user's SSN.
3. Watch FinBot Replay Your Intent
After verifying identity, FinBot will pick up where you left off (e.g., show spending or lock a card).
🔍 What You'll See
-
Authentication prompts
-
Personalized responses
-
e.g., “Thanks Brittany! You’re verified. You spent $1,340 last month.”
-
Spending breakdown (simulated):
-
Groceries: $350
-
Dining Out: $200
-
Entertainment: $150
-
Utilities: $180
-
Transportation: $120
-
Miscellaneous: $340
Card actions: FinBot will ask if you want to lock/unlock specific test cards.
⚠️ Important Note
These flows are fully simulated using fictional users and data. No real personal information is collected or used.
