Inspiration
Our project is inspired by the observation that we had all been in groups which did not reach their full potential because everyone had the same skillsets or thought process. We were further inspired by the keynote speakers, who both discussed how innovation must occur at intersections.
Problem
We wanted to address the problem of diversity and inclusion at its root - when groups lacking diversity are formed. Unfortunately, many groups today are not diverse. For example, if groups are formed by their members or by a third party, they are prone to bias and clustering of like minded individuals. Even randomized groups will frequently generate teams which lack diversity of thought. Currently, there exists no solution to generate diverse teams, and this is hindering our ability to harness the power of collaboration.
Solution
Our solution is a website which generates groups for a team based on optimizing for diversity based on four factors: race, gender, age, and experience. Our website uses an algorithm which first generates all the possible groups of a specified size. Then, it calculates a diversity index based on the proportions of each factor for each group and the whole team. Finally, it displays the grouping with a diversity index that is closest to that of the whole team. This solves the problem by ensuring groups represent a variety of perspectives.
Technology
Our project is a website built on the Flask framework including jinja for templating. We used python for our optimization script, using the pandas and itertools libraries. In order to create our diversity index function, we looked to existing research in the field such as Simpson’s diversity index. We also used k nearest neighbors to determine the grouping which had the most similar diversity to the whole team.
Challenges
One major challenge we faced was how to generate the possible groups without overcounting while making sure each person was represented exactly once. Initially, we tried using the combinations method in itertools, but this resulted in groups that did not include some people and included others twice. Then, we tried generating permutations of the whole array of people and partitioning it. This worked, but took O(N!) time and was too slow to function. At this point, we asked for help - and mentor Michael helped us realize that we should use sets (specifically frozensets which are hashed) and check if a set has already been generated before including it in our groups. This was much faster!
Other challenges include choosing a feasible project, loading static files in Flask, and the time constraint.
What I learned
We learned the process of starting something from scratch and finishing it in an extremely short period of time. We also learned how to use our resources, especially google! Programming-wise, we learned some interesting algorithms with combinatorics, how to use flask, and how to create a project with social good in mind.
What's next for Groupify
With more time, we would implement more factors to consider, including skills, personality, and work style along with user-specified variables. We would also move away from using excel files, which are admittedly a bit error prone, and use a built in method of data input with stronger validation. We would also consider factors other than diversity, such as leadership dynamics and individual preferences.


Log in or sign up for Devpost to join the conversation.