You inherited a Laravel or Symfony codebase that the team can no longer reason about. Tests fail in ways nobody can trace; the same operation has four spellings and four call sites. I read the repository, write the diagnosis, and put hands on the keyboard when you decide the report alone is not enough.
CTOs and lead developers running a Laravel or Symfony codebase — and the Python, JavaScript/TypeScript or Node layers around it where the LLM damage straddles them — that the team has been shipping AI-assisted PRs into for six months or more, and that nobody on the team would now describe as easy to reason about.
Greenfield rewrites. One-file fixups. Repositories where the team is happy with the code and just wants more of it faster.
Half-day triage. Written diagnosis with the bleed prioritised. An optional follow-on engagement to do the repair, billed by the hour or by the project — your call after you have read the diagnosis.
Coverage was 72%, now 18%, and nobody on the team can point at the PRs that did it. The CI thresholds have been relaxed twice this quarter to keep the pipeline green.
Controllers past 1,500 lines. Service classes that import twenty-two collaborators. Whoever wrote them is no longer at the company, and the original intent is not recoverable from git blame.
getUser, fetch_user, Customer::find, UserRepository::byEmail. Four call sites, four slightly different return shapes, one bug report nobody can reproduce.
Runs locally. Breaks in staging in ways that change every deploy. The team blames flaky tests; the tests are correct. Race conditions and n+1 queries have been introduced quietly, in PRs that read like they were generated.
Thirty minutes, no fee, no slide deck. You bring the repository or a description of it; I tell you what I see and what I would do about it. The diagnosis is a flat half-day rate, agreed before any work starts. Repair work is hourly or by the project, scoped from the diagnosis, never open-ended.
A code review hands you a list. A cleanup engagement closes it. The diagnosis is reviewed prose that explains, file by file, what the damage is and what the repair would cost; the optional follow-on engagement is the repair itself. The diagnosis document is yours regardless of whether you continue.
Primarily PHP, Laravel, Symfony and Python — that is where the methodology is sharpest. JavaScript/TypeScript or Node when the code specifics warrant it (for example when the LLM damage sits in a Node layer of the same repository). Other stacks case by case; a weaker diagnosis is worse than no diagnosis.
A flat half-day rate, agreed on the triage call before any work begins. The triage call itself is free and lasts thirty minutes. There is no obligation to continue to the diagnosis after the call, and no obligation to continue to repair after the diagnosis.
Yes. Mutual NDA before any code crosses my desk is the default; I sign yours or send you a short one. Repository access is read-only by default, scoped to the duration of the engagement.
One short form. No newsletter, no platform, no follow-up sequence. A senior engineer reads what you send and replies inside one working day.