Advanced Operational Analytics for Technical Service Delivery and Customer Success at SoftWorks Limited
Author
Fisayo Omotayo
Published
May 18, 2026
1 Executive Summary
SoftWorks Limited faces challenges in managing project cost overruns, fluctuating demand for technical support, suboptimal cross-selling, and inefficient resource allocation across key services including SWIFT Infrastructure, ATM Support, Software Development, and IT Infrastructure.
The study utilised real internal company data comprising project records (projects.csv), support ticket logs, and weekly support reports. After cleaning and preprocessing, the dataset included project financials, timelines, service categories, and customer information.
The data analysis task provided the following insigts:
-> Monte Carlo Simulation revealed significant cost overrun risks, with the P90 indicating potential financial exposure;
-> Prophet forecasting models showed fluctuating yet predictable demand patterns for projects and support tickets through 2027;
-> Customer analytics identified that a small group of clients drives the majority of revenue, with Software Support and SWIFT services being the most dominant; and
-> Association Rules analysis uncovered strong service combinations, particularly ATM Support with AML Solution and Consultancy & Training, and various SWIFT-related services frequently purchased together.
Considering the outcome of the analaysis, I hereby recommend that the Management should develop integrated service bundles, strengthen project risk and change control processes, implement data-driven capacity planning, and establish a focused Key Account Management program for high-value customers. These actions will improve profitability, operational efficiency, and customer satisfaction.
This study applies five advanced analytical techniques to real operational data from SoftWorks Nigeria Limited to improve technical service delivery, reduce project risk, enhance customer retention, and drive cross-selling opportunities.
2 Professional Disclosure
I am the General Manager, Technical at SoftWorks Limited, a technology solutions company based in Lagos, Nigeria. I oversee the full spectrum of technical operations, including product development, product deployment, post-deployment support, and technical service delivery. I am also responsible for the commercial aspects of our solutions, particularly the sales and account management of our technology products and services to corporate clients, especially banks and financial institutions.
Our core offerings include custom software development, SWIFT infrastructure support, SWIFT Addon Services, Software Support, SWIFT Enterprise Bus, Consultancy and Training, IT Infrastructure Service, AML Solutions, Hospital Management Solution and Automated Teller Machines (ATMs) Support. These solutions are mission-critical to our clients’ operations, making reliability, timely support, and customer satisfaction key performance drivers for the business.
The five advanced analytical techniques applied in this case study are directly relevant to the challenges I face daily in my role:
1. Text Analytics & Sentiment Analysis
As the leader responsible for technical support and customer success, we generate large volumes of support tickets, incident reports, client feedback emails, and internal meeting minutes. Text analytics and sentiment analysis enable us to extract actionable insights from this unstructured data to improve service quality and product development priorities.
2. Monte Carlo Simulation
Technology deployment projects (especially Software development and SWIFT Enterprise Bus) are subject to significant uncertainties around cost, timeline, and scope. Monte Carlo simulation helps me quantify risks, set realistic budgets, and make informed decisions on project contingencies and pricing.
3. Advanced Forecasting using Prophet
Accurate forecasting of support demand, project pipeline, and revenue is critical for resource planning. Prophet models allow me to forecast monthly support ticket volumes, ATM maintenance demand, and project implementation schedules, thereby optimizing team capacity and improving SLA performance.
4. Customer / People Analytics
I manage both customer relationships and technical teams. Customer analytics techniques help us understand churn risk, contract renewal probability, and customer lifetime value across our bank clients. This directly supports targeted retention strategies and sales efforts.
5. Optimisation or Association Rules
Our solutions are often delivered in bundles (e.g., Software + SWIFT integration + IT Infrastructure Service). Association rules analysis helps uncover common product bundles and cross-selling opportunities, while optimisation techniques support efficient resource allocation across multiple concurrent projects.
This case study represents a practical application of advanced analytics to real business challenges I encounter as General Manager, Technical at SoftWorks Limited.
3 Data Collection & Sampling
3.1 Data Sources and Collection Methodology
As General Manager, Technical at SoftWorks Limited, I have full access to internal operational systems. Data for this case study was collected directly from primary company sources between January 1, 2020 and March 31, 2026. The collection process involved exporting raw data from the company’s finance management records, company’s sales data, support ticketing system, and internal documentation repositories for meeting minutes and some weekly support reports.
Five (5) main datasets were extracted:
Support Tickets (incident_tickets.xlsx) – Exported from the company’s support ticketing system.
Projects Reports – Excel file stored in the data/raw/projects/ folder, containing projects.xlsx file that was extracted from the internal finance management system (Microsoft GP).
Meeting Minutes – DOCX documents stored in the data/raw/minute_of_meeting/ folder, some monthly technical quality meeting and monthly revenue unit (RU) sales review meetings.
Survey report (survey_report_presentation.ppt) –The TELNET group’s (SoftWorks is a subsidiary of TELNET Nigeria Limited) 2025 survey report was also extracted from internal documentation repositoriesfor analysis.
Weekly Support Report – Multiple Excel files stored in the data/raw/weekly_report/ folder containing weekly ATM support report was extracted from internal documentation repositories.
All data exports were performed by data owner within the company and handed over to me after required approvals were secured. No third-party data or public datasets were used as the primary source.
3.2 Sampling Frame and Time Period
Time Period: January 2020 to March 2026 (63 months of operational data).
Support Tickets & Meeting Minutes: All available records within the period that contained meaningful text (minimum 30 characters after cleaning).
Projects: All completed projects with sufficient documentation (678 records in an Excel file).
No random sampling was applied. A census approach was used for projects, while text data was filtered only to remove empty or irrelevant entries. This approach ensures maximum relevance and representativeness of actual business operations.
3.3 Data Preprocessing and Anonymisation
All datasets were processed using R (tidyverse, readxl, readtext). Column names were standardized, missing values handled, and dates properly formatted.
Anonymisation was strictly applied as follows: - Customer names replaced with codes (CUST_001, CUST_002, etc.) - Project names and internal staff names anonymised - Sensitive financial figures were retained only where necessary for analysis and presented in aggregated form where possible.
3.4 Ethical Considerations
This study uses only internal operational data collected in the normal course of business. No personal identifiable information (PII) beyond business contact and contract data was included. All data handling complies with SoftWorks Limited’s internal data governance policies. The analysis is conducted solely for academic purposes and internal process improvement.
3.5 Data Limitations
The main limitation is that some older project files had inconsistent column structures, which were resolved through flexible column mapping during processing. Additionally, sentiment analysis is based on written text and may not fully capture tone or context without manual review.
4 Data Description
This analysis utilizes two primary datasets collected from SoftWorks Limited’s internal operational systems.
4.1 Project Dataset (projects.csv)
This dataset captures detailed information about information technology projects (SWIFT Infrastructure Support, SWIFT enterprise box solutions, Automated Teller Machine (ATM) Support, Software Development, etc.) executed for corporate clients in financial, government and oil and gas sector of the economy.
Code
# Load librarieslibrary(readr)library(tidyverse)library(lubridate)library(gridExtra) # For arranging multiple plotslibrary(scales)library(plotly)library(correlation)library(tm)library(SnowballC)library(textstem)library(tidytext)library(knitr)library(kableExtra)library(naniar)library(reshape2)library(syuzhet)library(prophet) # for forecastinglibrary(dygraphs)library(arules)library(arulesViz)# =============================================# EDA - DISTRIBUTIONS & DATA DESCRIPTION# ============================================# Load your main datasetsprojects <-read_csv("data/processed/projects.csv")customers <-read_csv("data/processed/customers.csv")sales_data <-read_csv("data/processed/sales_data.csv")support_tickets <-read_csv("data/processed/incident_tickets.csv")meeting_minute <-read_csv("data/processed/meeting_minutes_corpus.csv")survey_report <-read_csv("data/processed/ppt_text_corpus.csv")weekly_support_report <-read_csv("data/processed/weekly_support_reports.csv")# =============================================# Custom Currency Label Function (₦)# =============================================naira_format <-function(x) {paste0("₦", comma(x))}# Variable Tablevariable_summary <-tibble(Variable =c("CUSTOMER NAME", "PROJECT NUMBER", "PROJECT NAME", "BEGIN DATE (FORECAST)", "END DATE (FORECAST)", "END DATE (ACTUAL)", "DURATION", "PROJECT AMOUNT", "TOTAL COST (FORECAST)", "TOTAL COST (ACTUAL)", "SERVICE_CATEGORY", "STATUS"),Type =c("Character", "Character", "Character", "Date", "Date", "Date", "Numeric", "Numeric", "Numeric", "Numeric", "Character", "Character"),Description =c("Name of the client", "Unique project identifier", "Description of the project", "Planned start date", "Planned completion date", "Actual completion date", "Project duration in days", "Budgeted project amount (BIIEE)", "Forecasted total cost", "Actual total cost incurred", "Service category (e.g., ATM Support, SWIFT Infrastructure)", "Current project status"),Notes =c("", "", "", "", "", "Many ongoing projects", "", "Main budget variable", "", "", "Key categorical variable", ""))knitr::kable(variable_summary,caption ="Project Dataset - Variable Description",align ="l") %>% kableExtra::kable_styling(bootstrap_options =c("striped", "hover", "condensed"), full_width =FALSE)
Project Dataset - Variable Description
Variable
Type
Description
Notes
CUSTOMER NAME
Character
Name of the client
PROJECT NUMBER
Character
Unique project identifier
PROJECT NAME
Character
Description of the project
BEGIN DATE (FORECAST)
Date
Planned start date
END DATE (FORECAST)
Date
Planned completion date
END DATE (ACTUAL)
Date
Actual completion date
Many ongoing projects
DURATION
Numeric
Project duration in days
PROJECT AMOUNT
Numeric
Budgeted project amount (BIIEE)
Main budget variable
TOTAL COST (FORECAST)
Numeric
Forecasted total cost
TOTAL COST (ACTUAL)
Numeric
Actual total cost incurred
SERVICE_CATEGORY
Character
Service category (e.g., ATM Support, SWIFT Infrastructure)
The project dataset exhibited a high level of data completeness. Analysis using the naniar package revealed no missing values across all key variables, including PROJECT AMOUNT, TOTAL COST (FORECAST), TOTAL COST (ACTUAL), DURATION, and SERVICE_CATEGORY. This indicates excellent data quality from the source systems, requiring minimal imputation or data cleaning. The missing value pattern visualization and table below confirms a fully populated dataset, allowing for robust and reliable statistical analysis without the typical concerns associated with incomplete records.
Interpretation: The results reveal exceptionally strong positive correlations among all three variables. Notably, Project_Amount shows a very strong correlation with both Total_Cost_Forecast (r = 0.993) and Total_Cost_Actual (r = 0.990). This indicates that the initial budgeted project amount is a highly reliable predictor of both forecasted and actual project costs. Furthermore, the correlation between Total Cost Forecast and Total Cost Actual is nearly perfect (r = 0.998), suggesting that the company’s cost forecasting process is highly accurate and consistent with actual expenditures. These findings imply that project budgeting at SoftWorks Limited is well-structured, with minimal deviation between planned and actual costs. The strong linear relationships support the use of Project_Amount as a key leading indicator for financial planning and resource allocation in future projects.
4.5 Text Corpus Dataset (text_corpus_clean_combined.csv)
cat("Average Word Count (Cleaned):", round(mean(text_corpus$word_count_clean), 1), "\n")
Average Word Count (Cleaned): 673
Document Type Distribution
Code
doc_type_summary <- text_corpus %>%count(file_type) %>%mutate(Percentage =round(n /sum(n) *100, 1),file_type =str_to_title(file_type) )# Interactive Plotp_doc_type <-plot_ly(data = doc_type_summary,y =~reorder(file_type, n),x =~n,type ="bar",orientation ="h",text =~paste0("<b>", file_type, "</b><br>","Count: ", n, "<br>","Percentage: ", Percentage, "%" ),hoverinfo ="text",marker =list(color = viridis::viridis(nrow(doc_type_summary), option ="D"))) %>%layout(title ="Distribution of Documents by Type",xaxis =list(title ="Number of Documents"),yaxis =list(title =""),margin =list(l =200, r =30, t =80, b =50),hoverlabel =list(bgcolor ="white", font =list(size =13)) )# Display interactive chartp_doc_type
5 Analysis 1: Text Analytics & Sentiment Analysis
5.1 Theory Recap
Text Analytics involves converting unstructured text into structured insights using techniques like tokenization, TF-IDF, and sentiment lexicons.
5.2 Business Justification
As Technical GM, understanding customer sentiment from support tickets and meeting minutes helps identify recurring issues in our product deployment and support activities for faster product improvement and better customer retention.
5.3 Analysis Output
Below shows the result of text anlaysis and sentiment analysis carried out on our selected unstructured data (meeting minutes, survey report and incident tickets).
Code
# TF-IDF Top Termstfidf_words <- text_corpus %>%unnest_tokens(word, full_text_clean) %>%count(doc_id, word, sort =TRUE) %>%bind_tf_idf(word, doc_id, n) %>%group_by(word) %>%summarise(tf_idf =sum(tf_idf)) %>%top_n(20, tf_idf)ggplot(tfidf_words, aes(x =reorder(word, tf_idf), y = tf_idf)) +geom_col(fill ="steelblue") +coord_flip() +labs(title ="Top 20 Most Distinctive Terms (TF-IDF)") +theme_minimal()
# Bar Chart - Positive vs Negativep1 <- text_corpus_sentiment %>%summarise(Positive =mean(positive), Negative =mean(negative)) %>%pivot_longer(everything(), names_to ="Sentiment", values_to ="Score") %>%ggplot(aes(x = Sentiment, y = Score, fill = Sentiment)) +geom_col(width =0.6) +geom_text(aes(label =round(Score, 2)), vjust =-0.5, size =5) +scale_fill_manual(values =c("Positive"="darkgreen", "Negative"="darkred")) +labs(title ="Overall Sentiment Analysis",subtitle ="Average Sentiment Scores from Support Tickets & Meeting Minutes",y ="Average Score") +theme_minimal() +theme(legend.position ="none")# =============================================# 2. Emotion Breakdown (NRC Lexicon)# =============================================emotion_summary <- text_corpus_sentiment %>%select(anger, anticipation, disgust, fear, joy, sadness, surprise, trust) %>%summarise(across(everything(), mean)) %>%pivot_longer(everything(), names_to ="Emotion", values_to ="Score") %>%arrange(desc(Score))p2 <-ggplot(emotion_summary, aes(x =reorder(Emotion, Score), y = Score, fill = Score)) +geom_col() +coord_flip() +scale_fill_gradient(low ="lightblue", high ="darkblue") +labs(title ="Emotion Breakdown in Text Data",subtitle ="Average Emotion Scores using NRC Lexicon",x ="", y ="Average Score") +theme_minimal()# Display both plotsgrid.arrange(p1, p2, ncol =1)
5.4 Analysis Interpretation
The sentiment analysis of support tickets, meeting minutes, and project documents reveals a predominantly positive outlook, with a Positive score of 41.50 compared to a Negative score of 11.92. Trust and Anticipation emerged as the dominant emotions, indicating strong client confidence in SoftWorks’ technical capabilities. However, the presence of moderate negative sentiment highlights recurring pain points, particularly around project delays and implementation challenges.
Key Recommendations:
Strengthen project execution and communication to reduce negative sentiment. Leverage high trust levels to accelerate cross-selling of integrated solutions (SWIFT + ATM + Network services). Implement regular sentiment tracking as a leading indicator for customer satisfaction and retention.
Overall, the analysis shows healthy customer relationships with clear opportunities for service excellence and revenue growth.
6 Analysis 2: Monte Carlo Simulation
6.1 Theory Recap
Monte Carlo Simulation uses random sampling to model uncertainty and estimate probability distributions of outcomes.
6.2 Business Justification
Project deployments at SoftWorks Limited (especially SWIFT infrastructure and ATM solutions) are subject to significant uncertainty due to scope changes, technical complexities, and client-side delays. Monte Carlo Simulation is used to quantify cost risk and support better pricing, budgeting, and contingency planning.
6.3 Analysis Output
Below shows the result of Monte Carlo Simulation on our project data that was used.
The Monte Carlo simulation, based on historical project data, shows that while the average simulated total cost aligns closely with historical averages, there is notable risk in the upper tail. There is a 10% probability that project costs will exceed the P90 threshold (90% confidence level), highlighting the need for robust contingency planning.
Key Recommendations: Based on the findings above, below are recommendations to SoftWorks Limited:
Incorporate risk premiums in project pricing based on P90 values;
Strengthen project scoping and change control processes to reduce cost overruns; and
Use these simulation outputs during client negotiations to set realistic expectations and improve project profitability.
This analysis provides data-driven support for more accurate financial forecasting and risk management in technical operations of SoftWorks Limited.
7 Analysis 3: Advanced Forecasting using Prophet
7.1 Theory Recap
Prophet is a robust, open-source forecasting procedure developed by Facebook (now Meta). It is designed to handle time series data with strong seasonal effects, multiple seasonality, holidays, and missing data. The model decomposes time series into three main components:
Prophet uses an additive or multiplicative model and is particularly effective for business forecasting because it requires minimal manual tuning and produces intuitive, interpretable results with uncertainty intervals.
7.2 Business Justification
As General Manager, Technical at SoftWorks Limited, accurate forecasting is critical for optimizing resource allocation and service delivery across our core offerings. Prophet enables us to predict future demand with confidence, supporting better operational planning and decision-making. Specific applications include:
SWIFT Infrastructure Support: Forecasting monthly support ticket volumes and emergency interventions for banks running our SWIFT solutions. This helps ensure adequate staffing of certified SWIFT engineers, especially during peak financial periods such as year-end reporting and audits.
Software Development and Deployment: Predicting the number, value, and timeline of upcoming software development projects and deployment schedules. This allows for better allocation of developers, project managers, and testing resources, leading to improved delivery timelines and reduced project overruns.
Software Support & Maintenance: Anticipating recurring support demand and renewal trends for deployed applications. This supports proactive capacity planning, preventive maintenance scheduling, and more accurate revenue forecasting from annual maintenance contracts.
ATM Support: Forecasting ATM hardware maintenance calls, downtime incidents, and cash replenishment support requests. This enables optimized field engineer deployment, better spare parts inventory management, and improved uptime SLAs for our banking clients.
By leveraging Prophet on historical project and support data, we can shift from reactive firefighting to proactive capacity planning — ultimately reducing costs, improving service quality, and enhancing client satisfaction across all our service lines.
7.3 Analysis Output
Below shows the result of Monte Carlo Simulation on our project data that was used.
Code
# =============================================# 1. Projects Revenue Forecast# =============================================monthly_projects <- projects_clean %>%mutate(ds =`BEGIN DATE (FORECAST)`%>%as.character() %>%parse_date_time(orders =c("dmy", "ymd", "mdy", "dmy HMS", "ymd HMS")) %>%floor_date("month") ) %>%filter(!is.na(ds)) %>%group_by(ds) %>%summarise(y =sum(Project_Amount, na.rm =TRUE), .groups ='drop') %>%arrange(ds)# Build Prophet Modelmodel_p <-prophet(monthly_projects, yearly.seasonality =TRUE)# Extend forecast to end of 2027 (18+ months)future_p <-make_future_dataframe(model_p, periods =24, freq ='month') # 24 months aheadforecast_p <-predict(model_p, future_p)# Interactive Visualizationp1 <-plot_ly() %>%add_trace(data = forecast_p, x =~ds, y =~yhat, type ='scatter', mode ='lines',name ='Forecast', line =list(color ='#1f77b4', width =4)) %>%add_trace(data = forecast_p, x =~ds, y =~yhat_lower, type ='scatter', mode ='lines',name ='Lower Bound', line =list(color ='lightblue', dash ='dash')) %>%add_trace(data = forecast_p, x =~ds, y =~yhat_upper, type ='scatter', mode ='lines',name ='Upper Bound', line =list(color ='lightblue', dash ='dash'),fill ='tonexty', fillcolor ='rgba(173, 216, 230, 0.3)') %>%layout(title ="Project Revenue Forecast (2025 - 2027)",xaxis =list(title ="Year"),yaxis =list(title ="Total Project Amount (₦)", tickformat ="₦,"),hovermode ="x unified" )# =============================================# 2. Support Tickets Forecast# =============================================monthly_tickets <- support_tickets %>%mutate(# Specific parsing for format: "Apr 13, 2026 08:57 am"ds =`created`%>%as.character() %>%parse_date_time(orders =c("b d, Y I:M p", "b d, Y H:M"), quiet =TRUE) %>%floor_date("month") ) %>%filter(!is.na(ds)) %>%group_by(ds) %>%summarise(y =n(), # Count of tickets per month.groups ='drop' ) %>%arrange(ds)cat("✅ Support Tickets data prepared:", nrow(monthly_tickets), "months\n")
# =============================================# Build Prophet Model# =============================================model_tickets <-prophet(monthly_tickets, yearly.seasonality =TRUE,weekly.seasonality =FALSE,daily.seasonality =FALSE)# Forecast 24 months ahead (into 2027)future_tickets <-make_future_dataframe(model_tickets, periods =24, freq ='month')forecast_tickets <-predict(model_tickets, future_tickets)# =============================================# INTERACTIVE VISUALIZATION# =============================================p2 <-plot_ly() %>%add_trace(data = forecast_tickets, x =~ds, y =~yhat, type ='scatter', mode ='lines',name ='Forecast', line =list(color ='#d62728', width =4)) %>%add_trace(data = forecast_tickets, x =~ds, y =~yhat_lower, type ='scatter', mode ='lines',name ='Lower Bound', line =list(color ='#ff9896', dash ='dash')) %>%add_trace(data = forecast_tickets, x =~ds, y =~yhat_upper, type ='scatter', mode ='lines',name ='Upper Bound', line =list(color ='#ff9896', dash ='dash'),fill ='tonexty', fillcolor ='rgba(255, 182, 193, 0.3)') %>%layout(title ="Support Ticket Volume Forecast (Next 24 Months)",xaxis =list(title ="Year"),yaxis =list(title ="Number of Tickets"),hovermode ="x unified",legend =list(orientation ="h", y =1.1) )####################################################monthly_support <- weekly_support_report %>%mutate(ds =`Created Date/Time`%>%as.character() %>%parse_date_time(orders =c("dmy HMS", "dmy HM", "ymd HMS", "mdy HMS", "dmy", "ymd")) %>%floor_date("month") ) %>%filter(!is.na(ds)) %>%group_by(ds) %>%summarise(y =n(), # Number of support reports / incidents per month.groups ='drop' ) %>%arrange(ds)if (nrow(monthly_support) >=2) { model_support <-prophet(monthly_support, yearly.seasonality =TRUE,weekly.seasonality =FALSE,daily.seasonality =FALSE) future_support <-make_future_dataframe(model_support, periods =6, freq ='month') forecast_support <-predict(model_support, future_support)# =============================================# INTERACTIVE VISUALIZATION# ============================================= p3 <-plot_ly() %>%add_trace(data = forecast_support, x =~ds, y =~yhat, type ='scatter', mode ='lines',name ='Forecast', line =list(color ='#d62728', width =4)) %>%add_trace(data = forecast_support, x =~ds, y =~yhat_lower, type ='scatter', mode ='lines',name ='Lower Bound', line =list(color ='#ff9896', dash ='dash')) %>%add_trace(data = forecast_support, x =~ds, y =~yhat_upper, type ='scatter', mode ='lines',name ='Upper Bound', line =list(color ='#ff9896', dash ='dash'),fill ='tonexty', fillcolor ='rgba(255, 182, 193, 0.3)') %>%layout(title ="Monthly Support Reports Volume Forecast",subtitle ="Next 6 Months Prediction",xaxis =list(title ="Month"),yaxis =list(title ="Number of Support Reports"),hovermode ="x unified",legend =list(orientation ="h", y =1.1) )# Save as interactive HTML#htmlwidgets::saveWidget(p3, "plots/weekly_support_reports_forecast.html")#cat("✅ Interactive Weekly Support Reports Forecast created successfully!\n")} else {cat("❌ Not enough data points for Prophet model.\n")}# Display both interactive plotsp1
Code
p2
Code
p3
7.4 Interpretation and Business Implications
The Prophet forecasting models provide us with a forward-looking view of our business operations over the next 18–24 months. Here are the intelligence that can be deduced from the analysis:
1. Project Revenue Forecast (2025–2027) The forecast indicates that our project revenue will continue to fluctuate significantly from month to month. While we expect periods of strong revenue (especially from large SWIFT and ATM projects), there are also several months where revenue drops sharply. This pattern suggests we need to maintain a healthy pipeline of new projects to avoid cash flow gaps.
2. Support Ticket Volume Forecast The number of support tickets is expected to remain relatively stable but will show peaks and troughs. There are periods where ticket volume could rise sharply, particularly in early and mid-2026. This tells us we should prepare our support team capacity in advance to avoid delays in resolving customer issues.
3. Monthly Support Reports Volume Forecast This forecast shows a generally stable trend with a noticeable dip around mid-2026, followed by a recovery towards the end of the year. The sharp drop in one particular month may reflect seasonal patterns or temporary lulls in activity.
Overall Business Insight:
Our business is growing and active, but it is also highly variable. Revenue and support demand do not move in a straight line — they go up and down.
Key Recommendations:
Strengthen our project pipeline to reduce revenue fluctuations.
Cross-train more engineers so we can quickly respond during high-ticket periods.
Use these forecasts to better plan team size, budget, and hiring for 2026 and 2027.
Focus on improving project execution to reduce the need for excessive support after deployment.
These forecasts give us a valuable early warning system to run our technical operations more proactively rather than reactively.
8 Analysis 4: Customer / People Analytics
8.1 Theory Recap
Customer and People Analytics involves the systematic analysis of customer and employee data to understand behavior, value, retention, and engagement patterns. Key techniques include RFM analysis (Recency, Frequency, Monetary), Customer Lifetime Value (CLV) calculation, churn prediction, and segmentation. These methods help transform raw transactional and behavioral data into actionable insights about customer segments and workforce dynamics.
8.2 Business Justification
As General Manager, Technical at SoftWorks Limited, I oversee both customer relationships and technical team performance. Customer / People Analytics is highly relevant to our business for the following reasons:
1. Customer Analytics: Our revenue heavily depends on banks and corporate clients who purchase integrated solutions (SWIFT Infrastructure, ATM Support, Software Development, and Network Services). Understanding which customers generate the highest lifetime value, which ones are at risk of churn, and which services they commonly bundle together allows us to design targeted retention strategies, improve cross-selling, and prioritize high-value accounts.
2. People Analytics: On the internal side, I manage technical teams responsible for project delivery and support. Analyzing engineer productivity, project allocation, and support workload helps optimize team capacity, reduce burnout, and improve service quality — especially during peak periods for ATM deployments and SWIFT maintenance.
By applying Customer / People Analytics, we can move from intuition-based decisions to data-driven strategies that enhance customer loyalty, maximize revenue per client, and ensure our technical teams are efficiently deployed. This directly supports business growth, profitability, and sustainable competitive advantage in the highly demanding financial technology sector.
I focused my analysis on customer bacause that was the data I was able to lay my hand upon.
8.3 Analysis Output
Below shows the result of customer/people analysis on our project data that was used.
p_customers2 <-plot_ly(data = customer_by_type,y =~reorder(project_type, Num_Customers),x =~Num_Customers,type ="bar",orientation ="h",text =~paste0("<b>", project_type, "</b><br>","Unique Customers: ", Num_Customers, "<br>","Total Projects: ", Num_Projects, "<br>","Total Value: ₦", comma(Total_Project_Amount) ),hoverinfo ="text",marker =list(color = viridis::viridis(nrow(customer_by_type), option ="D"))) %>%layout(title ="Customer Distribution by Project Type",xaxis =list(title ="Number of Unique Customers"),yaxis =list(title =""),margin =list(l =280, r =30, t =80, b =50),hoverlabel =list(bgcolor ="white", font =list(size =13)) )p_customers2
8.4 Interpretation and Business Implications
The analysis of our customer base reveals several important insights about how our business is performing across different services. 1. Where Our Customers Are Concentrated Most of our customers are focused on Software Support and SWIFT Enterprise Bus solutions. These two categories account for the largest share of our customer relationships. ATM Support also serves a significant number of customers, though many of them are smaller or more transactional in nature. 2. Who Our Most Valuable Customers Are The Top 10 customers (shown in the second chart) contribute a very large portion of our total revenue. These key clients are spending tens to hundreds of millions of Naira with us. Focusing on these high-value customers is critical — keeping them satisfied and expanding their business with us should be a top priority. 3. Summary From the table:
Software Support has the highest number of unique customers and strong total value.
IT Infrastructure Service and ATM Support generate substantial revenue despite fewer customers in some cases.
Some service areas like Consultancy & Training and Hospital Management Solution are still emerging with fewer customers.
Key Takeaways for Management:
We have a solid and loyal customer base in Software Support and SWIFT solutions — we should protect and grow these relationships. b.A small number of customers contribute a large percentage of our revenue. Losing any of the Top 10 could have a significant impact.
There is clear opportunity to cross-sell (e.g., offering ATM Support or Network Services to our Software Support customers).
Recommendation: We should develop a Key Account Management program focused on our Top 10 customers and use these insights to create targeted service bundles that encourage existing customers to buy more from us.
9 Analysis 5: Association Rules (Market Basket Analysis)
9.1 Theory Recap
Association Rules, commonly known as Market Basket Analysis, is a data mining technique used to discover interesting relationships and patterns between items in large transactional datasets. The method identifies rules of the form: “If A, then B” (e.g., If a customer buys Product X, they are likely to also buy Product Y). Key metrics include:
1. Support: How frequently the items appear together 2. Confidence: How often the rule is correct 3. Lift: How much more likely the items are bought together compared to randomly
Popular algorithms such as Apriori and Eclat are used to generate these rules efficiently.
9.2 Business Justification
At SoftWorks Limited, our customers often purchase multiple related solutions. Association Rules helps us uncover hidden patterns among services such as SWIFT Infrastructure Support, Swift Addon Service, Software Support, IT Infrastructure Service, Software Development, Swift Enterprise Bus, ATM Support, Consultancy and Training, Hospital Management Solution, and AML Solution. This analysis enables us to:
Identify frequently purchased service combinations (e.g., SWIFT Infrastructure Support with ATM Support or Software Support with IT Infrastructure Service).
Design attractive service bundles and packages.
Improve cross-selling opportunities during project proposals and contract renewals.
Increase revenue per customer by recommending relevant add-on services.
By applying Association Rules, we can shift from selling individual services to offering integrated solutions that better meet customer needs, thereby driving higher customer satisfaction and revenue growth.
9.3 Analysis Output
Below shows the result of Association Rules analysis on our project data that was used.
The Association Rules analysis reveals important patterns in how our customers buy our services. Key Findings:
Customers who purchase ATM Support together with Consultancy and Training or IT Infrastructure Service are highly likely to also buy AML Solution.
Several strong combinations exist between SWIFT Infrastructure Support, Swift Addon Service, Swift Enterprise Bus, and ATM Support.
Services like Software Support, IT Infrastructure Service, and Consultancy and Training frequently appear together with other solutions.
What This Means in real sense of the business: Our customers rarely buy just one service. They tend to buy related services together. For example:
A customer buying ATM Support is very likely to need AML Solution as well.
SWIFT-related services are often purchased alongside ATM or Infrastructure solutions.
Business Opportunities: This is very good news for SoftWorks Limited. It shows clear potential to:
Create attractive service bundles (e.g., ATM Support + AML Solution package).
Train our sales and technical teams to recommend related services during project discussions.
Increase revenue from existing customers through better cross-selling.
Design more valuable integrated solutions instead of selling services individually.
Recommendation: We should use these insights to develop targeted service packages and improve how we present solutions to customers. By offering the right combination of services (especially around ATM, SWIFT, and AML), we can deliver more value to our clients while increasing our revenue per customer. This analysis helps us move from selling single services to offering complete, smart solutions that better meet our customers’ real needs.
10 Integrated Findings
Rather than operating as standalone analyses, these five data science techniques create an interconnected ecosystem. They move progressively from diagnosing current friction points to quantifying financial risk, mapping future resource capacity, identifying key value accounts, and finally, optimizing revenue generation through logical product bundling.
[1. Text & Sentiment] –> Identifies deployment delays & contract risks. | v [2. Monte Carlo] –> Quantifies financial impact & upper-tail risks (P90). | v [3. Prophet Time-Series]–> Forecasts when (2026/2027) these resource demands peak. | v [4. Customer Analytics] –> Pins down exactly WHICH high-value accounts (Top 10) are impacted. | v [5. Association Rules] –> Bundles cross-selling solutions to maximize lifetime value securely.
10.0.1 The Operational Diagnosis (Text Analytics & Sentiment Analysis)
This phase uncovers the qualitative “why” behind technical operations. While the overall sentiment is highly positive (41.50) due to deep-seated client trust, it highlights critical pain points around project deployment delays and implementation challenges. This diagnosis serves as the trigger for the rest of the pipeline: deployment delays directly create cost overruns and unpredictable timelines.
10.0.2 Quantifying the Risk (Monte Carlo Simulation)
The text analysis flagged deployment delays; the Monte Carlo simulation quantifies exactly how much those delays cost. By analyzing 677 historical projects, it reveals massive volatility in the upper tail (a huge standard deviation of ₦32M and a maximum project cost spike of ₦776M). It warns management that there is a 10% chance (P90) that project costs will scale up drastically to ₦10,506,124 or more. This connects the qualitative complaints from Text Analytics directly to financial risk.
10.0.3 Mapping Resource & Timeline Volatility (Advanced Forecasting via Prophet)
Knowing the cost risk exists isn’t enough—management needs to know when the operational environment will become volatile. Prophet steps in to model the next 18–24 months, predicting significant, non-linear fluctuations in project revenue and a sharp spike in support ticket volumes around early to mid-2026. This timeline forecasting tells the Technical GM exactly when the engineering team will be stretched thinnest, causing the exact deployment delays flagged in the sentiment analysis.
10.0.4 Isolating Value and Vulnerability (Customer Analytics)
Prophet indicates when the pressure points occur; Customer Analytics isolates who is affected. It reveals that a vital portion of SoftWorks’ multi-million Naira revenue is heavily concentrated within the Top 10 Key Accounts, primarily anchored in Software Support and SWIFT Enterprise Bus solutions. Because revenue is so concentrated, a single deployment delay (identified in Section 5) affecting a Top 10 client during a peak resource crunch period (identified in Section 7) poses a critical churn threat to the company’s financial core.
Finally, Association Rules provides the mechanism to defend these Top 10 accounts while stabilizing cash flow. By discovering deep transactional dependencies—such as the near-absolute certainty that clients buying ATM Support alongside Consultancy/IT Infrastructure will require AML Solutions (Lift scores up to 13.33)—SoftWorks transitions from reactive firefighting to structured account growth. This technique provides the precise blueprints for product bundling to cross-sell to those critical Top 10 accounts.
10.1 Unified Strategic Recommendation
Based on the collective insights of all five models, the ultimate recommendation for SoftWorks Limited is to establish a Data-Driven Key Account Management (KAM) Framework that utilizes predictive resource allocation to protect the Top 10 clients, while deploying algorithmic service bundles to stabilize fluctuating operational cash flow.
10.1.1 Actionable Implementation Blueprint:
Risk-Adjusted Pricing & Contingency: Immediately mandate that all new multi-disciplinary project proposals (especially SWIFT and ATM deployments) price in an operational risk premium using the P90 threshold (₦10.5M) discovered via the Monte Carlo simulation to hedge against implementation delays.
Proactive Capacity Planning for Mid-2026: Use the Prophet time-series forecast as an early-warning signal to aggressively cross-train engineers across SWIFT, ATM, and Software Support before the anticipated mid-2026 support ticket surge. This directly eliminates the resource bottlenecks causing the negative sentiment regarding deployment delays.
Algorithmic Cross-Selling Campaigns: Task the commercial and technical teams with designing an integrated, pre-packaged solution ecosystem. Instead of selling standalone services, pitch a high-margin “Core Financial Infrastructure Bundle” (combining ATM Support, IT Infrastructure, and AML Solutions) directly targeted at the Software Support and SWIFT clients within your Top 10 segment, securing predictable, recurring revenue streams through 2027.
#Limitations & FurtherWork Under customer/people analytics, I was unable to carry out people analyis because I was unable to get data from our HR department, this I will still have to do because I know we have some churn rate that requires analysis and deduce their impact on our project delivery and the flunctuating cash flow as shown in the analysis.
Additionaly, this tasks revealed to me that we need to put more structure around our ticketing system as many support requests are outside the ticketing system which make the outcome of my sentiment and prophet analysis not to give me the actual result that can be used for planning in the area of support ticket, but I love what I got in terms of project analysis and the financial forcast ast the end of the analysis.
I intend to still carry out further analysis with expanded dataset.
References
Adi, B. (2026). AI-powered business analytics: A practical textbook for data-driven decision making. Lagos Business School.
Arnold, J. B. (2024). scales: Scale functions for visualization (Version 1.3.0) [R package]. https://cran.r-project.org/package=scales
Attali, D., & Edwards, S. (2023). kableExtra: Construct complex table with ’kable’ and pipe syntax (Version 1.3.4) [R package]. https://cran.r-project.org/package=kableExtra
Feinerer, I., & Hornik, K. (2023). tm: Text mining package (Version 0.7-13) [R package]. https://cran.r-project.org/package=tm
Grolemund, G., & Wickham, H. (2011). Dates and times made easy with lubridate. Journal of Statistical Software, 40(3), 1–25. https://doi.org/10.18637/jss.v040.i03
Hahsler, M., Grün, B., & Hornik, K. (2023). arules: Mining association rules and frequent itemsets (Version 1.7-7) [R package]. https://cran.r-project.org/package=arules
Hahsler, M., & Chelluboina, S. (2023). arulesViz: Visualizing association rules and frequent itemsets (Version 1.5-2) [R package]. https://cran.r-project.org/package=arulesViz
Kuhn, M., et al. (2024). tidyverse: Easily install and load the ’tidyverse’ [R package]. https://cran.r-project.org/package=tidyverse
Luraschi, J., et al. (2024). plotly: Create interactive web graphics via ’plotly.js’ (Version 4.10.4) [R package]. https://cran.r-project.org/package=plotly
Silge, J., & Robinson, D. (2016). tidytext: Text mining and analysis using tidy data principles in R. The Journal of Open Source Software, 1(3), 37. https://doi.org/10.21105/joss.00037
Taylor, S. J., & Letham, B. (2018). Forecasting at scale. The American Statistician, 72(1), 37–45. https://doi.org/10.1080/00031305.2017.1380080
Wickham, H., et al. (2024). readr: Read rectangular text data [R package]. https://cran.r-project.org/package=readr
Wickham, H. (2022). reshape2: Flexibly reshape data: A reshape implementation [R package]. https://cran.r-project.org/package=reshape2
Appendix: AI Usage Statement
This report was developed with the responsible and transparent use of artificial intelligence tools.
AI Tools Used:
Grok (by xAI) was used as an intelligent assistant throughout the project.
Primary uses included: -> Generating R code for data processing, cleaning, visualization, Prophet forecasting, and Association Rules analysis. -> Structuring the Quarto document and suggesting section outlines. -> Drafting and refining interpretation text, business justifications, and management recommendations. -> Debugging code errors and improving code readability and interactivity. -> Enhancing the clarity and professionalism of written content.
Human Oversight and Contribution: All analysis, data interpretation, business insights, and final recommendations are grounded in my own professional judgment as General Manager, Technical at SoftWorks Limited. I reviewed, validated, and refined every output generated by the AI. The core data used in this report comes from real company project records, and all conclusions reflect my understanding of our business context. Academic Integrity: This AI-assisted approach reflects modern professional practice in data analytics while maintaining full accountability for the final work. All sources, methods, and findings presented in this report are accurate to the best of my knowledge.