Train a model for unstructured data
I have worked on a similar project with JDs, we basically created a word2vec model for words in JD, the result were good as we had lots of JDs. 
Basically, what word2vec does is convert a word to vectorial representation which signifies context. 
You can check the documentation here: https://radimrehurek.com/gensim/

You may extract skills or other stuff from CVs, and do a semantic similarity based on w2v model. You may use a custom formulae for comparing similarity. Other things could be education, experience, similar projects etc