BetterUp helps people and teams do their best work through coaching, with human coaches and AI. More than 750 organizations use it, and its network has 4,000+ coaches in 70+ countries. Behind all of that is an analytics team that keeps everyone, inside BetterUp and out, working from the same numbers.
The challenge
As BetterUp grew, more people wanted answers from its data: customers checking their reports and teams inside BetterUp looking at dashboards. Keeping all of those answers consistent took real work. Plenty of the people asking didn't write SQL, and the analytics team couldn't keep up with the demand for analytics and insights.
Why Cube
The team ran hands-on trials with large and small vendors. Cube stood out on three things: how mature its semantic modeling was, an AI roadmap built around the semantic model, and the security and governance controls BetterUp needs for its customers.
“We now have a single source of truth for our metrics and our logic housed in a semantic layer that is headless. So regardless of the rest of your stack, any tool will be able to read from that and give you a consistent, governed analytics and insights experience.”

What they built
Cube now holds BetterUp's metrics and logic in one place, and everything else reads from it. BetterUp connects Claude to Cube through the MCP server, so people can chat with the data from Claude Desktop. Internal teams also chat and build dashboards with the Cube agent. BetterUp built its own reporting app for customers on Cube's APIs, so the numbers customers see match the numbers inside the company.

“It allows end users to consume the data using the AI tool of their choice, and giving us that governance layer on top.”

Under the hood
Data model in code
Cubes, views, measures, dimensions and joins, defined in code and versioned in git. Dynamic models use Jinja or JavaScript.
APIs for every consumer
A Postgres-compatible SQL API, REST and GraphQL for apps and BI, and an MCP server for agents such as Claude.
Access control in the layer
Access policies with row-level and member-level security apply to every query. The docs are explicit: access policies are the enforcement mechanism, not the agent.
Caching and performance
Pre-aggregations served by Cube Store, a distributed columnar engine written in Rust on Apache Arrow and DataFusion.
The results
Answers before the call
Customer success managers answer their own questions by chatting with the data, instead of sending a last-minute request to the data team.
No code needed
A non-technical network operations manager built one of BetterUp's most-used dashboards with Cube and Claude.
Time back for data science
With routine questions handled, the data science team spends more of its time on predictive work.
