The first replacement took about 10 months from first code to production, without Claude Code. The second, now on the test environment, started from the design, and Claude Code turned that design into documentation and specifications.
Our client is a US furniture company with in-house field crews. Customers order on its website, the warehouse prepares each order, and dispatchers plan the day’s operations (crews’ jobs at customers’ sites) on a map and a list. Crews get their operations on their phones and close each one with a checklist. Provectus maintains the operations system, as well as the staff mobile app.
For years, the client relied on third-party platforms. One tracked more than 70,000 assets. The other, a field service management platform, dispatched the crews. Every task, crew assignment and stock count had to match in two systems. On the dispatch platform alone, that meant dozens of tickets since 2022, about half of them bugs.
We replaced the asset-tracking platform first. It took about 10 months from first commit to production, and the sync bugs stopped once there was one system. Field operations is next, with the same team shape but a different method. The requirements were settled in the design first, screen by screen with the client, and Claude Code turned the design into documentation and specifications and keeps them current. The new module is on the test environment now. The build is planned to finish by the end of the year.
This article is for engineering and product leaders deciding whether to replace a vendor platform with custom software, and how to run the build with Claude Code.
01 The Real Cost of Running Two SystemsThe client’s requirements document called the field-operations platform limited. It carried features nobody used and lacked others the client needed. Our ticket history shows the cost of running two systems. Most of the dozens of tickets that named the platform came from keeping the two in agreement, with tasks duplicated, missing, or left behind after an operation was canceled.
Two examples:
Both defects were in the integration between the two systems. We could fix each one, but every task still had to cross that integration, and one system removes this whole class of defect. Retiring the platform also ends a subscription we estimate, from the vendor’s public pricing, at tens of thousands of dollars a year.
02 The First Replacement: Asset TrackingA team of five built the replacement without Claude Code: three developers (backend, web, and backend and mobile), a designer, and a team lead who also covered delivery management, requirements and QA. A DevOps engineer helped as needed.
Field operations has the same team shape, with the same designer and the same team lead.
03 A Requirements Document That Didn’t Answer EverythingField operations started from the client’s product requirements document, or PRD. It described some parts of the application in detail, down to how a pasted link should behave in a note; other parts had few requirements or none.
We made one early mistake. Right after the PRD arrived, we cut tickets one per requirement: bold text in one ticket, list indentation in another, sorting and grouping in separate tickets. Without the design, nothing grouped them into modules and screens, and they read as a list of small features. We grouped them by module first, but the plan that got built came later, from the design, and replaced them entirely.
04 A Prototype Before a Single Line of CodeDesign work started alongside the regrouping of the tickets. Two months in, our product designer, Maryna Oliinyk, started building an interactive prototype with Claude. Claude worked from the designs of the client’s current operations dashboard, the PRD and the client’s design system in Figma, so the prototype used the client’s real styles. It covered the core of the desktop module: the day’s operations as a list and on a map, the detail view of an operation, and creating operations from templates. The mobile app was set aside for a separate session, with a summary of its requirements prepared in advance.
Building the prototype exposed gaps in the written requirements. They mostly described what should change compared with the old system, as if the reader already knew the vendor platform. We maintain the operations system every day. The vendor platform we knew less well, and that became clear only partway in. From then on, Claude also worked from screenshots of the vendor platform.
“The prototype quickly showed where the requirements leaned on the old system without saying so,” says Maryna. “Those gaps are better found before development than in the code.”
05 We Went Through the Client’s Existing ProcessThe team then went through the client’s existing process: how dispatchers plan the day, assign crews and track the work, and which templates, forms and statuses the client actually uses.
The walkthrough turned up details the requirements had simplified or skipped, down to how many kinds of operation there are, and showed which features the client used and which it did not, so only a few questions went back to the client. One asked what status lifecycle an operation should have if someone creates it by hand, unconnected to the dashboard, and who may change that status. The client’s operations team came back with an eight-step lifecycle, mostly driven by the system, with manual changes only from the desktop.
People were fast in the old interface, so the new one keeps its logic. The map stays next to the list, and the operation colors come from the vendor’s templates, in softer shades.
06 The Requirements Took Shape in the DesignWe worked the requirements out in the design. Maryna drew the screens in Figma with Kostiantyn Kuzmishen, the project’s team lead and product owner. The client’s team leaders, subject-matter experts and crew members reviewed them, and so did our engineers. Each question was settled in the comment thread on the screen it concerned.
Every call went into a decision log with the discussion it came from. More than 80 decisions are recorded so far; about 20 drop or defer a vendor feature, each with its reason:
07 From Design to Documentation, Specifications and CodeOnce the design phase finished, Claude Code turned the designs into the documents we build from: the requirements in one documentation hub, the delivery plan and the specifications. A specification describes one piece of work with its acceptance criteria; developers build each one with Claude Code, and the criteria are checked against the running system. When an answer from design review changed a requirement, we updated the requirements and the affected specifications the same way, so the documentation kept pace with the design.
“Claude Code changed what counts as the source of truth,” says Oleg Galenia, our Tech Lead. “The requirements hub was created from the Figma design and has absorbed every design answer since, and each specification was written from it rather than from a ticket.”
The project runs from one orchestrating repository that holds the product documentation, specifications, the Claude Code configuration and AWOS, Provectus’ open-source spec-driven framework. Each service lives in a separate repository with a separate pipeline, and the setup script clones them all. A separate article describes the setup.
The team runs Claude Code under Provectus’ Claude Team plan, which follows Anthropic’s commercial terms, so sessions are not used to train models. The module is built and tested on sample data only, and project rules keep production credentials out of the AI’s reach.
What it looked like on this project:
08 One App for the Warehouse and the FieldOur team had already built the client’s staff mobile app: first for the warehouse (scanning assets, consumables, racks and pallets to load and unload orders, and reporting items that need cleaning, repair or disposal), then with a mobile asset-management section and bulk scanning. Field operations becomes its third section. For crews, it shows the day’s operations, assigned across the crew, and the checklist forms that record the condition of the site before and after the job. The section does not track crew location.
Today crews use the vendor’s app next to ours. They keep it until the final go/no-go, so they always have a working fallback. After go-live, one app covers the warehouse and the field.
09 What We’d Do Differently10 Where We Are NowThe new module is on the test environment, and the first iOS test build of the crew’s app, with the new field-operations section, is with the team; its forms and notifications are still waiting for their back end. Still ahead are synchronization with the operations dashboard, moving all existing operations, templates and forms over from the vendor platform, and switching it off. The cutover is planned step by step, environment by environment, with the vendor platform kept running until a final go/no-go in production. The build is planned to finish by the end of the year; go-live follows the client’s acceptance testing, as it did for the asset-tracking module.
One risk is still open: the crew section needs a connection, so at a site with no signal a crew member’s work waits until the phone reconnects. A saved unfinished form keeps what was already entered.
Once the module is live, operations will appear the moment they are created, with no webhooks between two systems and one set of user accounts, and the client’s team will edit templates and forms in the new module. The same Provectus team that maintains the client’s operations system will maintain the new module. The client owns the module’s code and documentation, and because the documentation is kept current with the code, another team could take the module over.
If you are weighing whether to replace a vendor platform, we can plan and build the replacement with your team the same way: design first, then spec-driven development with AWOS and Claude Code. The Agentic SDLC with Claude Code program brings this way of working to your engineering team.