Hello! 👋 Finnets AI is a secure, bank-ready chatbot designed to run on a financial institution’s backend servers. It summarizes a customer’s account data (when allowed by both the user and institution) and answers bank-related questions in natural language. There are also settings to make application more accessible, have chat language support for ~50 languages, and have some customizable UI elements.
Employing the design thinking framework for brainstorming and solution design, we identified their difficulties as follows:
- Confusing experiences when seeking technical and financial support via bank applications:
- Customers may feel confused by technical language or unclear instructions in the banking app.
- New users may not understand the steps required to complete certain transactions in the app.
- Limited language options for non-native English-speaking customers:
- Traditional banking apps often offer limited language options beyond the major languages.
- Translation often has to be accessed through the settings, which feels rigid.
- Long wait times for customer service via chat sessions:
- Traditional chat sessions usually go through a filter handled by a hard-coded virtual assistant. A lack of customer service representatives leads to longer wait times.
In response to the user challenges, our team built FinNets to address the top three priority of customers' needs:
- An AI-powered virtual assistant that offers technical support via chat sessions.
- The virtual assistant can provide instant feedback, including general banking information, regulations, and technical instructions, helping customers use the app effectively.
- Customers can opt in or out of private information sharing, allowing the chatbot to provide in-depth financial analysis.
- If authorized, the virtual assistant can access the data center and provide in-depth analysis on customer financial activities.
- Customers can discuss ways to improve their savings and investment returns with the virtual assistant.
- Supports multiple languages to assist a diverse customer base:
- The virtual assistant can respond to customers in any language they request.
- Customers can switch languages easily without going through the settings. To showcase what FinNets can do, meet John Doe. As a senior citizen, he prioritizes security and independence. With FinNets, he can:
- Receive his financial report without performing complex in-app navigation.
- Adjust font size and colors, with simple navigation.
- Handle his finances on his own and feel confident doing it.
- Query in any language of choice. FinNets is not just another automated tool. It is a leverage to improve customer service when using our bank apps.
- This project uses Watsonx.ai as the core LLM for our chatbot feature.
- Respond to customers' general queries.
- Provide in-depth analysis on financial information collected from the data center.
- Offer technical solutions based on pre-scripted prompts.
Frontend: JavaScript with the Next.js framework. Backend: MySQL and Next.js API routes.
https://drive.google.com/file/d/1N5JbNWXxa6xWnDjCWWxqL_saNq3v1ZCF/view?usp=sharing
In the repository root, create a .env file. These values will be compied by docker to each container, so do not add it directly to each NextJS app.
------------------WATSONX INFORMATION-----------------
IBM_CLOUD_API_KEY=
PROJECT_ID=
WATSONX_URL=
WATSONX_MODEL_ID=
----------NECESSARY NON CRITICAL INFORMATION----------
FINNETS_URL_DEV=http://localhost:3001
FINNETS_URL_PROD=http://localhost:3001
DB_HOST=mock_bank_database
DB_PORT=3306
DB_USER=root
DB_PASS=1234@
DB_NAME=Finnets
BANK_SECRET=secret1
FINNETS_SECRET=secret2
BANK_API_URL_PROD=http://mock_bank:3000
BANK_API_URL_DEV=http://mock_bank-dev:3000Make sure Docker is installed and running:
- Docker Desktop: https://docs.docker.com/get-started/
You can run helper scripts or Compose files directly.
Option A — Helper scripts (recommended)
From the repo root:
cd ./config
./start-prod.shcd ./config
bash ./start-prod.shMake sure to setup the networks before using the docker compose command(s)!
And ensure that you do them in the right order!
cd ./config
# Setup DB Network
docker network create bank_shared_net >/dev/null
# Docker Create Database Container
docker compose --env-file ../.env -f ../docker-compose.db.yml up --build -d
# Setup Production Network
docker network create bank_prod_net >/dev/null
# Docker Create Production Container
docker compose --env-file ../.env -f ../docker-compose.prod.yml up --build -d
# (OPTIONAL) Setup Development Network
docker network create bank_dev_net >/dev/null
# (OPTIONAL) Docker Create Development Container
docker compose --env-file ../.env -f ../docker-compose.dev.yml up --build -d- Production/Development demo: open http://localhost:3000
- Make sure that only one container (production/development) is on at a time!
- When you get to the bank page, login with either of these accounts:
- janesmith [email protected] password123
- johndoe [email protected] password123
-
Language & theme
Use the Chat Language button to pick one of ~50 most used world languages. Change accent color, font, and toggle contrast mode in Settings. -
Account summary
When allowed by both user consent and bank policy, the chatbot renders a server-fetched snapshot of the user’s accounts. -
Chat
Ask questions about balances, transactions, cards, etc. The app calls bank APIs server-side according to your.envand gateway keys.
- Languages: edit
./finnets/data/supportedLangs.json(ensure unique labels) - Fonts: edit
./finnets/data/fontSupport.jsonand./finnets/lib/Fonts
Read the LICENSE for how to use code.