# nickjee86/loanbuddy-ai-os architecture

> Architecture diagram of the GitHub repository nickjee86/loanbuddy-ai-os, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nickjee86/loanbuddy-ai-os
- Repository: https://github.com/nickjee86/loanbuddy-ai-os

## Overview

LoanBuddy AI OS is a staff-facing CRM and AI conversation-control product. Its central workflow spans application intake, document and consent handling, credit assessment, LMS submission, and post-approval fulfilment, alongside CRM casework and follow-up. The WhatsApp console supports conversation review, AI takeover, manual message queuing, and resumption. Google Sheets is the documented workbook-backed data store; document uploads also use Microsoft Graph in the sampled route. Several capabilities are evident from the tree and README but their route internals were not sampled, so their wiring is intentionally limited.

Main entry points: [`app/auth.ts`](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/auth.ts) (Session and roles), [`app/api/crm/route.ts`](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/crm/route.ts) (CRM data API), [`app/access-control.mjs`](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/access-control.mjs) (Access control), [`app/api/whatsapp/route.ts`](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/whatsapp/route.ts) (WhatsApp API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_crm["CRM &amp; Conversations"]
  node_home["CRM workspace<br/>[page.tsx]"]
  node_whatsapp_ui["WhatsApp console"]
  node_crm_api["CRM data API<br/>[route.ts]"]
  node_whatsapp_api["WhatsApp API<br/>[route.ts]"]
  node_customer360["Customer 360<br/>[customer-360.mjs]"]
  node_casework["Case workspace<br/>[case-workspace.mjs]"]
end

subgraph group_origination["Application &amp; Credit"]
  node_application_api["Application intake<br/>[route.ts]"]
  node_application_guard["Application checks"]
  node_documents_api["Document upload<br/>[route.ts]"]
  node_consent_api["Bureau consent<br/>[route.ts]"]
  node_credit_api["Credit policy API<br/>[route.ts]"]
  node_credit_engine["Credit assessment<br/>[credit-engine.mjs]"]
  node_lms_api["LMS queue API<br/>[route.ts]"]
  node_lms_rules["LMS eligibility<br/>[lms-queue.mjs]"]
end

subgraph group_servicing["Servicing Operations"]
  node_followup_api["Follow-up actions<br/>[route.ts]"]
  node_followup_settings["Follow-up settings<br/>[route.ts]"]
  node_followup_runtime["Follow-up runtime"]
  node_fulfilment_api["Fulfilment actions<br/>[route.ts]"]
  node_fulfilment_rules["Fulfilment rules"]
  node_reports["Reports<br/>[reports.tsx]"]
end

subgraph group_platform["Access &amp; Data"]
  node_auth["Session and roles<br/>[auth.ts]"]
  node_access["Access control<br/>[access-control.mjs]"]
end

node_staff(("CRM staff"))
node_sheets[("Google Sheets")]
node_outbox[("Message outbox")]
node_graph["Microsoft Graph"]

node_staff -->|"opens workspace"| node_home
node_staff -->|"opens conversations"| node_whatsapp_ui
node_staff -->|"views reports"| node_reports
node_crm_api -->|"verifies session"| node_auth
node_crm_api -->|"reads workbook"| node_sheets
node_crm_api -->|"filters records"| node_access
node_crm_api -->|"serves CRM data"| node_customer360
node_crm_api -->|"serves case data"| node_casework
node_whatsapp_api -->|"verifies session"| node_auth
node_whatsapp_api -->|"reads and writes"| node_sheets
node_whatsapp_api -->|"queues messages"| node_outbox
node_whatsapp_api -->|"checks access"| node_access
node_application_api -->|"verifies session"| node_auth
node_application_api -->|"checks approval"| node_application_guard
node_application_api -->|"checks case scope"| node_access
node_application_api -->|"reads and writes"| node_sheets
node_documents_api -->|"verifies session"| node_auth
node_documents_api -->|"checks case scope"| node_access
node_documents_api -->|"logs documents"| node_sheets
node_documents_api -->|"uploads files"| node_graph
node_consent_api -->|"verifies session"| node_auth
node_consent_api -->|"updates consent records"| node_sheets
node_credit_api -->|"verifies session"| node_auth
node_credit_api -->|"reads and writes policy"| node_sheets
node_lms_api -->|"verifies session"| node_auth
node_lms_api -->|"checks queue access"| node_access
node_lms_api -->|"reads and writes queue"| node_sheets
node_lms_api -->|"checks eligibility"| node_lms_rules
node_followup_api -->|"verifies session"| node_auth
node_followup_api -->|"filters cases"| node_access
node_followup_api -->|"reads and writes"| node_sheets
node_followup_settings -->|"verifies session"| node_auth
node_followup_settings -->|"reads and writes settings"| node_sheets
node_followup_settings -->|"reads settings"| node_followup_runtime
node_fulfilment_api -->|"verifies session"| node_auth
node_fulfilment_api -->|"reads and writes"| node_sheets
node_fulfilment_api -->|"evaluates action"| node_fulfilment_rules

click node_home "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/page.tsx"
click node_whatsapp_ui "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/whatsapp-console.tsx"
click node_crm_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/crm/route.ts"
click node_whatsapp_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/whatsapp/route.ts"
click node_customer360 "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/customer-360.mjs"
click node_casework "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/case-workspace.mjs"
click node_application_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/applications/route.ts"
click node_application_guard "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/application-guard.mjs"
click node_documents_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/documents/route.ts"
click node_consent_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/credit-bureau-consent/route.ts"
click node_credit_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/credit-policy/route.ts"
click node_credit_engine "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/credit-engine.mjs"
click node_lms_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/lms-queue/route.ts"
click node_lms_rules "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/lms-queue.mjs"
click node_followup_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/follow-up-actions/route.ts"
click node_followup_settings "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/follow-up-settings/route.ts"
click node_followup_runtime "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/follow-up-runtime.mjs"
click node_fulfilment_api "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/fulfilment/route.ts"
click node_fulfilment_rules "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/fulfilment-control.mjs"
click node_reports "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/reports.tsx"
click node_auth "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/auth.ts"
click node_access "https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/access-control.mjs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_whatsapp_ui,node_crm_api,node_whatsapp_api,node_customer360,node_casework toneBlue
class node_application_api,node_application_guard,node_documents_api,node_consent_api,node_credit_api,node_credit_engine,node_lms_api,node_lms_rules,node_sheets,node_outbox toneAmber
class node_followup_api,node_followup_settings,node_followup_runtime,node_fulfilment_api,node_fulfilment_rules,node_reports toneMint
class node_auth,node_access toneRose
class node_staff,node_graph toneIndigo
```

## Components

### CRM & Conversations

- [CRM workspace](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/page.tsx): `app/page.tsx`
- [WhatsApp console](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/whatsapp-console.tsx): `app/whatsapp-console.tsx`
- [CRM data API](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/crm/route.ts): `app/api/crm/route.ts`
- [WhatsApp API](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/whatsapp/route.ts): `app/api/whatsapp/route.ts`
- [Customer 360](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/customer-360.mjs): `app/customer-360.mjs`
- [Case workspace](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/case-workspace.mjs): `app/case-workspace.mjs`

### Application & Credit

- [Application intake](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/applications/route.ts): `app/api/applications/route.ts`
- [Application checks](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/application-guard.mjs): `app/application-guard.mjs`
- [Document upload](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/documents/route.ts): `app/api/documents/route.ts`
- [Bureau consent](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/credit-bureau-consent/route.ts): `app/api/credit-bureau-consent/route.ts`
- [Credit policy API](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/credit-policy/route.ts): `app/api/credit-policy/route.ts`
- [Credit assessment](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/credit-engine.mjs): `app/credit-engine.mjs`
- [LMS queue API](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/lms-queue/route.ts): `app/api/lms-queue/route.ts`
- [LMS eligibility](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/lms-queue.mjs): `app/lms-queue.mjs`

### Servicing Operations

- [Follow-up actions](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/follow-up-actions/route.ts): `app/api/follow-up-actions/route.ts`
- [Follow-up settings](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/follow-up-settings/route.ts): `app/api/follow-up-settings/route.ts`
- [Follow-up runtime](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/follow-up-runtime.mjs): `app/follow-up-runtime.mjs`
- [Fulfilment actions](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/api/fulfilment/route.ts): `app/api/fulfilment/route.ts`
- [Fulfilment rules](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/fulfilment-control.mjs): `app/fulfilment-control.mjs`
- [Reports](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/reports.tsx): `app/reports.tsx`

### Access & Data

- [Session and roles](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/auth.ts): `app/auth.ts`
- [Access control](https://github.com/nickjee86/loanbuddy-ai-os/blob/main/app/access-control.mjs): `app/access-control.mjs`

### Other components

- **CRM staff**
- **Google Sheets**
- **Message outbox**
- **Microsoft Graph**

## Connections

- CRM staff → CRM workspace: opens workspace
- CRM staff → WhatsApp console: opens conversations
- CRM staff → Reports: views reports
- CRM data API → Session and roles: verifies session
- CRM data API → Google Sheets: reads workbook
- CRM data API → Access control: filters records
- CRM data API → Customer 360: serves CRM data
- CRM data API → Case workspace: serves case data
- WhatsApp API → Session and roles: verifies session
- WhatsApp API → Google Sheets: reads and writes
- WhatsApp API → Message outbox: queues messages
- WhatsApp API → Access control: checks access
- Application intake → Session and roles: verifies session
- Application intake → Application checks: checks approval
- Application intake → Access control: checks case scope
- Application intake → Google Sheets: reads and writes
- Document upload → Session and roles: verifies session
- Document upload → Access control: checks case scope
- Document upload → Google Sheets: logs documents
- Document upload → Microsoft Graph: uploads files
- Bureau consent → Session and roles: verifies session
- Bureau consent → Google Sheets: updates consent records
- Credit policy API → Session and roles: verifies session
- Credit policy API → Google Sheets: reads and writes policy
- LMS queue API → Session and roles: verifies session
- LMS queue API → Access control: checks queue access
- LMS queue API → Google Sheets: reads and writes queue
- LMS queue API → LMS eligibility: checks eligibility
- Follow-up actions → Session and roles: verifies session
- Follow-up actions → Access control: filters cases
- Follow-up actions → Google Sheets: reads and writes
- Follow-up settings → Session and roles: verifies session
- Follow-up settings → Google Sheets: reads and writes settings
- Follow-up settings → Follow-up runtime: reads settings
- Fulfilment actions → Session and roles: verifies session
- Fulfilment actions → Google Sheets: reads and writes
- Fulfilment actions → Fulfilment rules: evaluates action
