VCDK Vibe-Coding Detox Klinic · Est. 2026
Accepting new projects Alicante · Amsterdam · Remote
▮ Cleanup service

Cleaning up after
the autocomplete.

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.

Free 30-minute triage call · I reply within one working day
Languages
PHP, JavaScript and DevOps since 1996. Python since 2012. Laravel since 2017.
Availability
Replies within 24h on weekdays. CET working hours.
Code quality
Every engagement ships with a test suite that previously did not exist.

For

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.

Not for

Greenfield rewrites. One-file fixups. Repositories where the team is happy with the code and just wants more of it faster.

How it runs

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.

§ I — How do I know I need this?

Four signals you have already seen.

Two of these in your repository is enough. Three and the engagement pays for itself inside the first fortnight.

Test coverage that fell off a cliff

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.

Files no human has read end to end

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.

The same operation, spelled four ways

getUser, fetch_user, Customer::find, UserRepository::byEmail. Four call sites, four slightly different return shapes, one bug report nobody can reproduce.

Staging behaving differently from production

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.

§ II — What happens when you engage

Three steps, honest at every one.

  1. Free 30-minute triage call. You show me the repository and the one or two things keeping you up at night. We rank the bleed together. You leave with at least one concrete next move you can run yourself today, whether you engage further or not.
  2. Written diagnosis, roughly half a day. A document covering structural debt, the parts attributable to AI-assisted work, and a prioritised remediation plan. Plain prose, not slides. Yours to act on with or without me on the engagement.
  3. Repair, billed by the hour or by the project. Hands on the keyboard against the priorities the diagnosis set. Tests written before behaviour changes. Each change small enough to revert on its own. You see every PR.
§ III — Pricing posture

The triage call is free.

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.

About the operator →
§ IV — Frequently asked questions

Frequently asked questions

  1. How is this different from a code review?

    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.

  2. Do you work on non-PHP codebases?

    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.

  3. What does the diagnosis cost?

    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.

  4. Can you sign an NDA before seeing the repository?

    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.

▮ Request a triage call

Tell me about
the codebase.

One short form. No newsletter, no platform, no follow-up sequence. A senior engineer reads what you send and replies inside one working day.

  1. Free 30-minute triage call. You show me the repository and the one or two things keeping you up at night. We rank the bleed together. You leave with at least one concrete next move you can run yourself today, whether you engage further or not.
  2. Written diagnosis, roughly half a day. A document covering structural debt, the parts attributable to AI-assisted work, and a prioritised remediation plan. Plain prose, not slides. Yours to act on with or without me on the engagement.
  3. Repair, billed by the hour or by the project. Hands on the keyboard against the priorities the diagnosis set. Tests written before behaviour changes. Each change small enough to revert on its own. You see every PR.

or visit PHPfreelance.co.uk

© MMXXVI · VCDK / PHPfreelancer · Jeroen Derks Engagements run remote · Records kept locally v1.94.5823