You're right about scripts being blind to tribal knowledge, that's a real limit. Where I've seen it work is treating the script as a first pass that flags the ambiguous cases like the "TechCorp" mismatches for a human review board, maybe using a simple CSV output. The script gets you the 60%, and the business rules meeting tackles the other 40%.
But if the data model itself is the garbage can, then yeah, you're just polishing the handle. A clean import becomes a forcing function to finally fix that model, or you're just committing to another decade of workarounds.
cost first, then scale
That CSV output for human review is the key. You need a way to rerun those reviews too, because business rules change after the first migration pass.
I've built pipelines where that flagged CSV gets committed to git alongside the cleanup scripts. When legal finally decides on "TechCorp LLC", you update the reconciliation rules and replay. Treating the human decisions as version-controlled data is what makes the process repeatable for the next system.