APPLICATION PLAYGROUND
Schema-driven simulator
Every editable field below is introspected from ApplicationInput. Changing a value reruns the underwriting engine.
Build snapshot as of 2026-04-30. Config values are baked at build time; overrides require a redeploy.
LIVE DECISION
Credit Committee review
AA18 - Statement-derived living-cost evidence is required before automated approval. Living-cost evidence is missing; formulas use the AED 3,500 NOT-founder-ratified fallback until statement-derived evidence is supplied. Rule: DR10.
ApplicantT1 Federal MoF senior officer, Springs Phase 5 townhouse
EmployerFederal Ministry of Finance
Employer tierT1
Property tierA
SCS99.1SCS = sum(categoryScore × categoryWeight) / activeWeightInputs:activeWeight→100A1_weightedScore→10A2_weightedScore→7.5B_weightedScore→15C_weightedScore→10D_weightedScore→7.5E_weightedScore→7.5F_weightedScore→5G_weightedScore→5H_weightedScore→15I_weightedScore→4.1J_weightedScore→12.5= 99.1
Pinning gates0pinningGates = valueInputs:value→0= 0
Scoring formulas
CodeMetricScoreWeighted
A130.00%100score = bandFor(DBR)Inputs:DBR→30.00%= 10010.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→10activeWeight→100= 10.0
A216x100score = residualCoverageStepScore(residualCoverage)Inputs:residualCoverage→16xcutoffs→>=2.0:100, >=1.5:80, >=1.2:60, >=1.0:35, <1.0:0; NOT-founder-ratified gradient= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→7.5activeWeight→100= 7.5
B41.7 months100score = bandFor(reserveBurnMonths)Inputs:reserveBurnMonths→41.7 months= 10015.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→15activeWeight→100= 15.0
C96 months100score = bandFor(tenureMonths)Inputs:tenureMonths→96= 10010.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→10activeWeight→100= 10.0
DAED 80,000100score = bandFor(qualifyingIncome)Inputs:qualifyingIncome→AED 80,000= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→7.5activeWeight→100= 7.5
E72 months100score = residencyStepScore(residencyMonths)Inputs:residencyMonths→72= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→7.5activeWeight→100= 7.5
F48 months100score = bandFor(creditRelationshipMonths)Inputs:creditRelationshipMonths→48thinFile→false= 1005.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→5activeWeight→100= 5.0
G790100score = bandFor(aecb)Inputs:aecb→790thinFile→falsethinFileSubstituteScore→70= 1005.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→5activeWeight→100= 5.0
HA100score = tierScore(communityTier)Inputs:communityTier→Aband→100= 10015.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→100categoryWeight→15activeWeight→100= 15.0
I90.00%82score = bandFor(combinedCLTV)Inputs:combinedCLTV→90.00%= 824.1weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore→82categoryWeight→5activeWeight→100= 4.1
JT1100score = tierScore(employerTier)Inputs:employerTier→T1band→100= 10012.5score = bandFor(employerTier) × categoryWeight / activeWeightInputs:employerTier→T1band→100categoryWeight→12.5activeWeight→100= 12.5
Expected loss
PD2%PD = priorByBand[band]Inputs:band→approveprior→0.02= 2.00%
LGD33%LGD = clamp(1 - recoveryRate - recourseTierCorrection - recourseDepthLgdAdjustment, 0, 1)Inputs:recoveryRate→0.46recourseTier→strongrecourseTierCorrection→0.18recourseDepthLgdAdjustment→0.03= 33.00%
EADAED 256,000EAD = financedFeePctOfPrice × priceBasisAedInputs:financedFeePctOfPrice→0.08priceBasisAed→3,200,000= AED 256,000
Expected lossAED 1,690EL = PD × LGD × EADInputs:PD→0.02LGD→0.33EAD→256,000= AED 1,690
Gates
Concentration
ExposureCurrentLimitStatus
Cluster emirates_living_family_axis6%emirates_living_family_axis currentPct = valueInputs:value→6= 6%25%emirates_living_family_axis limitPct = valueInputs:value→25= 25%within limit
Single building / cluster1%single_building_villa_th_cluster currentPct = valueInputs:value→1= 1%10%single_building_villa_th_cluster limitPct = valueInputs:value→10= 10%within limit
Single developer12%single_developer currentPct = valueInputs:value→12= 12%40%single_developer limitPct = valueInputs:value→40= 40%within limit
Single employer2%single_employer currentPct = valueInputs:value→2= 2%10%single_employer limitPct = valueInputs:value→10= 10%within limit
Single borrower0.5%single_borrower currentPct = valueInputs:value→0.5= 0.5%5%single_borrower limitPct = valueInputs:value→5= 5%within limit
Self-employed exposure0%self_employed currentPct = valueInputs:value→0= 0%15%self_employed limitPct = valueInputs:value→15= 15%within limit
Family villa segment0%family_villa_segment_combined currentPct = valueInputs:value→0= 0%15%family_villa_segment_combined limitPct = valueInputs:value→15= 15%within limit
Reasoning trace
- EMPLOYER_NAMED_MATCHFederal MoF matched Federal Ministry of Finance, classified as T1 in Section E Rule 1.
- PROPERTY_SECTION_A_MATCHSprings Phase 5 matched The Springs. Section A classifies it as Tier A. Yield 5.5-6.5%, named exemplar.
- G1_PASSResidency is 72 months.
- G2_PASSAge is 38; age at maturity is 43.
- G3_PASSAECB is 790.
- G4_PASSNo recent financial default reported.
- G5_PASSIncome is verified.
- G6_PASSBase salary is AED 80000; qualifying income is AED 80000; structural floor is AED 16000.
- G7_PASSTenure is 96 months for T1/salaried.
- G8_PASSPrincipal is AED 320000; fee is 10% of price.
- G9_PASSComputed DBR is 30%; total debt obligations are 30%.
- G10_PASSPrice is AED 3200000; ready=true; freehold=true; valuation=true.
- G11_PASSExpat first-time residency is 72 months.
- G12_PASSCommunity tier is A.
- G13_PASSHandover months=220; NOC=true; active leases=18.
- G14_PASSBase salary path is present.
- G15_PASSLease coverage count is 18.
- G-RES_PASSResidual coverage is 16x; effective living cost is AED 3500.
- SCS_A1Category A1 uses post-financing DBR computed from existing debt, bank mortgage instalment, Sooner monthly, and qualifying income.
- SCS_A2Category A2 uses residual coverage with the AED 3,500 flat living-cost backstop because ApplicationInput has no dependent count field; backstop and score gradient are NOT-founder-ratified.
- SCS_BCategory B scores reserve burn months: liquid cash plus haircut EOSB and funded-scheme balance over mortgage, Sooner, living-cost, and other-debt burn.
- SCS_CCategory C scores current-employer tenure.
- SCS_DCategory D scores qualifying income after base/rental/additional/commission haircuts.
- SCS_ECategory E uses the 12/24/36/60 month UAE residency step band.
- SCS_FCategory F scores length of UAE credit/banking relationship.
- SCS_GCategory G scores the pulled AECB score.
- SCS_HCategory H is a discrete re-leasing recourse tier lookup.
- SCS_ICategory I scores combined CLTV / lifestyle alignment.
- SCS_JCategory J is a discrete employer sector tier lookup.
- CONCENTRATION_EMIRATES_LIVING_FAMILY_AXISCluster emirates_living_family_axis would be 6%, within the 25% cap.
- CONCENTRATION_SINGLE_BUILDING_VILLA_TH_CLUSTERSingle building / cluster would be 1%, within the 10% cap.
- CONCENTRATION_SINGLE_DEVELOPERSingle developer would be 12%, within the 40% cap.
- CONCENTRATION_SINGLE_EMPLOYERSingle employer would be 2%, within the 10% cap.
- CONCENTRATION_SINGLE_BORROWERSingle borrower would be 0.5%, within the 5% cap.
- CONCENTRATION_SELF_EMPLOYEDSelf-employed exposure would be 0%, within the 15% cap.
- CONCENTRATION_FAMILY_VILLA_SEGMENT_COMBINEDFamily villa segment would be 0%, within the 15% cap.
- CONTRACT_DR10AA18 - Statement-derived living-cost evidence is required before automated approval. Living-cost evidence is missing; formulas use the AED 3,500 NOT-founder-ratified fallback until statement-derived evidence is supplied.
- CONTRACT_DECISION_METADATAruleId=DR10