Many hackathons, whether remote or on-site, rely on "organic" formation of teams, where people just meet, connect, and agree to work together for more or less the duration of the event. However, many organizers look for more more methodical ways of matching people together. Some reasons to try to do this are:
There are several ways people can form teams on Dribdat already, as described in the User Handbook, you can just Join a project that you like. You can also be manually added to a project by an organizer, who may have built this into a registration form, or found some other ways to assign teams. We recently added a simple dialog that encourages people to fill out a profile and pick a team.
Dribdat now features an optimization-based matching algorithm to go a step further, and actively help participants and organizers to form teams during hackathons. The science-based algorithm is implemented using Pyomo and solved with the HiGHS solver. In this documentation you can find some more information on how it works, and our outlook on this type of feature.
The Teambuilder feature is an automated recommendation engine designed to match participants to projects based on their skills, interests, and preferences. Originally developed as an external algorithm by students of Prof. Dr. Marek Pycia at the University of Zürich (UZH), the tool has been successfully integrated into Dribdat as part of the HackIntegration project.
It is now a standard offering in Dribdat, with growing demand from event organizers and participants. Details of the algorithm will be published soon, a basic overview of the approach is described in the following sections.
Users can rank up to 5 projects for the current event using an intuitive drag-and-drop interface (powered by SortableJS). This is accessible via the upcoming event page (with the Join Project) button, or the user’s profile.

Just drag and drop the projects you would like to work on from the right side to the left, and rank them from top (most preferrable) to bottom.

Organizers can then get an overview of all projects and participants in a single, centralized dashboard in the Admin area. They can at a glance see who has ranked their projects, and start the teambuilding process.

When you trigger the matching process, it suggests optimal assignments based on:
The results are displayed in a review screen for organizer approval. Organizers can then send automated invitation emails to suggested matches.

Emails include: basic project details, a customizable message from the organizer, and a direct link for participants to join the project.
Participants must act on the recommendation, i.e. confirm the match by tapping the link and joining the project.
The matching algorithm considers several factors to find an optimal assignment of participants to projects:
DRIBDAT_TEAM_SIZE environment variable, or 5).technai field). The algorithm ensures that these requirements are met by assigning participants with the matching skills.The default solver is HiGHS (via the highspy package), which is an open-source high-performance solver for mixed-integer programming.
DRIBDAT_TEAM_SIZE environment variable to change the default capacity for all projects.User.my_skills and Project.technai fields.The matching logic is located in dribdat/matching.py. You can run the dedicated matching tests using:
PYTHONPATH=. python tests/test_matching.py
For more information on optimization models and testing, refer to the Pyomo documentation.
Special thanks to Kiril and Martin for their contributions to the Teambuilder algorithm, and to the Bern University of Applied Sciences, University of Zürich, Innosuisse, and all HackIntegration partners for their support.