Timetabling Compliance Checker
| Status | Live POC — Active testing |
| Developer | Adrian Cowell — Innovation Lead, Faculty of Medicine |
| Timetabling team |
Michele Foot (Timetabling Team Lead) · James Moss (Principal Teaching Fellow) · Allyson Chan (Timetabling Officer, Phase 2 & 3) · Sarah S Johnson (Timetabling Officer, Phase 1) · Ludmilla Holmes (Timetabling Officer, Postgraduate) · Robson R Dos Santos (Timetabling & Room Booking Manager) |
| Tech stack | Next.js 14 · React · TypeScript · Tailwind CSS · Vercel · GitHub |
| Data source | CELCAT (flat CSV, Power BI extract, CT_EVENT hierarchical format) |
| Campuses | Charing Cross · Hammersmith · South Kensington · White City · St Mary’s |
The Problem
The Faculty of Medicine’s timetabling team manages thousands of teaching events across five London campuses using CELCAT. Checking that bookings comply with institutional scheduling policies — lunch breaks, maximum consecutive teaching hours, room double-bookings, staff travel time, teaching day boundaries — was a manual, time-consuming process with no centralised way to flag violations or track decisions.
As scheduling complexity grows across the MBBS programme and allied courses, the team needed a tool that could apply and audit these rules automatically, producing actionable findings without requiring developer involvement to configure or adjust.
What It Does
The Timetabling Compliance Checker ingests CELCAT exports, applies a configurable rule engine, and produces downloadable exception reports — enabling the timetabling team to identify, triage, and resolve scheduling issues at scale.
Three import formats
Flat CSV, Power BI extract, and hierarchical CT_EVENT — with automatic schema detection.
12+ configurable rules
Covering room clashes, staff overlaps, travel buffers, duration limits, lunch breaks, consecutive teaching, and more.
Hard & soft findings
Hard findings (e.g. room double-booking) require action. Soft findings carry confidence scores and resolution recommendations.
Roll-forward comparison
Compares before/after timetable versions to surface new sessions, missing sessions, drift, and new violations introduced between planning cycles.
Week-to-date expansion
Converts CELCAT week-range data into concrete calendar dates using an uploaded academic week mapping, enabling accurate overlap detection.
Team-managed configuration
All rules, profiles, exceptions, travel times, and week mappings are managed via CSV uploads by the team — no developer involvement needed.
Rules Implemented
| Rule | Type | Description |
|---|---|---|
| Room double-booking | Hard | Two events in the same room at the same time, with campus and cohort context |
| Staff overlap | Hard | Staff member scheduled for overlapping sessions |
| Travel buffer | Hard | Insufficient travel time between consecutive sessions at different campuses |
| Duration bounds | Hard | Session duration outside allowed range (default 30 min – 3 hrs) |
| Time window | Hard | Sessions outside the permitted teaching day (default 09:00–18:00) |
| Lunch break | Hard | Less than 60 minutes free between 12:00–14:00 |
| Max consecutive teaching | Hard | More than 4 hours of consecutive teaching without a break |
| Cohort overlap | Hard | Same student group booked for two events simultaneously |
| Same-module clash | Soft | Overlapping bookings for the same module (hold-and-allocate pattern) — recommendation: ignore |
| Event sequence order | Soft | Numbered/parted events out of chronological order |
| Recurring day pattern | Soft | Recurring event usually on one weekday but an instance falls on a different day |
| Tutor / module preferences | Soft | Teaching outside a tutor’s preferred time window or a module’s preferred campus |
Technology
Built as a serverless Next.js application — no database dependency. All processing is in-memory per run, with configuration and reference data uploaded as CSV/XLSX files. This keeps the tool lightweight and deployable without infrastructure overhead.
React
TypeScript
Tailwind CSS
Vercel
GitHub
csv-parse
xlsx
How It Works
Upload configuration (optional)
Week mapping, rules config, tutor/module profiles, exceptions, and travel times — all as CSV files.
Upload reference data (optional)
Module and room workbooks from CELCAT add cohort phase, campus site, and room capacity for enriched context.
Upload timetable events
A CELCAT export in any supported format (CSV or XLSX).
View results
The app parses data, expands week-based events to calendar dates, runs all enabled rules, and displays findings with severity, confidence, and recommended next action.
Export
Download an exception report CSV for offline review, or a fix pack CSV with corrected data for use alongside CELCAT.
Current Status
Live proof-of-concept with the timetabling team actively testing against real 2027/28 CELCAT data. The team has validated rule accuracy across Charing Cross and Hammersmith campuses, confirming accurate detection of room clashes, lunch break violations, duration issues, and more. Next steps include automated fix suggestions, additional exception categories, and expanded campus coverage.