An algorithm for assigning and scheduling interviews based on mutual interest and availability
The goal of this project is to simplify the following steps of a placement process in which a fixed pool of candidates are applying for a fixed pool of roles:
- Matching candidates and hiring managers for initial interviews based on mutual interest
- Scheduling the assigned interviews based on mutual availability
- Finalizing matches between candidates and roles based on an updated set of preferences submitted after the interviews
The resulting tools and scripts work best for placement processes in which candidates possess a similar set of skills and interests, and the roles comprise a similar set of functions and responsibilities, for example fellowship or internship programs.
- Python version 3.6 to 3.8
In order to check which version of python you have installed, run the following command in your command line (for Mac/Linux)
NOTE: in all of the code blocks below, lines preceded with
$
indicate commands you should enter in your command line (excluding the$
itself), while lines preceded with>
indicate the expected output from the previous command.
$ python --version
> Python 3.7.7
If you don't have Python version 3.6 or later installed on your computer, consider using pyenv to install and manage multiple versions of Python concurrently.
- Fork the repo -- for more information about forking, reference this guide
- Clone your forked repo on your local machine
git clone https://github.com/YOUR_USERNAME/interview-scheduling.git
- Create a new virtual environment in your project directory
python -m venv env
- Activate your virtual environment
source env/bin/activate
- Install necessary python packages
pip install -r requirements.txt
- Install pre-commit to enable pre-commit hooks (This step ensures that your code is formatted according the Black standard and is compliant with PEP8.)
$ pre-commit install > pre-commit installed at .git/hooks/pre-commit
- Run the tests and make sure everything passes
$ pytest > =============== XX passed in XXs ===============
Additional details on usage are in progress.
Additional details on contributing are in progress