Challenge Overview
We have a new Banking customer in South America who would like to explore the capabilities of crowdsourcing and machine Learning. This is for an executive demo, so it is okay if the story seems a little contrived we are just trying to showcase some possibilities of powerful tools and talented Topcoder developers. The end goal of this challenge is to provide some machine learning examples that will help the bank identify new opportunities from their existing customers.
The Bank has a product called "Libranzas." It is set up through an agreement between the bank and other companies, which allows them to enjoy lower interests on loans for the company's employees. Payments on such loans are deducted monthly from the employee's payroll.
The companies under the agreements, report monthly to the bank informing disbursements that correspond to loan payments and that have been deducted from that monthly payroll. These reports consist of an Excel spreadsheet that contains at least the following columns:
-
LOAN ID. It is a unique number per loan per person.
-
PERSON ID/NAME. ID is unique per person.
-
AGREEMENT ID. It is a unique identifier for the agreement between the bank and the company.
-
COMPANY ID/NAME. ID is a tax identifier unique per company.
-
TOTAL LOAN AMOUNT. How much the person requested.
-
REMAINING LOAN AMOUNT. How much of the total amount the person still has to pay.
-
DISBURSEMENT AMOUNT. How much is being presently disbursed.
-
DUE DEBT AMOUNT. Any amount that is due at present.
-
PAYMENT DATE
-
PAYMENT DUE DATE
-
NEXT PAYMENT DATE
The spreadsheet is processed by a RPA (robotic process automation) job. This RPA job should call your solution via a REST call. It can include any of the values of the columns above as input parameters. The Company ID/Name seems to be the most obvious however you are welcome to use others as well. You do not need to know anything about the RPA job we just want to help set the context. We require you to build a REST service that the bank's RPA job will POST the above spreadsheet into row by row. Using the CompanyId/Name for unique record identification makes most sense but you may use other data points as well. You may assume that you have a complete table of all the banks customers and all the products used.
You will need to create this lookup table on your own in your solution if you should choose to do so. You may also query any public APIs for additional information such as financial data related to the companies. One possible solution may take the company name from RPA job and find other customers who are similarly based on the financial data like industry or market cap or company data like the number of employees or even a combination of these. Once you have identified similarly company profiles then you can look up the products that they use that the primary company does not. This approach is not that much different than the Netflix Movie Recommendations algorithm. This is only a suggestion and you are welcome to be creative and come up with a totally unique solution as well. Remember the goal is to showcase your work in an executive demo to highlight the ability of crowdsourcing and the power or machine learning.
For this challenge, almost anything is fair game as long as it can be shown and has some sort of HTML output. You will be responsible for supplying or finding your own data or public services. IBM's Watson or TensorFlow are great places to start but are not required. We have a strict deadline of July 19th which is not flexible so there will be no extensions granted.