project-proposal-2025

FinPulse – Internal CRM Platform for Banking

Abstract

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.

Author

Name: Enze Ma
Student Number: 49415733

Functionality

FinPulse consists of six core modules:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Scope

The Minimum Viable Product for FinPulse will include basic CRM functions for daily bank operations:

Quality Attributes

FinPulse is designed to meet the following attributes:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Evaluation

Specific, feasible evaluation methods for each quality attribute are as follows:

  1. Scalability
    • Method: We can use load testing tools (Locust or Apache JMeter) to simulate 500–1000 concurrent users.
    • Metric: The load test finally achieves a 95th percentile API response time below 200ms.
  2. Extensibility
    • Method: We can integrate a new module to the original project and observe the development process.
    • Metric: Successfully integrate the new module to the project in a certain period of time without regression, as verified by automated tests. The ideal time consumption can be decided by a meeting.
  3. Reliability
    • Method: We can conduct fault injection tests by temporarily disabling Redis or RabbitMQ techniques.
    • Metric: The system can recover in just 10 minutes without losing data.
  4. Security
    • Method: We can use static code analysis like Bandit and dynamic penetration testing on all REST APIs.
    • Metric: In this software, all risky vulnerabilities must be eliminated and there are no security issues left.
  5. Deployability
    • Method: We can use Terraform and Docker on AWS ECS Fargate to achieve automate deployment.
    • Metric: Successfully deploy the whole system in less than 15 minutes.
  6. Maintainability
    • Method: We can establish automated unit and integration tests using pytest and conduct regular code reviews.
    • Metric: Achieve more than 80% test coverage and maintain an average cyclomatic complexity below 15.