Matching Algorithms in Python
According to your description you can only use similarities between descriptions, and since there's no labelled data it has to be unsupervised. 


Option 1: heuristic (i.e. ad-hoc unsupervised method). Based on your knowledge of the specifics of the data, implement a function which returns a score representing how similar two descriptions are. For example a basic matching could simply count the number of common items between the two descriptions divided by the number of items in the longest description. For a query description return the N top similar matches after comparing it to every potential match. Naturally this can be improved in many ways.
Option 2: represent each description as a vector and use any generic similarity measure over pairs of vectors (e.g. cosine).  The representation can be some kind of direct representation, e.g. some kind of TF-IDF vector, or a more sophisticated  representation as a tree or graph embedding.