| Field | Details |
|---|---|
| Project Name | US Visa Approval Prediction |
| Prepared By | Md. Alahi Almin Tansen |
| Revision Number | 1.0 |
| Last Revision Date | 02-09-2025 |
| Revision | Date | Changes Made | Author |
|---|---|---|---|
| 1.0 | 02-09-2025 | Initial Draft | Md. Alahi Almin Tansen |
US Visa Approval Prediction/
├── components/ # ML pipeline modules: data ingestion, transformation, validation, trainer, pusher
├── config/ # YAML / JSON configuration files
├── configuration/ # Python config loader
├── constants/ # Global constants
├── data/ # raw / processed / interim datasets
├── entity/ # entities like artifact & config objects
├── logger/ # logging setup
├── notebooks/ # EDA / experimentation
├── pipeline/ # training & prediction pipelines
├── tests/ # unit & integration tests
├── utils/ # helper functions
├── app.py # demo or API entry point
├── demo.py
├── requirements.txt
├── Dockerfile
└── setup.py| Module | Responsibility |
|---|---|
components/ |
ML workflow: ingestion → validation → transformation → training → evaluation → deployment |
pipeline/ |
Orchestrates training & prediction steps |
services/ |
High-level APIs: PredictService, TrainService |
configuration/ |
Reads environment, config files, paths |
logger/ |
Central logging |
data/ |
Stores raw/interim/processed data |
classDiagram
class Config
class Preprocessor
class ModelWrapper
class Registry
class PredictService
class TrainService
Config <.. Preprocessor
Config <.. ModelWrapper
Registry o-- ModelWrapper
Registry o-- Preprocessor
PredictService --> Registry
TrainService --> Registry
-
Collections
applications: stores raw applications with features & target (case_status)models: stores model metadata, version, artifact paths, metrics
-
ERD
LoadingerDiagram APPLICATIONS { int id PK varchar continent varchar education varchar job_experience int num_employees float prevailing_wage int age_of_company int applicant_age varchar case_status } MODELS { int id PK varchar version varchar model_path varchar preproc_path json metrics }
-
Prediction Flow
LoadingsequenceDiagram participant C as Client participant API as FastAPI participant S as PredictService participant R as Registry participant M as Model participant P as Preprocessor C->>API: POST /predict {features} API->>S: validate + predict() S->>R: get_latest() S->>P: transform(df) S->>M: predict_proba(X) S-->>API: {decision, probability, version} API-->>C: 200 JSON -
Training Flow
LoadingsequenceDiagram participant OPS as CI/Runner participant API as FastAPI participant T as TrainService participant R as Registry OPS->>API: POST /train {data_uri, algo} API->>T: start pipeline T->>T: ingest -> split -> preprocess.fit -> model.train T->>R: register(model, preproc, metrics) T-->>API: {version, metrics, paths}
flowchart LR
Client -->|HTTPS| Ingress[API Gateway/Ingress]
Ingress --> API[FastAPI Service]
API --> Reg[Model Registry]
API --> Logs[(Log Store)]
API --> Metrics[(Prometheus)]
Reg --> Vol[(Artifacts Volume/S3)]