Interview slots matcher for candidates and interviewers, built using NodeJS.
- Match interviewers and candidates in interview slots, according to both parties' availability
- Integration with Doodle polls
Using npm:
$ npm i -g interview-matcher
$ interview-matcher <input_type> <candidates> <interviewers> <output_file> [<interviewers_per_slot>]
input_type
: candidate and interviewer options input data type--json
for JSON files (format described below)--doodle
for Doodle poll IDs
candidates
: candidates optionsinterviewers
: interviewers optionsoutput_file
: output file nameinterviewers_per_slot
(defaults to 1): required number of interviewers per slot
Note that for Doodle poll usage, both polls must feature the same option slots schema.
$ interview-matcher --json candidates.json interviewers.json output.json 3
$ interview-matcher --doodle vd5nppeyrzpxvy2w vbzps7w629a679k3 output.json 2
The JSON input files should follow the following format:
[
{
"name": "Name 1", // candidate/interviewer name (must be unique)
"slots": [
"slot 1", // list of all the slots the candidate/interviewer
"slot 2", // has availability to attend
"slot N"
]
},
{
"name": "Name 2",
"slots": [
"slot 1",
"slot 2",
"slot N"
]
},
{
"name": "Name N",
"slots": [
"slot 1",
"slot 2",
"slot N"
]
}
]
The JSON output files follow the following format:
{
"matches": [
{
"slot": "slot 1",
"interviewers": [
"Interviewer 1",
"Interviewer 2",
"Interviewer N"
],
"candidate": "Candidate 1"
},
{
"slot": "slot 2",
"interviewers": [
"Interviewer 1",
"Interviewer 2",
"Interviewer N"
],
"candidate": "Candidate B"
},
{
"slot": "slot N",
"interviewers": [
"Interviewer 1",
"Interviewer 2",
"Interviewer N"
],
"candidate": "Candidate N"
}
],
"interviews_per_interviewer": {
"Interviewer 1": X,
"Interviewer 2": Y,
"Interviewer 3": Z
}
}
{
"matches": [
{
"slot": {
"start": "UTC Start Date 1",
"end": "UTC Start End 1"
},
"candidate": {
"name": "Candidate 1",
"id": "Candidate ID 1"
},
"interviewers": [
{
"name": "Interviewer 1",
"id": "Interview ID 1"
},
{
"name": "Interviewer N",
"id": "Interview ID N"
}
]
},
{
"slot": {
"start": "UTC Start Date 2",
"end": "UTC Start End 2"
},
"candidate": {
"name": "Candidate 2",
"id": "Candidate ID 2"
},
"interviewers": [
{
"name": "Interviewer 1",
"id": "Interview ID 1"
},
{
"name": "Interviewer N",
"id": "Interview ID N"
}
]
},
{
"slot": {
"start": "UTC Start Date N",
"end": "UTC Start End N"
},
"candidate": {
"name": "Candidate N",
"id": "Candidate ID N"
},
"interviewers": [
{
"name": "Interviewer 1",
"id": "Interview ID 1"
},
{
"name": "Interviewer N",
"id": "Interview ID N"
}
]
}
],
"interviews_per_interviewer": {
"Interviewer 1": X,
"Interviewer 2": Y,
"Interviewer 3": Z
}
}
To run the test suite, install the project's dependencies and run npm test
:
$ npm install
$ npm test