Skip to main content

Documentation Index

Fetch the complete documentation index at: https://github-52.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Overstaffing wastes money; understaffing destroys customer satisfaction. This project analyzes call volume data from ABC company’s customer support center to identify when calls arrive, how volumes shift across hours and days, and what seasonal patterns emerge over time. The findings feed directly into staffing recommendations that can reduce wait times during peak windows while avoiding unnecessary labor cost during quiet periods.

Dataset overview

The dataset contains timestamped records of individual inbound calls over a multi-month observation period. Each row represents one call event with the following fields:
FieldDescription
Call IDUnique identifier for each call
TimestampDate and time the call was received
Call DurationLength of the call in seconds
Agent IDAnonymized identifier for the handling agent
QueueDepartment or support queue the call was routed to
Resolution StatusResolved on first call, escalated, or abandoned
Wait TimeSeconds the caller waited before being connected
Day of WeekDerived from timestamp (Monday–Sunday)
Hour of DayDerived from timestamp (0–23)
The dataset required timezone normalization since call records were logged in UTC but operations run in a local timezone. All timestamps were converted before analysis.

Methodology

1

Data preparation

The raw call log was loaded and preprocessed before any time-series analysis:
  • Parsed timestamps into proper datetime objects and converted from UTC to the local operating timezone
  • Derived hour_of_day, day_of_week, week_number, and month columns from each timestamp
  • Aggregated individual call records into hourly and daily volume counts for time-series modeling
  • Identified and excluded data gaps (system downtime periods) that would distort trend estimates
  • Checked for anomalous days (holidays, outages) and flagged them separately rather than removing them, since understanding holiday patterns is operationally useful
2

Time-series decomposition

The daily call volume series was decomposed into its structural components using classical additive decomposition and STL (Seasonal-Trend decomposition using LOESS):
  • Trend component — the underlying long-term direction of call volume growth or decline
  • Seasonal component — repeating weekly and intra-day patterns
  • Residual component — unexplained variation after removing trend and seasonality
STL decomposition was preferred over classical decomposition because it handles irregular seasonality and is robust to outliers, which matter for a real-world call center dataset with occasional volume spikes.
3

Pattern recognition

With the decomposed components in hand, specific patterns were characterized:
  • Intra-day call arrival curves (average calls per hour across all days)
  • Day-of-week volume profiles (which days are busiest and by how much)
  • Week-over-week growth trends (is volume increasing over the observation period?)
  • Holiday and event-driven spikes compared to the expected seasonal baseline
4

Peak hour analysis

Peak windows were defined as hours where call volume exceeds the 75th percentile of the daily distribution. For each such window:
  • Average and maximum call volumes were computed
  • Average wait times were compared to off-peak periods to quantify the customer impact
  • Agent utilization rates during peaks were estimated from call duration and staffed agent counts
  • A traffic intensity metric (calls per available agent per hour) was calculated to identify when the queue becomes genuinely overwhelmed versus merely busy
5

Staffing recommendations

Peak analysis findings were translated into concrete staffing schedule adjustments. The recommendations account for agent training time, scheduling constraints, and the distinction between predictable recurring peaks (every Monday morning) and unpredictable spikes (product launch days).

Key findings

The analysis revealed a consistent and exploitable structure in call volume patterns: Intra-day pattern: Call volume follows a bimodal distribution across the day. The first peak occurs between 10:00–12:00, driven by customers calling after morning routines. A second, larger peak occurs between 14:00–16:00. Volume drops sharply after 17:00 and is minimal from 20:00 onwards. Day-of-week pattern: Monday receives the highest average daily volume — approximately 35% above the weekly average — as customers report issues that accumulated over the weekend. Friday volume is the second highest. Midweek (Tuesday–Thursday) is the most stable and predictable scheduling window. Seasonal trend: A gradual upward trend in monthly call volume was observed across the study period, suggesting that the current staffing model — designed for earlier, lower-volume conditions — is becoming increasingly stretched at peak times. Abandoned calls: Abandoned call rates spike sharply during the Monday morning peak and during the first hour after any outward-facing service disruption, confirming that wait time directly drives abandonment and that these windows need disproportionate staffing coverage.

Business recommendations

Schedule Monday morning as a mandatory high-staffing window. The data consistently shows Monday 09:00–12:00 as the single highest-volume, highest-abandonment window of the week. Adding even two additional agents to this shift has a measurable impact on wait times and abandonment rates.
Use split-shift scheduling for the afternoon peak. Rather than scheduling full-day shifts for peak coverage, a split shift starting at 13:00 and ending at 19:00 covers the 14:00–16:00 peak without paying for the quiet morning hours for those agents.
Build a lightweight alert system for volume spikes. Since the trend component shows slow growth and residual spikes coincide with product events, a rolling 7-day average threshold alert (>1.5× the rolling mean) can give managers 30–60 minutes of lead time to pull in on-call staff before wait times degrade significantly.
Review staffing levels quarterly. The upward trend in monthly volume means that a staffing model calibrated today will underperform in six months. A quarterly review comparing actual volume to the STL trend projection will catch drift before it becomes a customer satisfaction problem.

Technologies used

Python

Core language for all data processing, time-series analysis, and recommendation development.

Pandas

Timestamp parsing, aggregation to hourly/daily series, and day-of-week groupby operations.

Matplotlib

Time-series line charts, intra-day volume curves, and annotated peak window visualizations.

Statsmodels

STL decomposition, classical additive decomposition, and trend significance testing.

Jupyter Notebook

Interactive analysis environment with inline plots and narrative documentation of findings.