Achievement Table

*It may be worth noting that for weeks, we had no data or even rough idea of the shape of the data, so we had to deviate slightly from the MoSCoW list, and thus implements other features we could whilst we waited for data. (Prototype 1)

ID Requirements Priority State Contributor
1 Data Visualisation Must Lib Kai
2 Framework for interaction between database and front-end Must Raghib
3 Budgeting Function (Setting Caps) Must Raghib, Lib Kai
4 Financial Overview Display Must Raghib, Yuheng
5 Connect and Select Multiple Bank Accounts Must Raghib, Yuheng
6 NoSQL database, hosted on Azure which stores customer banking data Must Yuheng
7 Readable Number formatting for tables and graphs Must Lib Kai
8 Readable Date formatting Must Lib Kai
9 Data processing for individual user and re-upload to NoSQL database Should Yuheng
10 Create login, register and forgot password functionality
- Rudimentary login system not for security but to show off ability for different users to connect their own bank account IDs
Should Raghib
11 "Help" feature on the web app to help with user queries - implemented a form which sends an email Should Raghib
12 Add a "Profile" page for the user so they can store their email, upload an image, etc. Should Raghib
13 Categorical Spending Should Raghib
14 Bill reminders Should Yuheng, Lib Kai
15 Ability to predict user going into overdraft Should Yuheng
16 Add credit card info and calculate the amount a user should pay for each card Should Yuheng
17 Functionality to allow user to view transactions between certain date ranges Should Raghib
18 Pagination and search function for tables Should Raghib, Lib Kai
19 HyperCube Data Structuring Could -
20 Report Generation Could -
21 Algorithm to analyse of spending patterns and/or fraudulent payment Could Partially Completed Raghib, Yuheng
22 Sophisticated Natural Language Processing which looks at more than keywords and categorises data more deeply Could
Not in Use
Raghib
23 Creation of saving pots Could -
24 Creation of Dummy data (JSON format) Could Yuheng, Lib Kai
25 Deployment of Django webapp (Apache) Could Raghib, Yuheng
26 Set up a domain for deployed webapp and enable HTTPS only using SSL Certificate Could Raghib
Key Functionalities (Must have and Should have) 100% Completed
Optional Functionalities (Could have) 60% Completed

List of Known Bugs

ID Bug Description Priority
1 The help page sends an email to our admin gmail on localhost. However, it causes an error on the domain uclproject.co.uk High
2 Data safety and privacy Medium
3 App does not require bank account authentication. This needs to be changed if we are using real data. Medium

Contribution Table

Work Packages Raghib Yuheng Lib Kai
Client Liaison 33% 37% 30%
Requirement Analysis 32% 30% 38%
Research 35% 30% 35%
UI Design 50% 10% 40%
Front-end Coding 35% 10% 55%
Programming 65% 30% 5%
Testing 40% 50% 10%
Bi-weekly Report 30% 40% 30%
Website Editing 15% 35% 50%
Poster Making 5% 5% 90%
Video Editing 40% 55% 5%
Overall Contribution 36% 32% 32%
Roles Back-end Developer (Framework) Back-end Developer (Database) Front-end Developer

Critical Evaluation

ID Criteria Score Description
1 User Interface / User Experience 10/10 Using Bootstrap and Chart.js, we've made our UI very clean and pleasant to the eye.

The UI for the website is also very easy to user since our target audience ranges from teens to the elderly. Therefore creating a simple yet useful application is one of our main objectives for this project.
2 Functionality 9/10 The wep app provides various functions for our users, e.g. having their own profile, having a help page, setting caps, view all or categorical transactions, current account or credit-card transactions and many more. This provides the users with various possibilities on what they would like to know regarding their financial information.

If given more time, more functionalities such as report generation, saving pots etc could be implemented.
3 Stability 8/10 The web app is stable in general. Overall the functionalities and UI of the web app works fine. The web app has undergone multiple stress test as we try to find flaws to our web app. However, it is worth noting that there could be errors not found during the development phase and the web app is still prone to error. But so far everything works as intended.

One main concern is the reliability of the Azure servers, if Azure services are down this would mean that our virtual machine as well as the MarkLogic database hosted on Azure would be down, which means we would not be able to use our web app. But after thorough consideration, Azure is usually a very reliable service so our web app would probably be very stable.
4 Efficiency 8/10 Since we re-upload each account data back to our MarkLogic database, instead of retrieving a large JSON file filled with accounts we only retrieve accounts relevant to the user, this in turn reduces the time taken to retrieve the data and overall the responses are very fast. MarkLogic also contributes to the efficiency of our web app since MarkLogic has exceptional performance even at industrial scales, therefore overall our web app is very efficient.

Though initially, the web app would be less efficient when new accounts are connected, this is because our web app would then have to filter through a large dataset, retrieving the relevant account data and create a new JSON file which is re-uploaded back to the database.
5 Compatibility 9/10 Since we're using Bootstrap, this allows for responsive design, allowing the user to use our web app on multiple devices. Bootstrap elements are also compatible with most browsers so our web app is fairly compatible on different devices and browsers.
6 Maintainability 7/10 Throughout our project duration, we have run out of credits relatively early. The costs of hosting a MarkLogic database could now be considered quite expensive, even though we chose the cheapest option, we still ran out of credits, therefore maintaining the use of our web app could become very costly.

In terms of our web app, it is generally very easy to maintain. The Python code in utils.py (Where all the data processing happens) is well commented and easy to understand, while our front-end is quite self explanatory.
7 Project Management 9/10 Generally, we were able to work alongside each other very well. We kept each other up to date and generated a Gantt Chart to continuously monitor our progress. Alongside the Gantt Chart we were also doing the bi-weekly report to not only update our clients on our progress but to also have a written document on what we've done and what we plan to do.
We would also have frequent meetings to update each other on our individual progress and discuss our plans moving forward. We would each work in sprints to complete the projects to adapt to our companys' Agile development method. Other than frequent meetings, we would keep each other up to date on our progress through WhatsApp and discuss obstacles faced and come up with possible solutions or alternatives.
We scheduled bi-weekly meetings with our clients to update progress and also make sure that we were on the right track. Emails were also sent to our clients to seek guidance and possible alternatives for the requirements that were set for us if we were unable to meet said requirements.
We have also split up our tasks and assigned them to each respective teammate. This gives each teammate their own respective roles and tasks to work on, therefore improving efficiency.
At the start of the project up to January, we were trying to find sample Open Banking datasets online but we couldn't find any. We emailed our clients asking for datasets to be provided to us, to which they contacted their Italian team to possibly provide us with such data but due to P&C issues we were unable to obtain data from our client. Knowing this we immediately started to research Open Banking data formats and start generating our own set of dummy data to use in place of actual Open Banking dataset. We could've researched the format for Open Banking data earlier on and generate a sample dataset ourselves but we were hoping to obtain a proper set of data to work with. Since we had no data we deviated from our initial “Open banking data analytics” project to building a web app to display our data analysis in the future. We’ve developed use cases with our clients to stay on track and complete our assigned task.

Future work: How the project could be extended if 6 more months were provided?

We definitely hope to gain access to real data. Real data reflects users' spending pattern and contains more valuable information. They are also great test cases that could help further test our app.
A large amount of data is also essential to other important algorithms in our project. These includes:

Machine Learning for categorisation requires a large amount of data for higher accuracy.
The forecasting tool Prophet also works better with a larger time series which have strong seasonal effects and several seasons of historical data. Therefore our dataset generated does not meet these requirements.

Currently, our app does not ask financial institutions for authentication regarding user accounts. This is bad for a FinTech web app. Authentication is essential and is usually sent through Open Banking API to various different banks. So if we have access to Open Banking API, we could definitely obtain authentication for extra security.

Blockchain is another area we could look into. It also improves security regarding financial data and thus protect users' privacy and sensitive information.