Algorithm for user profiling without distinct profiles I am trying to design an algorithm that takes in a new user with the variables department, location, job_role etc. and I want a machine-learning algorithm to decide what software and hardware this new user would need. 

I am rattling my brain thinking how I could get this to work - 
I could use a supervised learning approach and train a model with a dataset of already employed users and the software and hardware they use, however, the variables in this dataset would be extensive as, through one-hot encoding, each user object would have to have variables that represent each possible software or hardware a user could own. Or can my dataset have a collection of user objects but not each object has the same software/hardware variables?

I'm very confused about how to go about this so any insight would help. I'm probably looking at going about this the wrong way.
It is not uncommon for machine learning models to employ thousands of features. I doubt your software / hardware repository contains significantly more than that so it is unlikely an issue.

Having said that, machine learning is useful if you need to generalize. You say that your input variables are going to be department, location and job_role. In such case you have three categorical and likely independent and always known features so I expect you can just look up someone with same department, role and location and create default hardware/software profile based on that. I do not see any value added by machine learning.