Hi gophers,
I’ve launched igiveyouarendezvous, a command-line software and Go library that plans interview days. Every candidate should meet a number of recruiters, and the software builds the timetable.
What it handles:
- a recruiter sees one candidate at a time; recruiters of the identical “joint group” might interview collectively;
- all of a candidate’s interviews occur the identical day, again to again (or with a bounded wait), by no means throughout the lunch break;
- availabilities per individual, each day or by date, and an interview size per recruiter;
- strict priorities, plus an automated urgency for candidates with few days left.
The aims are lexicographic, with no weights to tune: candidates seen first, then conferences, then sparing recruiters’ days and half-days, then fewer interviews and fewer recruiter time.
Below the hood:
- a grasping begin, then a ruin-and-recreate native search with late acceptance hill climbing, one search per core;
- Ctrl+C returns the very best schedule up to now, and a run can resume from a saved plan, the place the candidates already convened are “fastened”: stored as they’re, with an alert if one now not holds;
- on 60 to 100 candidates and 10 to 12 recruiters, it reaches the confirmed optimum (checked with HiGHS) on the variety of candidates in each benchmark case;
- the exams evaluate it with a MILP mannequin (go-milp) and with an exhaustive enumeration on 300 small random issues.
The enter is a single YAML or JSON file, with a JSON Schema for editor validation, and -rest writes the subsequent day’s file whereas preserving your feedback. Pure Go, no cgo, 0BSD or WTFPL.
Suggestions welcome, on the search above all. I measured 2-opt-style swaps and ALNS towards plain damage & recreate and obtained no achieve, which shocked me: concepts are welcome. Feedback on the API are welcome too.

