Dynamic collaborative environments enabled with multiple computational devices, software and files have always had difficulty sharing these resources in a practical way. Traditionally, people involved in environments like those are forced to waste time and energy trying to locate a resource they do not even know if it exists inside the organization. Those resources can be devices, which make collaborators running around buildings, or software, which have to be looked for in huge repositories. Thus, a proper computational support capable of facilitating the task of discovering the most suitable and available resource for a user request is a clear need that remains unsatisfied. Although several works have been developed for resource sharing, the way they find the best match for a request can be highly upgraded, since most of them compare types of resources or minimal technical characteristics in the best case. In this paper, we propose a matchmaking algorithm, whose main goal is to find the best resources available for a request, by considering explicitly stated collaborators' preferences as well as information automatically inferred from the environment and the organization structure.