End-to-end IT Service Management analytics platform — from raw incident data to deployed ML models
An end-to-end data science project built on confidential client incident data, demonstrating the complete ML lifecycle — from data engineering through production-style deployment.
- About the Project
- Problem Statements & Results
- Screenshots
- Tech Stack
- Repository Structure
- Getting Started
- Methodology Highlights
- Author
ABC Tech is an IT organization that logs, tracks, and resolves incident tickets through an ITSM (IT Service Management) platform. This project analyzes historical incident data to solve four independent, business-driven machine learning problems, each treated as its own mini-pipeline — with its own leakage-safe feature set, model benchmarking, and evaluation strategy.
Note: This project was built on a real client dataset under an NDA. Dataset internals, schema, and raw data are intentionally not published in this repository — only the methodology, code, and results are shared.
| # | Problem Statement | Type | Status |
|---|---|---|---|
| PS1 | Predict high-priority tickets at open time | Binary classification (imbalanced) | ✅ Deployed |
| PS2 | Forecast daily incident ticket volume | Time-series forecasting | ✅ Deployed |
| PS3 | Auto-tag ticket priority & department | Multi-class classification | |
| PS4 | Predict RFC (Request for Change) risk | Binary classification (severely imbalanced) | ✅ Deployed |
Flags high-priority tickets automatically at open time, using only fields known the moment a ticket is filed — strictly excluding anything only known after the ticket is worked, to avoid data leakage.
- Benchmarked Logistic Regression, Random Forest, XGBoost (with class-weighting, threshold tuning, SMOTE), and CatBoost, on a severely imbalanced target (~1.5% positive class)
- Final model: CatBoost @ threshold 0.55 — F1 0.5460 · ROC-AUC 0.9414 · PR-AUC 0.4663 (Alternative: XGBoost @ threshold 0.897 trades recall for precision — F1 0.5714)
- Top drivers: Configuration Item category/subcategory and work-breakdown structure fields account for ~60% of feature importance
Forecasts incident ticket volume per day to support staffing and shift planning. Modeled as a univariate time series with a chronological train/test split.
- Benchmarked Naive baseline, ARIMA, SARIMAX, Holt-Winters, and Prophet
- ACF/PACF analysis confirmed strong weekly seasonality
- Final model: SARIMAX(5,1,4)(0,0,1,7) — MAE 31.04 · RMSE 39.71 tickets/day (best absolute error of all models tested)
Scoped to auto-tag incoming tickets with priority and support department. A structured feasibility analysis determined the department-tagging component was not achievable with the available data, and this was documented transparently as a feasibility study rather than forcing a low-quality model.
Predicts whether an incident is likely to trigger a Request for Change, framed as a binary classification problem on a severely imbalanced target (~1.2% positive class).
- Benchmarked XGBoost, LightGBM, Random Forest, Logistic Regression, SMOTE-balanced models, and CatBoost
- Key methodological finding: switching from a random train/test split to a chronological split (mimicking real production deployment) nearly doubled model performance
- Final model: Optuna-tuned CatBoost (chronological split) — Precision 0.2700 · Recall 0.6574 · F1 0.3827 · ROC-AUC 0.8185 · PR-AUC 0.1856
| Landing Page | Priority Prediction |
|---|---|
![]() |
![]() |
| RFC Prediction | Ticket Forecasting |
|---|---|
![]() |
![]() |
Data & ML: Python, pandas, NumPy, scikit-learn, XGBoost, LightGBM, CatBoost, Optuna, imbalanced-learn Time Series: statsmodels (ARIMA/SARIMAX), Prophet Backend: FastAPI, Pydantic, Uvicorn Frontend: Streamlit, Plotly Tooling: Jupyter Notebook, Git
ABC-Tech-ITSM/
├── assets/
│ ├── landing_page.png
│ ├── priority_prediction.png
│ ├── rfc_prediction.png
│ └── ticket_forecasting.png
├── Models/
│ ├── priority_pred.joblib # PS1 — CatBoost, threshold 0.55
│ ├── rfc_pred.cbm # PS4 — CatBoost (native format), threshold 0.54
│ └── tickets_forecasting.joblib # PS2 — SARIMAX(5,1,4)(0,0,1,7)
├── ABC Tech ITSM.ipynb # Full analysis notebook (EDA + PS1–PS4)
├── ITSM_ABC_Tech_Project_Report.pdf # Formal written project report
├── app.py # FastAPI backend serving all deployed models
├── streamlit_app.py # Streamlit dashboard (calls the FastAPI backend)
└── requirements.txt # Python dependencies
git clone https://github.com/ENGABHAY/ABC-Tech-ITSM.git
cd ABC-Tech-ITSM
pip install -r requirements.txtuvicorn app:app --host 0.0.0.0 --port 8000 --reloadAvailable endpoints:
POST /predict/priority— PS1 high-priority predictionPOST /predict/rfc— PS4 RFC risk predictionGET /forecast— PS2 incident volume forecastGET /docs— interactive Swagger UI
streamlit run streamlit_app.pyBy default it targets http://localhost:8000 — update the API base URL in the sidebar if the backend is deployed elsewhere.
- Strict leakage policy: only fields known at ticket-open time are used as model features across PS1 and PS4 — never post-resolution fields.
- Imbalance-aware evaluation: PR-AUC, per-class precision/recall/F1, and threshold tuning were prioritized over plain accuracy on both severely imbalanced classification tasks.
- Chronological validation for production realism: PS4 explicitly compares random vs. chronological splits and demonstrates why the latter better reflects real-world deployment.
- Honest model comparison: every problem statement benchmarks multiple algorithms and transparently reports trade-offs between competing "best" models rather than optimizing a single number.
- Transparent scoping: where a problem statement wasn't feasible with the available data (PS3), this was documented as a formal feasibility analysis rather than forced or fabricated.
Abhay Kadam Data Science & Machine Learning | GitHub · LinkedIn



