# deepbluemoon/rm architecture

> Architecture diagram of the GitHub repository deepbluemoon/rm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/deepbluemoon/rm
- Repository: https://github.com/deepbluemoon/rm

## Overview

This repository implements a consumer-contract risk analysis platform: users submit contract text or files, the backend extracts and structures clauses, runs detection and evidence-backed analysis, then presents results for review. Separate capabilities cover knowledge-base updates, feedback and evaluation, API access, and operational monitoring. The source excerpts and index support several backend call paths; UI-to-API and some service integrations are not shown, so those links are marked unverified rather than asserted.

Main entry points: [`backend/src/modules/structuring/structuring.pipeline.ts`](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/structuring/structuring.pipeline.ts) (Clause structuring), [`backend/src/db/pool.ts`](https://github.com/deepbluemoon/rm/blob/main/backend/src/db/pool.ts) (MySQL database), [`backend/src/modules/results/results.service.ts`](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/results/results.service.ts) (Results and explanations), [`backend/src/modules/gates/gates.service.ts`](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/gates/gates.service.ts) (Policy gates)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["User application"]
  node_frontend["Analysis workspace"]
  node_api_client["API client<br/>[client.ts]"]
end

subgraph group_analysis["Contract analysis"]
  node_intake["Document intake<br/>[intake.routes.ts]"]
  node_extract["Text extraction"]
  node_structuring["Clause structuring"]
  node_deid["PII deidentification<br/>[deid.service.ts]"]
  node_detection["Risk detection"]
  node_model_api["Model API client<br/>[client.ts]"]
  node_model_server["Model gateway<br/>[main.py]"]
  node_evidence["Evidence search"]
  node_results["Results and explanations<br/>[results.service.ts]"]
  node_analysis_routes["Analysis routes<br/>[analysis.routes.ts]"]
end

subgraph group_knowledge["Knowledge and review"]
  node_knowledge_ingest["Knowledge ingestion<br/>[ingest.service.ts]"]
  node_feedback["Feedback review"]
  node_evaluation["Expert evaluation"]
end

subgraph group_platform["Platform services"]
  node_auth["Authentication and roles"]
  node_gates["Policy gates<br/>[gates.service.ts]"]
  node_database[("MySQL database<br/>[pool.ts]")]
end

subgraph group_operations["Operations dashboard"]
  node_ops_ui["Operations dashboard<br/>[app.js]"]
  node_ops_server["Operations API<br/>[server.mjs]"]
end

node_user(("Contract user"))

node_user -->|"submits contract"| node_frontend
node_frontend -.->|"uses API"| node_api_client
node_api_client -.->|"sends request"| node_intake
node_intake -->|"extracts text"| node_extract
node_intake -->|"checks gates"| node_gates
node_analysis_routes -.->|"queues analysis"| node_structuring
node_structuring -->|"extracts document"| node_extract
node_structuring -->|"deidentifies text"| node_deid
node_structuring -->|"calls model client"| node_model_api
node_analysis_routes -->|"runs detection"| node_detection
node_analysis_routes -->|"loads results"| node_results
node_results -->|"reads evidence"| node_evidence
node_results -->|"raises gates"| node_gates
node_model_api -.->|"calls gateway"| node_model_server
node_knowledge_ingest -->|"writes batches"| node_database
node_knowledge_ingest -->|"checks gates"| node_gates
node_feedback -->|"loads clause detail"| node_results
node_feedback -->|"reads and updates"| node_database
node_gates -->|"records events"| node_database
node_structuring -->|"updates stages"| node_database
node_auth -.->|"reads roles"| node_database
node_ops_ui -.->|"requests status"| node_ops_server

click node_frontend "https://github.com/deepbluemoon/rm/tree/main/frontend/src/views"
click node_api_client "https://github.com/deepbluemoon/rm/blob/main/frontend/src/api/client.ts"
click node_intake "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/intake/intake.routes.ts"
click node_extract "https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/extract"
click node_structuring "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/structuring/structuring.pipeline.ts"
click node_deid "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/deid/deid.service.ts"
click node_detection "https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/detection"
click node_model_api "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/modelApi/client.ts"
click node_model_server "https://github.com/deepbluemoon/rm/blob/main/model-server/app/main.py"
click node_evidence "https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/evidence"
click node_results "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/results/results.service.ts"
click node_analysis_routes "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/analysis/analysis.routes.ts"
click node_knowledge_ingest "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/knowledge/ingest.service.ts"
click node_feedback "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/feedbackReview/feedbackReview.service.ts"
click node_evaluation "https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/evaluation"
click node_auth "https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/auth"
click node_gates "https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/gates/gates.service.ts"
click node_database "https://github.com/deepbluemoon/rm/blob/main/backend/src/db/pool.ts"
click node_ops_ui "https://github.com/deepbluemoon/rm/blob/main/ops-dashboard/src/public/app.js"
click node_ops_server "https://github.com/deepbluemoon/rm/blob/main/ops-dashboard/src/server.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_frontend,node_api_client,node_user toneBlue
class node_intake,node_extract,node_structuring,node_deid,node_detection,node_model_api,node_model_server,node_evidence,node_results,node_analysis_routes toneAmber
class node_knowledge_ingest,node_feedback,node_evaluation toneMint
class node_auth,node_gates,node_database toneRose
class node_ops_ui,node_ops_server toneIndigo
```

## Components

### User application

- [Analysis workspace](https://github.com/deepbluemoon/rm/tree/main/frontend/src/views): `frontend/src/views`
- [API client](https://github.com/deepbluemoon/rm/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### Contract analysis

- [Document intake](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/intake/intake.routes.ts): `backend/src/modules/intake/intake.routes.ts`
- [Text extraction](https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/extract): `backend/src/modules/extract`
- [Clause structuring](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/structuring/structuring.pipeline.ts): `backend/src/modules/structuring/structuring.pipeline.ts`
- [PII deidentification](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/deid/deid.service.ts): `backend/src/modules/deid/deid.service.ts`
- [Risk detection](https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/detection): `backend/src/modules/detection`
- [Model API client](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/modelApi/client.ts): `backend/src/modules/modelApi/client.ts`
- [Model gateway](https://github.com/deepbluemoon/rm/blob/main/model-server/app/main.py): `model-server/app/main.py`
- [Evidence search](https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/evidence): `backend/src/modules/evidence`
- [Results and explanations](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/results/results.service.ts): `backend/src/modules/results/results.service.ts`
- [Analysis routes](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/analysis/analysis.routes.ts): `backend/src/modules/analysis/analysis.routes.ts`

### Knowledge and review

- [Knowledge ingestion](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/knowledge/ingest.service.ts): `backend/src/modules/knowledge/ingest.service.ts`
- [Feedback review](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/feedbackReview/feedbackReview.service.ts): `backend/src/modules/feedbackReview/feedbackReview.service.ts`
- [Expert evaluation](https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/evaluation): `backend/src/modules/evaluation`

### Platform services

- [Authentication and roles](https://github.com/deepbluemoon/rm/tree/main/backend/src/modules/auth): `backend/src/modules/auth`
- [Policy gates](https://github.com/deepbluemoon/rm/blob/main/backend/src/modules/gates/gates.service.ts): `backend/src/modules/gates/gates.service.ts`
- [MySQL database](https://github.com/deepbluemoon/rm/blob/main/backend/src/db/pool.ts): `backend/src/db/pool.ts`

### Operations dashboard

- [Operations dashboard](https://github.com/deepbluemoon/rm/blob/main/ops-dashboard/src/public/app.js): `ops-dashboard/src/public/app.js`
- [Operations API](https://github.com/deepbluemoon/rm/blob/main/ops-dashboard/src/server.mjs): `ops-dashboard/src/server.mjs`

### Other components

- **Contract user**

## Connections

- Contract user → Analysis workspace: submits contract
- Analysis workspace → API client: uses API
- API client → Document intake: sends request
- Document intake → Text extraction: extracts text (evidence: `backend/src/modules/intake/intake.routes.ts`)
- Document intake → Policy gates: checks gates (evidence: `backend/src/modules/intake/intake.routes.ts`)
- Analysis routes → Clause structuring: queues analysis
- Clause structuring → Text extraction: extracts document (evidence: `backend/src/modules/structuring/structuring.pipeline.ts`)
- Clause structuring → PII deidentification: deidentifies text (evidence: `backend/src/modules/structuring/structuring.pipeline.ts`)
- Clause structuring → Model API client: calls model client (evidence: `backend/src/modules/structuring/structuring.pipeline.ts`)
- Analysis routes → Risk detection: runs detection (evidence: `backend/src/modules/analysis/analysis.routes.ts`)
- Analysis routes → Results and explanations: loads results (evidence: `backend/src/modules/analysis/analysis.routes.ts`)
- Results and explanations → Evidence search: reads evidence (evidence: `backend/src/modules/results/results.service.ts`)
- Results and explanations → Policy gates: raises gates (evidence: `backend/src/modules/results/results.service.ts`)
- Model API client → Model gateway: calls gateway
- Knowledge ingestion → MySQL database: writes batches (evidence: `backend/src/modules/knowledge/ingest.service.ts`)
- Knowledge ingestion → Policy gates: checks gates (evidence: `backend/src/modules/knowledge/ingest.service.ts`)
- Feedback review → Results and explanations: loads clause detail (evidence: `backend/src/modules/feedbackReview/feedbackReview.service.ts`)
- Feedback review → MySQL database: reads and updates (evidence: `backend/src/modules/feedbackReview/feedbackReview.service.ts`)
- Policy gates → MySQL database: records events (evidence: `backend/src/modules/gates/gates.service.ts`)
- Clause structuring → MySQL database: updates stages (evidence: `backend/src/modules/structuring/structuring.pipeline.ts`)
- Authentication and roles → MySQL database: reads roles
- Operations dashboard → Operations API: requests status
