Create mirror, if possible?

HardOps has a nice method for mirroring an object that automatically slices the object down the middle first, and deletes half the model. I’d love to use that, on heavy models after I import them when possible.

I’m wondering if there would be a good way to basically script to see if there is potential for mirroring to save data.

My intial thought was to get the count of verts before, then after. If they are the same, then that’s a potential.
Of course, there would be a few ways to mirror. With the object origin, with the parent’s origin, with the object origin centered, or with the object origin centered to mass.
And of course, you can mirror on X Y or Z. AND that could be based on world, or local.

So maybe the best way to go through a model would be to just isolate each object and have an interface for the user that would show things like: Skip, buttons to specifically try a method, or just try the next method. If all of the potential methods and directions are tried and there are no matches then go on to the next object automatically. It could automatically accept if it gets a match, or show you how far off it is, by showing the numbers of how many verts it changed. Reasonably you could also add something like, if the object dimensions change more than X amount, automatically skip.

It could show a total count so you know how much freakin work it is. The goal would be able to help get through a bunch of data quickly, and reduce the total file size.

Am I thinking about that correctly? Would there be a much better method for it?
I am usually going through CAD data, so hard surface models. But don’t have time in projects to re-model things. The data is heavy, so just trying to get some improved methods for going through the data. Most of the models at a medium/high quality end up being about 2 million verts when I first start, but I’ve had it up past 9 million.