Your customer wants to go on a road trip next month and needs to save some money in the next 3 months in order to pay for it.
You are given 2 years worth of credit card spending transactions from the bank account of 2 different users living in the same area as your customer in CSV format. Each line in the CSV has the following 3 data fields:
- date of transaction (YYYY-MM-DD)
- text description of the transaction
- the amount of transaction
Based on the provided data, write a program which is able to take in the CSV file in the same format as above and output a list of recommendations, tips and strategies for the user to save money.
Your program will take in a CSV file which contains the transaction data. You can choose to save that data in a database or in memory. Your program must provide a way to ingest the transaction log, in the same format as the CSV, at runtime and reflect in its output any changes to the recommendations.
Creativity is what we are looking for here.
- You can create a barebone program which gives a list of outputs or,
- You can focus on creating the best algorithms or,
- You can alternatively choose to focus on creating the best way to present your recommendations for savings in the most understandable way.
Put yourself in the shoes of the customer since you are creating this app for them
How can you identify transactions which you can ignore such as credit payment from the checking account, interest..etc Can you identify spending patterns in the transactions programmaticaly in order to save money. You can leverage third party APIs to help you with the task and use third party data to augment the existing data. Feel free to use external libraries, SDKs and tools to come up with a unique solution. Can you identify recurring expenses which can be replaced with alternatives? Based on your knowledge of personal finances, can you identify potentially unnecessary purchases? Can you identify alternatives you can use to current transactions to reliably find savings for the user.
Your solution will be run against different sets of transaction data to test its performance and adaptation to variability.
Your solution will be evaluated based on your implementation.
Your solution will be evaluated based on the quality of your code.