# mgalen007/credix architecture

> Architecture diagram of the GitHub repository mgalen007/credix, 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/mgalen007/credix
- Repository: https://github.com/mgalen007/credix

## Overview

Credit Analysis Agent accepts a PDF and produces a validated credit memo through extraction, deterministic-assisted risk analysis, and memo drafting. The API is the evidenced runtime orchestrator; shared Pydantic schemas define each stage’s typed data. The README also describes a Streamlit upload/results interface, but its sampled source is empty, so its connection to the API is not asserted. Model-provider wiring is configurable; analysis additionally calls an external currency-rate service when needed.

Main entry points: [`api/main.py`](https://github.com/mgalen007/credix/blob/main/api/main.py) (Analyze API), [`agents/analysis.py`](https://github.com/mgalen007/credix/blob/main/agents/analysis.py) (Risk analysis), [`agents/extraction.py`](https://github.com/mgalen007/credix/blob/main/agents/extraction.py) (Financial extraction), [`agents/memo.py`](https://github.com/mgalen007/credix/blob/main/agents/memo.py) (Memo drafting)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User interfaces"]
  node_api["Analyze API<br/>[main.py]"]
  node_streamlit["Streamlit interface<br/>[streamlit_app.py]"]
end

subgraph group_pipeline["Credit workflow"]
  node_extract["Financial extraction<br/>[extraction.py]"]
  node_analysis["Risk analysis<br/>[analysis.py]"]
  node_ratios["Ratio calculator<br/>[analysis.py]"]
  node_currency["Currency conversion<br/>[analysis.py]"]
  node_memo["Memo drafting<br/>[memo.py]"]
end

subgraph group_support["Models and schemas"]
  node_schemas["Validated data models<br/>[models.py]"]
  node_model_config["Agent model configuration<br/>[models.py]"]
end

node_user(("Document submitter"))
node_llm["LLM provider"]
node_rates["Frankfurter rates API"]

node_user -->|"uploads PDF"| node_api
node_api -->|"runs extraction"| node_extract
node_extract -->|"returns financial data"| node_api
node_api -->|"runs analysis"| node_analysis
node_analysis -->|"calculates ratios"| node_ratios
node_analysis -->|"converts currency"| node_currency
node_currency -->|"requests exchange rate"| node_rates
node_analysis -->|"returns risk assessment"| node_api
node_api -->|"runs memo drafting"| node_memo
node_memo -->|"returns credit memo"| node_api
node_model_config -->|"configures model"| node_extract
node_model_config -->|"configures model"| node_analysis
node_model_config -->|"configures model"| node_memo
node_extract -->|"requests extraction"| node_llm
node_analysis -->|"requests assessment"| node_llm
node_memo -->|"requests memo"| node_llm
node_api -->|"validates memo"| node_schemas

click node_api "https://github.com/mgalen007/credix/blob/main/api/main.py"
click node_streamlit "https://github.com/mgalen007/credix/blob/main/client/streamlit_app.py"
click node_extract "https://github.com/mgalen007/credix/blob/main/agents/extraction.py"
click node_analysis "https://github.com/mgalen007/credix/blob/main/agents/analysis.py"
click node_ratios "https://github.com/mgalen007/credix/blob/main/agents/analysis.py"
click node_currency "https://github.com/mgalen007/credix/blob/main/agents/analysis.py"
click node_memo "https://github.com/mgalen007/credix/blob/main/agents/memo.py"
click node_schemas "https://github.com/mgalen007/credix/blob/main/schemas/models.py"
click node_model_config "https://github.com/mgalen007/credix/blob/main/config/models.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_api,node_streamlit toneBlue
class node_extract,node_analysis,node_ratios,node_currency,node_memo toneAmber
class node_schemas,node_model_config,node_rates toneMint
class node_user,node_llm toneIndigo
```

## Components

### User interfaces

- [Analyze API](https://github.com/mgalen007/credix/blob/main/api/main.py): `api/main.py`
- [Streamlit interface](https://github.com/mgalen007/credix/blob/main/client/streamlit_app.py): `client/streamlit_app.py`

### Credit workflow

- [Financial extraction](https://github.com/mgalen007/credix/blob/main/agents/extraction.py): `agents/extraction.py`
- [Risk analysis](https://github.com/mgalen007/credix/blob/main/agents/analysis.py): `agents/analysis.py`
- [Ratio calculator](https://github.com/mgalen007/credix/blob/main/agents/analysis.py): `agents/analysis.py`
- [Currency conversion](https://github.com/mgalen007/credix/blob/main/agents/analysis.py): `agents/analysis.py`
- [Memo drafting](https://github.com/mgalen007/credix/blob/main/agents/memo.py): `agents/memo.py`

### Models and schemas

- [Validated data models](https://github.com/mgalen007/credix/blob/main/schemas/models.py): `schemas/models.py`
- [Agent model configuration](https://github.com/mgalen007/credix/blob/main/config/models.py): `config/models.py`

### Other components

- **Document submitter**
- **LLM provider**
- **Frankfurter rates API**

## Connections

- Document submitter → Analyze API: uploads PDF
- Analyze API → Financial extraction: runs extraction
- Financial extraction → Analyze API: returns financial data
- Analyze API → Risk analysis: runs analysis
- Risk analysis → Ratio calculator: calculates ratios
- Risk analysis → Currency conversion: converts currency
- Currency conversion → Frankfurter rates API: requests exchange rate
- Risk analysis → Analyze API: returns risk assessment
- Analyze API → Memo drafting: runs memo drafting
- Memo drafting → Analyze API: returns credit memo
- Agent model configuration → Financial extraction: configures model
- Agent model configuration → Risk analysis: configures model
- Agent model configuration → Memo drafting: configures model
- Financial extraction → LLM provider: requests extraction
- Risk analysis → LLM provider: requests assessment
- Memo drafting → LLM provider: requests memo
- Analyze API → Validated data models: validates memo
