Skip to content

Part 10 — System Blueprint

BRE Functional Specification

This page specifies the functional contract for the BRE and decision service named in module map. It computes the policy outcomes described in underwriting decisioning and the credit appraisal package, then returns a reproducible decision object to LOS, credit workbench, the co-lending module and monitoring workflows.

The representation should align with Decision Model and Notation (DMN), the Object Management Group standard whose current formal version is DMN 1.4, adopted in April 2023 (OMG DMN 1.4). DMN is useful here because it separates a decision requirements graph from decision logic, decision tables, hit policies and expression language. The runtime may use a commercial or open-source engine, but the authoring model should preserve this structure so policy_risk, credit_manager, credit_committee_member and internal_auditor can read the policy without reverse-engineering application code.

DomainCaller stageMain inputsMain outputsSLA class
Pre-screenprescreen_pending in LOS workflowProduct, channel, PAN/GSTIN, pincode, negative lists, consent status, repeat-customer flagspre_screen_passed, hard_reject_triggered, missing-data list, coarse reason codesSynchronous, sub-second engineering target after features are present
Eligibility and pricingdata_pending to credit_in_review, straight-through offers, renewal/top-upBureau, banking, GST, ITR/financials, Udyam/KYC, obligations, collateral, product gridAmount, tenor, FOIR/DSCR/turnover/MPBF eligibility, rate, fees, risk grade, binding constraintSynchronous for complete data; async when scorecard/model call is unavailable
Deviation classificationcredit_in_review, deviation_pendingRule failures, severity matrix, exposure, channel, product, risk gradedeviation rows with severity, required authority_level, waiver expiry and mitigant promptSynchronous, because queue routing depends on it
Sanction-condition derivationapproved, sanctioned, documentation_pendingApproved structure, collateral, KYC/document gaps, product, partner conditionssanction_condition rows for CPs, CSs, covenants, monitoring requirementsSynchronous during sanction generation
Monitoring/EWS re-scoreLMS active_current, active_overdue, monthly or event-driven monitoringRepayment conduct, bureau refresh, GST/banking feeds, stock statements, anchor data, overdue historyWatchlist tier, limit-freeze flag, covenant breach, renewal route, collections alertAsync batch plus near-real-time triggers
Collections treatmentcollection_case state changesDPD, exposure, product, collateral, PTP history, contactability, legal eligibilityTele/field/legal strategy, settlement eligibility band, next action and contact controlsAsync or same-day batch, not borrower-facing instant decision

A ruleset is a versioned bundle of policies per product, lender and channel. The minimum bundle key is product_code, product_variant_code, business_line, regulated_entity_party_id, channel_type, effective_from, effective_to, ruleset_version, and status. For co-lending, the bundle also includes cla_id, both RE party ids, both policy versions and allowed split structure.

Representation elementRequired fieldsBuild rule
Decision tabledecision_table_id, input columns, output columns, hit policy, priority, effective datesUse for policy grids: geography, vintage, bureau band, GST turnover, FOIR caps, LTV caps, fee bands and deviation matrix.
Hit policyhit_policy, aggregation, conflict handlingSupported values: UNIQUE, FIRST, PRIORITY, COLLECT, RULE_ORDER. Reject publish when a table marked UNIQUE has overlapping rows.
Expression conditionexpression_id, expression language, variables, null policyUse FEEL-style expressions where practical. If the engine uses another expression language, store a DMN-readable equivalent and test vectors.
Scorecard nodescorecard_id, input features, bins, points/model version, score bandsUse for application or behavioural scorecards. Store score output and rank-ordered drivers, not only the final score.
Decision requirements graphdrg_id, nodes, dependencies, input data, knowledge sourcesModel dependencies from data quality to eligibility, from eligibility to pricing, and from policy failures to deviations.
Ruleset bundlerule_set_id, rule_version_id, artifact hash, approver, validation reportImmutable after publish. Any change creates a new version and canary pointer.

The evaluator receives a canonical request. It must not fetch arbitrary data during rule evaluation. Missing features are resolved before the call, or declared using explicit null semantics.

FieldTypeSource systemFreshness / consentNullability semantics
application_iduuidLOS applicationCurrent application versionNever null
application_numbertextLOSCurrentNever null
decision_pointenumCallerprescreen, eligibility, pricing, deviation, sanction_condition, monitoring, collectionsNever null
idempotency_keytextCallerOne per snapshot, point and rulesetNever null
evaluation_timestamptimestamptzCallerInjected, not read from wall clock inside rulesNever null
ruleset_version_requestedtextPolicy serviceActive or explicit historical versionNever null
product_codetextapplicationCurrentNever null
product_variant_codetextapplicationCurrent or default variantNullable only when product has no variants
channel_typeenumapplicationCurrentNever null
source_partner_iduuidapplicationCurrentRequired for dsa, lsp, anchor, co_lending
primary_applicant_party_iduuidapplicationCurrentNever null
party_featuresjsonbKYC and AML serviceKYC status current; BO status currentHard fail if borrower KYC status absent at KYC-gated points
bureau_featuresjsonbBureau integration / external_verificationTimestamp and consent_id; product policy defines max ageRefer or hard fail by policy when mandatory report missing
banking_featuresjsonbAA, BankConnect, upload analyzerStatement end date, fetch timestamp, consent scopeRefer when mandatory; default only for explicitly optional metrics
gst_featuresjsonbGST provider / borrower uploadReturn period and fetch timestampRefer for GST-surrogate programs; optional for non-GST entities
financial_featuresjsonbCredit workbench / spreadsAudited/provisional period and analyst versionRefer when method is audited_financials; nullable for scorecard_only
udyam_kyc_featuresjsonbUdyam/KYC serviceVerification timestampRefer if MSME/PSL classification is required
platform_anchor_featuresjsonbanchor_data_feed, partner APIBatch id, consent scope, snapshot dateOptional unless partner program requires anchor data
collateral_featuresjsonbCollateral and security serviceValuation date, legal status, insurance statusHard fail for secured disbursement; refer during early eligibility
obligation_featuresjsonbBureau, banking, declared SOASnapshot timestampRefer if duplication unresolved
co_lending_contextjsonbCo-lending moduleActive cla_id and share constraintsRequired when co_lending_flag=true
manual_overrides_requestedjsonbCredit workbenchMaker, reason, evidenceDoes not alter decision; only raises deviations

Null handling is policy, not code. A feature has one of four meanings: not_applicable, unknown_but_optional, missing_required, or provider_unavailable. missing_required creates a refer or hard fail by decision point. provider_unavailable may use cached data only if the output is marked stale and the ruleset permits it. Silent defaulting to zero is forbidden for income, turnover, DPD, bounces, GST delays, collateral value or obligations.

The decision object is persisted as bre_result.result_json, with selected values projected into typed fields on bre_result, deviation, credit_assessment, sanction_condition, partner_status_event and co-lending records.

FieldTypeSemantics
bre_result_iduuidPrimary persisted result id.
application_iduuidSame as input.
decision_pointenumSame as input.
outcomeenumapprove, refer, decline, manual_review, error. For legacy bre_result.decision, map to pass, refer, fail, manual_review, error.
outcome_confidenceenumdeterministic, scorecard_band, model_assisted, fallback_cached, incomplete.
eligibility_by_methodarrayEach row: method foir, dscr, turnover, mpbf, ltv, policy_cap; input amount; calculated capacity; applied haircut; result.
binding_constrainttextThe method or policy cap that limited the final amount. Required when approved or referred.
max_eligible_amountnumeric(18,2)Amount to project to bre_result.max_eligible_amount.
max_tenor_monthsintTenor allowed by product, score band and repayment method.
pricing_componentsarrayBase rate, risk premium, tenor premium, collateral discount, partner spread, fees, taxes, APR-relevant charges and policy min/max bounds.
price_floor_ratenumeric(9,6)Rate to project to bre_result.price_floor_rate, before final human pricing where allowed.
conditions_precedentarrayDraft sanction_condition rows with condition_type=condition_precedent, owner role and blocking flag.
conditions_subsequentarrayCovenant and monitoring items after disbursement.
deviationsarraydeviation_type, rule_code, severity, text, mitigant prompt, required_authority_level, expiry and whether waivable.
reason_codesarrayRanked reasons with code, human-readable CAM text, borrower-facing text when permitted, rule id and evidence values.
model_inventory_refsarrayModel ids, scorecard ids and validation status used in this run.
co_lending_allocationobjectSee below. Required for co-lending decision points.
audit_summaryobjectTrace id, input snapshot ref, ruleset version, result hash and timing.

The co-lending allocation block uses exact co-lending module names:

FieldTypeSemantics
cla_iduuidActive co_lending_arrangement.
originating_re_party_iduuidOriginating RE from co_lending_arrangement.
partner_re_party_iduuidPartner RE from co_lending_arrangement.
originator_policy_verdictenumapprove, refer, decline, with originator ruleset version.
partner_policy_verdictenumapprove, refer, decline, with partner policy version or pending marker.
eligible_pairingsarrayAllowed RE pairing, product, geography and borrower segment rows.
split_percentagesobjectProposed originator_share_percent and partner_share_percent; each must be at least 10 percent under RBI co-lending directions.
blended_rate_computationobjectRE rates, share percentages, weighted blended rate, fees and APR inclusion.
partner_share_previewarrayDraft partner_share amounts by RE.
dlg_variant_flagsobjectDLG present, dlg_set_id, cap remaining, covered portfolio and blocked reason if ineligible.
partner_conditionsarrayConditions to convert into sanction_condition or partner-facing API messages.

RBI’s 2025 co-lending directions make the dual-policy basis operational: each RE must incorporate CLA provisions into its own credit policy, changes to each RE rate follow that RE’s credit policy, each RE maintains its own borrower account for its share, and both shares must be reflected without delay and no later than 15 calendar days (RBI Co-Lending Arrangements Directions, 2025). The BRE should therefore record both policy verdicts, not only a joint blended offer.

FieldTypeRequiredPurpose
trace_iduuidYesCorrelates request, evaluation nodes, logs and persisted result.
idempotency_keytextYesDeduplicates retries and replay.
rule_set_iduuidYesVersioned rule bundle.
rule_version_iduuidYesImmutable published version.
input_snapshot_reftextYesEncrypted object reference for full input snapshot.
input_snapshot_hashchar(64)YesHash for replay and tamper detection.
node_evaluationsarrayYesEach node has node id, node type, input values, output value, start/end time and errors.
rule_evaluationsarrayYesEach row has rule id/version, values seen, threshold, fired flag, hit policy result and DRD path.
scorecard_evaluationsarrayConditionalScore, bins, points, rejected variables and top drivers.
timing_by_node_msjsonbYesLatency analysis and regression monitoring.
external_model_refsarrayConditionalVersion-pinned model calls, feature vector hash and response hash.
final_decision_hashchar(64)YesHash of canonical output JSON.
pii_masking_profiletextYesDescribes redaction in logs and UI views.
retention_untildateYesMust satisfy audit, model inventory and loan-record retention policies.

Full snapshots contain PII, bureau data, bank data and GST data. Store them encrypted, access-controlled through actors permissions, and masked by default. Operational logs should carry only ids, hashes, coarse bands and rule codes. A DSA, LSP or field user must never see raw bureau variables, CAM comments or hidden rule thresholds.

StepOwner roleRequired evidenceExit control
Author draftpolicy_riskBusiness objective, affected product, regulatory basis, sample rows, expected approval/reject mixDraft ruleset compiles and all tables pass overlap checks
Technical reviewsystem_service / engineeringSchema compatibility, expression safety, performance test, no forbidden nondeterminismArtifact build succeeds
Maker-checker approvalpolicy_risk maker, credit_manager or national_credit_head checker; aml_compliance for regulatory rulesChange note, old/new diff, expected portfolio impactapproval_request.status=approved
Simulation/backtestpolicy_risk, risk analyticsHistorical applications, outcomes, confusion matrix, approval mix, bad-rate estimate, reason-code distributionThresholds met or exception approved
Champion-challenger setuppolicy_riskChampion version, challenger version, sample split, stop-loss guardrail, monitoring dashboardPublish as canary or shadow only
Publishsystem_serviceImmutable artifact hash, effective date, rollback pointerVersion pointer updated atomically
Monitorpolicy_risk, internal_auditor read-onlyApproval/refer/decline mix, override rate, drift, latency, rule-hit distributionAlerts routed to owner
Rollbackpolicy_risk, system_serviceIncident reason, affected versions, replay samplePointer reverts; decisions already issued remain immutable
Periodic reviewpolicy_risk, independent validation function, RMCB/delegated authority for high-risk modelsValidation report, model inventory status, monitoring, exceptionsReview recorded at least annually or earlier on trigger

The June 24, 2026 RBI draft Guidance on Regulatory Principles for Model Risk Management applies broadly to banks, NBFC layers, AIFIs, ARCs and CICs. It covers internal, third-party and AI/ML models, and treats decision-based rules and computational tools as models when they materially affect decisions (RBI draft model risk guidance transcript). The BRE model inventory should therefore include scorecards, pricing calculators, ruleset bundles, feature transformations and third-party model calls.

Reason codes are first-class output. A reason code has a stable code, internal text, borrower-facing text if permitted, rule or scorecard driver, evidence values, adverse-action severity and language version. The top reasons should be ranked by actual contribution to the outcome. Do not return generic messages such as POLICY_FAIL. For a decline, use specific but safe reasons such as high recent delinquency, insufficient verified turnover, unsettled bureau overdue, unsupported DSCR, ineligible geography, prohibited industry or KYC defect.

KFS and APR interplay is downstream but triggered here. Pricing outputs must label whether a charge is APR-relevant and whether it is borrower-payable, partner-payable or waived. Under co-lending, the borrower-facing rate is a weighted blended rate, and additional fees must be included in APR disclosure as applicable under the co-lending directions and KFS circular. The BRE should not generate the KFS, but it must provide structured pricing components so the KFS archive can reproduce the disclosed economics.

Model governance controls:

ControlBRE implementation
Model inventoryEvery ruleset, scorecard, pricing calculator and external model has an owner, validator, approver, risk tier and intended use.
Independent validationRequired before deployment, after material changes, on trigger events and periodically per MRMF. Third-party models still need RE validation.
DocumentationStore objective, assumptions, limitations, feature definitions, sample decisions, validation, approval, change history and decommissioning record.
ExplainabilityStore rule trace, score drivers, reason codes and borrower-safe text.
Human oversightrefer and manual_review outputs route to credit_analyst, credit_manager or the resolved DoA level; high-risk AI outputs need override/suspension controls.
Review cadenceAt least annual tier review for all models, with earlier review on drift, material change, regulatory change, data-source change or performance breach.