Hello Folks!
This is my first blog post. I wanted to share my interview experience at Fraud detection based FinTech. The role was for Associate Product Manager aka APM.
Date : June 2023
No of Rounds: 2.
1st Round : It started with the Senior PM asking me something about myself. She then asked about my roles and responsibilities at my current job place. Further, she asked about the products i have worked on.
After 1st round, I was asked to write a assignment on a TKYC (Total KYC)
Problem Statement :
As part of your candidature with us, kindly address the twoproblems given below. Your answers will be evaluated
primarily on the structure and the clarity of your reasoning process. The answers consider the meticulousness in
decision-making process by weighing pros and cons and creativity to think outside the box. Accordingly, kindly
address the problem given below and state any underlying assumptions that you may use.
KBC Bank, which is in the business of personal loans, wants to verify whether an applicant is eligible for loan, so
that it can subsequently verify him and grant him loan.
The following data points are submitted by the applicant:
- Applicant Name
- Applicant Address
- Applicant Email
- Applicant PAN No
- Applicant Mobile No
- Applicant POI and POA( Proof of income and Proof and address)
- DOB
We have the below data points from some publicly available data sources:
- Income tax portal- verify PAN, Verify PAN -Aadhaar link
- Cibil report fetch
- UIDAI source for Aadhaar verification
- Umang portal to check EPF deductions ( can be used for salaried people)
Additionally, we also have the following email server checks:
a. Whether the given email id is from a disposable email provider (i.e. non- authenticated public emails)
b. Whether the email id is via a free webmail
c. Whether the SMTP server of the email accepts all emails as valid via a proxy.
d. Whether the email id is accessible on the SMTP server or not (a false value will imply that the email address
will bounce)
e. Whether the email id follows a valid regular expression
f. Whether mail exchanger records exist for the given email address All these checks return a Boolean Yes/No
value.
Kindly use either or all of the above available resources to reach a decision for the applicant you are free to make
assumptions but importantly the end goal is to verify loan grant status. The result can be represented in the form
of a score with a green/amber/red range or a straightforward yes/no depending on your approach.
My Solution:
- Introduction………………………………………………………………………………………………2
- Product Workflow and Assumption…………………………………………………………..3
- API and Database Design………………………………………………………………………….5
- Technical Implementation and Resources……………………………………………..6
- Business Use Case and UI …………………………………………………………………………7
- Introduction
According to Deloitte, as much as 2-5% of the global GDP, or $2 trillion, is laundered each year. Verifying the authenticity of the client while on boarding has become more vital than ever for the financial institution to avoid Money Laundering, funding of the finances for illicit activities.
KYC (Know-Your-Customers) is a basic idea of verifying identities using documentation and making sure they are real. It also verifies whether a specific person is on prohibited lists.
Following KYC compliance can help organizations to verify risks associated with a person. It can even prevent money laundering, terrorist financing, and other small-scale frauds at bay.
Problem Statement
KBC Bank, A client of Karza Technologies wants to Leverage Karza API Product to reduce the operational bottleneck of verifying authenticity of the Loan Applicant. The Porduct Aims to provide a real time verification of Applicant along with a Loan Grant status basis Fuzzy Logic Algorithm.
Target Audience and Use Case:
FI’s (Banks, NBFCs , Co-Operatives) will use this API Product to fetch Loan Verification status of Loan Applicant through a Web Portal .
Product Logic Workflow
Assumption:
- The Scope of Loan Grant Report is extended to Auto Loan, Business Loan and Home Loan. KBC Bank offers a Personal Loan to an applicant till Maximum INR 50 Lacs.
- Loan Applicant is considered to be Indian Resident only and holding valid identity proofs.
- Age of Applicant is considered to be in range 21-60 and employment status, if employed full time then Min. 1 year in paid employment and if Self Employed, Last 3 years’ profit after tax is considered as income.
- Applicant whose KYC is already completed/updated in last 1 year will be given higher weightage in loan grant status.
- It is assumed that Aadhaar no. and PAN card are linked with one bank account and Mobile no.
- Applicant with Higher CIBIL score will be given higher preference in Grant Status.
- Incase of Lower CIBIL score and Mid range CIBIL score, the default Loan Grant Status is either Red or Amber which could further imply more POI and Proofs are required from the applicant to strengthen the case.
- It is assumed that Applicant Residence address is same as Aadhaar Address.If not, the application shall be Rejected.
- Red implies “Rejection of Loan” , Amber is “To Be considered IFF Additional proofs are Provided” , Green Implies “Approval”

API and Database Design
API Design:
- The API is based on REST Architecture with application.json as valid format .
- The Authentication will be based on API key, User needs to pass in Request.
- The API uses GET, POST and PUT Method for retrieving the client data , adding new member against client and updating Member data respectively.
Domains:
| Sr no | Method | Endpoint | Purpose |
| 1 | GET | api/v1.0/Client_Details | Fetches all Member(Loan Applicants) data against client |
| 2 | POST | api/v1.0/Client_Details | Add New Members (Loan Applicants) data against client |
| 3 | PUT | api/v1.0/Client_Details | Update Existing Members (Loan Applicants) data against client |
| 4 | GET | api/v1.0/Client_Details?Client _ID= & Loan_ID= & Member_ID= | Fetch particular Member data against Client ID |
| 5 | PUT | api/v1.0/Client_Details?Client_ID= & Loan_ID= | Update existing details against Loan ID (Client ID mandatory) |
| 6 | GET | Api/v1.0/ Client_Details?Client _ID= & Loan_ID= & Member_ID=&GetDoc | Fetches all Submitted Documents(as a string) for the Member ID |
Following Response codes to be Leveraged:
| Response Code | Status |
| 200 | Success |
| 400 | Required <Parameter> Missing |
| 401 | Invalid API Key |
| 403 | Invalid Domain Name |
| 404 | The <URI> doesn’t exist |
| 500 | Server Error |
Technical Implementation and Resources:
- Documents:
- Use AWS Textract to read scanned documents like POI, POA (Aadhaar No , PAN no , Utility bills, Bank Account Statement.
- Convert the scanned output into Base 64 string to store into database.
- API Development and Deployment:
- Use Amazon API gateway for Deployment on cloud, API deployment can be done either in C# , Spring or PHP.
- For Testing, Apache JMeter and Postman should be leveraged.
- Database Infrastructure and Monitoring:
- Amazon RDS or AWS Aurora (which supports Oracle SQL/ PL-SQL) depending upon cost budgets on EC2 Instance.
- For Monitoring of resources, AWS Cloud Watch Alarms can be leveraged along with AWS config to evaluate and assess the resources configuration.
- API Rate Limiting:
- API Rate Limiting should be implemented to control the API hits, either Sliding log or Sliding Window Algorithm ( based on timestamp) should be used for this use case.
- Once request exceeds maximum permissible no. of hits per second, API throttling mechanism to queue the request should be leveraged.
Business Monetization and Expansion.
- The client will be using a web portal to upload Loan Applicant details either as Zip format or a CSV. (ZIP file to demerged again into CSVs)
- Karza APIs should parse the CSV files into JSON. The parsing of objects can be done using simple python algorithm in pandas(library).
- Once File is uploaded, A unique JOB ID will be generated for each upload transaction.
- All Input validation and Fuzzy Logic will run in backed and generate the response in JSON.
- Karza APIs to again parse the JSON into CSV and display the final Loan Grant Status.

Please do let me know your feedbacks / suggestions.
Auf Wiedersehen!
Verdict : Selected