1. A computer implemented method comprising: defining a set of search visibility rules associated with a set of organizations and a set of records, each search visibility rule being used to determine whether a particular organization is allowed to access a particular record; associating a set of categories with a set of records via a set of category visibility rules, each category visibility rule being used to determine whether a record belongs to a particular category; associating the set of categories with a set of organizations via a set of category access control visibility rules, each category access control visibility rule being used to determine: whether members of an organization are granted an access to a particular category, and a nature of access to the members of the organization for the category; associating the set of organizations with a set of users, via a set of organizational visibility rules, each visibility rule being used to determine whether a user is a member of a particular organization; receiving a search request containing one or more search criteria from a first user, the first user having a respective organizational identifier indicating a corresponding organization to which the first user belongs; in response to the search request, identifying one or more records based on the search criteria, the search visibility rules, the category visibility rules, the category access control visibility rules, the organizational visibility rules and the respective organizational identifier; and identifying whether the first user has access to the identified record.