# prajktanandurkar09/upi-fraud-risk-scoring_project architecture

> Architecture diagram of the GitHub repository prajktanandurkar09/upi-fraud-risk-scoring_project, 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/prajktanandurkar09/upi-fraud-risk-scoring_project
- Repository: https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project

## Overview

UPI-SHIELD accepts transaction details through a FastAPI endpoint or Streamlit dashboard, then engineers features, scores fraud risk, applies a cost-aware decision threshold, and presents risk tiers and local explanations. The README also documents calibration, threshold optimization, cost-sensitivity analysis, and operational reporting. The sampled runtime confirms the API and scoring flow; the README supports the dashboard capabilities, but unsampled dashboard/API internals and some analysis wiring are shown only at the documented subsystem level.

Main entry points: [`src/features/pipeline.py`](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/pipeline.py) (Feature Pipeline), [`app/predictor.py`](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/predictor.py) (Prediction Engine), [`src/risk_scoring/decision_result.py`](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/risk_scoring/decision_result.py) (Risk Decision Engine), [`experiments/results`](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/tree/main/experiments/results) (Experiment Results)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_dashboard["Streamlit Dashboard<br/>[dashboard.py]"]
  node_dashboard_api["Dashboard API Client<br/>[dashboard_api.py]"]
  node_fastapi["FastAPI Service<br/>[main.py]"]
  node_schemas["Request / Response Schemas<br/>[schemas.py]"]
end

subgraph group_scoring["Risk Scoring"]
  node_predictor["Prediction Engine<br/>[predictor.py]"]
  node_feature_pipeline["Feature Pipeline<br/>[pipeline.py]"]
  node_behavioral["Behavioral Features<br/>[behavioral.py]"]
  node_temporal["Temporal Features<br/>[temporal.py]"]
  node_encoders["Preprocessing<br/>[encoders.py]"]
  node_risk_decision["Risk Decision Engine<br/>[decision_result.py]"]
  node_risk_scoring["Risk Score and Bands<br/>[risk_score.py]"]
  node_policy["Decision Policy<br/>[policy.py]"]
  node_policy_config["Policy Configuration"]
end

subgraph group_analysis["Model Analysis"]
  node_calibration["Probability Calibration<br/>[calibrate.py]"]
  node_calibration_eval["Calibration Evaluation"]
  node_threshold["Threshold Optimization"]
  node_cost_analysis["Cost Sensitivity"]
  node_result_artifacts["Experiment Results"]
end

subgraph group_explainability["Explainability"]
  node_shap["SHAP Attribution<br/>[shap_explainer.py]"]
  node_explanation_format["Explanation Formatter"]
end

node_operator(("Payment Operator"))

node_operator -->|"enters transaction"| node_dashboard
node_dashboard -->|"requests scoring"| node_dashboard_api
node_dashboard_api -->|"calls endpoint"| node_fastapi
node_operator -->|"submits transaction"| node_fastapi
node_fastapi -->|"validates payload"| node_schemas
node_fastapi -->|"invokes prediction"| node_predictor
node_predictor -->|"engineers features"| node_feature_pipeline
node_feature_pipeline -->|"creates time features"| node_temporal
node_feature_pipeline -->|"creates behavior features"| node_behavioral
node_predictor -->|"transforms features"| node_encoders
node_predictor -->|"converts probability"| node_risk_scoring
node_risk_decision -->|"engineers features"| node_feature_pipeline
node_risk_decision -->|"transforms features"| node_encoders
node_risk_decision -->|"generates risk result"| node_risk_scoring
node_risk_decision -->|"reads threshold config"| node_policy_config
node_risk_decision -->|"applies decision policy"| node_policy
node_calibration -->|"prepares validation data"| node_feature_pipeline
node_calibration_eval -->|"prepares test data"| node_feature_pipeline
node_threshold -->|"prepares data"| node_feature_pipeline
node_cost_analysis -->|"prepares data"| node_feature_pipeline
node_threshold -->|"saves evaluation"| node_result_artifacts
node_cost_analysis -->|"saves analysis"| node_result_artifacts
node_calibration -->|"saves metrics"| node_result_artifacts
node_calibration_eval -->|"saves metrics"| node_result_artifacts
node_predictor -->|"requests attribution"| node_shap
node_shap -->|"engineers features"| node_feature_pipeline
node_shap -->|"transforms features"| node_encoders
node_predictor -->|"formats explanations"| node_explanation_format
node_dashboard -->|"loads experiment data"| node_result_artifacts

click node_dashboard "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/dashboard.py"
click node_dashboard_api "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/dashboard_api.py"
click node_fastapi "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/main.py"
click node_schemas "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/schemas.py"
click node_predictor "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/predictor.py"
click node_feature_pipeline "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/pipeline.py"
click node_behavioral "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/behavioral.py"
click node_temporal "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/temporal.py"
click node_encoders "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/encoders.py"
click node_risk_decision "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/risk_scoring/decision_result.py"
click node_risk_scoring "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/risk_scoring/risk_score.py"
click node_policy "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/policy.py"
click node_policy_config "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/models/decision_policy.json"
click node_calibration "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/calibration/calibrate.py"
click node_calibration_eval "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/calibration/evaluate_calibration.py"
click node_threshold "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/optimize_threshold.py"
click node_cost_analysis "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/cost_sensitivity.py"
click node_shap "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/explainability/shap_explainer.py"
click node_explanation_format "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/explainability/format_explanation.py"
click node_result_artifacts "https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/tree/main/experiments/results"

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_dashboard,node_dashboard_api,node_fastapi,node_schemas toneBlue
class node_predictor,node_feature_pipeline,node_behavioral,node_temporal,node_encoders,node_risk_decision,node_risk_scoring,node_policy,node_policy_config toneAmber
class node_calibration,node_calibration_eval,node_threshold,node_cost_analysis,node_result_artifacts toneMint
class node_shap,node_explanation_format toneRose
class node_operator toneIndigo
```

## Components

### User Interfaces

- [Streamlit Dashboard](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/dashboard.py): `app/dashboard.py`
- [Dashboard API Client](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/dashboard_api.py): `app/dashboard_api.py`
- [FastAPI Service](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/main.py): `app/main.py`
- [Request / Response Schemas](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/schemas.py): `app/schemas.py`

### Risk Scoring

- [Prediction Engine](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/app/predictor.py): `app/predictor.py`
- [Feature Pipeline](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/pipeline.py): `src/features/pipeline.py`
- [Behavioral Features](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/behavioral.py): `src/features/behavioral.py`
- [Temporal Features](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/temporal.py): `src/features/temporal.py`
- [Preprocessing](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/features/encoders.py): `src/features/encoders.py`
- [Risk Decision Engine](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/risk_scoring/decision_result.py): `src/risk_scoring/decision_result.py`
- [Risk Score and Bands](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/risk_scoring/risk_score.py): `src/risk_scoring/risk_score.py`
- [Decision Policy](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/policy.py): `src/decision/policy.py`
- [Policy Configuration](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/models/decision_policy.json): `models/decision_policy.json`

### Model Analysis

- [Probability Calibration](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/calibration/calibrate.py): `src/calibration/calibrate.py`
- [Calibration Evaluation](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/calibration/evaluate_calibration.py): `src/calibration/evaluate_calibration.py`
- [Threshold Optimization](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/optimize_threshold.py): `src/decision/optimize_threshold.py`
- [Cost Sensitivity](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/decision/cost_sensitivity.py): `src/decision/cost_sensitivity.py`
- [Experiment Results](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/tree/main/experiments/results): `experiments/results`

### Explainability

- [SHAP Attribution](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/explainability/shap_explainer.py): `src/explainability/shap_explainer.py`
- [Explanation Formatter](https://github.com/prajktanandurkar09/upi-fraud-risk-scoring_project/blob/main/src/explainability/format_explanation.py): `src/explainability/format_explanation.py`

### Other components

- **Payment Operator**

## Connections

- Payment Operator → Streamlit Dashboard: enters transaction
- Streamlit Dashboard → Dashboard API Client: requests scoring
- Dashboard API Client → FastAPI Service: calls endpoint
- Payment Operator → FastAPI Service: submits transaction
- FastAPI Service → Request / Response Schemas: validates payload
- FastAPI Service → Prediction Engine: invokes prediction
- Prediction Engine → Feature Pipeline: engineers features
- Feature Pipeline → Temporal Features: creates time features
- Feature Pipeline → Behavioral Features: creates behavior features
- Prediction Engine → Preprocessing: transforms features
- Prediction Engine → Risk Score and Bands: converts probability
- Risk Decision Engine → Feature Pipeline: engineers features
- Risk Decision Engine → Preprocessing: transforms features
- Risk Decision Engine → Risk Score and Bands: generates risk result
- Risk Decision Engine → Policy Configuration: reads threshold config
- Risk Decision Engine → Decision Policy: applies decision policy
- Probability Calibration → Feature Pipeline: prepares validation data
- Calibration Evaluation → Feature Pipeline: prepares test data
- Threshold Optimization → Feature Pipeline: prepares data
- Cost Sensitivity → Feature Pipeline: prepares data
- Threshold Optimization → Experiment Results: saves evaluation
- Cost Sensitivity → Experiment Results: saves analysis
- Probability Calibration → Experiment Results: saves metrics
- Calibration Evaluation → Experiment Results: saves metrics
- Prediction Engine → SHAP Attribution: requests attribution
- SHAP Attribution → Feature Pipeline: engineers features
- SHAP Attribution → Preprocessing: transforms features
- Prediction Engine → Explanation Formatter: formats explanations
- Streamlit Dashboard → Experiment Results: loads experiment data
