# raj-raaz/credit-risk-prediction-api architecture

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

- Interactive diagram: https://gitdiagram.com/raj-raaz/credit-risk-prediction-api
- Repository: https://github.com/raj-raaz/credit-risk-prediction-api

## Overview

This repository serves credit-default predictions through a FastAPI endpoint and a Flask-rendered web page. The API validates applicant fields, builds a tabular input, and invokes a serialized scikit-learn/XGBoost model to return a class and default probability. The README also documents the notebook-based training workflow. The template and notebook contents were not sampled, so their internal behavior and detailed wiring are not represented.

Main entry points: [`app/main.py`](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py) (Prediction handler), [`Credit_risk_prediction.joblib`](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit_risk_prediction.joblib) (Serialized model), [`Credit Risk.ipynb`](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit%20Risk.ipynb) (Training and EDA), [`app/templates/index.html`](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/templates/index.html) (Prediction form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_web_ui["Web UI<br/>[main.py]"]
  node_form_template["Prediction form<br/>[index.html]"]
  node_api["FastAPI app<br/>[main.py]"]
end

subgraph group_inference["Prediction runtime"]
  node_input_schema["Input validation<br/>[schemas.py]"]
  node_predict_handler["Prediction handler<br/>[main.py]"]
  node_input_frame["Applicant frame<br/>[main.py]"]
  node_model["Risk model<br/>[main.py]"]
  node_model_artifact["Serialized model"]
  node_prediction_result["Prediction response<br/>[main.py]"]
end

subgraph group_training["Model training"]
  node_training_notebook["Training and EDA<br/>[Credit Risk.ipynb]"]
end

node_applicant(("Applicant"))
node_api_client(("API client"))
node_credit_dataset[("Credit risk dataset")]

node_applicant -->|"enters details"| node_web_ui
node_web_ui -->|"renders"| node_form_template
node_api_client -->|"sends request"| node_api
node_api -->|"validates input"| node_input_schema
node_api -->|"dispatches"| node_predict_handler
node_predict_handler -->|"builds frame"| node_input_frame
node_predict_handler -->|"predicts"| node_model
node_model_artifact -->|"loads"| node_model
node_model -->|"returns scores"| node_predict_handler
node_predict_handler -->|"returns response"| node_prediction_result
node_credit_dataset -->|"trains on"| node_training_notebook
node_training_notebook -->|"serializes model"| node_model_artifact

click node_web_ui "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_form_template "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/templates/index.html"
click node_api "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_input_schema "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/schemas.py"
click node_predict_handler "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_input_frame "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_model "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_model_artifact "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit_risk_prediction.joblib"
click node_prediction_result "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py"
click node_training_notebook "https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit%20Risk.ipynb"

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_web_ui,node_form_template,node_api,node_api_client toneBlue
class node_input_schema,node_predict_handler,node_input_frame,node_model,node_model_artifact,node_prediction_result,node_credit_dataset toneAmber
class node_training_notebook toneMint
class node_applicant toneIndigo
```

## Components

### User interfaces

- [Web UI](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`
- [Prediction form](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/templates/index.html): `app/templates/index.html`
- [FastAPI app](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`

### Prediction runtime

- [Input validation](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/schemas.py): `app/schemas.py`
- [Prediction handler](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`
- [Applicant frame](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`
- [Risk model](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`
- [Serialized model](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit_risk_prediction.joblib): `Credit_risk_prediction.joblib`
- [Prediction response](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/app/main.py): `app/main.py`

### Model training

- [Training and EDA](https://github.com/raj-raaz/credit-risk-prediction-api/blob/main/Credit%20Risk.ipynb): `Credit Risk.ipynb`

### Other components

- **Applicant**
- **API client**
- **Credit risk dataset**

## Connections

- Applicant → Web UI: enters details
- Web UI → Prediction form: renders
- API client → FastAPI app: sends request
- FastAPI app → Input validation: validates input
- FastAPI app → Prediction handler: dispatches
- Prediction handler → Applicant frame: builds frame
- Prediction handler → Risk model: predicts
- Serialized model → Risk model: loads
- Risk model → Prediction handler: returns scores
- Prediction handler → Prediction response: returns response
- Credit risk dataset → Training and EDA: trains on
- Training and EDA → Serialized model: serializes model
