Arbutus Lab
← Back to all case studies

Case study

One dashboard instead of four disconnected systems

Resort Operations Dashboard & Data Pipeline

A live, interactive dashboard and the ETL pipeline behind it, unifying lift-ticket visitation, weather/snow conditions, lift downtime, and staffing for an independent ski resort into one recurring view.

Decision infrastructurePortfolio piece
  • Data Pipeline
  • ETL
  • Dashboard Design
  • Reconciliation

Most independent ski resorts run visitation, weather/snow, lift status, and staffing as four disconnected systems, checked separately every morning. This piece builds a Python ETL pipeline that cleans and joins those four sources into one daily-operations fact table, and the live dashboard below, which the operations team can check every morning instead of four separate systems. Full methodology in the PDF below; every number on this page is fully synthetic.

    Total Season Visitors

    157,752

    152 operating days

    Avg. Daily Visitors

    1,038

    Peak: 2,354 on Feb 16

    Avg. Lift Uptime

    98.3%

    Across 6 lifts, cleaned downtime log

    Avg. Staffing Ratio

    26.7:1

    Visitors per staff, peak-concurrent

    Total Downtime

    124 hrs

    Season total, all lifts

Pipeline data-quality checks: 45 exact duplicate downtime log rows removed, 30 adjacent events merged into single outages, and a 3.39× lift-scans-per-visitor ratio confirmed (gate scans are not a total-visitation figure).

Daily Visitation vs. Staffing

Unique visitors (left axis) and total peak-concurrent staffing (right axis) across the full season.

Season-Total Downtime by Lift

Cleaned downtime minutes (bars) and cumulative share of total downtime (line).

Lift Utilization vs. Theoretical Max Capacity

Season-total gate scans as a % of what each lift could have carried running at full rated capacity, every seat full, every operating hour of the season. That baseline is a ceiling, not a realistic target, so the percentages are naturally low; the ranking across lifts is what matters.

Snowfall vs. Daily Visitation

r = 0.108: a modest, honestly-reported relationship; calendar effects (weekday/weekend, holidays) dominate, snowfall is a secondary factor.

The Problem

  • An operations team checks 3-4 disconnected systems every morning: ticket/gate scans, a weather feed, a lift-status log, and a staffing spreadsheet.
  • None of those systems agree on basic questions: total visitation, whether staffing matches expected demand, or which lift actually drives most downtime.
  • A one-time report can't solve this: the answer needs to keep working every operating day of the season.

What Was Built

  • Generated four fabricated raw source files reproducing the real reconciliation problems a unified pipeline has to solve.
  • Built a Python ETL pipeline: de-duplicate and merge the downtime log, reconcile lift scans against true unique visitation, aggregate shift-level staffing to daily headcount.
  • Joined all four sources into one daily-operations fact table plus dashboard-ready aggregates.
  • Built the dashboard from reusable chart/KPI components (Apache ECharts) so new metrics can be added without rebuilding the interface.

What It Found

  • 98.3% average lift uptime across 6 lifts, after cleaning 45 duplicate and 30 adjacent downtime-log entries a naive total would have double-counted.
  • Normalizing gate scans by rated capacity flips the naive read: the beginner carpet has the lowest raw scan count of all six lifts but the highest capacity utilization, while the six-pack chair has the second-highest raw count but the lowest utilization.
  • A modest, honestly-reported weather/visitation correlation (r = 0.108): calendar effects dominate demand, snowfall is a real but secondary factor.
  • One daily view that replaces four separate morning checks with one, built to extend as new lifts, departments, or metrics are added.

Stack

  • Python
  • pandas
  • NumPy
  • Next.js
  • React
  • TypeScript
  • Apache ECharts

Read the Full Report

The full report covers the operations problem, the pipeline's three data-quality fixes (log de-duplication, scan-vs-visitor reconciliation, staffing aggregation), and the dashboard's design.

Download the PDF report

The same discipline shapes every engagement

Discovery → fixed scope → documented methodology → a result you can trust.

Start a conversation