{"id":18521695,"url":"https://github.com/transferwise/tw_bootcamp_2019","last_synced_at":"2025-04-09T09:33:19.794Z","repository":{"id":55534828,"uuid":"174106857","full_name":"transferwise/tw_bootcamp_2019","owner":"transferwise","description":"Take home exercise","archived":false,"fork":false,"pushed_at":"2023-04-07T01:38:27.000Z","size":738,"stargazers_count":1,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T04:43:24.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transferwise.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-06T08:47:28.000Z","updated_at":"2023-10-08T18:57:20.000Z","dependencies_parsed_at":"2024-11-06T17:44:56.771Z","dependency_job_id":null,"html_url":"https://github.com/transferwise/tw_bootcamp_2019","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Ftw_bootcamp_2019","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Ftw_bootcamp_2019/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Ftw_bootcamp_2019/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Ftw_bootcamp_2019/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transferwise","download_url":"https://codeload.github.com/transferwise/tw_bootcamp_2019/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248012857,"owners_count":21033253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T17:27:07.117Z","updated_at":"2025-04-09T09:33:18.868Z","avatar_url":"https://github.com/transferwise.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bootcamp linker\n\n## Context\n\nAt TransferWise, we deal with lots of banks and customers. When a customer wants to make an international transfer with TransferWise, they have to do the following:\n\n- set up a transfer request on our website\n- fund the transfer via their online bank\n\nThe Linker is in charge of matching these incoming customer funds to the transfer request they have set up on our website.\n\n## How does it work?\n\nThe Linker compares the bank statement of our banking partner to the transfer request records in our database. If the records on our bank statement matches the records in our database, we have a match. Your job is to create a matching algorithm (see matching rules at the end).\n\nIncoming bank statements (people paying into transferwise bank accounts) look like this:\n\n| id           | first_name | last_name | account_nr                        | amount | currency | comment | \n|--------------|------------|-----------|-----------------------------------|--------|----------|---------| \n| a1TVPS+joiQ= | Beebe      | Aarika    | FR19-2312-9002-35GW-20YN-STX5-095 | 282.0  | CNY      | P663    | \n| dtlhn%8w48wh | Anett      | Smith     | FR19-2312-1238-G345-6BRR-EGE5-373 | 770.0  | CNY      | P440    | \n\n*_Filename: src/main/resources/ex_bankstatement.csv_*\n\nThe transfer request records in our database look like this:\n\n| id           | first_name | last_name | amount | currency | comment | recipient | \n|--------------|------------|-----------|--------|----------|---------|-----------| \n| WlQ5WsLH+fU= | Beebe      | Aarika    | 282.0  | CNY      | P663    | 37        | \n| HRS4e444h6q= | Joe        | Smith     | 770.0  | CNY      | P444    | 426       | \n\n*_Filename: src/main/resources/ex_transfer.csv_*\n\n\n## The task\n\nYour task is to read in the two files, creating a resulting file that looks like:\n\n| bank_statement_id |  transfer_id  |  confidence | \n|-------------------|---------------|-------------| \n| a1TVPS+joiQ=      |  WlQ5WsLH+fU= | match       | \n| dtlhn%8w48wh      |  HRS4e444h6q= | proposed    | \n\n## We require the following rules for calculating the confidence field\n\n - If all records are identical = \"**match**\"\n - If all records have only letter case differences (case-insensitive match) = \"**match**\"\n - If 1 record is different (like title, comment) = \"**high**\"\n - If 2 records are different = \"**proposed**\"\n - If none of the above match = \"**none**\"\n\n## Submitting your solution and source files\n\n- Download this template\n- Implement your solution in any language (we prefer Java if possible)\n- Share your source code and the solution file as `links.csv` within a zip file. **Please make sure you save it as a valid CSV file!** :slightly_smiling_face:\n- Upload the zip using the upload button you should see at the end of the test\n \n‼️ THE DATA IN THIS REPOSITORY IS FAKE AND GENERATED FOR THE EXERCISE NOT ACTUALL CUSTOMER DATA‼️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Ftw_bootcamp_2019","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransferwise%2Ftw_bootcamp_2019","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Ftw_bootcamp_2019/lists"}