What Data Structure Should I Use for Assigning Meetings?

  data-structures, database, oop, python

I’m a member of a club at my school and we usually interview people who join. The thing is, we send out a when2meet.com link to both our interviewers and the the people that applied. That’s how we schedule interviews, we look at who’s available from our side and who’s available from the interviewees’ side.

With 30+ people to interview, manually assigning interviews is a total pain, so I’m making an application in python to do the task.

Currently, I’m successfully scraping when2meet, and the way I’m organizing the data I’m getting is by creating a TimeBox class, like this:

lass TimeBox:
    """ Represents one box of time in the when2meet"""

    date: datetime
    execs: List[str]
    candidates: List[str]

    def __init__(self, date, execs, candidates):
        self.date = parser.parse(date)
        self.execs = execs
        self.candidates = candidates

The reason this is an issue is because I want the execs to have an equal number of people to interview (or close to equal), and I want to make it so that if one interviewee is available for only one timeslot, and another is available for many timeslots, priority goes to the less available one (because we can just find another interview time for the one available for many timeslots). I also don’t think that by the way I have created this data structure, I am keeping track of which interviewee already has an interview (because we dont want to make one person go to multiple interviews). So should I make an interviewee data structure as well?

What data structure would be good for this? I’m in 2nd year CS so feel free to throw some graph theory at me if that’s a good structure (i.e. bipartite graphs).

BTW, the way we know who’s an interviewee on when2meet is by having a string identifier, i.e. an interviewer for Google might put "(Google)" beside their name, which an interviewee would not.

Source: Python Questions