# mythilikalidhasan/llm-bias-demonstration architecture

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

- Interactive diagram: https://gitdiagram.com/mythilikalidhasan/llm-bias-demonstration
- Repository: https://github.com/mythilikalidhasan/llm-bias-demonstration

## Overview

This is a single-file Streamlit demonstration of how training-data balance affects gender-associated answers. The principal workflow presents examples, trains or balances the demonstration data, accepts a question, and displays an answer with a bias indicator and before/after comparison. The README documents TF-IDF and Logistic Regression; the sampled code excerpt does not show their implementation, so those stages are represented at the documented level. The app.py excerpt is partial, so the graph omits unverified internal calls.

Main entry points: [`app.py`](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py) (Streamlit app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Interactive app"]
  node_app["Streamlit app<br/>[app.py]"]
  node_training_view["Training data view<br/>[app.py]"]
  node_question_input["Question input<br/>[app.py]"]
end

subgraph group_learning["Data and learning"]
  node_training_data["Training data<br/>[app.py]"]
  node_balancing["Data balancing<br/>[app.py]"]
  node_vectorizer["TF-IDF vectorizer<br/>[app.py]"]
  node_classifier["Logistic Regression<br/>[app.py]"]
end

subgraph group_results["Responses and bias"]
  node_answer["Response generation<br/>[app.py]"]
  node_bias["Bias indicator<br/>[app.py]"]
  node_comparison["Results comparison<br/>[app.py]"]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"renders"| node_training_view
node_app -->|"presents"| node_question_input
node_training_view -->|"displays"| node_training_data
node_app -->|"trains from"| node_training_data
node_app -->|"balances"| node_balancing
node_balancing -->|"replaces"| node_training_data
node_training_data -->|"vectorizes"| node_vectorizer
node_vectorizer -->|"feeds"| node_classifier
node_app -->|"generates"| node_answer
node_question_input -->|"submits question"| node_answer
node_classifier -->|"informs"| node_answer
node_answer -->|"assesses"| node_bias
node_app -->|"presents"| node_comparison
node_training_data -->|"provides baseline"| node_comparison
node_balancing -->|"provides balanced case"| node_comparison

click node_app "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_training_view "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_question_input "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_training_data "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_balancing "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_vectorizer "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_classifier "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_answer "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_bias "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py"
click node_comparison "https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.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_app,node_training_view,node_question_input,node_user toneBlue
class node_training_data,node_balancing,node_vectorizer,node_classifier toneAmber
class node_answer,node_bias,node_comparison toneMint
```

## Components

### Interactive app

- [Streamlit app](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Training data view](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Question input](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`

### Data and learning

- [Training data](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Data balancing](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [TF-IDF vectorizer](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Logistic Regression](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`

### Responses and bias

- [Response generation](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Bias indicator](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`
- [Results comparison](https://github.com/mythilikalidhasan/llm-bias-demonstration/blob/main/app.py): `app.py`

### Other components

- **User**

## Connections

- User → Streamlit app: uses (evidence: `README.md`)
- Streamlit app → Training data view: renders (evidence: `app.py`)
- Streamlit app → Question input: presents (evidence: `app.py`)
- Training data view → Training data: displays (evidence: `README.md`)
- Streamlit app → Training data: trains from (evidence: `README.md`)
- Streamlit app → Data balancing: balances (evidence: `README.md`)
- Data balancing → Training data: replaces (evidence: `app.py`)
- Training data → TF-IDF vectorizer: vectorizes (evidence: `README.md`)
- TF-IDF vectorizer → Logistic Regression: feeds (evidence: `README.md`)
- Streamlit app → Response generation: generates (evidence: `README.md`)
- Question input → Response generation: submits question (evidence: `README.md`)
- Logistic Regression → Response generation: informs (evidence: `README.md`)
- Response generation → Bias indicator: assesses (evidence: `README.md`)
- Streamlit app → Results comparison: presents (evidence: `README.md`)
- Training data → Results comparison: provides baseline (evidence: `README.md`)
- Data balancing → Results comparison: provides balanced case (evidence: `README.md`)
