# deuellau/bank-telemarketing-campaign architecture

> Architecture diagram of the GitHub repository deuellau/bank-telemarketing-campaign, 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/deuellau/bank-telemarketing-campaign
- Repository: https://github.com/deuellau/bank-telemarketing-campaign

## Overview

This repository is a bank telemarketing prediction project, documented primarily through a Jupyter notebook. Its workflow takes campaign data through leakage-aware feature preparation, trains a stacked model, and uses predicted subscription likelihoods to prioritize calls and estimate campaign economics. The README documents the model components, nested cross-validation, and business results; no notebook source was available to verify finer-grained implementation details, so the graph shows only documented relationships.

Main entry points: [`Code/Project Workflow.ipynb`](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb) (Subscription scores)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_preparation["Data preparation"]
  node_feature_preparation["Feature preparation"]
end

subgraph group_modeling["Modeling"]
  node_base_learners["Base learners"]
  node_oof_predictions["OOF predictions"]
  node_meta_classifier["Logistic meta-classifier"]
  node_nested_cv["Nested cross-validation"]
end

subgraph group_decision["Campaign decisions"]
  node_subscription_scores["Subscription scores"]
  node_call_prioritization["Call prioritization"]
  node_campaign_economics["Campaign economics"]
end

node_campaign_data["Campaign data"]

node_campaign_data -->|"provides records"| node_feature_preparation
node_feature_preparation -->|"provides features"| node_base_learners
node_base_learners -->|"generate"| node_oof_predictions
node_oof_predictions -->|"train"| node_meta_classifier
node_nested_cv -->|"tunes and evaluates"| node_base_learners
node_nested_cv -->|"evaluates"| node_meta_classifier
node_meta_classifier -->|"produces"| node_subscription_scores
node_subscription_scores -->|"ranks leads"| node_call_prioritization
node_subscription_scores -->|"supports threshold analysis"| node_campaign_economics

click node_feature_preparation "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_base_learners "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_oof_predictions "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_meta_classifier "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_nested_cv "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_subscription_scores "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_call_prioritization "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb"
click node_campaign_economics "https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.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_feature_preparation toneBlue
class node_base_learners,node_oof_predictions,node_meta_classifier,node_nested_cv toneAmber
class node_subscription_scores,node_call_prioritization,node_campaign_economics toneMint
class node_campaign_data toneIndigo
```

## Components

### Data preparation

- [Feature preparation](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`

### Modeling

- [Base learners](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`
- [OOF predictions](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`
- [Logistic meta-classifier](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`
- [Nested cross-validation](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`

### Campaign decisions

- [Subscription scores](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`
- [Call prioritization](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`
- [Campaign economics](https://github.com/deuellau/bank-telemarketing-campaign/blob/main/Code/Project%20Workflow.ipynb): `Code/Project Workflow.ipynb`

### Other components

- **Campaign data**

## Connections

- Campaign data → Feature preparation: provides records
- Feature preparation → Base learners: provides features
- Base learners → OOF predictions: generate
- OOF predictions → Logistic meta-classifier: train
- Nested cross-validation → Base learners: tunes and evaluates
- Nested cross-validation → Logistic meta-classifier: evaluates
- Logistic meta-classifier → Subscription scores: produces
- Subscription scores → Call prioritization: ranks leads
- Subscription scores → Campaign economics: supports threshold analysis
