|
| 1 | +# Airport Parking Operations Performance Dashboard |
| 2 | + |
| 3 | +An executive-level operations reporting dashboard and database model designed to simulate a high-fidelity yield management system for **Way.com** airport parking operations. |
| 4 | + |
| 5 | +This repository showcases advanced capabilities in Excel engineering, dynamic data aggregation, operational analysis, and local web application serving for an Operations Executive role. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## 📂 Project Structure |
| 10 | + |
| 11 | +The project compiles a multi-sheet, fully formatted Excel workbook and couples it with an interactive browser-based dashboard running on localhost: |
| 12 | + |
| 13 | +1. **[Operations_Performance_Dashboard.xlsx](Operations_Performance_Dashboard.xlsx)**: The core Excel workbook containing: |
| 14 | + - **`Project Summary`**: Cover page, directory, formula guide, and business insights. |
| 15 | + - **`Dashboard`**: Dynamic control interface with dropdown filters and 5 native Excel charts. |
| 16 | + - **`Raw Data`**: 500 rows of transactional records driven by formulas (no hardcoding). |
| 17 | + - **`Lookup Tables`**: Reference directories for Airport Codes, Parking Rates, and Vehicle Categories. |
| 18 | + - **`Pivot Tables`**: Structured aggregation sheets serving as the charts' data sources. |
| 19 | +2. **`generate_dashboard.py`**: Automated Python script using `xlsxwriter` to build and style the workbook, inject formulas, configure gridlines, and insert native charts. |
| 20 | +3. **`app.py`**: Streamlit web application that serves the interactive dashboard locally. |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +## 📈 Excel Formulas Demonstrated |
| 25 | + |
| 26 | +To demonstrate senior-level data handling, this workbook utilizes dynamic Excel formulas across sheets rather than static cell values: |
| 27 | + |
| 28 | +### 1. Referential Lookups |
| 29 | +* **`VLOOKUP`**: Looks up the City name in the Raw Data sheet based on the Airport Name: |
| 30 | + ```excel |
| 31 | + =VLOOKUP(B2, 'Lookup Tables'!$A$3:$C$8, 3, FALSE) |
| 32 | + ``` |
| 33 | +* **`XLOOKUP`**: Determines the vehicle sizing category from the vehicle reference table: |
| 34 | + ```excel |
| 35 | + =XLOOKUP(G2, 'Lookup Tables'!$I$3:$I$6, 'Lookup Tables'!$J$3:$J$6, "N/A") |
| 36 | + ``` |
| 37 | + *Also used in the Dashboard sheet to pull Airport Code and Capacity Limits matching the interactive filters.* |
| 38 | + |
| 39 | +### 2. Conditional Financial Logic |
| 40 | +* **`IF`**: Computes transactional revenue by evaluating booking status (cancelled bookings yield `$0` revenue, completed bookings multiply Daily Rate by booking count and duration): |
| 41 | + ```excel |
| 42 | + =IF(I2="Cancelled", 0, J2 * VLOOKUP(D2, 'Lookup Tables'!$F$3:$G$5, 2, FALSE) * (MOD(ROW(), 5) + 1)) |
| 43 | + ``` |
| 44 | + |
| 45 | +### 3. Aggregations (Pivot Tables Engine) |
| 46 | +* **`SUMIF / SUMIFS`**: Aggregates month-over-month and airport revenue metrics. |
| 47 | +* **`COUNTIF / COUNTIFS`**: Tallies active tickets, status splits, and dynamic dashboard KPIs. |
| 48 | +* **`AVERAGEIF / AVERAGEIFS`**: Tracks customer satisfaction (CSAT) scores and valet service completion times. |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +## 💻 Local Interactive Web App (Streamlit) |
| 53 | + |
| 54 | +You can launch an interactive version of the dashboard in your web browser. The Streamlit app reads the Excel raw data, re-evaluates the formulas in memory, and renders dynamic KPI cards and Plotly charts that match the Excel workbook. |
| 55 | + |
| 56 | +### Prerequisites |
| 57 | + |
| 58 | +Install the required Python environment dependencies: |
| 59 | +```bash |
| 60 | +pip install openpyxl xlsxwriter pandas streamlit plotly |
| 61 | +``` |
| 62 | + |
| 63 | +### Running the App |
| 64 | + |
| 65 | +1. Clone this repository and navigate to the project directory. |
| 66 | +2. Launch the Streamlit server: |
| 67 | + ```bash |
| 68 | + python -m streamlit run app.py |
| 69 | + ``` |
| 70 | +3. Open your browser and navigate to the local address: |
| 71 | + 👉 **[http://localhost:8501](http://localhost:8501)** |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 💡 Executive Business Insights |
| 76 | + |
| 77 | +The dashboard models five key operational insights relevant to airport parking yield management at Way.com: |
| 78 | + |
| 79 | +1. **Mumbai Airport (BOM) Revenue Leadership**: BOM leads revenue contributions (~23% of total) due to high Valet parking adoption and longer booking durations (average 4.2 days). *Action*: Expand valet capacity at BOM to capture higher margins. |
| 80 | +2. **Valet Parking Yield Optimization**: Valet represent 20% of bookings but generates 46% of total revenue. Daily rates ($1,500) generate 4x higher yield compared to Economy. *Action*: Launch targeted corporate marketing campaigns for Valet booking tiers. |
| 81 | +3. **Cancellation Control & Seasonality**: Booking cancellations average 10.2%, peaking in Delhi (DEL) at 14.5% during winter (fog season). *Action*: Introduce a non-refundable discount tier or enforce strict cancellation windows during peak seasons. |
| 82 | +4. **Customer Satisfaction Drivers**: Economy parking scores the lowest average rating (3.4/5), strongly correlating with service completion delays (average 22 mins). *Action*: Launch self-service digital kiosks in Economy zones to automate check-in. |
| 83 | +5. **Valet Retrieval Bottlenecks**: Valet retrieval times average 28 minutes, peaking between 6:00 PM and 9:00 PM at BLR and BOM. *Action*: Optimize staffing schedules around late-evening flight arrival banks. |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +## 🎨 Professional Design Specifications |
| 88 | +- **Theme**: Classic Corporate Navy (`#1F4E79`), Steel Blue (`#2F5597`), Ice Blue (`#DDEBF7`), and Cool Light Gray (`#F8F9FA`). |
| 89 | +- **Typography**: Unified **Segoe UI** font styling. |
| 90 | +- **Aesthetics**: Disabled gridlines on summary, dashboard, and lookup sheets to create a clean application interface. Auto-fitted column widths prevent truncated text or `###` errors. |
0 commit comments