Tests first, types second
A refactor without tests is a gamble. At minimum, cover the entry points and the core data flow with integration tests so the model can run them after every change.
Make the model draw the dependency graph first
Before touching code, have it list who imports the target module and what the module imports. This surfaces 60% of the hidden coupling before you commit to a direction.

'any' is debt, not a solution
Allow 'any' during the migration, but count it in CI and set a declining target. Otherwise the cleanup never ends.
Convert along call chains, not folder trees
Folder structure is history; call chains are the real coupling. Converting along call chains keeps every single commit in a runnable state.

Tools in this playbook
Based on a real rollout; product behaviour reflects the version at publication. Tell us if something has changed.