Case study · dogfooding
I ran Refactyl on my own repo,
including the files it refused to touch.
No customer logos yet, so here's the most honest proof I have. I pointed Refactyl at my own [Express → Fastify] migration on a real production codebase, not a demo, and I'm showing you everything: the numbers, one verified diff, and the files it flagged instead of guessing at.
No credit card · Docker-sandboxed · Deleted on handoff · Never used for training.
The numbers
—
lines of code
—
files converted
—
files flagged, not broken
—
compiler errors at handoff
—
of my attention
[your repo] · [Express → Fastify] · one run, scored the same way the public benchmark scores every tool.
What it converted
- · [The bulk of the migration: e.g. every route handler + middleware, converted with precise types.]
- · [A gnarly area you expected to break but didn't, name it.]
- · [package.json / config the engine resolved deterministically.]
- · [The compiler verdict at handoff, e.g. tsc --noEmit clean.]
The honest part
The files it refused to touch
A migration you can trust has to tell you where it stopped. These shipped unchanged and flagged (never silently broken) with the reason attached, so I knew exactly which files still needed me. That flag is the product.
[path/to/first-file]
[The pattern it couldn't statically resolve, e.g. a dynamic require() built from a runtime string. It flagged rather than guess.]
[path/to/second-file]
[Why no safe mechanical equivalent existed, and what a human had to decide.]
[path/to/third-file]
[What made this one genuinely ambiguous: the honest reason it left it to me.]
One diff, verified
// before — TODO(founder): paste a real snippet from your repo
// after — TODO(founder): paste the verified output for the same snippet
Flagged, not silently broken.
That's the whole promise: every file the compiler could verify, verified, and every file it couldn't, flagged with the reason. Run it on your repo and get your own version of this page.