Fullstack Development

One training monorepo, or a repo per model?

Seven ML products, one retail team, and the question of whether to consolidate training into a single Vertex-native monorepo. The answer is conditional, and the condition is the whole point.

July 28, 2026
Share on
13 min read

An untooled monorepo degrades faster than polyrepo. That is the sentence I keep coming back to, and it is why "should we consolidate?" is the wrong question. The right one is "will we pay the tax?"

The setup is concrete. A data-science team at a large retailer, roughly seven ML products in flight: churn, customer lifetime value, demand forecasting, and a handful of others. The team is small-to-mid and not uniformly senior; some people can architect a Vertex pipeline in their sleep, others are strong modelers who would rather not touch an IAM binding.

Today the shop is polyrepo. Every model lives in its own repository, and each repo re-establishes its own Google Cloud footprint: its own project, buckets, service accounts, half-remembered Terraform. The question is whether to consolidate all model training into a single monorepo, Vertex-AI-native, whose only output to the outside world is a versioned artifact: a model plus its metadata. Serving, applications, and orchestration stay where they are, outside the training repo.

This is not an obvious call, and the honest answer isn't a slogan. It depends on scale and, more than anything, on discipline.

About the author

Cyril Noirot

Cyril Noirot

Lead Data Scientist

Freelance data scientist. I design and ship decision systems — forecasting, pricing, marketing measurement, optimization.

Newsletter

Technical writing on forecasting, pricing, and decision systems. No fixed schedule, no spam.

Enter your email
Subscribe