Giter VIP home page Giter VIP logo

interview-scheduling's People

Contributors

widal001 avatar

Watchers

 avatar  avatar

Forkers

bellyfat miyuruwu

interview-scheduling's Issues

Interview Matching

Summary

Create a Matcher class with an match_interviews() method which takes a set of preferences and returns a set of interview assignments based on those preferences

Expected Behavior

  • There's a class Matcher with the following attributes:
    • candidates - List of unique candidates
    • positions - List of unique positions
    • c_prefs - Dictionary of candidate preferences for each position
    • p_prefs - Dictionary of hiring manager preferences for each candidate by position
  • The Matcher class has a match_interviews() method which accepts the following inputs:
    • Arguments
      • c_min - The minimum number of interviews a candidate must have to be considered "matched"
      • c_max - The minimum number of interviews a candidate can have
      • p_min - The minimum number of candidates that must be interviewing for a position in order for it to be considered "matched"
      • p_max - The maximum number of candidates that can interview for a position
    • Returns
      • self.c_matches
      • self.p_matches
      • self.c_remaining
      • self.p_remaining
      • self.logs

TASK: Add logging to `Matcher` class

Summary

Add logging to the Matcher class to keep track of the steps that happen during the deferred acceptance algorithm

To Do

  • Create a MatchLogger class
  • Add logs for the following events:

Definition of Done

  • Each step of the deferred acceptance algorithm is printed to the standard error
  • A dictionary of the logs can be accessed from the MatchResult object returned by the

Scheduler class with schedule_interviews() method

Summary

Create a class Scheduler and a method schedule_interviews() to schedule interviews based on mutual availability of candidates and hiring managers

Expected Behavior

  • The __init__() method for Scheduler accepts the following inputs:
    • c_availability - Dictionary of candidate availability with following format {"candidate name": ["Block 1, "Block 2", "Block 3"]
    • p_availability - Dictionary of hiring manager availability by position with same format as c_availability
    • interviews - List of tuples that represent the candidate position pairing for each interview that needs to be scheduled
  • The schedule_interviews() returns the following values
    • self.interview_schedule A dictionary that maps interview tuples to the blocks during which they'll occur

Project Setup

Summary

Complete the basic setup for the project

To Do

  • Documentation
    • Build out README template
    • Create docs/ sub-directory
    • Add problem spec to docs/
  • Development Environment
    • Create virtual environment
    • Install pytest
    • Install mdformat
    • Install and setup flake8
    • Install and setup black
    • Install and setup pre-commit hooks

Update repo structure

Summary

Update repo structure to incorporate best practices from python boilerplate template project

To Do

  • Convert to a poetry project
  • Add code quality checks
    • tox
    • black
    • pylint
    • flake8
    • safety
    • liccheck
    • GitHub Actions
  • Add collaboration docs and tools
    • adrs
    • LICENSE
    • CODE_OF_CONDUCT
    • CONTRIBUTING.md

Definition of Done

  • New issues can be created from a template
  • A contributor can install the project using poetry install
  • Code quality checks are automatically run on pushes and pull requests
  • Contributors can understand how to contribute to the project

TASK: Refactor algorithms

Summary

Refactor algorithms to make them a bit more modularized and add Position and Candidate classes to reduce the amount of data stored directly on the Matcher and Scheduler class

To Do

  • #9
  • #10
    • Attributes
      • self.candidates List of candidates applying for the cohort
      • self.positions List of positions applying to be filled as part of the cohort
      • self.matcher Instance of the Matcher class used to assign interviews and placements
      • self.scheduler Instance of the Scheduler class used to schedule
    • Methods
      • self.assign_interviews() Assigns candidates to interviews with positions based on mutual rankings
      • self.schedule_interviews() Schedules the interviews assigned to time slots based on mutual availability
      • self.assign_placements() Assigns candidates to placements with positions based on mutual rankings
      • self.list_interviews() Returns the set of assigned interviews in the format specified
      • self.list_placements() Returns the set of assigned placements in one of a number of format
  • #11
    • Attributes
    • Methods
  • #12
    • Attributes
    • Methods
  • #13
  • #14

Definition of Done

  • {Description of expected behavior once changes are made}
  • {Description of expected behavior once changes are made}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.