interview-matcher

1.0.2 • Public • Published

Interview Matcher

License: MIT npm version Build Status Coverage Status Mutation testing badge

Interview slots matcher for candidates and interviewers, built using NodeJS.

Features

  • Match interviewers and candidates in interview slots, according to both parties' availability
  • Integration with Doodle polls

Installing

Using npm:

$ npm i -g interview-matcher

Usage

$ 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 options
  • interviewers: interviewers options
  • output_file: output file name
  • interviewers_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.

Example

$ interview-matcher --json candidates.json interviewers.json output.json 3
$ interview-matcher --doodle vd5nppeyrzpxvy2w vbzps7w629a679k3 output.json 2

JSON input files format

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"
        ]
    }
]

JSON output files format

The JSON output files follow the following format:

Given JSON input

{
    "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
    }
}

Given Doodle input

{
    "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
    }
}

Tests

To run the test suite, install the project's dependencies and run npm test:

$ npm install
$ npm test

To run mutation tests:

$ npm run test:mutation

License

MIT

Package Sidebar

Install

npm i interview-matcher

Weekly Downloads

0

Version

1.0.2

License

ISC

Unpacked Size

518 kB

Total Files

63

Last publish

Collaborators

  • xruialves