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.
Independent analytics & AI consultant
Worked with
countries
MMM in production
forecasting models
live in production
sectors
luxury / pharma / fintech / retail
tools
interactive, open, in-browser
What I help with
Demand forecasting, scenario planning, inventory strategy, and operational decisions under uncertainty.
Forecasting system in production, 30-90 day cadence.
Pricing optimization, elasticity modeling, portfolio trade-offs, and decision support for teams.
Pricing decision system with elasticity, constraints, and portfolio trade-offs.
MMM, response curves, budget allocation, and shared finance-marketing decision systems.
MMM and budget allocation system on a monthly review cadence.
AI workflows, recommendation systems, and auditable business-rule-driven decision logic.
Auditable decision workflow with business-rule logic and a clear handover.
Tools
Interactive products for marketers, analysts, and operators: response curves, adstock, CLV, and budget optimization.
Interactive
Marketing saturation curves
Open toolInteractive
Marketing carryover effects
Open toolInteractive
Budget optimization
Open toolInteractive
Customer lifetime value
Open toolInteractive
Marketing efficiency zones
Open toolInteractive
Market share & loyalty
Open toolHow I work
01 · FRAME
Define the decision, the constraints, and the operating cadence. Most projects fail here before any modeling starts.
02 · MODEL
Build the system embedded with feedback loops and accountability. Not a notebook, not a prototype.
03 · DEPLOY
Move from a working model to a production decision system the team can actually run.
04 · OPERATE
Hand over with monitoring, drift controls, and the documentation to keep the system honest.
// Principle 01
Decisions are the product. Software is the tool.
Deployment
Your cloud
Model and pipelines run inside your VPC. No data leaves your account.
On-premises
Docker images running behind your firewall. No external calls at inference.
Handover
Monitoring, drift controls, and documentation so your team runs the system.
Method
$ python fit_mmm.py --config client.yaml[load] 156 weeks x 7 channels[prior] adstock ~ Beta(3, 3) - saturation ~ HalfNormal(1)[fit] 4 chains - 2000 draws[████████████████████] 100%[ok] converged - max R-hat 1.01[ok] backtest MAPE 38.0% -> 24.1% channel mROI saturation search 3.41 0.62 social 1.18 0.89 tv 2.07 0.44 [ok] reallocation written - plan.csvSelected work
A few examples across forecasting, MMM, and operational risk.
A production-oriented recommendation system that guides customers through emotionally loaded floral purchases — using a deterministic state machine with LLM components constrained to intent parsing and rationale generation only.
Key result
Full guided purchase flow: delivery validation, persona selection, budget extraction, curated recommendations with auditable scoring
Multi-SKU demand forecasting pipeline for 30+ products across 100+ duty-free locations with automated monthly updates.
Key result
Forecast error: 38% → 24%
Proprietary Marketing Mix Model with budget optimization replacing intuitive allocation with data-driven decision making across multiple countries and touchpoints.
Key result
Strategic budget reallocation based on incremental response curves
Writing
The writing is there as proof of depth, not as a substitute for the offer.
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.
Why data science and AI platform projects fail on definitions, not on infrastructure, and how to let a real decision pull the data model into existence instead of waiting for the lake.
A staff-level field guide to predicted LTV for marketing activation: why ranking beats accuracy, why a directional model can beat an accurate one for seeding audiences, and where the whole thing quietly goes wrong.
Enterprise AI systems often work at the first level of granularity, then become fragile when the business asks for more precision. A field lesson from pharmaceutical supply optimization on why incremental architectures matter.
Raw latency and perceived latency are different engineering problems. Production GenAI systems feel fast when they expose progress early, overlap backend work, and avoid silent waiting.
What it actually takes to build a production forecasting system for luxury demand at SKU level: decomposing products into shared attributes, designing hierarchical aggregate features without leakage, handling intermittency with Tweedie and hurdle objectives, and forecasting in a way finance can use.
The most useful early step is usually clarifying the decision, the constraints, and what actually needs to be productionized.