SchedAI Input Specs
SchedAI Academic Scheduling Input Specs
Use this guide to prepare CSV files for Academic Scheduling. The upload requirements depend on whether you are building a class timetable or an exam timetable.
Overview
Use this guide to prepare valid input files for this workspace. Review the required files, exact column names, example rows, and common formatting rules before uploading.
Required files
7
Optional files
4
Spec sections
2
Applies to class timetable
Class Timetable Mode
Use these files when the workspace is set to Class timetable. Timeslots and rooms are shared foundations, then professors and courses define the teaching schedule.
Required file
timeslots.csv
Shared timetable slot roster used by classes or exams.
Requirements
Required columns
slot_iddaystartend
Optional columns
Reference requirements
- slot_id values must match references in professors.csv, courses.csv, exams.csv, room unavailable_slots, and meeting pattern rows.
Value rules and examples
- slot_id values must stay unique.
- Every row needs a day, start, and end value.
- Use the same slot ids in professors.csv, courses.csv, exams.csv, room unavailable_slots, and meeting pattern rows.
Example CSV table
| slot_id | day | start | end |
|---|---|---|---|
| MON_09 | Mon | 09:00 | 10:00 |
| MON_10 | Mon | 10:00 | 11:00 |
Required file
rooms.csv
Room inventory with capacity plus optional fit and blackout fields.
Requirements
Required columns
room_idcapacityfeatures
Optional columns
buildingroom_typeresourcesunavailable_slots
Reference requirements
- unavailable_slots must reference slot IDs from timeslots.csv.
Format limitations
- List fields such as features, resources, and unavailable_slots use semicolon separators.
Value rules and examples
- room_id values must stay unique.
- capacity must be at least 1.
- Use unavailable_slots only with slot ids listed in timeslots.csv.
- Every room_id referenced by relationships or assignments must match this file.
Example CSV table
| room_id | capacity | features | building | room_type | resources | unavailable_slots |
|---|---|---|---|---|---|---|
| SCI_101 | 50 | proj;whiteboard | Science | lecture | projector | |
| SCI_202 | 28 | proj;lab | Science | lab | wet_lab | MON_10 |
Required file
professors.csv
Professor availability and teaching-load limits for class timetables.
Requirements
Required columns
professor_idavailable_slots
Optional columns
max_load_slotspreferences
Reference requirements
- available_slots must reference timeslots.csv; professor_id values are referenced by courses.csv.
Format limitations
- available_slots uses semicolon separators.
Value rules and examples
- professor_id values must stay unique.
- available_slots should use slot ids from timeslots.csv, separated with semicolons.
- professor_id values referenced from courses.csv must match this file.
- max_load_slots, when provided, must be at least 1.
Example CSV table
| professor_id | available_slots | max_load_slots | preferences |
|---|---|---|---|
| P_CHEN | MON_09;MON_10;WED_09 | 2 | Mon |
| P_ALVAREZ | MON_10;WED_09;WED_10 | 2 | Wed |
Required file
courses.csv
Course sections, enrollment, assigned professor, and room-fit needs for class timetables.
Requirements
Required columns
course_idenrollmentprofessor_idmeeting_slots_requiredallowed_slots
Optional columns
required_featuresrequired_room_typerequired_resourcesallowed_buildingsstudent_groupssection_idoffering_idinstructional_unit_idmeeting_pattern
Reference requirements
- professor_id must match professors.csv; allowed_slots must match timeslots.csv; course_id is referenced by relationships, meeting patterns, and section groups.
Format limitations
- List fields such as allowed_slots, required_features, required_resources, allowed_buildings, and student_groups use semicolon separators.
Value rules and examples
- professor_id must match a row in professors.csv.
- meeting_slots_required must be at least 1.
- allowed_slots should reference slot ids from timeslots.csv.
- course_id values referenced by relationships, meeting patterns, and section groups must match this file.
Example CSV table
| course_id | enrollment | professor_id | meeting_slots_required | allowed_slots | required_features | required_room_type | required_resources | allowed_buildings | student_groups | section_id | offering_id | instructional_unit_id | meeting_pattern |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CHEM101_LEC_A | 42 | P_CHEN | 1 | MON_09;WED_09 | proj | lecture | projector | Science | G1 | A | CHEM101 | CHEM101_A | |
| CHEM101_LAB_A | 24 | P_ALVAREZ | 1 | MON_10;WED_10 | proj;lab | lab | wet_lab | Science | G1 | A | CHEM101 | CHEM101_A |
Optional file
meeting_patterns.csv
Optional reusable meeting patterns for class schedules.
Requirements
Required columns
pattern_iddays
Optional columns
same_start
Reference requirements
- pattern_id values are referenced by courses.csv meeting_pattern.
Format limitations
- days uses semicolon-separated day labels.
Value rules and examples
- pattern_id values must stay unique.
- days should list one or more day labels separated with semicolons.
- Reference these pattern ids from courses.csv when needed.
Example CSV table
| pattern_id | days | same_start |
|---|---|---|
| MWF | Mon;Wed;Fri | true |
| TTH | Tue;Thu | true |
Optional file
course_relationships.csv
Optional no-overlap, ordering, or day-separation rules between classes.
Requirements
Required columns
relation_type
Optional columns
relationship_idcourse_idsinstructional_unit_idbefore_course_idafter_course_idhardpreference_weight
Reference requirements
- course_ids, before_course_id, and after_course_id must match courses.csv when provided.
Format limitations
- course_ids uses semicolon separators.
Value rules and examples
- relation_type must be one of no_overlap, different_days, or ordered.
- ordered rows need before_course_id and after_course_id.
- Other relationship rows should point to course ids already listed in courses.csv.
Example CSV table
| relationship_id | relation_type | course_ids | instructional_unit_id | before_course_id | after_course_id | hard | preference_weight |
|---|---|---|---|---|---|---|---|
| CHEM101_LINK | no_overlap | CHEM101_A | true | ||||
| CHEM101_ORDER | ordered | CHEM101_A | CHEM101_LEC_A | CHEM101_LAB_A | false | 6 |
Optional file
section_groups.csv
Optional section-group rules for related class offerings.
Requirements
Required columns
course_ids
Optional columns
group_idoffering_idno_overlap
Reference requirements
- course_ids must match courses.csv.
Format limitations
- course_ids uses semicolon separators.
Value rules and examples
- course_ids should list one or more course ids separated with semicolons.
- Every referenced course id must already exist in courses.csv.
- Use no_overlap when grouped sections should not run at the same time.
Example CSV table
| group_id | offering_id | course_ids | no_overlap |
|---|---|---|---|
| BIO201_LABS | BIO201 | BIO201_LAB_A;BIO201_LAB_B | true |
Common mistakes
- Using slot ids in professors.csv or courses.csv that are not listed in timeslots.csv.
- Referencing a professor_id in courses.csv that does not exist in professors.csv.
- Adding relationship or section-group rows that point to missing course ids.
Quick rules
- Load timeslots.csv and rooms.csv before adding class-specific structure.
- professor_id values in courses.csv must match professors.csv.
- Use semicolons in list fields such as allowed_slots, features, resources, buildings, and student groups.
Navigate
Keep the right guide close by
Pair this upload guide with the product page for workflow context or the resources hub for related public material.
Applies to exam timetable
Exam Timetable Mode
Use these files when the workspace is set to Exam timetable. Timeslots and rooms still define the schedule frame, then exams and optional conflict pairs add exam-specific constraints.
Required file
timeslots.csv
Shared timetable slot roster used by classes or exams.
Requirements
Required columns
slot_iddaystartend
Optional columns
Reference requirements
- slot_id values must match references in professors.csv, courses.csv, exams.csv, room unavailable_slots, and meeting pattern rows.
Value rules and examples
- slot_id values must stay unique.
- Every row needs a day, start, and end value.
- Use the same slot ids in professors.csv, courses.csv, exams.csv, room unavailable_slots, and meeting pattern rows.
Example CSV table
| slot_id | day | start | end |
|---|---|---|---|
| MON_09 | Mon | 09:00 | 10:00 |
| MON_10 | Mon | 10:00 | 11:00 |
Required file
rooms.csv
Room inventory with capacity plus optional fit and blackout fields.
Requirements
Required columns
room_idcapacityfeatures
Optional columns
buildingroom_typeresourcesunavailable_slots
Reference requirements
- unavailable_slots must reference slot IDs from timeslots.csv.
Format limitations
- List fields such as features, resources, and unavailable_slots use semicolon separators.
Value rules and examples
- room_id values must stay unique.
- capacity must be at least 1.
- Use unavailable_slots only with slot ids listed in timeslots.csv.
- Every room_id referenced by relationships or assignments must match this file.
Example CSV table
| room_id | capacity | features | building | room_type | resources | unavailable_slots |
|---|---|---|---|---|---|---|
| SCI_101 | 50 | proj;whiteboard | Science | lecture | projector | |
| SCI_202 | 28 | proj;lab | Science | lab | wet_lab | MON_10 |
Required file
exams.csv
Exam roster with enrollment, slot options, and optional separation rules.
Requirements
Required columns
exam_idenrollmentduration_slotsallowed_slots
Optional columns
required_featuresstudent_groupsseparation_from
Reference requirements
- allowed_slots must match timeslots.csv; separation_from exam ids must match exams.csv.
Format limitations
- allowed_slots, required_features, and student_groups use semicolon separators.
Value rules and examples
- duration_slots must be at least 1.
- allowed_slots should reference slot ids from timeslots.csv.
- Use separation_from like EXAM_B:1 to require spacing between exams.
Example CSV table
| exam_id | enrollment | duration_slots | allowed_slots | required_features | student_groups | separation_from |
|---|---|---|---|---|---|---|
| MATH101_EXAM | 110 | 1 | DAY1_AM;DAY1_PM;DAY2_AM | std | G1;G2 | |
| PHYS110_EXAM | 80 | 1 | DAY1_PM;DAY2_AM;DAY2_PM | std | G1 | CHEM120_EXAM:1 |
Optional file
conflict_pairs.csv
Optional explicit exam pairs that should not be scheduled together.
Requirements
Required columns
ab
Optional columns
Reference requirements
- a and b must match exam_id values in exams.csv.
Value rules and examples
- Each row needs both exam ids.
- Both exam ids must exist in exams.csv.
- Use this file only for explicit conflicts that are not already covered by student_groups or separation rules.
Example CSV table
| a | b |
|---|---|
| MATH101_EXAM | PHYS110_EXAM |
Common mistakes
- Using slot ids in exams.csv that are not listed in timeslots.csv.
- Entering duration_slots values below 1.
- Adding conflict pairs for exam ids that are missing from exams.csv.
Quick rules
- Load timeslots.csv and rooms.csv before importing exams.csv.
- Use semicolons in allowed_slots, required_features, and student_groups when a row needs multiple values.
- conflict_pairs.csv is optional, but both exam ids must already exist in exams.csv.
Navigate
Keep the right guide close by
Pair this upload guide with the product page for workflow context or the resources hub for related public material.
Navigate
Keep the right input guide close
Return to the input-spec library for another upload contract, or go back to the resource hub for quickstarts, how-to guides, and use cases.
