# gilbertwijaya/uas_ml architecture

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

- Interactive diagram: https://gitdiagram.com/gilbertwijaya/uas_ml
- Repository: https://github.com/gilbertwijaya/uas_ml

## Overview

Gemini Review Summarizer is a PyQt5 desktop tool for turning customer-review CSVs and a selected text template into an executive summary, then saving the result as Markdown or text. The main workflow is owned by the GUI: select inputs, build the prompt, call Gemini, display the response, and export it. `try_model.py` provides a separate command-line API check. The README documents the GUI and export capabilities; no additional domain stages are evidenced by the sampled source.

Main entry points: [`main.py`](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py) (Summarizer GUI), [`util.py`](https://github.com/gilbertwijaya/uas_ml/blob/Main/util.py) (Prompt builder), [`try_model.py`](https://github.com/gilbertwijaya/uas_ml/blob/Main/try_model.py) (CLI model check), [`stylesheet.py`](https://github.com/gilbertwijaya/uas_ml/blob/Main/stylesheet.py) (Dark theme)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop workflow"]
  node_gui["Summarizer GUI<br/>[main.py]"]
  node_input_picker["Input selection<br/>[main.py]"]
  node_activity_log["Activity log<br/>[main.py]"]
  node_summary_view["Summary display<br/>[main.py]"]
  node_output_export["Output export<br/>[main.py]"]
  node_style["Dark theme<br/>[stylesheet.py]"]
end

subgraph group_prompt["Prompt preparation"]
  node_prompt_builder["Prompt builder<br/>[util.py]"]
  node_template_file["Prompt template<br/>[template.txt]"]
  node_review_csv["Review dataset"]
end

subgraph group_integration["Gemini integration"]
  node_gemini{{"Gemini API"}}
  node_cli_check["CLI model check<br/>[try_model.py]"]
end

node_user(("User"))

node_user -->|"uses"| node_gui
node_gui -->|"offers selection"| node_input_picker
node_gui -->|"logs progress"| node_activity_log
node_gui -->|"builds prompt"| node_prompt_builder
node_prompt_builder -->|"reads template"| node_template_file
node_prompt_builder -->|"reads reviews"| node_review_csv
node_gui -->|"sends prompt"| node_gemini
node_gemini -->|"returns summary"| node_gui
node_gui -->|"displays result"| node_summary_view
node_user -->|"requests download"| node_output_export
node_output_export -->|"logs save"| node_activity_log
node_gui -->|"applies styling"| node_style
node_cli_check -->|"builds prompt"| node_prompt_builder
node_cli_check -->|"sends prompt"| node_gemini

click node_gui "https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py"
click node_input_picker "https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py"
click node_activity_log "https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py"
click node_summary_view "https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py"
click node_output_export "https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py"
click node_style "https://github.com/gilbertwijaya/uas_ml/blob/Main/stylesheet.py"
click node_prompt_builder "https://github.com/gilbertwijaya/uas_ml/blob/Main/util.py"
click node_template_file "https://github.com/gilbertwijaya/uas_ml/blob/Main/template.txt"
click node_review_csv "https://github.com/gilbertwijaya/uas_ml/blob/Main/dataset_preprocessing.csv"
click node_cli_check "https://github.com/gilbertwijaya/uas_ml/blob/Main/try_model.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_gui,node_input_picker,node_activity_log,node_summary_view,node_output_export,node_style,node_user toneBlue
class node_prompt_builder,node_template_file,node_review_csv toneAmber
class node_gemini,node_cli_check toneMint
```

## Components

### Desktop workflow

- [Summarizer GUI](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py): `main.py`
- [Input selection](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py): `main.py`
- [Activity log](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py): `main.py`
- [Summary display](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py): `main.py`
- [Output export](https://github.com/gilbertwijaya/uas_ml/blob/Main/main.py): `main.py`
- [Dark theme](https://github.com/gilbertwijaya/uas_ml/blob/Main/stylesheet.py): `stylesheet.py`

### Prompt preparation

- [Prompt builder](https://github.com/gilbertwijaya/uas_ml/blob/Main/util.py): `util.py`
- [Prompt template](https://github.com/gilbertwijaya/uas_ml/blob/Main/template.txt): `template.txt`
- [Review dataset](https://github.com/gilbertwijaya/uas_ml/blob/Main/dataset_preprocessing.csv): `dataset_preprocessing.csv`

### Gemini integration

- **Gemini API**
- [CLI model check](https://github.com/gilbertwijaya/uas_ml/blob/Main/try_model.py): `try_model.py`

### Other components

- **User**

## Connections

- User → Summarizer GUI: uses (evidence: `readme.md`)
- Summarizer GUI → Input selection: offers selection (evidence: `main.py`)
- Summarizer GUI → Activity log: logs progress (evidence: `main.py`)
- Summarizer GUI → Prompt builder: builds prompt (evidence: `main.py`)
- Prompt builder → Prompt template: reads template (evidence: `readme.md`)
- Prompt builder → Review dataset: reads reviews (evidence: `readme.md`)
- Summarizer GUI → Gemini API: sends prompt (evidence: `main.py`)
- Gemini API → Summarizer GUI: returns summary (evidence: `main.py`)
- Summarizer GUI → Summary display: displays result (evidence: `main.py`)
- User → Output export: requests download (evidence: `readme.md`)
- Output export → Activity log: logs save (evidence: `main.py`)
- Summarizer GUI → Dark theme: applies styling (evidence: `main.py`)
- CLI model check → Prompt builder: builds prompt (evidence: `try_model.py`)
- CLI model check → Gemini API: sends prompt (evidence: `try_model.py`)
