ArchitectureDecision-led · Open methodology · Reviewer-ready

The whole stack,
on one page.

Every layer, every interface, every audit boundary. The same map we hand the DPO, our DD partners, and any architect evaluating ARIA. No black boxes — the decision registry is the source of truth, and it's public.

System Map

Five layers, one audit trail.

Surfaces dispatch to application services. Application calls pure engine functions. Engine reads from tenant-scoped data. Data sits on Saudi-residency infra. Every step between writes an event the DPO can replay.

Scroll progress0 / 5

Keep scrolling — each layer unlocks the modules below it.

01Surfaces

Where humans and partners touch ARIA.

Web app (Next.js 15 / RSC)Native mobile (planned)REST + Webhooks APIAdmin CLI · DPO console
02Application

Request handling, business logic, multi-tenant routing.

Intake spine (D/I/C + B/I/E)Memo composer + diffMarketplace cross-linkWealth Companion dashboard
03Engine

The math. Pure functions, hash-stamped per invocation.

DCF + comparablesMonte Carlo (3+ scenarios · P5–P95)Claude-authored NLG rationaleRisk taxonomy (4 × 5 likelihood × severity)
04Data

Tenant-scoped storage, encrypted at rest.

Postgres 16 · row-level securitypgcrypto column encryptionS3 object store · KMS envelopeAudit ledger · tamper-evident
05Infra

Saudi-residency primary, in-region backups.

AWS me-south-1 (Bahrain)Cloudflare WAF + DDoS shieldALB · multi-AZ failoverObservability · OpenTelemetry + Grafana

Multi-tenancy

Row-level security on every query.

Tenants share infrastructure, not data. Isolation is enforced at the row level by Postgres RLS policies — not at the application boundary, where it can be bypassed by a coding mistake.

  • Every row carries a tenant_id. The query planner refuses cross-tenant joins.

  • Per-tenant KMS keys envelope encrypted columns. A rogue dump leaks ciphertext only.

  • Business-config is per-tenant — feature flags, regulator posture, signed addenda.

  • Audit trail is tenant-scoped. The DPO replays only their own history.

Tenant catalogue · sample
3 of 142 live
TEN-0042

KAFD Capital

Investment House · Riyadh

12,481 rows

row-level-secured

key-arn=…kms/4f7a…2c1KMS · isolated
TEN-0118

Red Sea Pavilion JV

Developer · Jeddah

3,902 rows

row-level-secured

key-arn=…kms/9e2b…7d4KMS · isolated
TEN-0237

Khobar Households

Individual · Eastern Province

87,210 rows

row-level-secured

key-arn=…kms/1d8c…a55KMS · isolated
Postgres RLS · per-row enforcementTenant isolation

Intake Spine

Six audiences. One engine. Three rubrics.

B2B intake (Developer, Investment House, Corporate Housing) and B2C intake (Buyer, Investor, Expat) collapse into the same scoring engine. The language and the output surface change. The math doesn't.

B2B intake

D

Developer

40 fields

I

Investment House

50 fields

C

Corporate Housing

30 fields

ARIA Engine

Scoring
Engine

DCF · MC · NLG

B2C intake

B

Buyer

7–11 fields

I

Investor

7–11 fields

E

Expat

7–11 fields

↓ Engine output branches by audience

IC Memo

Institutional · committee-ready

Wealth Companion

Individual · Safety Score

Match Feed

Marketplace · cross-link

Audit trail · tamper-evident

Evidence-backed from intake to memo.

Every material change writes a durable governance event with prior-state evidence. Reviewers can trace how a decision moved from intake to memo without reading implementation details.

Audit event samplepostgres
{
  event:       "Memo signed",
  workspace:   "Tenant workspace",
  actor:       "Committee member",
  time:        "2026-05-11T09:41:21Z",
  fingerprint: "0xe97f…03ab",
  previous:    "0x2d4a…91ff"
}
event #01Intake created

workspace=Tenant workspace · actor=Analyst

0x7af3…d2c1

prev: GENESIS

event #02Scoring completed

workspace=Tenant workspace · actor=ARIA engine

0xb18c…5e80

prev: 0x7af3…d2c1

event #03Memo composed

workspace=Tenant workspace · actor=Analyst

0x2d4a…91ff

prev: 0xb18c…5e80

event #04Memo signed

workspace=Tenant workspace · actor=Committee member

0xe97f…03ab

prev: 0x2d4a…91ff

Verifier · audit-chain integrity check→ returns verified or first issue found

Interaction Surfaces

Four ways in. Four ways out. Seven KSA adapters.

Every surface speaks to the same application layer. KSA regulator and bank adapters carry their posture — read-only, advisory, or write — declared per tenant in business-config.

Inputs · → ARIA4 surfaces

Web app

Next.js 15 RSC · EN + AR

Native mobile

iOS + Android

REST API

Developer tier · usage-metered

Admin CLI

DPO + ops · audit-logged

Outputs · ARIA →4 surfaces

Signed PDF

Memo export · EN / AR

Excel + CSV

Pro / Elite / B2B all tiers

Webhooks

Event-driven · Enterprise

Read-only adapter

ERP / MLS · custom

KSA Adapters · posture per tenant7 live
Nafath
Write
Identity · Saudi KYC
Decision 0079
SIMAH
Read
Credit · pre-approval
B2C Pro+
SAMA
Posture
Central bank · advisory
Per tenant
REGA
Read
Ownership · zoning
Live
Wafi
Read
Off-plan · escrow milestones
Decision 0075
ZATCA
Write
E-invoicing · VAT
Decision 0078
SNB / Al Rajhi / Riyad
Write
Mortgage pre-approval
B2C Pro+

Decision Registry · public

47 architecture decisions. All public.

Every load-bearing decision lives in the decision registry — context, consequences, and the moment we changed our mind. The same registry the DPO reads. Eleven of the most-referenced decisions are below.

Ref0001
Multi-tenancy model · row-level security
Accepted
2026-01-12
Ref0005
Audit trail · tamper-evident evidence
Active
2026-02-04
Ref0013
Promotion decision · client demo → pilot → production
Active
2026-02-21
Ref0015
Column encryption · pgcrypto and KMS controls
Active
2026-03-08
Ref0042
Memo composer · diff + signed PDF export
Accepted
2026-03-19
Ref0058
Marketplace cross-link · mandate-mandate matching
Accepted
2026-04-02
Ref0075
Wafi adapter · escrow milestone read-mode
Active
2026-04-17
Ref0078
ZATCA · production e-invoicing posture
Active
2026-04-22
Ref0079
Nafath KYC · demo continuity path
Active
2026-04-30
Ref0084
Premium-residency restricted zones · M/14 enforcement
Accepted
2026-05-04
Ref0091
Native mobile shell · iOS + Android
Planned
2026-05-09
Showing 11 of 47 · sorted by reference frequencyBrowse all decisions →

Architect · DPO · DD reviewer

Bring your team. We'll walk any layer.

Bring your DPO. Bring your DD team. Bring your CTO. We'll walk through any layer in depth — and send you the PIA draft, sub-processor list, cross-border assessment, and the methodology pack under NDA.