Decisions, not buzzwords.
Each one follows the same structure: context → constraints → options → decision → outcome. Details are sanitised — no customer data or internal code.
// Core development
Platform capabilities and engineering tooling I designed and led.
Stopping unintended locale publishing: cross-locale release items
Enterprise customers were publishing content into markets it was never localised for, via master-locale fallback. I led the design that enforces the rule in the release service without breaking a single existing client.
- Rule enforced for every client (UI, API, SDK, CLI) — not just the UI
- Zero new statuses, fields or error codes — existing integrations unaffected
- Clear, different failure semantics for sync add, bulk add and deploy
Making branch merges explainable: per-item merge job details
Users merging content branches couldn't see what a merge actually changed, so they exported entire branches via CLI to diff them. I led the design that adds a per-item breakdown to the merge job API.
- Per-item visibility: added / modified / deleted, strategy and status
- Global-field changes show every affected content type
- Removed the need to export whole branches just to see what changed
Branch creation API: controlled environment cloning
Creating a branch cloned every environment's publish configuration, whether you wanted it or not. I worked on an explicit, validated control that's still backward compatible.
- Explicit control: clone all, none, or a chosen list
- Omitting the field keeps the old behaviour — no breaking change
- Validated at the API edge, so bad requests fail fast
AI-augmented engineering: setup agent, RAG knowledge app and LLM migration tooling
Three AI builds that removed real friction: a Claude-driven local setup agent for 60+ microservices, a RAG app over internal engineering docs, and an LLM pipeline that turns a legacy website into a CMS import package.
- Local environment for 60+ services provisioned by typing "cms setup"
- Grounded answers over internal docs with Pinecone retrieval
- Legacy site → content model → import package, automated
// Customer solutions
Enterprise migrations and solutioning, from pre-sales to go-live.
Enterprise CMS migration: consolidating AEM and MySQL into one content model
A US retailer's content was split between AEM and tables written directly in MySQL. I owned the solution architecture that brought both into a single content model on Contentstack, and built the accelerators that made migrations like it repeatable.
- Content split across AEM and direct MySQL tables consolidated into one content model
- Typical migration engagement effort cut from about a month to a week
- Discovery work that took weeks reduced to days with an AI migration tool
Enterprise solutioning: from pre-sales to go-live
Technical lead for enterprise customers across the US, Europe and APAC: solution design, estimates and risk up front, custom integrations through delivery, and critical production escalations after go-live.
- 50+ enterprise customers across the US, Europe and APAC
- Main technical point of contact for enterprise accounts
- Content ↔ commerce integration architecture, including commercetools