On this page3 sections
Repeated changes across a large codebase, dependency upgrades and test preparation can take up much of a team's time. We use LLM agents for that work, starting with the behavior to preserve and the acceptance criteria. Depending on the engagement model, architectural decisions and release approval sit with our team or with both teams together.
What the agents do
- Architecture and data-flow analysis of older codebases
- Characterization (snapshot/golden) tests generated from current behavior
- Framework migrations: Java 8 to 21/25, AngularJS to React, .NET Framework to .NET 10, jQuery to TypeScript
- Dependency upgrades with compatibility verification (beyond Dependabot and Renovate)
- Replacing deprecated API calls with modern equivalents
- Filling test coverage gaps and detecting flaky tests
- Producing architecture notes, ADRs and runbooks
How we work
Before changing code, we map the data flow and generate characterization tests from current inputs and outputs. The agent then applies one transformation type at a time in small, readable pull requests. Every pull request passes build, test, static analysis and team review before merging.
When source code cannot leave your network, we run the agents against models hosted on your own Kubernetes cluster with vLLM or Ray Serve, and restrict network egress, tool connections and logging to match your security policy.
Tooling
- Foundation models
- Claude (Anthropic)GPT (OpenAI)Llama (Meta)Open-source options in your own environment
- Agent frameworks
- Claude Agent SDKOpenAI Agents SDKLangGraph
- Static analysis and AST tooling
- tree-sittersemgrepOpenRewrite (Java)ts-morph (TypeScript)Roslyn analyzers (.NET)
- Evaluation and observability
- LangfuseOpenTelemetry GenAI