Configuring your oraculi decision model settings

A decision model allows you to apply predefined rules and criteria to evaluate loan applications efficiently. For instance, it can automatically decline applications that don’t meet minimum income or age requirements, while instantly approving those that meet all criteria. This not only speeds up the approval process but also ensures fairness and consistency across all decisions, helping you manage risk more effectively and scale operations with confidence.

Types of decision model

This section gives you a clear view of the available decision model modules so you can better understand how your lending decisions are currently being handled.

The available decision model settings (aka modules or services) are as follows:

ModuleDescription
KarmaStatus: REQUIRED. Typically and advisably the first module in the sequence. Checks against the Karma engine. If a user is flagged, they are deemed ineligible. Fields that are checked include BVN, email, phone number etc. Configuration: continue_on_failure should be false for this module. Sample JSON Snippet: { “karma”: { “required”: true, “sequence”: 1, “continue_on_failure”: false } } Sample Payload: { “id”: 1, “version_id”: 1, “decision_model_id”: 1, “decision_type”: “karma”, “setting”: { “check_IP”: { “value”: false }, “check_bvn”: { “value”: true } } }
WhitelistStatus: OPTIONAL. This checks if the user has been whitelisted; if so, the whitelist offer is immediately presented and all other checks are bypassed. continue_on_failure is always true as most users will not be whitelisted. Sample JSON Snippet: { “whitelist”: { “required”: true, “sequence”: 2, “offer_on_success”: true, “continue_on_failure”: true } } Sample Payload: { “id”: 2, “version_id”: 0, “decision_model_id”: 1, “decision_type”: “whitelist”, “setting”: {} }
EcosystemStatus: REQUIRED. The ecosystem module is another Lendsqr internal check. It checks a user against various fields from all organisations housed on the Lendsqr ecosystem. Typical fields checked include past-due loans, running loans, delayed payments, age etc. continue_on_failure should be false. Note: user data is not shared across organisations. Sample JSON Snippet: { “ecosystem”: { “required”: true, “sequence”: 3, “continue_on_failure”: false } } Sample Payload: { “id”: 5, “version_id”: 4, “decision_model_id”: 1, “decision_type”: “ecosystem”, “setting”: { “age”: { “type”: “integer”, “description”: “Age of the borrower”, “minimum”: 23, “maximum”: 55 }, “unique_phone_numbers”: { “type”: “integer”, “description”: “Number of unique phones”, “minimum”: 0, “maximum”: 2 }, “lenders”: { “type”: “integer”, “description”: “Lendsqr Apps that user has signed up to”, “minimum”: 0, “maximum”: 5 } } }
MLStatus: OPTIONAL. Our ML model predicts the outcome of a user’s loan using various properties. Accuracy ~80%. Implemented to provide lenders with insights; hence continue_on_failure is typically true. Interpretation: Prediction = 2 → user will repay. Prediction = 5 → user will not repay. Includes a confidence score. Sample JSON Snippet: { “ml”: { “required”: true, “sequence”: 4, “continue_on_failure”: true } } Sample Payload: { “id”: 3, “version_id”: 1, “decision_model_id”: 1, “decision_type”: “ml”, “setting”: { “prediction”: { “type”: “integer”, “maximum”: 2, “minimum”: 2 }, “confidence_score”: { “type”: “integer”, “maximum”: 100, “minimum”: 50 } } }
ScoringStatus: REQUIRED. A subjective service that rates user attributes and collates them into a credit score. Fields rated include age, gender, marital status, employment, location, etc. continue_on_failure is typically false. Sample JSON Snippet: { “scoring”: { “minimum”: 50, “required”: true, “sequence”: 5, “continue_on_failure”: false } } Sample Payload: { “id”: 4, “version_id”: 4, “decision_model_id”: 1, “decision_type”: “scoring”, “setting”: { “gender”: { “type”: “string”, “weight”: “10”, “attributes”: [ { “key”: “female”, “score”: 10 }, { “key”: “male”, “score”: 5 } ], “description”: “Gender”, “maximum_score”: “10” }, “location”: { “type”: “string”, “weight”: “5”, “attributes”: [ { “key”: “Abia”, “score”: 8 }, { “key”: “Adamawa”, “score”: 1 } ] } } }
Credit BureauStatus: OPTIONAL (External Provider). Data is sourced from one of the three Credit Bureaus in Nigeria (CRC, CreditRegistry, First Central). Fields checked: past-due loans, loan history, active loans, etc. Recommended to set continue_on_failure to false. Sample JSON Snippet: { “credit_bureau”: { “provider”: “CRC”, “required”: false, “sequence”: 6, “continue_on_failure”: false } } Sample Payload: { “id”: 169, “version_id”: 0, “decision_model_id”: 1, “decision_type”: “credit_bureau”, “setting”: { “loan_history”: { “type”: “integer”, “description”: “Number of loans ever gotten”, “minimum”: 0, “maximum”: 100 }, “past_due_loans”: { “type”: “integer”, “description”: “Number of loans past due”, “minimum”: 0, “maximum”: 0 }, “active_loans”: { “type”: “integer”, “description”: “Number of loans active and performing”, “minimum”: 0, “maximum”: 1 }, “last_reported_days”: { “type”: “integer”, “description”: “Days since latest report”, “minimum”: 0, “maximum”: 9999 } } }
BalanceStatus: OPTIONAL (External Provider). Data sourced from external providers delivering customer financial data. Useful for validating account liquidity. continue_on_failure can be true. Sample JSON Snippet: { “balance”: { “provider”: “mono”, “required”: true, “sequence”: 6, “continue_on_failure”: false } } Sample Payload: { “id”: 80, “version_id”: 0, “decision_model_id”: 15, “decision_type”: “balance”, “setting”: { “balance”: { “type”: “float”, “maximum”: 99999999, “minimum”: 1000, “description”: “Balance on the borrower’s account” } } }
StatementStatus: OPTIONAL (External Provider). Data sourced from external providers delivering customer financial statements. Allows checks such as days in debit. continue_on_failure can be true. Sample JSON Snippet: { “statement”: { “provider”: “mono”, “required”: true, “sequence”: 7, “duration”: 180, “continue_on_failure”: true } } Sample Payload: { “id”: 82, “version_id”: 3, “decision_model_id”: 15, “decision_type”: “statement”, “setting”: { “days_in_debit”: { “type”: “integer”, “maximum”: 2, “minimum”: 0, “description”: “Number of days account has been in debit” } } }
IncomeStatus: OPTIONAL (External Provider). Data sourced from providers to estimate borrower’s income. Useful for affordability checks. continue_on_failure can be true. 
Sample JSON Snippet: { “income”: { “provider”: “mono”, “required”: true, “sequence”: 8, “continue_on_failure”: true } } 
Sample Payload: { “id”: 81, “version_id”: 3, “decision_model_id”: 15, “decision_type”: “income”, “setting”: { “income”: { “type”: “float”, “maximum”: 100000000, “minimum”: 50000, “description”: “Estimated borrower income over a stated period” } } }
LociStatus: OPTIONAL. Regulates the number of loans on individual lenders’ platforms by tracking total loan requests. Contact support for more info. 
Sample Payload: { “id”: 260, “version_id”: 7, “decision_model_id”: 1, “decision_type”: “loci”, “setting”: { “loan_requests”: { “type”: “integer”, “description”: “Total number of loan requests made”, “minimum”: 0, “maximum”: 150 } } }

For fields such as id, version_id, decision_model_id, decision_type and setting please note that these are auto-generated and do not require modification. You can only tweak the values of the different variables checked within the settings.

Configuring your oraculi decision model settings

Want to learn more about how our decision model works? Click here.

Also read: How we built Oraculi to help lenders make informed decision

Was this page helpful?