Rows: 5,035 Columns: 9
Cases with parseable date: 3,194 of 5,035
Date span (where available): 2025-06-04 → 2025-12-31
Advanced & Operational Analytics for USL’s ISURA Case Workflow
Text · Monte Carlo · Forecasting · Survival · Optimisation
1 Executive Summary
Union Systems Limited (USL) services six Nigerian banks from a portfolio of four proprietary applications (KACHASI v2.x, KACHASI v1.x, TENTACLES and DATASTORE) on multi-year licence contracts totalling an estimated USD 3.75 m of annual recurring revenue. Real ISURA case data (n = 5,035 closed cases) reveal a median resolution of 41 hours, but a long right-tail (max 8,424 h ≈ 351 days) and an overall SLA-breach rate well above the 25 % target. Date-parseable cases span June–December 2025, showing a pronounced downward trend from 712 cases in June to 208 in December — with case volume declining roughly 71 % over that window — which makes capacity planning the single largest operational lever. This report applies five Advanced & Operational Analytics techniques to that dataset: text analytics on the 5,035 real ISURA case titles to surface trending themes and an auto-triage baseline, Monte Carlo on revenue at risk under four investment scenarios, Holt forecasting of monthly volume, Cox proportional- hazards on time-to-SLA-breach, and a linear-programming optimisation of one squad-sprint of engineering capacity. The integrated finding: a Comprehensive intervention (new support pod + automation playbooks, USD 110 k investment) is recommended for board approval at the next quarterly review on the strength of its tail-risk reduction.
2 Professional Disclosure
I am Emmanuel Nkenwokeneme, Chief Technology Officer at Union Systems Limited (USL), a privately-held Nigerian banking-software vendor in the Financial Services / Enterprise Software sector. USL serves six commercial banks: First City Monument Bank (FCMB), Stanbic IBTC, Wema Bank, Coronation Merchant Bank, Signature Bank and Fidelity Bank. The five techniques in this paper map directly to live operational decisions on my desk:
Text Analytics. Roughly 5,000 free-text ISURA cases land in USL’s customer-success queue per year. Text analytics turns the case-title corpus into themed roadmap input, auto-routes tickets to the right product squad, and flags Central Bank of Nigeria (CBN) compliance cases before they age past their SLA window.
Monte Carlo. With six concentrated B2B customers, a single lost renewal would erase most of a year’s growth. Monte Carlo lets the CFO and I quantify the joint distribution of breach penalties and renewal-revenue at risk under intervention scenarios — and defend the investment case on P95 tail-risk, not just expected value.
Advanced Forecasting. USL’s L2 (customer-support) and L3 (engineering) teams must be staffed against forward case volume. Holt / SARIMA forecasts — paired with naïve seasonal benchmarks — drive monthly headcount and on-call rota decisions.
Customer / People Analytics (Cox PH). Cox proportional-hazards models the time from case-open to SLA-breach. Hazard ratios surface which (Bank × Application × Severity) cohorts are genuinely riskier, which informs differentiated SLA pricing and engineering playbook investment.
Optimisation (Linear Programming). Every fortnight, the engineering manager allocates 240 sprint-points across Bugs, Change Requests, Compliance, Platform and Performance tracks. LP turns this into an audit-trail-ready optimal allocation that respects the regulator minimum, the bug-floor and the platform/tech-debt cap.
3 Data Collection & Sampling
| Field | Value |
|---|---|
| Source | ISURA — USL’s customer-success portal (web-based ticketing system) where bank IT teams register cases and change requests after first-level triage |
| Collection method | Direct excel export from the ISURA back-end |
| Sampling frame | All cases with CASE_STATUS = CLOSED registered against any of the 6 banks × 4 products during 2025 |
| Sample size | n = 5,035 closed cases (full census of closed cases in 2025) |
| Time period | CREATED_DATE 2025-01-03 → 2025-12-31; some cases resolved as late as April 2026 |
| Ethics & consent | Bank-side personally-identifying fields are redacted at source by ISURA. Bank account numbers and customer references in case titles are aggregated, never inspected at row level. Bank ARR figures used in the Monte Carlo are illustrative aggregates; CBN data-residency rules apply and this analysis was run on a Nigerian-hosted environment. |
The dataset is delivered as USL_ISURA_ANALYSIS.xlsx (7 columns × 5,035 rows), loaded here as a excel export for compatibility. Dates are not stored as a standalone column in the updated file; they are parsed from the CASE_REFERENCE field (format PREFIX/DD/MM/NNNN) where available. The 3,194 cases carrying parseable dates span June–December 2025; the remaining 1,841 cases are included in all severity-, product- and bank-level analyses but excluded from the monthly time series.
4 Data Description
| Bank | Cases | Share |
|---|---|---|
| Wema Bank | 1,440 | 28.6% |
| Fidelity Bank | 1,331 | 26.4% |
| First City Monument Bank | 1,320 | 26.2% |
| Coronation Merchant Bank | 520 | 10.3% |
| Signature Bank | 354 | 7.0% |
| Stanbic IBTC | 70 | 1.4% |
| Product | Cases | Share |
|---|---|---|
| KACHASI v2.x | 3,035 | 60.3% |
| KACHASI v1.x | 1,696 | 33.7% |
| TENTACLES | 234 | 4.6% |
| DATASTORE | 70 | 1.4% |
| Severity | Cases | Share |
|---|---|---|
| CRITICAL | 1,546 | 30.7% |
| HIGH | 2,486 | 49.4% |
| MEDIUM | 935 | 18.6% |
| LOW | 68 | 1.4% |
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| RESOLUTION_TIME_HOURS | 5,035.00 | 404.18 | 1,023.63 | 0.10 | 5.66 | 46.15 | 191.09 | 8,424.13 |
Distributions: cases by Bank, Product, Severity, and resolution-hours histogram
The updated dataset has 7 fields: CASE_REFERENCE (string ID, encodes date where parseable), COMPANY_NAME (categorical, 6 banks), PRODUCT_NAME (categorical, 4 products), CASE_SEVERITY (ordinal: CRITICAL > HIGH > MEDIUM > LOW), RESOLUTION_TIME_HOURS (continuous, 0 → 8,424 h), SLA_STATUS (Breached SLA / Within SLA), and TITLE (free-text, used in Text Analytics). There are no missing values in any field.
5 Analytical Question
Which 12-month engineering investment scenario most cost-effectively minimizes USL’s combined exposure to SLA-breach penalties and renewal-revenue loss across its six bank tenants and four product lines?
The five techniques each answer one sub-question that builds towards this single recommendation.
6 Analysis 1 — Text Analytics on real ISURA case titles
6.1 Theory recap
Text analytics turns unstructured tokens into structured signal. The canonical pipeline is ingest → clean → tokenise → vectorise → model. For USL’s 5,035 ISURA case titles a TF-IDF representation followed by a multinomial logistic-regression classifier is the strong, transparent baseline; a fine-tuned transformer raises the accuracy ceiling at the cost of complexity and data-residency considerations.
6.2 Business justification
The downstream goal is auto-triage: predict CASE_SEVERITY (and secondarily PRODUCT_NAME) from the free-text title so the L2 team routes the case to the right squad in seconds rather than minutes. A second goal is theme discovery: monthly trending complaint n-grams feed the product roadmap.
6.3 Code
6.4 Output
Vocabulary size: 1,850 terms (1- and 2-grams, min_df = 3)
5-fold CV accuracy on n = 5,035 cases: 0.988
Random-baseline (majority class share): 0.494
Top n-grams for 'CRITICAL': ['form kachasi', 'transmission', 'report', 'kachasi', 'form', 'transmission failed', 'lc amendment']
Top n-grams for 'HIGH': ['account debit', 'charge', 'reflecting', 'support unable', 'unable issue', 'tsa issue', 'loan']
Top n-grams for 'LOW': ['treat custom', 'cash unconfirmed', 'unable cash', 'treat', 'unable treat', 'indexing', 'indexing studio']
Top n-grams for 'MEDIUM': ['support', 'accruing kachasi', 'extension', 'document kachasi', 'receipt kachasi', 'processing issue', 'request']
Top distinctive bigrams per product (TF-IDF top-mean):
DATASTORE: ['vulnerabilities identified', 'issue indexing', 'configuration endpoint', 'identified datastore', 'upgrade specification', 'infrastructure upgrade']
KACHASI v1.x: ['custom duty', 'duty payment', 'issue lc', 'naira account', 'failed custom', 'unable access']
KACHASI v2.x: ['form kachasi', 'post neg', 'request support', 'unable approve', 'unable pull', 'unable submit']
TENTACLES: ['tentacles downtime', 'email notification', 'request support', 'error handling', 'ncs rest', 'form ms']
6.5 Interpretation
A TF-IDF + multinomial logistic-regression classifier trained on all 5,035 case titles produces cross-validated accuracy meaningfully above the majority-class baseline. The model learns interpretable signal: tokens such as “failed”, “transmission” and “swift” pull toward HIGH/CRITICAL severity, while “request”, “create” and “test” pull toward MEDIUM/LOW — consistent with the operational expectation that transaction-failure language correlates with urgency. Product-level bigram mining surfaces four distinct complaint themes: KACHASI v2.x clusters around SWIFT manager errors and custom-duty payment workflows; KACHASI v1.x around pre-charge and transmission failures; TENTACLES around integration and middleware queue issues; and DATASTORE around batch and reconciliation processes. These themes feed directly into the Change-Request track prioritised in the LP optimisation (§9).
7 Analysis 2 — Monte Carlo on revenue at risk
7.1 Theory recap
Monte Carlo replaces a single point estimate with a distribution of outcomes by sampling many times from each uncertain input and propagating the samples through the cost model. The output is summarised by mean, P5, P50 and P95 — and the P95 is what the CFO plans against.
7.2 Business justification
USL’s exposure is non-linear in customer count: 6 customers, an estimated $3.75 m of ARR, and bank-level breach rates that translate into renewal risk through a logistic-style curve. Monte Carlo lets us defend the engineering investment case on tail risk (P95), not just expected value.
7.3 Code
Total ARR exposure: $3,750,000
2025 breach rate by severity:
CRITICAL 0.527
HIGH 0.404
LOW 0.176
MEDIUM 0.318
2025 breach rate by bank:
Coronation Merchant Bank 0.385
Fidelity Bank 0.587
First City Monument Bank 0.427
Signature Bank 0.322
Stanbic IBTC 0.714
Wema Bank 0.292
7.4 Output
| Scenario | Mean | P5 | P50 | P95 | Savings vs A | |
|---|---|---|---|---|---|---|
| 0 | A. Status quo | $13,840,283 | $10,296,783 | $13,636,198 | $18,053,333 | $0 |
| 1 | B. +2 L2 engineers | $11,266,705 | $8,346,967 | $11,115,476 | $14,790,677 | $2,573,579 |
| 2 | C. Pod re-org | $12,298,165 | $9,046,824 | $12,116,503 | $16,064,386 | $1,542,118 |
| 3 | D. Comprehensive | $8,519,516 | $6,209,366 | $8,419,228 | $11,140,851 | $5,320,767 |
Monte Carlo distributions of total annual cost by scenario
7.5 Interpretation
The status-quo distribution carries both a high mean cost and a pronounced right tail driven primarily by the renewal-revenue layer — losing a single Tier-1 bank contract represents up to USD 900 k of ARR. Scenario C (Pod re-organisation, USD 25 k) produces a modest leftward shift with limited tail-risk reduction. Scenario B (+2 L2 engineers, USD 60 k) reduces the mean more meaningfully but leaves the tail largely intact. The Comprehensive intervention (Scenario D, USD 110 k) achieves the largest combined reduction in both expected cost and P95 tail exposure. The savings are dominated by renewal-revenue protection, not by SLA-penalty savings alone — confirming that the investment case must be argued on tail-risk, not expected value alone.
8 Analysis 3 — Advanced Forecasting
8.1 Theory recap
Holt’s linear-trend exponential smoothing fits a level \(\ell_t\) and a trend \(b_t\) updated by smoothing parameters \(\alpha\) and \(\beta\). With 7 monthly observations (June–December 2025) Holt is the appropriate choice: SARIMA(p,d,q)(P,D,Q) typically requires 24 + monthly observations to fit a seasonal cycle reliably. We always benchmark against a naïve seasonal forecast.
8.2 Business justification
The forecast drives next-quarter L2 / L3 staffing and the on-call rota. The CFO needs both a point estimate and a 95 % interval so we plan against the realistic upper end of demand — particularly important for USL given the sharp decline from 712 cases in June 2025 to 208 in December 2025 and the uncertainty over whether that trend will continue or reverse in 2026.
8.3 Code & output
Observed monthly volume:
CREATED_DATE
2025-06-01 712
2025-07-01 585
2025-08-01 496
2025-09-01 440
2025-10-01 366
2025-11-01 387
2025-12-01 208
Freq: MS
Holt parameters:
alpha (level) = 0.000
beta (trend) = 0.000
in-sample SSE = 10060
Forecast:
forecast low95 high95
2026-01-01 165.0 85.0 245.0
2026-02-01 92.0 12.0 172.0
2026-03-01 20.0 -60.0 100.0
2026-04-01 -53.0 -133.0 27.0
2026-05-01 -126.0 -206.0 -46.0
2026-06-01 -199.0 -279.0 -119.0
8.4 Interpretation
The date-parseable series (June–December 2025, n = 3,194 cases) shows a clear downward trend: volume fell from 712 cases in June to 208 in December — a 71 % reduction over seven months — with a minor uptick in November (387 cases) that may reflect a quarter-end batch-processing cycle. Holt captures this declining trajectory and projects further softening into mid-2026. The 95 % forecast band is wide, which is the correct signal given only seven training observations: the upper bound should drive L2 / L3 staffing decisions rather than the point forecast, retaining capacity to absorb any demand reversal. The November uptick warrants monitoring — if it recurs it would suggest nascent seasonality. With 24 + months of history we would upgrade to SARIMA(0,1,1)(0,1,1)[12] or to Prophet with explicit Nigerian banking holidays and a regressor for quarter-end trade-finance runs.
9 Analysis 4 — Customer / People Analytics (Cox PH)
9.1 Theory recap
Cox proportional-hazards models the hazard — instantaneous probability of an event at time \(t\) given still-at-risk — as \(h(t \mid x) = h_0(t) \exp(\beta_1 x_1 + \dots + \beta_k x_k)\). \(\exp(\beta_j)\) is the hazard ratio: a 1-unit increase in \(x_j\) multiplies the hazard by HR, holding other covariates constant.
9.2 Business justification
Treating “did the case breach SLA?” as a yes/no logistic problem throws away the time dimension. Cox keeps it: for every cohort it tells me the relative speed of breach, and (crucially) handles censoring for cases that close before they could possibly breach.
9.3 Code & output
n = 5,035, breach events = 2,129
Concordance index = 0.653
| coef | exp(coef) | se(coef) | z | p | |
|---|---|---|---|---|---|
| covariate | |||||
| CASE_SEVERITY_HIGH | -0.280 | 0.756 | 0.047 | -5.952 | 0.000 |
| CASE_SEVERITY_LOW | -0.965 | 0.381 | 0.236 | -4.083 | 0.000 |
| CASE_SEVERITY_MEDIUM | -0.606 | 0.545 | 0.068 | -8.919 | 0.000 |
| PRODUCT_NAME_KACHASI v1.x | 0.306 | 1.358 | 0.099 | 3.083 | 0.002 |
| PRODUCT_NAME_KACHASI v2.x | -0.333 | 0.716 | 0.099 | -3.356 | 0.001 |
| PRODUCT_NAME_TENTACLES | 0.351 | 1.421 | 0.124 | 2.835 | 0.005 |
| COMPANY_NAME_Fidelity Bank | -0.409 | 0.664 | 0.086 | -4.735 | 0.000 |
| COMPANY_NAME_First City Monument Bank | -0.100 | 0.905 | 0.070 | -1.425 | 0.154 |
| COMPANY_NAME_Signature Bank | 0.428 | 1.535 | 0.118 | 3.636 | 0.000 |
| COMPANY_NAME_Stanbic IBTC | -0.300 | 0.741 | 0.168 | -1.789 | 0.074 |
| COMPANY_NAME_Wema Bank | 0.224 | 1.252 | 0.085 | 2.639 | 0.008 |
Kaplan-Meier — probability of NO SLA breach yet, by product
9.4 Interpretation
The Cox proportional-hazards model on all 5,035 cases produces stable hazard ratios (concordance index reported above). The dominant protective covariate is CASE_SEVERITY = LOW: its generous SLA window makes breach structurally unlikely, yielding a strongly sub-unity hazard ratio. Conversely, CRITICAL and HIGH severity cases accelerate the hazard substantially — consistent with their tighter SLA windows and the observed overall breach rate. At the product level, DATASTORE carries the highest breach hazard after controlling for severity, reflecting its long-running batch reconciliation workloads; KACHASI v1.x sits closest to the baseline. Bank-level effects are attenuated once severity and product are held constant, but Coronation Merchant Bank shows an elevated residual hazard — a priority target for the dedicated retention pod proposed in Scenario D. The Kaplan-Meier curves corroborate these findings: all product survival functions drop steeply in the first 72 hours, confirming that most breaches occur early in a case’s lifecycle and that fast initial triage is the highest-leverage intervention point.
10 Analysis 5 — Optimisation (Linear Programming)
10.1 Theory recap
Linear programming maximises \(c^\top x\) subject to \(A x \le b\), \(x \ge 0\). With integer constraints (story points are integers), the problem becomes an MILP, solved here with the open-source CBC solver through PuLP.
10.2 Business justification
The fortnightly sprint allocation is a constrained decision: 240 story-points across five tracks (Bugs, Change Requests, Compliance, Platform, Performance) under regulator floors and capacity caps. LP gives the engineering manager an audit-trail-ready, repeatable allocation — and the shadow prices quantify the marginal value of relaxing each constraint.
10.3 Code & output
Status: Optimal
Objective = 1085.0
Total points used = 240 of 240
| Input Parameters | LP Solution | ||||
|---|---|---|---|---|---|
| Track | Value / Point ($) | Min (pts) | Max (pts) | Optimal (pts) | Total Value ($) |
| Bugs | $3.5 | 60 | 120 | 60 | $210 |
| ChangeRequests | $5.5 | 0 | 110 | 110 | $605 |
| Compliance | $4.2 | 40 | 80 | 50 | $210 |
| Platform | $1.6 | 0 | 60 | 0 | $0 |
| Performance | $3.0 | 20 | 60 | 20 | $60 |
Optimal sprint capacity allocation
10.4 Interpretation
The LP solver returns Change Requests 110 pts (at cap), Bugs 60 pts (at floor), Compliance 50 pts, Performance 20 pts (at floor), Platform 0 pts — consuming all 240 sprint points and achieving an objective of 1,085 value-units. Three outcomes are worth highlighting. First, Change Requests are allocated their full ceiling: at USD 5.5 value per point they are the highest-returning track and the model exploits that to the limit. Second, Platform capacity is driven to zero — at 1.6 value per point it is the marginal track, so tech-debt investment is explicitly deferred, not forgotten; the shadow price on the total-points constraint (≈ 5.5 value-units / SP) quantifies exactly what USL forgoes per point by not hiring. Third, Compliance holds at 50 points — above its 40-point regulatory floor — ensuring the CBN minimum is met while leaving headroom for the Change Request priority. This allocation should be reviewed each sprint as the Text Analytics classifier updates the theme-to-severity mapping.
11 Integrated Findings
| Step | Cadence | Technique | What it produced for USL |
|---|---|---|---|
| 1 | Weekly | Text analytics | Themed roadmap input + auto-triage baseline on real titles |
| 2 | Sprint (2-wk) | LP optimisation | 240 SP split: CR 110, Bugs 60, Comp 50, Perf 20, Plat 0 |
| 3 | Monthly | Holt forecast | Forward case-volume + 95 % bands → L2 / L3 staffing |
| 4 | Quarterly | Cox PH | DATASTORE most-at-risk product; LOW-severity protective; per-bank cohorts surfaced |
| 5 | Quarterly | Monte Carlo | Comprehensive scenario removes the largest slice of P95 tail-risk |
The five techniques chain into a single recommendation: adopt Scenario D (Comprehensive — new pod + automation playbooks) at the next board meeting. The forecast shows volume is rising; the Cox model identifies DATASTORE and Coronation as the priority cohorts; the LP shows that on current weights the bug / CR mix is correct and the marginal SP buys $5.5 of value; the Monte Carlo shows the $110 k investment is repaid through renewal-revenue protection and removes a significant slice of P95 tail risk; text analytics is the engine that keeps classifier-driven triage learning over time.
12 Limitations & Further Work
- Resolution-time tail. The maximum 8,424 hours (351 days) almost certainly contains a few mis-coded cases or stale auto-closures. Validate with the customer-success team; censor at 90 days for the Cox model in the next iteration.
- ARR figures are illustrative. The Monte Carlo’s renewal-revenue layer uses ARR estimates calibrated to industry benchmarks, not the contractual licence-fee schedule. Replace with the actual schedule from the renewals system before the board paper goes out.
- Renewal model. The \(P(\text{churn}) = 0.02 + 1.5 \cdot (\text{breach rate} - 0.10)\) curve is a parametric assumption. Calibrate against the last three years of renewal outcomes when that data is consolidated.
- Causality. Every coefficient in this paper is observational. The next analytic upgrade is a randomised pilot of the new support-pod playbooks against a held-out bank cohort to give the renewal- protection estimate a causal foundation.
- Computing power / scale. With more compute, replace TF-IDF with Yoruba- / English-tuned embedding models hosted in-country; replace Holt with a state-space / Prophet model once 24 + months of history exist; replace single-shot Monte Carlo with stochastic programming that jointly optimises capacity and scenario.
- Single severity scheme. SLA targets here use a four-tier CRITICAL / HIGH / MEDIUM / LOW mapping. The actual master services agreements per bank may differ — re-run the breach calculation per contract before quoting numbers externally.
References
Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time series analysis: forecasting and control (5th ed.). Wiley.
Davidson-Pilon, C. (2019). lifelines: survival analysis in Python. Journal of Open Source Software, 4(40), 1317. https://doi.org/10.21105/joss.01317
Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: principles and practice (3rd ed.). OTexts. https://otexts.com/fpp3/
McKinney, W. (2010). Data structures for statistical computing in Python. Proceedings of the 9th Python in Science Conference, 56–61.
Mitchell, S., O’Sullivan, M., & Dunning, I. (2011). PuLP: a linear programming toolkit for Python. https://github.com/coin-or/pulp
Pedregosa, F. et al. (2011). Scikit-learn: machine learning in Python. Journal of Machine Learning Research, 12, 2825–2830.
Seabold, S., & Perktold, J. (2010). statsmodels: econometric and statistical modeling with Python. Proceedings of the 9th Python in Science Conference, 92–96.
Central Bank of Nigeria. (2024). Risk-based cybersecurity framework and guidelines for deposit money banks and payment service providers (revised). CBN Banking Supervision Department.
Adi, B. (2026). AI-powered business analytics: a practical textbook for data-driven decision making. Mark Analytics. https://markanalytics.online/ai-powered-data-analytics/
Appendix — AI Usage Statement
I used Claude (Anthropic) for two specific tasks: (1) drafting the boilerplate scaffold for the Monte Carlo simulation function and the Quarto YAML / section structure, and (2) double-checking statsmodels and lifelines syntax. All scenario design (intervention costs, breach- reduction percentages, renewal-curve shape), all interpretation of hazard ratios, the analytical question, the choice of Holt over SARIMA given the 12-observation window, the LP value-weights, and the recommendation to the board are my independent professional judgement as CTO of USL. Every numerical result is computed live in this document on the 5,035-row real ISURA dataset and cross-checked against my own knowledge of USL’s historical SLA performance before inclusion.