# NORTHBRIDGE BANK — HIGH LEVEL DESIGN
## AI Credit Re-Scoring Platform

---

| Field | Value |
|-------|-------|
| **Document ID** | TKA-NB-HLD-001 |
| **Engagement** | TKA-NB-20260702-001 |
| **Architect** | Vitruvius — BMAD Architect Agent, Talastron Kinetic AI |
| **Date** | 2 July 2026 |
| **Status** | DRAFT — Pending Themis Compliance Review |
| **Classification** | RESTRICTED — FCA Consumer Credit // OFFICIAL-SENSITIVE |
| **ADR Reference** | TKA-NB-ADR-001 |

---

## 1. PLATFORM OVERVIEW

The NorthBridge AI Credit Re-Scoring Platform is an AI-augmented decision layer that enriches legacy credit assessments with open banking data, affordability signals, and behavioural indicators. It integrates with NorthBridge's existing applicant data estate (Azure SQL, Microsoft Dataverse) and exposes a re-scoring API that the existing web portal and underwriter review tooling can consume.

**Platform boundary:** The platform does not replace the existing mortgage origination system. It adds a re-scoring layer that is called when the legacy model produces a decline or a borderline result. The legacy system remains the system of record for application lifecycle management.

---

## 2. COMPONENT INVENTORY

| Component | Azure Service | Tier | Purpose |
|-----------|--------------|------|---------|
| Re-scoring API | Azure Functions | Premium (Prod) / Consumption (Dev) | Orchestrates the end-to-end re-scoring workflow |
| AISP Gateway | Azure API Management | Premium | OAuth 2.0 gateway for open banking feed ingestion |
| Re-scoring Model | Azure Machine Learning | Standard | Credit re-scoring inference + SHAP attribution |
| Rationale Engine | Azure OpenAI (GPT-4o) | Standard S0 | Converts SHAP output to FCA-compliant plain English |
| Applicant Data | Azure SQL Database | Hyperscale (Prod) | Source of record for applicant data; audit log store |
| CRM Data | Microsoft Dataverse | Existing (NorthBridge) | Supplementary applicant relationship data |
| Audit Stream | Azure Event Hubs | Standard | Real-time decision event streaming |
| Secrets & CMK | Azure Key Vault | Standard | Customer-managed encryption keys; AISP OAuth secret |
| Identity | Microsoft Entra ID | Existing (NorthBridge) | Underwriter authentication; Managed Identity anchor |
| Observability | Azure Monitor + Log Analytics | Standard | Platform telemetry, alerting, model drift detection |
| Networking | Azure Virtual Network | — | Private network fabric; all services VNet-integrated |
| Immutable Retention | Azure Blob Storage (WORM) | Standard | Long-term FCA audit log retention |

**Region:** All components deployed to **UK South**. No cross-border data movement. Public network access disabled on all PaaS resources.

---

## 3. NETWORK TOPOLOGY

```
┌──────────────────────────────────────────────────────────────────────┐
│  Azure Virtual Network — rg-northbridge-credit-scoring-prod          │
│  Address space: 10.0.0.0/16 — UK South                              │
│                                                                      │
│  ┌─────────────────────┐   ┌──────────────────────────────────────┐ │
│  │  snet-integration   │   │  snet-ai                             │ │
│  │  10.0.1.0/24        │   │  10.0.2.0/24                         │ │
│  │                     │   │                                      │ │
│  │  • APIM (internal)  │   │  • AML Workspace (private endpoint)  │ │
│  │  • Functions        │   │  • Azure OpenAI (private endpoint)   │ │
│  └─────────────────────┘   └──────────────────────────────────────┘ │
│                                                                      │
│  ┌─────────────────────┐   ┌──────────────────────────────────────┐ │
│  │  snet-data          │   │  snet-management                     │ │
│  │  10.0.3.0/24        │   │  10.0.4.0/24                         │ │
│  │                     │   │                                      │ │
│  │  • Azure SQL PE     │   │  • Azure Bastion                     │ │
│  │  • Event Hubs PE    │   │  • Log Analytics PE                  │ │
│  │  • Key Vault PE     │   │  • Key Vault PE                      │ │
│  │  • Blob Storage PE  │   │                                      │ │
│  └─────────────────────┘   └──────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
         ▲                                     ▲
         │ Entra ID + Conditional Access        │ Existing NorthBridge
         │ Compliant device policy              │ Web Portal (HTTPS)
   [Underwriter Portal]                  [Applicant Journey]
   Internal — Entra-joined               External — no direct system
   corporate devices only                access to platform services
```

**Private DNS Zones deployed:**
- `privatelink.vaultcore.azure.net`
- `privatelink.blob.core.windows.net`
- `privatelink.database.windows.net`
- `privatelink.servicebus.windows.net`
- `privatelink.azureml.ms`
- `privatelink.api.azureml.ms`
- `privatelink.notebooks.azure.net`
- `privatelink.openai.azure.com`
- `privatelink.azure-api.net`

---

## 4. DATA FLOWS

### Flow 1 — Application Re-Scoring (Primary Path)

```
Applicant submits mortgage application
        │
        ▼
NorthBridge Web Portal
        │
        │ HTTPS — existing portal integration
        ▼
Re-scoring API (Azure Functions)
        │
        ├──── 1. Fetch applicant record ──────────────▶ Azure SQL
        │                                               (existing applicant data)
        │
        ├──── 2. Fetch CRM enrichment ───────────────▶ Microsoft Dataverse
        │                                               (relationship + history data)
        │
        ├──── 3. Request open banking feed ──────────▶ APIM Gateway
        │                                               │
        │                                               ▼
        │                                         AISP REST API
        │                                         (OAuth 2.0 — FCA-regulated)
        │                                               │
        │◀────────────────── Open banking payload ──────┘
        │
        ├──── 4. Submit enriched feature set ────────▶ AML Inference Endpoint
        │                                               │
        │                                         Re-scoring model
        │                                         (XGBoost / LightGBM)
        │                                               │
        │◀────────────────── Score + SHAP values ───────┘
        │
        ├──── 5. Generate FCA rationale ─────────────▶ Azure OpenAI (GPT-4o)
        │                                               (constrained prompt + SHAP)
        │◀────────────────── Plain English rationale ───┘
        │
        ├──── 6. Write decision event ───────────────▶ Azure Event Hubs
        │                                               │
        │                                               ▼
        │                                         Consumer Function
        │                                               │
        │                                               ├──▶ Azure SQL (audit table)
        │                                               └──▶ Blob Storage (WORM)
        │
        └──── 7. Return decision + rationale ────────▶ Web Portal → Applicant
```

**Decision outcomes:**
- **Approved:** Score above threshold — rationale explains positive factors
- **Conditional:** Score in review band — flagged to underwriter queue
- **Declined:** Score below threshold — FCA-compliant rationale sent to applicant

---

### Flow 2 — Underwriter Review (Conditional Outcomes)

```
Underwriter (Entra ID — compliant device)
        │
        │ Entra ID Conditional Access + MFA
        ▼
Underwriter Review Portal
        │
        ▼
Re-scoring API — review endpoint (Azure Functions)
        │
        ├──── Fetch decision record ──────────────────▶ Azure SQL (audit table)
        │     (includes SHAP attribution, rationale,
        │      model version, input feature state)
        │
        ├──── Underwriter reviews evidence
        │
        ├──── Override decision (approve / maintain decline)
        │     with documented override reason
        │
        └──── Write override event ───────────────────▶ Azure Event Hubs
                                                         │
                                                         ▼
                                                   Consumer Function
                                                         │
                                                         ├──▶ Azure SQL (audit table)
                                                         │    (override record linked
                                                         │     to original decision ID)
                                                         └──▶ Blob Storage (WORM)
```

**Override record captures:** Underwriter Entra UPN, timestamp, original decision, override decision, override reason (free text), decision ID linkage.

---

### Flow 3 — Audit Retrieval (FCA Examination)

```
FCA Examiner / NorthBridge Compliance
        │
        ▼
Compliance query interface (internal tooling)
        │
        ├──── Ad hoc query ───────────────────────────▶ Azure SQL (audit table)
        │     Filter by: date range, applicant ref,          (indexed, queryable)
        │     decision type, model version
        │
        └──── Forensic retrieval ─────────────────────▶ Azure Blob Storage (WORM)
                                                         (raw event replay from
                                                          Event Hubs capture)
```

---

## 5. SECURITY ARCHITECTURE

### Identity and Access

| Actor | Authentication | Authorisation |
|-------|---------------|--------------|
| Applicants | None (portal only) | No direct system access |
| Underwriters | Entra ID MFA + Conditional Access | RBAC role: `NB-Underwriter-Reviewer` |
| Compliance team | Entra ID MFA + Conditional Access | RBAC role: `NB-Compliance-ReadOnly` |
| Re-scoring API | Managed Identity | AML Inference Operator, SQL Data Writer, Event Hubs Data Sender |
| AML Workspace | Managed Identity | Key Vault Crypto User, Storage Blob Data Contributor |
| Azure OpenAI | Managed Identity | Cognitive Services User |
| APIM | Managed Identity | Key Vault Secrets User (AISP OAuth secret only) |
| Audit consumer | Managed Identity | Event Hubs Data Receiver, SQL Data Writer, Storage Blob Data Contributor |

### Encryption

| Data state | Encryption | Key management |
|-----------|-----------|---------------|
| At rest — SQL | TDE | Customer-managed key in Key Vault |
| At rest — Blob | SSE | Customer-managed key in Key Vault |
| At rest — Event Hubs | Platform encryption | Microsoft-managed (CMK available — evaluate for production hardening) |
| In transit | TLS 1.2 minimum | Azure platform enforced |
| AI model artefacts | AML Workspace encryption | Customer-managed key in Key Vault |

### Zero Trust Controls

- **No implicit network trust:** All service communication via private endpoints; no service-to-service calls over public internet
- **Identity verification on every request:** Managed Identity token validation for all service calls
- **Least privilege:** Every Managed Identity holds the minimum RBAC roles required — no Owner or Contributor assignments to application identities
- **Device compliance:** Underwriter access requires Entra-joined device with compliant posture (enforced via Conditional Access policy)
- **Continuous monitoring:** Azure Monitor alerts on: failed authentication attempts, unusual decision volumes, model error rate anomalies

---

## 6. INTEGRATION POINTS

| Integration | Protocol | Auth | Direction | Notes |
|-------------|----------|------|-----------|-------|
| NorthBridge Web Portal → Re-scoring API | HTTPS REST | Entra ID app registration (client credentials) | Inbound | Portal calls Functions endpoint; response includes decision + rationale |
| Re-scoring API → Azure SQL | Azure private endpoint | Managed Identity (SQL token) | Outbound (internal) | Applicant data fetch; audit write |
| Re-scoring API → Microsoft Dataverse | Dataverse Web API | Managed Identity (Entra service principal) | Outbound | CRM enrichment data |
| Re-scoring API → APIM | HTTPS (internal VNet) | Managed Identity | Outbound (internal) | Triggers AISP open banking request |
| APIM → AISP | HTTPS REST | OAuth 2.0 (client credentials, secret in Key Vault) | Outbound (internet egress) | Only internet-egress path in the platform |
| Re-scoring API → AML Endpoint | HTTPS (private endpoint) | Managed Identity | Outbound (internal) | Feature set submission; score + SHAP response |
| Re-scoring API → Azure OpenAI | HTTPS (private endpoint) | Managed Identity | Outbound (internal) | Rationale generation prompt |
| Consumer Function → Azure SQL | Azure private endpoint | Managed Identity | Outbound (internal) | Audit record write |
| Consumer Function → Blob Storage | Azure private endpoint | Managed Identity | Outbound (internal) | WORM event capture write |

---

## 7. OBSERVABILITY AND ALERTING

| Signal | Source | Alert condition |
|--------|--------|----------------|
| Decision error rate | Functions telemetry → Log Analytics | >2% error rate over 5-minute window |
| Model drift | AML data drift monitor | Feature distribution deviation >0.15 PSI |
| AISP latency | APIM analytics | P95 latency >3 seconds |
| Audit write failure | Event Hubs DLQ | Any message in dead-letter queue |
| Authentication anomaly | Entra ID sign-in logs | >5 failed sign-ins from single UPN in 10 minutes |
| Key Vault access | Key Vault audit logs | Any access from outside expected Managed Identity set |

All alerts route to Azure Monitor Action Group → NorthBridge IT Operations email + PagerDuty webhook (NorthBridge to configure PagerDuty integration key).

---

## 8. MVP SCOPE AND PRODUCTION HARDENING BOUNDARY

### In MVP Scope (90 days)

- Re-scoring API (Functions) — full decision workflow
- AML model training pipeline + inference endpoint
- Azure OpenAI rationale generation
- APIM AISP gateway (pending CONDITION 1 resolution)
- Azure SQL audit table
- Event Hubs streaming
- Entra ID underwriter authentication
- Private networking (VNet + private endpoints)
- Key Vault (CMK + AISP secret)
- Log Analytics + basic alerting

### Deferred to Production Hardening

- Azure Sentinel integration (SIEM)
- Dataverse connector (manual data extract acceptable for MVP)
- WORM retention lock on Blob Storage (Themis must confirm retention period first)
- APIM Developer Portal for NorthBridge integration team
- AML model retraining pipeline (batch schedule)
- Disaster recovery runbook and RTO/RPO formal definition
- Penetration test (Themis Gate 5 scope)

---

## 9. DEPLOYMENT TOPOLOGY

| Environment | Resource Group | Purpose | Notes |
|-------------|---------------|---------|-------|
| Development | `rg-northbridge-credit-scoring-dev` | Developer sandbox | Functions Consumption, SQL DTU, AML Compute auto-pause |
| Production | `rg-northbridge-credit-scoring-prod` | MVP production | Functions Premium, SQL Hyperscale, AML Standard |

GitHub Actions pipeline:
- `feature/*` branches → deploy to dev, run integration test suite
- `main` branch → deploy to prod with manual approval gate

---

## 10. OPEN ITEMS FOR THEMIS REVIEW

| Item | ADR | Risk if unresolved |
|------|-----|--------------------|
| Azure OpenAI rationale output — Consumer Duty compliance validation | ADR-003 | Production rationale may not satisfy FCA examination |
| FCA audit log retention period confirmation | ADR-006 | WORM lock may be set to incorrect duration |
| ISO 27001 Annex A.12.4 log management control coverage | ADR-006 | Compliance gap in pre-flight audit |
| NCSC CAF A2 alignment — private endpoint configuration | ADR-007 | CAF alignment claim unverified |
| ISO 42001 AI governance requirements | General | AI system governance obligations not yet mapped to architecture |

---

*Issued by: Vitruvius — BMAD Architect Agent, Talastron Kinetic AI*
*Engagement ID: TKA-NB-20260702-001*
*Talastron BMAD Pipeline: Stage 2 of 5 — Architecture (HLD Complete)*
