Case Study
Ecommerce
cambium logo case study stxnext

Every migration ticket planned, cleaned up and security-reviewed with Claude Code

Claude Code is not set up here as autocomplete. It is configured like a team member that knows the project's conventions, works on an isolated branch per ticket, and runs a fixed pipeline from planning through to security review and then deployed to prouction.

Approving the plan, committing and merging stay with the engineer.
CLIENT
The Cambium Group
INDUSTRY
Ecommerce, wedding gift lists
SERVICES
AI-native software development, Frontend development, Team extension
TECH STACK
Claude Code, Next.js, React, TypeScript, Playwright, MCP
The Client

The UK's leading wedding gift list group

The Cambium Group operates a portfolio of complementary gift list brands that together serve couples at every stage of their wedding journey, with curated product selections and a high level of personal service.

STX Next works on the software and technical development of those platforms as a team extension. The engagement covered here is about how that team builds: Claude Code is configured as a working member of the team rather than as autocomplete, and every ticket runs through the same fixed pipeline.
cambium features graphics
The Challenge

Writing a feature is easy. Writing it this project's way is not

The Cambium Group runs ecommerce gift-list platforms. The one this workflow delivers has been live since 2022 and is part-way through a migration: a Next.js and TypeScript frontend is taking over from an older service that is being retired.

That migration is the business problem underneath the engineering one. Until it finishes, every new feature either moves it forward or adds to what has to be unpicked later. The two codebases also keep separate schema definitions for the one database they share, and drift between them is a production incident rather than a bug. Current code sits alongside an established earlier layer with its own patterns and libraries.

Writing a feature is the easy part. Writing it the way this particular project writes things, every time, on a platform still carrying its own history, takes a great deal of context to get right, and that is the part that does not scale by adding hours to the week.
Smiling woman in a burgundy shirt gestures while talking to a man across a desk with a laptop.
How We Work

STX Next: AI-native delivery, with the guardrails written down

Production status. The frontend migration stream has been delivered this way since March 2026, roughly six months. It is the standard route for tickets in that stream: every one of them goes through the workflow, one ticket to one isolated branch to one pull request, and the output ships, reviewed, merged and deployed in the project's regular releases by the same route as code written by hand. The application has been live since 2022. This is how part of it has been built for the last six months.

Very little of what makes this work comes from the model on its own. It comes from the setup built around it: the conventions written down, the corrections saved as permanent rules, the workflow reduced to one command, and a branch per ticket.

Output quality tracks setup quality. The same model with none of this scaffolding produces mediocre results, which is why the configuration is the deliverable rather than the tool.

Man in dark sweater working on a laptop at a table with STX NEXT logo on the wall behind.
The Solution

Four layers of configuration, and one command that runs seven phases

team extension stx next graphics

Claude Code is set up here like a team member that already knows the project. Each layer lives in the repository rather than in someone's head.

Conventions written down

Three convention files, one at the root and one for each codebase, covering architecture, patterns and hard rules: which rendering approach is the default, how mutations are handled, the styling approach, the API pattern to use instead of raw fetch calls, mandatory error handling, and the libraries that are no longer allowed. None of it has to be restated per task.

Project memory

When an engineer corrects something, it is saved as a permanent rule along with the reasoning. No nested ternaries. Infer types from the schema rather than hand-writing them. Any schema change goes into both codebases. A dozen or so now: the team's own code review, codified so the same feedback is never given twice.

One command, seven phases

A custom development workflow written for this project, running from gathering context through to security review, with an approval gate partway. One command replaces re-explaining the whole procedure every time.

An isolated branch per ticket

Every task gets its own worktree, so several run in parallel without changes bleeding between them, and each one ends as its own pull request.

The seven phases, in order

01 Context. Reads the conventions and explores the part of the codebase the task touches, so it reuses existing patterns instead of inventing new ones.

02 Plan, then approval. Which files change, what schema changes are needed, security implications, edge cases. It asks questions rather than guessing, and nothing is written until an engineer approves the plan.

03 Implementation. Follows the written conventions, and steers new functionality into the frontend rather than extending the service being retired.

04 Fix loop. No iteration limit. It keeps working the problem instead of stopping at the first attempt and handing back something half-done.

05 Code cleanup. A separate pass for readability and consistency, rather than leaving it to whoever reviews the diff.

06 Security review. Cross-site scripting, authorization, input validation and data exposure, checked on every ticket.

07 Summary. What was built, what changed, and what is left to consider.

Committing and merging are never part of the pipeline. They happen after an engineer has read the diff.

Tech Stack

Claude Code
Next.js
React
TypeScript
Playwright
MCP
Git worktrees
The Impact

Migration production tickets completed per two-week sprint rose from 6 to 10, compared to before March 2026, same team of four engineers.

01

Conventions enforce themselves

Nobody, person or model, has to guess whether the project uses a framework component or its own. It is written down and checked on every task, so the same review comment is never made twice.

02

Security review and cleanup stop being optional

Both run on every ticket rather than when someone remembers, so neither depends on good intentions at the end of a sprint.

03

The migration moves faster

New functionality is steered into the frontend automatically, instead of depending on whoever is writing the code staying alert to which codebase a change belongs in.

None of these is a one-off. They are properties of the pipeline rather than things a careful engineer remembered to do, so they hold for every ticket in the stream and every pull request out of it, across the six months it has been running.

04

Tech debt anyone can prioritise

The engineer writes what needs doing. The agent finds the repository the change concerns, adds its own read of the problem, and rewrites most of the description in plain language. Tech debt normally loses the argument for a sprint slot because nobody outside engineering can tell what is at stake. A ticket that explains itself, with a stated priority, can be weighed against everything else competing for the same time.

Median time to close a tech debt ticket fell from 3.5 days to 1 day over the same windows.

Man and woman smiling and working together on a laptop at a desk with documents in an office.
Production separation of duties
Claude Code runs on its own inside a deliberately bounded environment. Anything irreversible or production-affecting stays with a person: merges, database commands, server access and architectural decisions. The split is not about trust in the tool, it is about which mistakes can be undone, and it is the same principle any team would apply to a live platform.

Runs on its own: reading and exploring the codebase, writing an implementation against an approved plan, and the cleanup and security review passes.

Always a person: committing and merging after reading the diff, any database command, which is blocked at the permission level, running the application and checking it in a browser, touching servers, and architectural decisions with real trade-offs.

One rule sits above the rest. A schema change goes into both codebases, every time. Two definitions of the same database drifting apart is a production incident, so it is enforced rather than remembered.

Three things this setup does not do, stated plainly because they shape how it should be used. It does not replace review: the code still has to be read, because the model can produce something syntactically correct that misses the business intent entirely. It rewards the setup work: the configuration was built up over the first few weeks and has been added to ever since, and six months of that accumulated context is why the output holds up. And the larger architectural calls still need a person, because the model executes a plan well but is weaker at choosing between trade-offs that cannot be settled from the code alone.

The same tooling turns up inside the product, not only in how the team builds it. One shipped example: image descriptions for articles are generated through the Claude API. That is descriptive writing which matters for accessibility and search, and which is the first thing to get skipped when someone is publishing in bulk.
BEYOND THE PIPELINE

The work around the code

Tech debt anyone can prioritise

The engineer writes what needs doing. The agent finds the repository the change concerns, adds its own read of the problem, and rewrites most of the description in plain language, so it can be weighed against everything else competing for the same sprint. Raising the ticket stays with the engineer.

An impact check, when it is asked for

When a pull request has moved on, the engineer can have the agent look at whether the latest edit reaches into other parts of the application and whether anything is likely to break. It runs on request rather than on a trigger.

Image descriptions, generated in the product

The same tooling turns up inside the product, not only in how the team builds it. One shipped example: image descriptions for articles are generated through the Claude API. That is descriptive writing which matters for accessibility and search, and which is the first thing to get skipped when someone is publishing in bulk.

mobile app team stxnext graphics

Want this running on your codebase?

Schedule a call with our experts to discover the benefits of partnering with STX Next.

Contact us

Our customers love to work with us