Branch Demand Forecasting
“How many tellers does each branch need next week?”
Book a demo and get a free trial of the full platform: research agent, fine-tune capabilities, and forward-deployed engineer support.
By submitting, you accept the Terms and Privacy Policy.

Loved by data scientists, ML engineers & CXOs at

A real-world example
How many tellers does each branch need next week?
US banks operate 70,000+ branches, and labor is the largest controllable cost at 55-65% of branch operating expense (BAI). Overstaffing wastes $15-25K per branch annually in idle teller hours, while understaffing drives average wait times above 8 minutes, directly correlating with a 12% drop in customer satisfaction (J.D. Power). The challenge: branch traffic depends on payroll cycles, local events, weather, nearby business hours, and even competitor branch closures. Static scheduling models based on last year's averages miss these dynamic signals.
Quick answer
The most accurate branch staffing models connect historical foot traffic with payroll cycles, local events, weather data, competitor branch activity, and regional employment trends. Relational ML models that read these connected tables produce staffing forecasts 35% more accurate than static scheduling models, reducing wait times by 30% while cutting overtime costs by $15-25K per branch annually.
Approaches compared
4 ways to solve this problem
1. Static scheduling (last year's averages)
Staff each day based on the same day's transaction volume from the prior year, adjusted for seasonal trends.
Best for
Simple and requires no model. Works when branch traffic is highly predictable and stable year-over-year.
Watch out for
Misses dynamic signals: competitor branch closures, employer payroll cycle changes, weather-driven traffic shifts, and local events. Overstaffs quiet days by $15-25K per branch annually in idle teller hours, and understaffs busy days, driving wait times above 8 minutes.
2. Time-series forecasting (ARIMA, Prophet)
Fit a time-series model to historical daily transaction volumes per branch, capturing seasonality, trend, and day-of-week patterns.
Best for
Good at capturing recurring patterns (month-start spikes, Friday surges). Easy to interpret and widely available.
Watch out for
Single-table approach. Cannot incorporate external signals like weather, events, or competitor activity. When a nearby branch closes or a local employer switches pay cycles, the time-series model has no way to know.
3. XGBoost with external features
Add day-of-week, month-start indicator, weather forecast, and event flags as features alongside historical traffic. Train a regression model per branch or region.
Best for
Captures some external drivers. Better than pure time-series when significant events affect traffic.
Watch out for
Features are manually engineered and branch-specific. Scaling to 7,000+ branches with local event calendars, weather data, and competitor signals requires significant data pipeline investment.
4. KumoRFM (relational graph ML)
Connect branches to daily traffic, local events, weather forecasts, regional payroll cycles, and competitor data. The GNN learns cross-table patterns that drive traffic spikes and dips automatically.
Best for
Captures compound effects: month-start + competitor closure + sunny weather = 35% traffic spike. These multi-factor interactions are hard to manually feature-engineer but emerge naturally from the relational graph.
Watch out for
Requires local event and weather data feeds at the branch level. Data sourcing for 7,000 branches across different metros is the operational challenge, not the modeling.
Key metric: Relational ML produces branch staffing forecasts 35% more accurate than static models, saving $15-25K per branch annually in overtime and idle hours.
Why relational data changes the answer
Branch traffic is driven by the intersection of multiple external signals, not just historical patterns. A branch in Union Square sees 385 transactions on October 1st because it is the first of the month (payroll deposits), a competitor branch 2 miles away just closed (spillover traffic), the weather is sunny (more walk-ins), and a local employer recently switched to bi-weekly pay. No single table contains all of these signals.
Relational models connect branch profiles to traffic history, event calendars, weather data, and regional indicators, learning compound effects that static models miss. The result is 35% more accurate staffing forecasts. For a 7,000-branch network, that translates to $100-175M in annual savings from reduced overtime and idle hours, plus a 30% reduction in customer wait times that directly improves satisfaction scores.
Staffing a branch from last year's averages is like packing for a trip based on last year's weather. You might get lucky, but if a cold front moved in, a festival popped up, and the hotel changed its pool hours, you would be dressed wrong. Relational ML checks the current forecast, the event calendar, and the venue schedule before packing your bag.
How KumoRFM solves this
Relational intelligence built for banking and financial data
Kumo connects branch profiles, historical foot traffic, transaction volumes, local event calendars, weather data, and regional payroll cycles into a relational graph. The model predicts that Branch S-14 will see 340 transactions next Tuesday because it is the first of the month (payroll deposits), a local employer just switched to bi-weekly pay, and a competitor branch 2 miles away recently closed. These cross-table signals produce staffing forecasts 35% more accurate than static models.
From data to predictions
See the full pipeline in action
Connect your tables, write a PQL query, and get predictions with built-in explainability — all in minutes, not months.
Your data
The relational tables Kumo learns from
BRANCHES
| branch_id | name | region | avg_daily_txns | teller_stations |
|---|---|---|---|---|
| BR-014 | Union Square | West | 285 | 6 |
| BR-022 | Midtown | Northeast | 420 | 8 |
| BR-037 | Lakeside | Midwest | 180 | 4 |
DAILY_TRAFFIC
| branch_id | date | transactions | avg_wait_min | tellers_on_duty |
|---|---|---|---|---|
| BR-014 | 2025-09-29 | 310 | 4.2 | 5 |
| BR-014 | 2025-09-30 | 395 | 8.7 | 5 |
| BR-022 | 2025-09-30 | 480 | 6.1 | 7 |
LOCAL_EVENTS
| branch_id | date | event_type | expected_impact |
|---|---|---|---|
| BR-014 | 2025-10-01 | Month Start (Payroll) | High |
| BR-014 | 2025-10-01 | Competitor Branch Closure | Medium |
| BR-022 | 2025-10-03 | Local Festival | Low |
WEATHER_FORECAST
| region | date | condition | temp_f | precipitation |
|---|---|---|---|---|
| West | 2025-10-01 | Sunny | 72 | 0% |
| Northeast | 2025-10-01 | Rain | 58 | 80% |
| Midwest | 2025-10-01 | Cloudy | 65 | 20% |
Write your PQL query
Describe what to predict in 2–3 lines — Kumo handles the rest
PREDICT SUM(DAILY_TRAFFIC.TRANSACTIONS, 0, 7, days) FOR EACH BRANCHES.BRANCH_ID
Prediction output
Every entity gets a score, updated continuously
| BRANCH_ID | DATE | PREDICTED_TXNS | TELLERS_NEEDED | VS_SCHEDULED |
|---|---|---|---|---|
| BR-014 | 2025-10-01 | 385 | 7 | +2 |
| BR-014 | 2025-10-02 | 260 | 5 | 0 |
| BR-022 | 2025-10-01 | 350 | 6 | -1 |
Understand why
Every prediction includes feature attributions — no black boxes
Branch BR-014 (Union Square), Oct 1
Predicted: 385 transactions, 7 tellers needed
Top contributing features
Month-start payroll cycle
1st of month
32% attribution
Competitor branch closure spillover
+45 txns est.
24% attribution
Day-of-week pattern (Wednesday)
Above avg
18% attribution
Weather (sunny, high foot traffic)
Sunny 72F
14% attribution
Regional employment trend
+2.1% YoY
12% attribution
Feature attributions are computed automatically for every prediction. No separate tooling required. Learn more about Kumo explainability
PQL Documentation
Learn the Predictive Query Language — SQL-like syntax for defining any prediction task in 2–3 lines.
Python SDK
Integrate Kumo predictions into your pipelines. Train, evaluate, and deploy models programmatically.
Explainability Docs
Understand feature attributions, model evaluation metrics, and how to build trust with stakeholders.
Frequently asked questions
Common questions about branch demand forecasting
How do you predict branch traffic in banking?
The most accurate approach connects historical daily traffic data with payroll cycles (month-start, bi-weekly pay), local event calendars, weather forecasts, and competitor branch activity. Relational ML models learn compound effects (payroll day + sunny weather + competitor closure = spike) that single-variable time-series models miss. The result is 35% more accurate forecasts.
What is the cost of overstaffing bank branches?
Overstaffing wastes $15-25K per branch annually in idle teller hours (BAI). Across a 7,000-branch network, that is $100-175M in wasted labor. Labor is the largest controllable cost at 55-65% of branch operating expense, so even a 10% improvement in scheduling accuracy has significant P&L impact.
How does weather affect bank branch traffic?
Weather is a meaningful driver, but its effect depends on context. Rain reduces walk-in traffic at urban branches by 10-20% but has less impact on suburban drive-through branches. Sunny weather on a payroll day compounds the traffic spike. The key is modeling weather in combination with other signals, not in isolation.
Can ML help with bank branch workforce planning?
Yes. ML models predict daily transaction volume and translate that into teller-count recommendations. The best models update weekly with new event, weather, and traffic data, giving branch managers a 7-day staffing forecast. This shifts scheduling from reactive (calling in staff when lines get long) to proactive (staffing correctly before the rush).
What data do you need for branch demand forecasting?
Historical daily transaction volumes per branch, local event calendars (payroll cycles, festivals, holidays), weather forecasts, competitor branch locations and status (open, closed, renovating), and regional employment data. Each additional data source improves the model's ability to predict traffic spikes and dips that historical averages miss.
Bottom line: Reduce average wait times by 30% and cut overtime costs by $15-25K per branch annually, translating to $100-175M in savings across a 7,000-branch network.
Related use cases
Explore more financial services use cases
Topics covered
One Platform. One Model. Infinite Predictions.
KumoRFM
Relational Foundation Model
Turn structured relational data into predictions in seconds. KumoRFM delivers zero-shot predictions that rival months of traditional data science. No training, feature engineering, or infrastructure required. Just connect your data and start predicting.
For critical use cases, fine-tune KumoRFM on your data using the Kumo platform and Research Agent for 30%+ higher accuracy than traditional models.
Book a demo and get a free trial of the full platform: research agent, fine-tune capabilities, and forward-deployed engineer support.




