Loading dashboard data...
How This Dashboard Works
This dashboard automates what used to be a manual monthly reporting process, pulling data directly from the same source as Power BI and updating automatically every day.
Data Flow
Databricks (production data)
↓
Python Script (queries + calculations)
↓
JSON File (dashboard.json)
↓
This Dashboard (static HTML on GitHub Pages)
Automatic Updates
A GitHub Actions workflow runs every day at 6 AM UTC:
- Connects to Databricks using secure credentials
- Runs SQL queries against 5 production tables
- Calculates derived metrics (NGR, ARPU, etc.)
- Generates AI insights using Claude API
- Saves results to
dashboard.json
- Commits and deploys automatically
Data Sources
Databricks Tables (filtered by affiliate channel = 'cellxpert')
wptg_revenue_poker_dashboard — GGR, product breakdown, active users
acquisition_channel_poker_dashboard — Affiliate IDs, countries
wptg_pg_ps_deposit_poker_dashboard — Deposits, FTDs
wptg_poker_winloss_poker_dashboard — Win/loss metrics
wptg_cost_poker_dashboard — Bonuses, overlays, credits
Metrics Explained
GGR — Gross Gaming Revenue
NGR — GGR minus costs
Active Users — Unique players
FTDs — First Time Depositors
Net Deposits — Deposits minus withdrawals
Win/Loss After Rake — Player poker results
Costs — Bonuses + overlays + credits
ARPU — GGR ÷ Active Users
Affiliate Name Mapping
Databricks only stores numeric affiliate IDs. A separate mapping file (affiliate_names.json) translates these to readable names. This mapping is currently maintained manually from CellXpert exports.
Future: CellXpert API Integration
Once API access is available, we can automatically sync affiliate names and potentially pull commission data directly.
AI-Generated Insights
For completed periods, the system sends metrics to Claude API which analyzes the data and generates:
- Wins — Positive trends and achievements
- Challenges — Areas of concern or decline
- Opportunities — Actionable recommendations
Current month (live/running total) doesn't show insights since the data is incomplete.
Period Options
- Current Month (Live) — Running total, updates daily, no comparison
- Last Complete Month — Full month with month-over-month comparison
- Last 6 Months — Aggregate with prior 6-month comparison
- Year to Date — YTD with prior year comparison
- Year Archives — Full year data (2023, 2024, 2025)
Technical Details
Stack
- Data: Databricks SQL via REST API
- Backend: Python script (generate_dashboard_data.py)
- AI: Claude API (claude-sonnet-4-20250514)
- Frontend: Static HTML + Chart.js
- Hosting: GitHub Pages
- Automation: GitHub Actions (daily cron)
Questions? Contact Wayne (Head of IT) or check the project repo for documentation.