# kaihag250/riscom architecture

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

- Interactive diagram: https://gitdiagram.com/kaihag250/riscom
- Repository: https://github.com/kaihag250/riscom

## Overview

Riscom extracts risk information from selected text, computes or evaluates risk measures, and presents communication guidance in a browser plugin. The documented primary workflow is visible in the plugin and both server variants: text is submitted for LLM inference, passed to a logic pipeline, and returned as advice. The repository also contains model fine-tuning, synthetic-data tools, evaluation, and experimental logic work. Server and logic paths are kept deployment-specific; unsampled subsystems are represented only at documented directory paths.

Main entry points: [`plugin/popup.js`](https://github.com/kaihag250/riscom/blob/main/plugin/popup.js) (Plugin UI), [`server/server_bwCloud/server.py`](https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/server.py) (BWCloud API), [`server/server_runpod/server.py`](https://github.com/kaihag250/riscom/blob/main/server/server_runpod/server.py) (RunPod API), [`server/server_bwCloud/inference_worker.py`](https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/inference_worker.py) (BWCloud inference)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser plugin"]
  node_popup["Plugin UI<br/>[popup.js]"]
  node_content["Selection handler<br/>[content.js]"]
end

subgraph group_runtime["Inference runtime"]
  node_bwserver["BWCloud API<br/>[server.py]"]
  node_bwworker["BWCloud inference"]
  node_bwlogic["BWCloud evaluator<br/>[logik_15_07.py]"]
  node_gpuserver["RunPod API<br/>[server.py]"]
  node_gpuworker["RunPod inference"]
  node_gpulogic["RunPod evaluator<br/>[logik_16_07.py]"]
end

subgraph group_model["Model development"]
  node_adapter["Fine-tuned adapter"]
  node_training["Fine-tuning"]
  node_data_tools["Data generation tools"]
  node_evaluation["Model evaluation"]
end

subgraph group_research["Research logic"]
  node_research_logic["Experimental evaluator<br/>[logic.py]"]
  node_risk_schema["Risk data schema<br/>[pydantic_model.py]"]
  node_deserializer["Output deserializer<br/>[deserializer.py]"]
end

node_user(("Reader"))
node_webpage["Web page"]
node_base_model["Mistral base model"]

node_user -->|"reads"| node_webpage
node_webpage -->|"selects text"| node_popup
node_popup -.->|"submits text"| node_bwserver
node_popup -.->|"submits text"| node_gpuserver
node_bwserver -->|"runs inference"| node_bwworker
node_bwserver -->|"evaluates output"| node_bwlogic
node_bwworker -->|"loads model"| node_adapter
node_bwworker -->|"loads base"| node_base_model
node_bwworker -->|"returns fields"| node_bwserver
node_bwlogic -->|"returns advice"| node_bwserver
node_gpuserver -->|"runs inference"| node_gpuworker
node_gpuserver -->|"evaluates output"| node_gpulogic
node_gpuworker -->|"loads adapter"| node_adapter
node_gpuworker -->|"loads base"| node_base_model
node_gpuworker -->|"returns fields"| node_gpuserver
node_gpulogic -->|"returns advice"| node_gpuserver
node_bwserver -->|"returns advice"| node_popup
node_gpuserver -->|"returns advice"| node_popup
node_popup -->|"displays guidance"| node_user
node_content -.->|"reads selection"| node_webpage
node_training -->|"trains adapter"| node_adapter
node_data_tools -->|"supports data"| node_training
node_evaluation -->|"evaluates model"| node_adapter
node_research_logic -.->|"loads risk data"| node_deserializer
node_research_logic -.->|"uses schema"| node_risk_schema

click node_popup "https://github.com/kaihag250/riscom/blob/main/plugin/popup.js"
click node_content "https://github.com/kaihag250/riscom/blob/main/plugin/content.js"
click node_bwserver "https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/server.py"
click node_bwworker "https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/inference_worker.py"
click node_bwlogic "https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/logik_15_07.py"
click node_gpuserver "https://github.com/kaihag250/riscom/blob/main/server/server_runpod/server.py"
click node_gpuworker "https://github.com/kaihag250/riscom/blob/main/server/server_runpod/inference_worker_1507.py"
click node_gpulogic "https://github.com/kaihag250/riscom/blob/main/server/server_runpod/logik_16_07.py"
click node_adapter "https://github.com/kaihag250/riscom/tree/main/LLM/adapter"
click node_training "https://github.com/kaihag250/riscom/tree/main/LLM/finetuning"
click node_data_tools "https://github.com/kaihag250/riscom/tree/main/LLM/tools"
click node_evaluation "https://github.com/kaihag250/riscom/tree/main/LLM/evaluation"
click node_research_logic "https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/logic.py"
click node_risk_schema "https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/pydantic_model.py"
click node_deserializer "https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/deserializer.py"

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_popup,node_content toneBlue
class node_bwserver,node_bwworker,node_bwlogic,node_gpuserver,node_gpuworker,node_gpulogic toneAmber
class node_adapter,node_training,node_data_tools,node_evaluation toneMint
class node_research_logic,node_risk_schema,node_deserializer toneRose
class node_user,node_webpage,node_base_model toneIndigo
```

## Components

### Browser plugin

- [Plugin UI](https://github.com/kaihag250/riscom/blob/main/plugin/popup.js): `plugin/popup.js`
- [Selection handler](https://github.com/kaihag250/riscom/blob/main/plugin/content.js): `plugin/content.js`

### Inference runtime

- [BWCloud API](https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/server.py): `server/server_bwCloud/server.py`
- [BWCloud inference](https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/inference_worker.py): `server/server_bwCloud/inference_worker.py`
- [BWCloud evaluator](https://github.com/kaihag250/riscom/blob/main/server/server_bwCloud/logik_15_07.py): `server/server_bwCloud/logik_15_07.py`
- [RunPod API](https://github.com/kaihag250/riscom/blob/main/server/server_runpod/server.py): `server/server_runpod/server.py`
- [RunPod inference](https://github.com/kaihag250/riscom/blob/main/server/server_runpod/inference_worker_1507.py): `server/server_runpod/inference_worker_1507.py`
- [RunPod evaluator](https://github.com/kaihag250/riscom/blob/main/server/server_runpod/logik_16_07.py): `server/server_runpod/logik_16_07.py`

### Model development

- [Fine-tuned adapter](https://github.com/kaihag250/riscom/tree/main/LLM/adapter): `LLM/adapter`
- [Fine-tuning](https://github.com/kaihag250/riscom/tree/main/LLM/finetuning): `LLM/finetuning`
- [Data generation tools](https://github.com/kaihag250/riscom/tree/main/LLM/tools): `LLM/tools`
- [Model evaluation](https://github.com/kaihag250/riscom/tree/main/LLM/evaluation): `LLM/evaluation`

### Research logic

- [Experimental evaluator](https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/logic.py): `research/Logik_Formatierung/logic.py`
- [Risk data schema](https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/pydantic_model.py): `research/Logik_Formatierung/pydantic_model.py`
- [Output deserializer](https://github.com/kaihag250/riscom/blob/main/research/Logik_Formatierung/deserializer.py): `research/Logik_Formatierung/deserializer.py`

### Other components

- **Reader**
- **Web page**
- **Mistral base model**

## Connections

- Reader → Web page: reads
- Web page → Plugin UI: selects text
- Plugin UI → BWCloud API: submits text
- Plugin UI → RunPod API: submits text
- BWCloud API → BWCloud inference: runs inference
- BWCloud API → BWCloud evaluator: evaluates output
- BWCloud inference → Fine-tuned adapter: loads model
- BWCloud inference → Mistral base model: loads base
- BWCloud inference → BWCloud API: returns fields
- BWCloud evaluator → BWCloud API: returns advice
- RunPod API → RunPod inference: runs inference
- RunPod API → RunPod evaluator: evaluates output
- RunPod inference → Fine-tuned adapter: loads adapter
- RunPod inference → Mistral base model: loads base
- RunPod inference → RunPod API: returns fields
- RunPod evaluator → RunPod API: returns advice
- BWCloud API → Plugin UI: returns advice
- RunPod API → Plugin UI: returns advice
- Plugin UI → Reader: displays guidance
- Selection handler → Web page: reads selection
- Fine-tuning → Fine-tuned adapter: trains adapter
- Data generation tools → Fine-tuning: supports data
- Model evaluation → Fine-tuned adapter: evaluates model
- Experimental evaluator → Output deserializer: loads risk data
- Experimental evaluator → Risk data schema: uses schema
