Sooner Underwriting

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.

committee_review
ApplicantT1 Federal MoF senior officer, Springs Phase 5 townhouse
EmployerFederal Ministry of Finance
Employer tierT1
Property tierA
SCS99.1SCS = sum(categoryScore × categoryWeight) / activeWeightInputs:activeWeight100A1_weightedScore10A2_weightedScore7.5B_weightedScore15C_weightedScore10D_weightedScore7.5E_weightedScore7.5F_weightedScore5G_weightedScore5H_weightedScore15I_weightedScore4.1J_weightedScore12.5= 99.1
Pinning gates0pinningGates = valueInputs:value0= 0

Scoring formulas

CodeMetricScoreWeighted
A130.00%100score = bandFor(DBR)Inputs:DBR30.00%= 10010.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight10activeWeight100= 10.0
A216x100score = residualCoverageStepScore(residualCoverage)Inputs:residualCoverage16xcutoffs>=2.0:100, >=1.5:80, >=1.2:60, >=1.0:35, <1.0:0; NOT-founder-ratified gradient= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight7.5activeWeight100= 7.5
B41.7 months100score = bandFor(reserveBurnMonths)Inputs:reserveBurnMonths41.7 months= 10015.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight15activeWeight100= 15.0
C96 months100score = bandFor(tenureMonths)Inputs:tenureMonths96= 10010.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight10activeWeight100= 10.0
DAED 80,000100score = bandFor(qualifyingIncome)Inputs:qualifyingIncomeAED 80,000= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight7.5activeWeight100= 7.5
E72 months100score = residencyStepScore(residencyMonths)Inputs:residencyMonths72= 1007.5weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight7.5activeWeight100= 7.5
F48 months100score = bandFor(creditRelationshipMonths)Inputs:creditRelationshipMonths48thinFilefalse= 1005.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight5activeWeight100= 5.0
G790100score = bandFor(aecb)Inputs:aecb790thinFilefalsethinFileSubstituteScore70= 1005.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight5activeWeight100= 5.0
HA100score = tierScore(communityTier)Inputs:communityTierAband100= 10015.0weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore100categoryWeight15activeWeight100= 15.0
I90.00%82score = bandFor(combinedCLTV)Inputs:combinedCLTV90.00%= 824.1weightedScore = categoryScore × categoryWeight / activeWeightInputs:categoryScore82categoryWeight5activeWeight100= 4.1
JT1100score = tierScore(employerTier)Inputs:employerTierT1band100= 10012.5score = bandFor(employerTier) × categoryWeight / activeWeightInputs:employerTierT1band100categoryWeight12.5activeWeight100= 12.5

Expected loss

PD2%PD = priorByBand[band]Inputs:bandapproveprior0.02= 2.00%
LGD33%LGD = clamp(1 - recoveryRate - recourseTierCorrection - recourseDepthLgdAdjustment, 0, 1)Inputs:recoveryRate0.46recourseTierstrongrecourseTierCorrection0.18recourseDepthLgdAdjustment0.03= 33.00%
EADAED 256,000EAD = financedFeePctOfPrice × priceBasisAedInputs:financedFeePctOfPrice0.08priceBasisAed3,200,000= AED 256,000
Expected lossAED 1,690EL = PD × LGD × EADInputs:PD0.02LGD0.33EAD256,000= AED 1,690

Gates

G1 · passUAE residency presentValue → 72G1 value = valueInputs:value72= 72Threshold → >= 6 monthsG1 threshold = valueInputs:value6= >= 6 months
G2 · passAge within 60-month policyValue → 38G2 value = valueInputs:value38= 38Threshold → age >= 21 and maturity age <= 65G2 threshold = valueInputs:value2,165= age >= 21 and maturity age <= 65
G3 · passAECB pull and minimum scoreValue → 790G3 value = valueInputs:value790= 790Threshold → AECB >= 550 or thin-file confirmed by pull
G4 · passNo recent financial defaultsValue → falseG4 value = valueInputs:value0= falseThreshold → no financial defaults in 24 monthsG4 threshold = valueInputs:value24= no financial defaults in 24 months
G5 · passIncome verifiedValue → trueG5 value = valueInputs:value0= trueThreshold → verified income evidenceG5 threshold = valueInputs:value0= verified income evidence
G6 · passBase salary and structural income floorValue → 80000G6 value = valueInputs:value80,000= 80000Threshold → base salary >= AED 25000 and qualifying income >= structural floorG6 threshold = valueInputs:value25,000= base salary >= AED 25000 and qualifying income >= structural floor
G7 · passTier-conditional employment tenureValue → 96G7 value = valueInputs:value96= 96Threshold → >= 6 monthsG7 threshold = valueInputs:value6= >= 6 months
G8 · passFinanced fee size and percentageValue → 320000G8 value = valueInputs:value320,000= 320000Threshold → AED 30000-750000 and 6-11% of price
G9 · passPost-financing DBRValue → 30G9 value = valueInputs:value30= 30Threshold → < 50% DBR and total debt < 60%G9 threshold = valueInputs:value5,060= < 50% DBR and total debt < 60%
G10 · passReady freehold property and price bandValue → 3200000G10 value = valueInputs:value3,200,000= 3200000Threshold → AED 800000-4500000, ready, freehold, valued
G11 · passExpat first-time buyer residency floorValue → 72G11 value = valueInputs:value72= 72Threshold → >= 24 months for expat first-time buyers
G12 · passApproved community recourseValue → AG12 value = valueInputs:value0= AThreshold → allowed tiers: A, B, CG12 threshold = valueInputs:value0= allowed tiers: A, B, C
G13 · passReady-unit vintage seasoningValue → 18G13 value = valueInputs:value18= 18Threshold → >= 6 months, NOC available, >= 5 active leasesG13 threshold = valueInputs:value65= >= 6 months, NOC available, >= 5 active leases
G14 · passCommission-only income ineligibleValue → falseG14 value = valueInputs:value0= falseThreshold → base salary >= AED 25000 when commission income existsG14 threshold = valueInputs:value25,000= base salary >= AED 25000 when commission income exists
G15 · passRe-lease coverageValue → 18G15 value = valueInputs:value18= 18Threshold → >= 5 lease observationsG15 threshold = valueInputs:value5= >= 5 lease observations
G-RES · passResidual income coverageValue → 16G-RES value = valueInputs:value16= 16Threshold → >= 1.2xG-RES threshold = valueInputs:value1.2= >= 1.2x

Concentration

ExposureCurrentLimitStatus
Cluster emirates_living_family_axis6%emirates_living_family_axis currentPct = valueInputs:value6= 6%25%emirates_living_family_axis limitPct = valueInputs:value25= 25%within limit
Single building / cluster1%single_building_villa_th_cluster currentPct = valueInputs:value1= 1%10%single_building_villa_th_cluster limitPct = valueInputs:value10= 10%within limit
Single developer12%single_developer currentPct = valueInputs:value12= 12%40%single_developer limitPct = valueInputs:value40= 40%within limit
Single employer2%single_employer currentPct = valueInputs:value2= 2%10%single_employer limitPct = valueInputs:value10= 10%within limit
Single borrower0.5%single_borrower currentPct = valueInputs:value0.5= 0.5%5%single_borrower limitPct = valueInputs:value5= 5%within limit
Self-employed exposure0%self_employed currentPct = valueInputs:value0= 0%15%self_employed limitPct = valueInputs:value15= 15%within limit
Family villa segment0%family_villa_segment_combined currentPct = valueInputs:value0= 0%15%family_villa_segment_combined limitPct = valueInputs:value15= 15%within limit

Reasoning trace

  1. EMPLOYER_NAMED_MATCHFederal MoF matched Federal Ministry of Finance, classified as T1 in Section E Rule 1.
  2. PROPERTY_SECTION_A_MATCHSprings Phase 5 matched The Springs. Section A classifies it as Tier A. Yield 5.5-6.5%, named exemplar.
  3. G1_PASSResidency is 72 months.
  4. G2_PASSAge is 38; age at maturity is 43.
  5. G3_PASSAECB is 790.
  6. G4_PASSNo recent financial default reported.
  7. G5_PASSIncome is verified.
  8. G6_PASSBase salary is AED 80000; qualifying income is AED 80000; structural floor is AED 16000.
  9. G7_PASSTenure is 96 months for T1/salaried.
  10. G8_PASSPrincipal is AED 320000; fee is 10% of price.
  11. G9_PASSComputed DBR is 30%; total debt obligations are 30%.
  12. G10_PASSPrice is AED 3200000; ready=true; freehold=true; valuation=true.
  13. G11_PASSExpat first-time residency is 72 months.
  14. G12_PASSCommunity tier is A.
  15. G13_PASSHandover months=220; NOC=true; active leases=18.
  16. G14_PASSBase salary path is present.
  17. G15_PASSLease coverage count is 18.
  18. G-RES_PASSResidual coverage is 16x; effective living cost is AED 3500.
  19. SCS_A1Category A1 uses post-financing DBR computed from existing debt, bank mortgage instalment, Sooner monthly, and qualifying income.
  20. 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.
  21. 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.
  22. SCS_CCategory C scores current-employer tenure.
  23. SCS_DCategory D scores qualifying income after base/rental/additional/commission haircuts.
  24. SCS_ECategory E uses the 12/24/36/60 month UAE residency step band.
  25. SCS_FCategory F scores length of UAE credit/banking relationship.
  26. SCS_GCategory G scores the pulled AECB score.
  27. SCS_HCategory H is a discrete re-leasing recourse tier lookup.
  28. SCS_ICategory I scores combined CLTV / lifestyle alignment.
  29. SCS_JCategory J is a discrete employer sector tier lookup.
  30. CONCENTRATION_EMIRATES_LIVING_FAMILY_AXISCluster emirates_living_family_axis would be 6%, within the 25% cap.
  31. CONCENTRATION_SINGLE_BUILDING_VILLA_TH_CLUSTERSingle building / cluster would be 1%, within the 10% cap.
  32. CONCENTRATION_SINGLE_DEVELOPERSingle developer would be 12%, within the 40% cap.
  33. CONCENTRATION_SINGLE_EMPLOYERSingle employer would be 2%, within the 10% cap.
  34. CONCENTRATION_SINGLE_BORROWERSingle borrower would be 0.5%, within the 5% cap.
  35. CONCENTRATION_SELF_EMPLOYEDSelf-employed exposure would be 0%, within the 15% cap.
  36. CONCENTRATION_FAMILY_VILLA_SEGMENT_COMBINEDFamily villa segment would be 0%, within the 15% cap.
  37. 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.
  38. CONTRACT_DECISION_METADATAruleId=DR10