# manivasagam-rajakannan/global-development-clustering architecture

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

- Interactive diagram: https://gitdiagram.com/manivasagam-rajakannan/global-development-clustering
- Repository: https://github.com/manivasagam-rajakannan/global-development-clustering

## Overview

This is a Streamlit dashboard for exploring country-development clusters. The principal workflow is CSV upload, country-level cleaning and aggregation, scaling, selectable clustering, metric evaluation, then visual and tabular exploration or result download. The app also supports country lookup and predictions for hypothetical countries. The README describes a companion notebook analysis, but its implementation was not sampled, so its internal stages and connections are not inferred here; the graph’s source-backed edges come from app.py.

Main entry points: [`app.py`](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py) (Streamlit Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_input["Input Preparation"]
  node_cleaning["Clean and Aggregate<br/>[app.py]"]
  node_scaling["Feature Scaling<br/>[app.py]"]
end

subgraph group_analysis["Clustering Analysis"]
  node_pca["PCA Projection<br/>[app.py]"]
  node_clustering["Clustering Models<br/>[app.py]"]
  node_metrics["Cluster Metrics<br/>[app.py]"]
end

subgraph group_exploration["Results Exploration"]
  node_scatter["PCA Scatter Plot<br/>[app.py]"]
  node_worldmap["World Cluster Map<br/>[app.py]"]
  node_profiles["Cluster Profiles<br/>[app.py]"]
end

subgraph group_interaction["User Tools"]
  node_dashboard["Streamlit Dashboard<br/>[app.py]"]
  node_lookup["Country Lookup<br/>[app.py]"]
  node_prediction["New Country Prediction<br/>[app.py]"]
  node_download["CSV Results Download<br/>[app.py]"]
end

node_user(("Dashboard User"))
node_csv["Development CSV"]

node_user -->|"uses"| node_dashboard
node_csv -->|"uploads"| node_dashboard
node_dashboard -->|"cleans and aggregates"| node_cleaning
node_dashboard -->|"scales features"| node_scaling
node_dashboard -->|"projects features"| node_pca
node_dashboard -->|"fits and assigns"| node_clustering
node_dashboard -->|"evaluates labels"| node_metrics
node_dashboard -->|"renders projection"| node_scatter
node_dashboard -->|"renders assignments"| node_worldmap
node_dashboard -->|"computes and displays"| node_profiles
node_dashboard -->|"looks up cluster"| node_lookup
node_dashboard -->|"handles prediction"| node_prediction
node_dashboard -->|"offers clustered CSV"| node_download
node_cleaning -->|"provides features"| node_scaling
node_scaling -->|"transforms features"| node_pca
node_scaling -->|"transforms features"| node_clustering
node_clustering -->|"provides labels"| node_metrics
node_clustering -->|"provides labels"| node_scatter
node_pca -->|"provides coordinates"| node_scatter
node_clustering -->|"provides assignments"| node_worldmap
node_cleaning -->|"provides features"| node_profiles
node_clustering -->|"provides labels"| node_profiles
node_clustering -->|"provides assignments"| node_lookup
node_scaling -->|"transforms input"| node_prediction
node_clustering -->|"predicts or finds neighbor"| node_prediction
node_cleaning -->|"provides features"| node_download
node_clustering -->|"provides labels"| node_download

click node_dashboard "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_cleaning "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_scaling "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_pca "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_clustering "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_metrics "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_scatter "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_worldmap "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_profiles "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_lookup "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_prediction "https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py"
click node_download "https://github.com/manivasagam-rajakannan/global-development-clustering/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_cleaning,node_scaling,node_user toneBlue
class node_pca,node_clustering,node_metrics toneAmber
class node_scatter,node_worldmap,node_profiles toneMint
class node_dashboard,node_lookup,node_prediction,node_download toneRose
class node_csv toneIndigo
```

## Components

### Input Preparation

- [Clean and Aggregate](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [Feature Scaling](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`

### Clustering Analysis

- [PCA Projection](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [Clustering Models](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [Cluster Metrics](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`

### Results Exploration

- [PCA Scatter Plot](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [World Cluster Map](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [Cluster Profiles](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`

### User Tools

- [Streamlit Dashboard](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [Country Lookup](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [New Country Prediction](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`
- [CSV Results Download](https://github.com/manivasagam-rajakannan/global-development-clustering/blob/main/app.py): `app.py`

### Other components

- **Dashboard User**
- **Development CSV**

## Connections

- Dashboard User → Streamlit Dashboard: uses (evidence: `app.py`)
- Development CSV → Streamlit Dashboard: uploads (evidence: `app.py`)
- Streamlit Dashboard → Clean and Aggregate: cleans and aggregates (evidence: `app.py`)
- Streamlit Dashboard → Feature Scaling: scales features (evidence: `app.py`)
- Streamlit Dashboard → PCA Projection: projects features (evidence: `app.py`)
- Streamlit Dashboard → Clustering Models: fits and assigns (evidence: `app.py`)
- Streamlit Dashboard → Cluster Metrics: evaluates labels (evidence: `app.py`)
- Streamlit Dashboard → PCA Scatter Plot: renders projection (evidence: `app.py`)
- Streamlit Dashboard → World Cluster Map: renders assignments (evidence: `app.py`)
- Streamlit Dashboard → Cluster Profiles: computes and displays (evidence: `app.py`)
- Streamlit Dashboard → Country Lookup: looks up cluster (evidence: `app.py`)
- Streamlit Dashboard → New Country Prediction: handles prediction (evidence: `app.py`)
- Streamlit Dashboard → CSV Results Download: offers clustered CSV (evidence: `app.py`)
- Clean and Aggregate → Feature Scaling: provides features (evidence: `app.py`)
- Feature Scaling → PCA Projection: transforms features (evidence: `app.py`)
- Feature Scaling → Clustering Models: transforms features (evidence: `app.py`)
- Clustering Models → Cluster Metrics: provides labels (evidence: `app.py`)
- Clustering Models → PCA Scatter Plot: provides labels (evidence: `app.py`)
- PCA Projection → PCA Scatter Plot: provides coordinates (evidence: `app.py`)
- Clustering Models → World Cluster Map: provides assignments (evidence: `app.py`)
- Clean and Aggregate → Cluster Profiles: provides features (evidence: `app.py`)
- Clustering Models → Cluster Profiles: provides labels (evidence: `app.py`)
- Clustering Models → Country Lookup: provides assignments (evidence: `app.py`)
- Feature Scaling → New Country Prediction: transforms input (evidence: `app.py`)
- Clustering Models → New Country Prediction: predicts or finds neighbor (evidence: `app.py`)
- Clean and Aggregate → CSV Results Download: provides features (evidence: `app.py`)
- Clustering Models → CSV Results Download: provides labels (evidence: `app.py`)
