| CARVIEW |
scheduling: An interview scheduler using constraint satisfaction and Google Sheets
Primarily a command-line tool for specifying people, their availabilities, and desired meetings, finding the best solution to this scheduling task, and a few other niceties, all directly in a Google Sheets spreadsheet so it's easy to edit collaboratively and view the results.
[Skip to Readme]
Modules
- Control
- Control.Scheduling
- Control.Scheduling.Event
- Control.Scheduling.Location
- Control.Scheduling.Mail
- Control.Scheduling.Person
- Control.Scheduling.Preference
- Control.Scheduling.Sheets
- Control.Scheduling.Solve
- Control.Scheduling.State
- Control.Scheduling.TimeSpan
- Control.Scheduling
Downloads
- scheduling-0.1.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0 |
|---|---|
| Dependencies | aeson (>=1.2.4.0), base (>=4.7 && <5), bimap (>=0.3.3), bytestring (>=0.10.10.1), containers (>=0.5.10.2), gogol (==0.5.0), gogol-sheets (==0.5.0), lens (>=4.16), mime-mail (>=0.5.0), mtl (==2.2.2), optparse-generic (>=1.3.0), random (>=1.1), sbv (>=8.3), scheduling, servant, text (>=1.2.2), time (>=1.9.2) [details] |
| License | BSD-3-Clause |
| Copyright | 2021 Tom Lippincott |
| Author | Tom Lippincott |
| Maintainer | tom.lippincott@jhu.edu |
| Uploaded | by TomLippincott at 2022-01-12T01:05:38Z |
| Category | Cloud, Time |
| Home page | https://github.com/TomLippincott/scheduling#readme |
| Distributions | |
| Executables | scheduler |
| Downloads | 150 total (4 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs not available [build log] All reported builds failed as of 2022-01-12 [all 2 reports] |
Readme for scheduling-0.1.0.0
[back to package description]scheduling - interview management utility for CLSP recruitment weekend
This code base produces a command-line utility for managing the interview schedules of the CLSP recruitment weekend. This involves manipulating Google spreadsheets, and solving constraint-satisfaction problems based on faculty preferences, availability, and other considerations. Under the hood it employs the Microsoft Z3 theorem prover to find optimal solutions to problems formulated via the SBV library. The interactions with Google APIs are accomplished with the gogol-* libraries and heavy use of lenses.
Building and running the repository
After using ghcup to install and set a recent version (e.g. 9.X) of
GHC and Cabal, the code can be built with:
$ cabal build
and the tool invoked with:
$ cabal exec -- scheduler OPTIONS
Preparing a spreadsheet and using the scheduler
The spreadsheet should allow "anyone with the link" to edit, and the
key (the long random path component in the URL) gets passed to the
scheduler tool with the --access switch. The tool has two primary
modes, init and solve, that each rely on information being in
particular tabs, and create (or overwrite) a handful of others: outside
of these, it should not modify anything (though bugs are possible, and
interactions with e.g. formulae have not been considered).
The basic workflow is to manually create a "Prospects" and "Interviewers" tab, each with "First", "Last", and "Email" columns, and interviewers with a "Zoom" column (in any order, and additional columns will be ignored), and invoke the tool with:
cabal exec -- scheduler init --access KEY
This generates the "Prospect Availability", "Interviewer Availability", and
"Interviewer Preferences" tabs, which can then be filled in by the relevant
parties. Note that running the command with the --force switch will
overwrite the tabs, so it may be wise to edit-protect them once information
has been entered. Then, invoke the tool with:
cabal exec -- scheduler solve --access KEY
The tool will attempt to satisfy the interviewer preferences using the availability of both groups, and write it's best solution to the tabs "Interviewer Schedule" and "Prospect Schedule".