Matching Algorithms in Python We run a online marketplace for Commercial Real Estate industry and are looking to write matching algorithms to reduce the cost of search and transaction for the property owners/tenants. 

We have two groups of users - owners and tenants and would like to implement matching algorithms based on their characteristics. Without any prior transactions data to work with, how would you approach this problems? More specifically, what matching algorithm techniques would you implement? 

Code is in python. 

Example: 

Property 

"property": [
{
       "amenities": ["kitchen",
                     "conference room",
                     .....,
                     .....]

        "location": "Munich",
        "feature2: "xyz"
        ...
}


Tenants

"Tenants": [
{
       "amenities": ["kitchen",
                     "conference room",
                     .....,
                     .....]

        "location": "Munich",
        "Type": 'Retail',
        "feature3": 'xyz'
        ...
}
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.