# Carwow Google Cloud Migration | Rittman Analytics

URL: https://rittmananalytics.com/case-studies/carwow
Description: How Carwow migrated 1,700 dbt models from Snowflake to BigQuery with Rittman Analytics, Wire and AI-assisted delivery.

---

![Carwow logo](https://rittmananalytics.com/__l5e/assets-v1/14bfc0d6-3816-48d5-b08d-be69535cd13a/carwow-logo.png)

# Carwow accelerate their migration to Google Cloud with AI and Rittman Analytics

![Becky Allsop](https://rittmananalytics.com/__l5e/assets-v1/3289bcd9-9332-410a-b243-a43a7f13747c/becky-allsop.png)

## Becky Allsop

Director of Analytics & Data Science, Carwow

> “I had an update with all of the exec and the leadership team yesterday. They were all absolutely amazed at what's been achieved. They were astounded at what's been done in the timeframes, compared to all of their previous experiences in other businesses doing this type of thing.”

![Carwow car review featuring a blue SUV](https://rittmananalytics.com/__l5e/assets-v1/34616742-f8f1-4d30-8069-4bf503c0e5f1/carwow-image-hero.webp)

### Vital Stats

### Website

https://www.carwow.co.uk

### Industry

Automotive Marketplace, Online Retail

### Company Size

c. 500 employees

### Headquarters

London, United Kingdom

### Rittman Analytics Services

-   Data warehouse migration
-   dbt consulting & support
-   Data platform implementation
-   Wire Framework (AI-assisted delivery)

### Technologies Used

-   Google BigQuery
-   Snowflake
-   dbt
-   Fivetran
-   Hightouch
-   Apache Airflow
-   Google Cloud
-   Wire Framework and Claude Code

## The Download

Carwow is the UK's largest online car-changing marketplace, helping customers buy new and used cars, sell their existing car and lease vehicles. It operates across the UK, Germany and Spain, with dealers and manufacturers using the platform to reach potential buyers.

Behind the marketplace sits a large data estate that supports Carwow's marketing, commercial and finance teams. Its Snowflake warehouse contained around 1,700 dbt models, fed by more than 150 Fivetran connectors. From there, 640 Hightouch syncs pushed data into advertising platforms, CRM systems, Google Sheets and dealer-facing reports. Around 300 columns contained personal data protected by masking policies.

In 2026, Carwow decided to consolidate its analytics platform on Google Cloud. The plan was to move the warehouse to Google BigQuery, then build towards a new Looker semantic layer and AI-enabled analytics.

The first priority was the migration itself: move every existing model to BigQuery with as little change as possible and as quickly as possible, prove that it produced the same results as before and get the new platform safely into production.

## The Challenge

A warehouse migration at this scale brings a set of technical and operational challenges. Every model needs to be translated into the new SQL dialect, rebuilt and validated against the original, with any differences understood before the model can move into production.

For Carwow, three factors shaped the approach.

**A tight delivery window.** Work began at the end of June 2026, with model migration targeted for completion by mid-September. The migration had to move quickly while Carwow's data engineering team continued to support the existing production platform and ongoing business priorities.

**A live and evolving codebase.** Development continued throughout the migration, with around 30 new models added each month alongside regular changes to existing models. The migration process had to account for models changing after translation and keep the BigQuery version aligned with the latest Snowflake code.

**Source data arriving in parallel.** Historical and source data was being migrated into BigQuery as model translation progressed. In some cases a translated model could not yet be fully built or tested because a required upstream table had not arrived. The process needed to distinguish quickly between translation issues and temporary data dependencies so work could continue.

The standard for completion was deliberately rigorous. Each migrated model had to match its Snowflake equivalent exactly, or have any difference documented and agreed with Carwow. For models whose output was sent beyond the warehouse, including advertising feeds and finance exports, exact equivalence was particularly important: these outputs feed directly into operational systems, so validating them before cutover was a key part of the migration.

Free 15-question check

## Is your data warehouse migration *ready* for AI-assisted delivery?

A structured self-assessment for data leaders and programme sponsors weighing a migration. Fifteen questions tell you whether this approach may suit your work, what needs resolving first and the most sensible next step.

[Assess your migration](https://mark-9o3ijqpd.scoreapp.com/)

Free. 15 questions. About 3 minutes.

[![Wire dispatching one audit agent per platform layer over a dark navy panel](https://rittmananalytics.com/__l5e/assets-v1/c0e93c5d-2017-4577-8edc-b9b2a11cc504/readiness-panel.png)

Example result

Readiness

Medium

Code and data access

Equivalence and acceptance

Business commitment

* * *

Next step: move to scoping

](https://mark-9o3ijqpd.scoreapp.com/)

## The Solution

Rittman Analytics delivered the migration using Wire, its AI-assisted delivery method for data platform work, following a nine-step process built for migrations of this scale.

![Wire's nine-step lift-and-shift migration process: snapshot and audit, translation, validation and lint, development build, equivalence test, release assembly, review and merge, production build, post-merge verification](https://rittmananalytics.com/__l5e/assets-v1/a48ed670-4343-4dab-882d-7eca223c63c5/lift-and-shift-timeline.webp)

**1\. Snapshot and audit.** Wire began by building a complete picture of Carwow's Snowflake environment. It mirrored the dbt project and ran audits across the warehouse, ingestion pipelines, reverse ETL, orchestration and security. The audit identified over 1,700 dbt models to migrate, grouped by complexity, and mapped hundreds of protected data fields and their masking rules to the equivalent controls in BigQuery. A short pilot then took a representative group of models through the full process, from translation to validation, establishing a measured delivery pace for planning at full scale.

Wire

dispatches one agent per layer

run concurrently

each layer’s audit is independent of the others

Audit agentsone per platform layerin parallel

db-object-audit-generatedatabase objects

every database and schema

every table and view, with size and rows

stored procedures and UDFs

masking policies and tagged columns

the full RBAC graph of roles and grants

security-audit-generatethe same connection, different questionssecurity

which roles hold which grants

which columns carry PII tags

Findings determine which IAM bindings and BigQuery policy tags target-setup creates.

dbt auditdbt models

assigns every model a complexity tier

triviallowmediumhighblocked

ingestion pipeline agentingestion pipelines

details of every connection

details of every pipeline

reverse ETL agentreverse ETL

details of every sync

details of every destination

…and one agent for every further layereach independent until results are assembled

**MCP**  legacy DW server · account · role · warehouse

Legacy DW platform

the system being migrated from, typically thousands of objects

**Databases & schemas**

**Tables & views**  
size and row count

**Stored procedures & UDFs**

**Masking policies**  
and their tagged columns

**Roles & grants**  
the full RBAC graph

MCP

Ingestion pipeline platform

connectionspipelines

MCP

Reverse ETL platform

syncsdestinations

Migration inventory

a single file, a tabular record of every item, one row per object, typically thousands

pendingtranslateddeferredmigratedfailed

objecttypesize · rowsstatecomplexity

tablemigrated—

UDFpending—

dbt modeldeferredmedium

pipelinetranslated—

syncfailed—

⋮  one row per object

dispatch

back-and-forth over MCP

assemble

1

2

3

**2\. Inventory and batching.** Wire turned the estate into a structured register covering every model, connector and downstream sync, mapped the dependencies between them, and organised the work into ten self-contained migration waves. This structure let much of the migration run in parallel: models were translated, built and checked for equivalence as soon as their dependencies became available. Parallel AI agents handled the repeatable work of translation, validation, comparison and drift detection, while a senior Rittman Analytics consultant acted as release director, overseeing each wave and making the decisions that needed human judgement.

With the estate audited, registered and batched, delivery shifted into a delegated, agentic mode: from this point Wire's AI agents carried out the repeatable stages below in parallel and around the clock, with the human team setting direction, reviewing output and making the release decisions.

Tier 01

Release director

One human

Client communications

Rulings and waivers

Approval gates

Judgment catches

Fleet-size and budget decisions

Rulings, waivers and approval gates

Judgment catches

Tier 02

Orchestrating session

One Fable-class session

Dispatches and monitors lanes

Owns the register (single writer)

Consolidation and backstop passes

Assembles PR evidence

Amends process docs the day a ruling lands

Dispatch

Monitoring and PR evidence

Lane 01

Translate wave models

Lane 02

Validate and lint

Lane 03

Build playground copies

Lane 04

Run equivalence battery

Lane 05

Verify post-merge

Lane 06

Drill count divergence

Lane 07

Rebuild sync audit

Lane 08

Check branch copies

Tier 03

Lane agents

6–12 concurrent

Stage-scoped work: translation, validation and evidence, one stage at a time.

**3\. Translation.** Wire's translation agents rewrote each model's SQL and configuration for BigQuery using a translation guide agreed with Carwow's engineers, covering the less obvious dialect differences: division by zero, rounding, JSON handling, type coercion and timestamps. Translation ran at scale, with hundreds of models handled simultaneously. By mid-August, more than a thousand model comparisons had been completed without identifying a translation defect.

**4\. Validation and linting.** Every translated model had to parse and compile in BigQuery before it could move on. Engagement-specific lint rules caught subtle behavioural changes that would not cause a build failure but could change the resulting data.

**5\. Sandbox build.** Translated models were built in a controlled BigQuery sandbox before release, with cost checks before larger builds ran. As the migration progressed, the team moved from small batches to building hundreds of models in a single run, with thousands of dbt tests passing alongside them.

**6\. Equivalence testing.** Each BigQuery table was compared with the Snowflake table it replaced: row counts, grain, schema and representative value totals, run against production-scale datasets including tables of tens or hundreds of millions of rows. Models were classified as an exact match, a match with understood timing differences, blocked by data availability, or needing further translation work.

**7\. Release assembly and pull requests.** Passing models were grouped onto branches in Carwow's own repository and put through final release checks: a full project parse, Carwow's CI, a rebuild against the production dependency graph and a final Snowflake comparison. More than a hundred pull requests were raised into Carwow's repository over the programme, with the majority merged into the production codebase.

**8\. Ship, then verify in production.** As the programme progressed, Carwow and Rittman Analytics adopted a production-led release process: models ready to run moved into production rather than waiting for every downstream check to complete. Wire re-ran the data comparisons against the production BigQuery tables after each merge, and Carwow's engineers took a direct role in reviewing and merging pull requests, reducing hand-offs and maintaining pace.

**9\. Drift detection and acceptance.** Because the Snowflake project kept evolving during the migration, Wire continuously checked whether translated models had drifted from their originals. Acceptance was managed through dated evidence packs listing the models ready for sign-off with supporting evidence in plain language. Throughout the programme, Carwow had a daily view of progress generated from the dbt manifest, migration register and the live state of both repositories.

## Business Benefits Delivered

**Live on BigQuery within weeks.** The full estate was translated in a matter of weeks. By early September almost all in-scope models were merged to Carwow's main branch and running in production. Carwow's engineers reviewed and merged large batches of pull requests in a single day at several points, which kept the final stages moving.

**Every model checked against Snowflake.** Over a thousand models were verified against their Snowflake equivalents in production before sign-off. Each result and its evidence went into the migration register, so Carwow had proof the new platform matched the old one.

**A small team, more output.** A small Rittman Analytics team delivered the migration alongside Carwow's engineers. AI agents did the repeatable translation and validation work, and the people on both sides spent their time on review and release decisions.

**Existing data problems fixed on the way through.** The drift and post-merge checks caught subtle differences across the live estate: join behaviour, upstream scoring logic, historical data loads. Each was traced back to its source and fixed through the normal pull request workflow before it reached the new platform.

**Standards Carwow's team still uses.** The translation guide, lint rules and source-pinning practices were documented in Carwow's repository, and their engineers now apply the same patterns in day-to-day development.

**Straight into the Looker build.** With the core estate on BigQuery, Carwow moved into the next phase: an enterprise data model in Looker, built with the wider data engineering team. Rittman Analytics continued into that phase for continuity.

> “We had a really tight turnaround. Awesome collaboration across the teams to achieve this. I think that it's quite miraculous, actually.”

Becky Allsop, Director of Analytics & Data Science, Carwow

## Interested? Find Out More!

Rittman Analytics is a boutique data analytics consultancy that helps ambitious, digital-native businesses scale-up their approach to data, analytics and generative AI.

We’re authorised delivery partners for Google Cloud along with Oracle, Segment, Cube, Dagster, Preset, dbt Labs and Fivetran and are experts at helping you migrate and upgrade your data platform using an approach that’s right for your organisation’s needs, use-cases and budget.

If you’re looking for some help and assistance with your data migration needs or would just like to talk shop and share ideas and thoughts on what’s going on in your organisation and the wider data analytics world, contact us now to organise a 100%-free, no-obligation call, we’d love to hear from you!
