PodPlay
PodPlay BigQuery, dbt,Cube.dev,React,Node.js PodPlay operates a global network of self-service table tennis venues, serving dozens of tenants — facility operators with their own performance dashboards, financial reports, and operational KPIs.The legacy analytics stack relied on Tableau Cloud, with hundreds of workbooks duplicated across tenants and business logic scattered through calculated fields. As the network grew, […]
Context
PodPlay operates a global network of self-service table tennis venues, serving dozens of tenants — facility operators with their own performance dashboards, financial reports, and operational KPIs.
The legacy analytics stack relied on Tableau Cloud, with hundreds of workbooks duplicated across tenants and business logic scattered through calculated fields. As the network grew, that approach became prohibitively expensive to license, difficult to maintain, and impossible to extend with AI features. PodPlay needed a clean exit from Tableau, a consolidated analytics layer, and a way to let non-technical users build dashboards on their own.
Fenxi designed and built the new stack end-to-end: ~65 consolidated dbt models on BigQuery replacing the per-tenant view templates, a Cube.dev Cloud semantic layer enforcing strict tenant isolation via queryRewrite, and a custom React + Node.js dashboarding frontend with saved reports persisted as JSON. On top of that, an AI dashboard generator was built — an LLM produces validated Cube queries and chart configurations from natural language, with security enforced server-side against a whitelist.
The problem
- Hundreds of duplicated workbooks, one per tenant.
- Licence costs rising with every new tenant.
- Maintenance that could not keep up, with each change repeated everywhere.
- No room to add AI features on that foundation.
Solution
- Built 65 dbt models on BigQuery, replacing the per-tenant templates.
- Added a Cube.dev Cloud semantic layer with tenant isolation through queryRewrite.
- Built a custom React and Node.js frontend, with configurations persisted as JSON.
- Built an AI dashboard generator: the question is asked in plain language, the LLM returns a validated query.
- Added an AI assistant that answers customer questions directly from their own data.


Our approach
Mapping
Taking stock of the existing Tableau workbooks and finding what genuinely differs between tenants.
Modelling
Building the 65 dbt models on BigQuery and the Cube.dev semantic layer, with tenant isolation.
Interface
React and Node.js frontend, then the AI dashboard generator wired into the semantic layer.
Migration
Moving the tenants across and switching Tableau off.
Results
What used to take days now takes minutes. The question is asked in plain language, the dashboard comes back. More than 200 companies use the platform, and the AI also answers the questions their teams ask of their own data.
Start with Compass
In 2 weeks, you know what your data can actually do for you. A structured audit, a prioritised roadmap, before you spend anything else.
A similar project?
We take 30 minutes to understand what you need. You leave with a clear opinion, even if we end up not working together.
Let’s work together
Share your need, we will get back with you quickly.


