Case study

Betterworks cut the time to add a new data source from 2 weeks to 1 day

Custom pipelines ate engineering time, and the in-app analytics enterprise buyers asked for were slow and fragile.

Betterworks

Betterworks

90%less time to add a new data source

The workflow before#

Betterworks sells OKR and performance management software, and it was moving upmarket. Its larger customers wanted real-time analytics inside the app: goal progress, team trends and dashboards that held up with thousands of people using them. The data stack underneath was custom-built on AWS. Every new source meant weeks of pipeline code, queries slowed as customer data grew, and engineers spent a large share of their time keeping pipelines alive instead of shipping features. Adding a data source took about 2 weeks. A new pipeline took about 3, and a new analytics feature about 8. The original plan was to keep building, which meant more months of the same work before enterprise customers saw anything new.

What we built#

We moved Betterworks from building data infrastructure to buying it. Instead of writing and maintaining custom pipelines, the team now runs on managed tools that do the plumbing, and its engineers spend their time on the analytics customers see. We kept the work that makes Betterworks different, the metrics and the in-app experience, and handed off the rest.

Managed loading instead of custom code

Fivetran now loads source data into Snowflake with managed connectors that handle schema changes on their own. A new source is a configuration, not a project. We chose to buy here because pipeline code was the part of the stack that gave Betterworks no advantage and cost it the most engineering time.

One definition for every metric

dbt builds the analytics models inside Snowflake, and Looker's semantic layer defines each metric once. The same definitions drive internal reporting and the dashboards customers see. We used one layer for both on purpose: when a customer's goal completion rate matches what Betterworks' own team sees, nobody has to explain the difference.

Analytics inside the Betterworks app

Looker's embedded analytics power the customer-facing dashboards in the app. Product managers can add a new view in weeks instead of months, and enterprise customers get analytics that keep up as their data grows.

A workspace ready for prediction

We stood up an Azure Machine Learning workspace connected to Snowflake, with a feature store and a deployment pipeline. It's ready for models that predict which goals are at risk and which customers need attention. Features come from the same modeled data as the dashboards, so a prediction and a chart never disagree about the facts.

How we delivered it

The engagement ran 24 weeks in three phases. We set up ingestion and moved about 5TB of historical data first, then built the Snowflake models and Looker semantic layer, then stood up the ML workspace and tested performance under simulated enterprise workloads. Knowledge transfer sessions ran throughout, so Betterworks' engineers could run and extend the stack on their own after launch.

Before and after#

MeasureBeforeAfter
Add a new data source2 weeks1 day
Build a new pipeline3 weeks5 days
Analytics feature delivery8 weeks3 weeks
Engineering time on data maintenanceBaseline50% less

What's next#

Customer data is now modeled in one Snowflake warehouse with an ML workspace attached. The next step is putting predictions in front of customers inside the app, starting with which goals are at risk of slipping, so managers can step in while there's still time to change the outcome.

ShareLinkedInEmail

Fivetran connectors load source data into Snowflake (ELT), where dbt models build the analytics layer. Airflow schedules and monitors the jobs, Terraform manages the infrastructure, and GitHub Actions handles CI/CD.

Looker's LookML semantic layer defines metrics once for both internal BI and embedded customer dashboards. The core application stays on AWS, while Snowflake and Azure reduce single-cloud dependence, which helps in enterprise procurement reviews.

Azure Machine Learning connects to Snowflake for feature engineering, with a feature store and MLOps pipelines for model versioning and monitoring.

Next step

Let's build the case study we tell next.