This isn't a new problem -- but there's no reliable solution. At some point, you're going to have to create a mapping from companyN to your internal naming convention for each product X -- there's really no way about it.
If N is small, then even if X is large, deltaX -- the number of products that (a) change names or (b) are added [deleted doesn't count] -- is likely to be small as well.
The initial mappings will be painful -- but a multi-pass approach should reduce the workload by about 95%. Afterwards, it's a one-off, which is easy to get a client to do.