Build CEO Dashboard — run 405129
completed · started 2026-06-11T05:00:06.138334+02:00 · finished 2026-06-11T05:02:08.985634+02:00 · 122.844434s
run_id=405129
task_id=ceo-dashboard-build
status=completed
logged_at=2026-06-11T05:02:08.985428+02:00
truncated=false
*FlySafair Daily Brief — 11 Jun 2026*
Data through: 2026-06-10
*May 2026*
Pax: 762,414 (-11.9% YoY) | Rev: R1.18B (+21.6% YoY)
LF: 81.9% (-9.8pp YoY) | Yield: R1,553 (+38.1% YoY)
Flights: 4,929 (-2.6% YoY) | Seats: 931,362 (-1.4% YoY)
*June 2026 MTD (10 days, through 10 Jun)*
Pax: 224,608 (-14.3% YoY) | Rev: R312M (+6.8% YoY)
LF: 79.3% (-6.3pp YoY) | Yield: R1,389 (+24.6% YoY)
Flights: 1,499 (-8.6% YoY) | Seats: 283,311 (-7.4% YoY)
*Attention:*
⚠️ Capacity (+-1.4%) outpacing demand (+-11.9%) — watch for LF erosion
✅ Yield strength +38.1% YoY — pricing power holding
🔴 Load factor down -9.8pp YoY — demand not absorbing capacity growth
✅ Revenue/flight up +24.8% YoY — quality growth
📊 2026-06 bookings: 484,647 pax (58% of PY final) | Rev R715M (74% of PY)
📊 2026-07 forward: 183,643 pax (22% of PY final)
✅ Best yield: CPT-HLA (+51.0% YoY, LF 75%)
🚀 Fastest growing: HRE-JNB (rev +118.8% YoY, 20,557 pax)
⚠️ LF dropping on CPT-PLZ: -13.2pp YoY (now 81%, cap +27.5% YoY)
⚠️ Jet fuel up 3.3% WoW ($146/mt)
⛽ Jet fuel: $146/mt | Crack: $47
💱 ZAR weaker (+0.5% in 30d) — R16.60/$
✅ Brent down 3.4% WoW ($94/bbl)
✅ ACSA market share (2026-05): 65.1% (+1.4pp MoM)
📈 YTD (5m): Pax 4,301,241 (+1.2% vs PY) | Rev R5.88B (+8.4% vs PY)
_Dashboard: http://100.118.207.3:3001/apps/ceo-dashboard_
Telegram sent: True
=== CEO Dashboard Build — 2026-06-11 05:00 ===
Downloading data files...
SummaryRoute.xlsx (7,243,470 bytes)
SummaryExcel.xlsx (6,013,774 bytes)
Data Fuel.xlsx (17,437 bytes)
ACSA Monthly Data.xlsx (76,083 bytes)
ACSA Website Data.xlsx (27,750 bytes)
fleet_asana.json (49,744 bytes)
202606 Booking Curve.csv (booking curve)
Downloading FlightAware capacity reports...
Capacity_Scheduled_2026-06-01_to_2026-12-31.xlsx (138,845 bytes)
Capacity_Actuals_2024-01-01_to_2026-06-08.xlsx (603,061 bytes)
FA data ends 2026-06-08 (3 days old)
Downloading Capacity schedule snapshots...
Capacity_Scheduled_snapshot_2026-06-09.xlsx (138,843 bytes)
Capacity_Scheduled_snapshot_2026-06-01.xlsx (155,743 bytes)
Capacity_Scheduled_snapshot_2026-05-29.xlsx (155,797 bytes)
Capacity_Scheduled_snapshot_2026-05-21.xlsx (156,384 bytes)
Capacity_Scheduled_snapshot_2026-05-13.xlsx (156,384 bytes)
Capacity_Scheduled_snapshot_2026-05-05.xlsx (156,128 bytes)
Staging build script from PKA repo: /home/lucienne/workspace/PKA/Projects/ceo-dashboard/scripts/build_html_dashboard.py
build_html_dashboard.py (325,614 bytes)
Running build script (Linux branch, BASE auto-detected)...
Loading SummaryRoute.xlsx...
Loading SummaryExcel.xlsx...
Data loaded. Processing...
Loading forward bookings from Neon DB...
Neon: 635,447 booking snapshot rows loaded (departures 2026-04-01 to 2026-07-31)
Curve: 72 departure dates with real curves (flat-state filtered)
Curve shape: 65 DBA points from 71 completed departures
2026-04: 125 points, latest gap=-4.6pp, 19/26 routes behind curve, PY final LF=90.8%
2026-05: 125 points, latest gap=-9.8pp, 23/25 routes behind curve, PY final LF=91.6%
2026-06: 125 points, latest gap=-7.2pp, 20/25 routes behind curve, PY final LF=86.1%
2026-07: 125 points, latest gap=-2.7pp, 16/25 routes behind curve, PY final LF=91.7%
Loading economic indicators...
EIA jet fuel: 649 weeks (2014-01-03 to 2026-06-05)
FX data: 1393 days loaded (Frankfurter)
Fetching Brent crude oil prices...
Oil data: 3127 days loaded
Fuel trend: 649 weeks total (591 EIA [71 gap-fill] + 58 IATA from 2023-12-22)
Loading ACSA data...
Loading FlightAware capacity data...
Actuals cutoff: 2026-06-08 (scheduled MTD cap for 2026-06)
Schedule reliability: DB unavailable, prorating current month from xlsx
Schedule reliability: prorated 2026-06 scheduled by 11/30 days
Trimming 2 sparse months: ['2026-11', '2026-12']
Pre-computed route tables for 8 months, 4268 changes
FlightAware: 34 months, 315 routes in latest month
Loading fleet data from Asana...
Fleet: 56 aircraft loaded from Asana
Processing complete. Building HTML...
WARNING: cash_data.json unavailable ([Errno 2] No such file or directory: '/home/lucienne/workspace/dashboard-build/scripts/../data/cash_data.json'); Cash tab will show a placeholder.
Dashboard written to: /home/lucienne/workspace/dashboard-build/dashboard/Dashboard.html
File size: 3383 KB
Data JSON written to: /home/lucienne/workspace/dashboard-build/dashboard/dashboard_data.json (4820 KB)
Summary MD written to: /home/lucienne/workspace/dashboard-build/dashboard/dashboard_summary.md
Dashboard.html generated (3,464,045 bytes)
Updated Dashboard.html on Drive (ID: 15EeKvzeI2ZErZ6IFV2jHH7wBvA7cSf29)
Copied to /home/lucienne/workspace/PKA/dashboards/ceo-dashboard.html
Published to cloud: /home/lucienne/gdrive/PKA-Outputs/dashboards
Success: CEO Dashboard built and uploaded