Work
We take the code that is still running.
The work starts from the code, the data paths, and how releases actually happen. An assessment says what should move, what should stay, and what needs a clean interface around it. Language and framework are not the hurdle.
Services
-
Legacy code assessment
We read the tree, the build and release path, where data is written, the scheduled jobs, and the outside calls. The result is a scope someone can start: what moves first, what stays for now, and which access is missing. It is not a list of principles detached from the code.
-
Splitting and refactoring
We separate responsibilities that have piled onto each other, while the business keeps running, so later changes can stay local. The split follows real calls and data, not the names of directories.
-
Language, framework, and runtime migration
The usual subjects are a framework nobody maintains, a runtime that can no longer be patched, or a monolith that can no longer be changed safely. The point is to keep behavior, not to arrive at a newer stack.
-
Tests and regression
Where a path has no tests and lives in a few people's memory, we add characterization tests and the regressions that matter. Tests pin behavior. They are not there to raise a coverage number.
-
Handover
We write down the module boundaries, how the system runs, the cutover steps, and the risks still open, in a form the next owner can read. When the work ends, the system should not exist only in the heads of the people who changed it.
What we do not take
- Engagements that never touch the code, the build, or the running system, and deliver only a report.
- Chatbots or model demos that have nothing to do with the system you already have.
- Requests to put unreviewed generated code into production.