Skip to main content

Timetabling Compliance Checker


RULE TYPE STATUS Room clash Hard ✕ Flag Module clash Soft ⚠ Review Day pattern Soft ⚠ Review Timetabling Compliance Checker CELCAT ingestion · 12+ rules · Exception reporting · Roll-forward diffing ● Live POC — Actively testing

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.

Next.js 14
React
TypeScript
Tailwind CSS
Vercel
GitHub
csv-parse
xlsx

How It Works

1

Upload configuration (optional)

Week mapping, rules config, tutor/module profiles, exceptions, and travel times — all as CSV files.

2

Upload reference data (optional)

Module and room workbooks from CELCAT add cohort phase, campus site, and room capacity for enriched context.

3

Upload timetable events

A CELCAT export in any supported format (CSV or XLSX).

4

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.

5

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.