Extracts UWI St. Augustine's CELCAT timetable PDFs - one per course, room and lecturer - into a PostgreSQL warehouse, and serves a course, room and lecturer explorer, a public JSON API, and a timetable builder that fills a week in from course codes and lets a student drag any class to another sitting. Live through seven republished timetables.
How it knows: Every session records which PDFs described it - 93% of the current publication is confirmed by two or more independently published timetables - and a corpus validator cross-references every extracted room and course code against UWI's own registry before a load, exiting non-zero rather than commenting.
Nicholas Smith - all work