The burden on your team is proportional to the complexity of the your source management scheme.
I'm sure someone has solved this with branching. That does not mean that branching is the best way to solve this. If you maintain different branches for each customer, it will be complex.
The simplest model would be to maintain one set of source code for all customers, and design it to be modular so you can enable/disable be either deploying different modules or using feature switches to enable/disable features.
Probably the most important question is "Why is there "virtually no documentation available?" Devising a complex branching scheme in an environment where people won't even document the customer's products in an orderly fashion is unlikely to make things turn out well. And the root cause of problems will not be a poor branching plan. Your problem will be the answer to that question. I suggest you discuss that with your team first and be realistic about what you find.
I'm sure someone has solved this with branching. That does not mean that branching is the best way to solve this. If you maintain different branches for each customer, it will be complex.
The simplest model would be to maintain one set of source code for all customers, and design it to be modular so you can enable/disable be either deploying different modules or using feature switches to enable/disable features.
Probably the most important question is "Why is there "virtually no documentation available?" Devising a complex branching scheme in an environment where people won't even document the customer's products in an orderly fashion is unlikely to make things turn out well. And the root cause of problems will not be a poor branching plan. Your problem will be the answer to that question. I suggest you discuss that with your team first and be realistic about what you find.