We have no documentation, no original developer, and possibly no source. Will you still take it?
Yes — that is the job. We start from what is actually running: the server, the database, the scheduled jobs, and the people who use it every day. Missing source makes it a harder start, not an impossible one; a running system tells you most of what it does. The first deliverable is a written map of what you have, and you keep that whether or not you hire us for anything after it.
Shouldn't we just rewrite it?
Sometimes, and we will say so plainly. But rewriting a system nobody understands is how companies end up running two broken systems instead of one — the rewrite always misses the rules nobody wrote down. Documenting and testing first is cheaper, and it produces the specification the rewrite needed anyway. If replacement really is the answer, it becomes a phased migration with a parallel run, not a big-bang weekend.
How do you test code nobody can explain?
Characterization tests. Rather than asserting what the code should do, we record what it does today — outputs, files, reports, resulting database state — and lock that in. Existing bugs get pinned along with everything else, deliberately, because the point is to detect change rather than to judge correctness. Once that net exists, an upgrade stops being a gamble and becomes a diff you can check.
You would have our source code and production data. How is that handled?
Under an NDA whenever you want one, with access scoped to the people doing the work and revoked at the end. We work inside your repositories and your accounts wherever that is possible, take the least data that does the job, and test against masked or reduced copies when production data isn't necessary. Our confidentiality page states the whole arrangement in plain terms.
Can we skip the assessment and just put you on call?
Not on day one, and the reason is worth stating plainly. Promising a response time on a system we have never read is a promise we cannot keep honestly — at 3am we would be reading the code for the first time, on your outage. A short assessment gets us to the point where a response commitment means something. After that, a retainer is the normal arrangement.
What does this cost, and where does it stop?
The assessment is fixed-price and short, because it is the only part anyone can scope before reading the code. What it produces is a prioritized list with estimates: what is urgent, what is merely ugly, and what you can safely leave alone for years. You can stop there and hand that document to your own team — it is written to be used that way.