FinPulse is a Customer Relationship Management (CRM) platform used in commercial banks to help customer managers maintain relations with customers. FinPulse can record customer profiles, communication histories, financial product information and automatically alerts users to significant events like product maturities. Besides, FinPulse includes an AI powered financial product recommendation module which can analyze customer profiles and give personal suggestions using a LLM API. This platform is developed on a tech stack including Python/Flask framework, PostgreSQL, Redis and RabbitMQ, and it is containerized with Docker and deployed on AWS. In addition, FinPulse integrates with the bank’s existing Single Sign-On system to realize role-based access control. As for quality attributes, FinPulse can be pretty competitive due to its scalability, extensibility, reliability, security, deployability, and maintainability.
Name: Enze Ma
Student Number: 49415733
FinPulse consists of six core modules:
Customer Management
This platform provides basic CRUD operations for customer information stored in PostgreSQL database. It can manage all customer personal details and links customers with their bank accounts, loans, and investments. This module can assist customer managers in understanding each customer’s financial situation.
Interaction Tracking and Task Scheduling
FinPulse allows customer managers to record interactions with customers using detailed notes, attachments and event logs. Interactions such as emails, phone call, online chatting are all displayed in certain user interfaces. Users can schedule follow up tasks with deadlines. When the deadline nears, RabbitMQ can trigger asynchronous notifications to remind customer managers of engaging with designated customers.
Financial Product List
This module can maintain a catalog of banking products (deposits, loans, credit cards, investments) with essential details like interest rates and purchasing criteria. Customer managers can utilize this catalog to easily check the latest product information and revenue rate.
AI Powered Personalized Financial Recommendation
This module can utilize LLM to provide personal financial product suggestions. Ideally, the bank would fine-tune and deploy its own LLM using internal data. However, due to time constraints, the initial plan is to simulate this functionality by calling OpenAI’s API. During this process, various customer financial data will be composed into a prompt. This prompt will be sent to OpenAI’s API with parameters. The HTTP response can be parsed and displayed on the FinPulse user interface. Besides, the analysis can be cached in Redis to avoid repeated API calls for the same customer data. If time permits, this platform can integrate its own fine-tuned LLM based on an open-source LLM and internal data.
Notification Service
This platform can also send alerts via email or SMS when specific events happen, such as a financial product nearing maturity. RabbitMQ can control the asynchronous dispatch, while Redis caches frequently used data to enhance performance.
User Authentication and Role Management
FinPulse integrates with the bank’s existing Single Sign-On system for user authentication. Once logged in, the system can remember the user’s role, such as customer manager and administrator. Then it can enforce role-based access control. Customer managers can only access assigned customer data, while administrators have broader permissions.
The Minimum Viable Product for FinPulse will include basic CRM functions for daily bank operations:
FinPulse is designed to meet the following attributes:
Scalability
The system must support a large number of concurrent users and transactions. This platform can use Redis for caching and RabbitMQ for asynchronous processing. Meanwhile, the containerized microservices on AWS can help FinPulse deal with thousands of simultaneous requests without affecting performance.
Extensibility
This platform utilizes Flask blueprints and Docker to realize a modular architecture, which contributes to simple integration of new features, such as additional product modules or advanced AI recommendation engines.
Reliability
In this system, significant customer data and time-sensitive tasks require high reliability. PostgreSQL makes sure database transactions are complete and safe. The acknowledgment mechanism of RabbitMQ can prevent losing messages. Besides, regular backups and fault tolerance strategies will make sure the normal operations continue running even if some components fail.
Security
FinPulse utilizes AES-256 to encrypt data when being transmitted over HTTPS. Besides, the role based access control can make sure only authorized users can access their own data.
Deployability
The usage of Docker containers and automated Terraform scripts on AWS can help the environment to be completely set up in less than 15 minutes, which can reduce downtime during updates.
Maintainability
In order to meet the maintainability criteria, the architecture of this project is a modular design. During the development of this platform, comprehensive automated testing and clear documentation are necessary. Besides, we need to conduct regular code reviews and make sure they satisfy the coding standards.
Specific, feasible evaluation methods for each quality attribute are as follows: