This disclosure describes techniques to analyze collections of software projects using static and dynamic features. Software engineers or operators can query the outcomes of these analyses to find cohorts of design patterns that are relevant for the task at hand in their own projects, thus helping them identify applications that meet the criteria of interest. The techniques can also be applied to generate alerts based on evolution of the matching projects, suggest code completion, and to recommend relevant example code or learning resources. Analysis of code can be performed internally on codebases controlled by a single business and/or on permitted code in a public software ecosystem. Implementation of the techniques described in this disclosure can help software engineers be guided by existing projects and potentially foster collaborations by connecting those working on similar problems