So, you are looking for an outline on how you would go about this project. Unfortunately, the import is key in this scenario, so I hope you can rerun the import and make minor adjustments to the data if need be.
First off, the attributes that are used as configurable need to be marked as such. In the backend this is designated as "use for configurable products".
Secondly, you need a stem, a root that binds different versions of the same product together. Hopefully, this is the product name, the SKU or some other product code:
- t-shirt, grey, size XL
- t-shirt, grey, size L
- t-shirt, blue, size XL
Here the stem is t-shirt, but only after seeing the third product.
Same as above but now with some product code.
Now, humans aren't the most consistent species in the world, so you need to look for something that is either consistent enough to cover the 80/20, or is systematic, like the product code above and that can be parsed into sections using the dash as separator.
In both matching algorithms you need to be careful to not match too many. If you have a t-shirt store, you don't want to end up with one big configurable product. On the flip side, without the blue t-shirt in the example, the stem would be t-shirt, grey and the color attribute would be missed.
Hope this helps you along.