Story 5.7: Bulk Auto-Assignment Feature - Slot Assignment
Story: Epic 5, Story 5.7 - Slot Assignment & Progressive Publishing
Purpose
This wireframe documents the bulk auto-assignment feature that allows organizers to automatically assign multiple unassigned sessions at once using an intelligent matching algorithm. The feature reduces manual work while ensuring high-quality speaker-slot matches.
Context: Triggered from the dedicated slot assignment page when organizer has multiple unassigned sessions.
Entry Points
Entry Point 1: Slot Assignment Page - Quick Actions Panel
Location: Right sidebar on slot assignment page
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Slot Assignment - BATbern 2025 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [Speaker Pool] [Session Timeline Grid] [Quick Actions] β
β β
β ββββ Quick Actions βββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Session Progress: 3 of 8 assigned (37%) β β
β β πΆ 5 sessions awaiting timing β β
β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β [Auto-Assign All] β β β
β β β β β β
β β β Let the system automatically assign remaining β β β
β β β sessions based on speaker preferences and β β β
β β β availability. β β β
β β β β β β
β β β β’ Analyzes 5 unassigned sessions β β β
β β β β’ Matches with 5 available speakers β β β
β β β β’ Optimizes for preference scores β β β
β β β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β [Clear All Assignments] β β
β β β β
β β Export Options: β β
β β [Download Schedule PDF] β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Action: Click [Auto-Assign All]
Result: Opens Algorithm Selection Modal (Step 1)
Button States:
- Enabled: When β₯2 unassigned sessions AND β₯2 available speakers
- Disabled: When <2 unassigned sessions OR <2 available speakers
- Tooltip (Disabled): βAuto-assignment requires at least 2 unassigned sessions and 2 available speakersβ
Entry Point 2: Slot Assignment Page - Empty State Banner
Trigger: When organizer first lands on slot assignment page with 0 assignments
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Slot Assignment - BATbern 2025 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββ Getting Started ββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β π― No sessions assigned yet ββ
β β ββ
β β You have 8 accepted speakers awaiting session timing assignment. ββ
β β ββ
β β Choose your approach: ββ
β β ββ
β β βββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ ββ
β β β [Let AI Auto-Assign] β β [Assign Manually] β ββ
β β β β β β ββ
β β β Automatically assign all β β Drag and drop speakers to β ββ
β β β sessions using intelligentβ β session slots for full controlβ ββ
β β β matching algorithm β β over timing assignments β ββ
β β β β β β ββ
β β β β‘ Fast (30 seconds) β β π¨ Flexible (custom control) β ββ
β β β π High match scores β β ποΈ Visual preference feedbackβ ββ
β β β β β β ββ
β β βββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Tip: You can also use a hybrid approach - auto-assign most ββ
β β sessions, then manually adjust any that need special handlingββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Action: Click [Let AI Auto-Assign]
Result: Opens Algorithm Selection Modal (Step 1)
Step 1: Algorithm Selection Modal
Trigger: User clicks [Auto-Assign All] button
Purpose: Allow organizer to choose optimization strategy and configure constraints
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ Auto-Assign Session Timings [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Configure how the system should assign sessions to time slots. β
β β
β ββββ Optimization Strategy ββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β Choose what to prioritize when assigning sessions: ββ
β β ββ
β β β Optimize for Speaker Preferences ββ
β β Prioritize matching speakers to their preferred time slots ββ
β β ββ
β β Best for: Maximizing speaker satisfaction and availability ββ
β β Algorithm: Time preference matching (weights: Time 40%, Room 20%)ββ
β β Expected avg match score: ~85% ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β β Optimize for Expertise Match ββ
β β Prioritize matching speaker expertise to session topics ββ
β β ββ
β β Best for: Content quality and topic relevance ββ
β β Algorithm: Topic similarity scoring (NLP-based) ββ
β β Expected avg match score: ~78% ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β β Optimize for Balanced Schedule (Recommended) ββ
β β Balance speaker preferences, expertise, and time distribution ββ
β β ββ
β β Best for: Overall event quality and attendee experience ββ
β β Algorithm: Multi-criteria optimization (Time 30%, Expertise 25%,ββ
β β Room 15%, Distribution 30%) ββ
β β Expected avg match score: ~82% ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ββββ Advanced Options βββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β [Show Advanced Options βΌ] ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ββββ Sessions to Assign βββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β Unassigned sessions: 5 ββ
β β Available speakers: 5 ββ
β β ββ
β β β Workshop 1: Advanced Cloud Architecture (Dr. Sarah Miller) ββ
β β β Panel Discussion: Industry Trends (Multiple speakers) ββ
β β β Afternoon Workshop: Practical DevOps (Dr. Maria Lopez) ββ
β β β Evening Session: Q&A and Networking (Robert Williams) ββ
β β β Lightning Talks: Community Showcase (Multiple speakers) ββ
β β ββ
β β [Deselect All] [Select All] ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Estimated processing time: ~15 seconds β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Preview Assignments] [Cancel] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Advanced Options Expanded:
β ββββ Advanced Options βββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β [Hide Advanced Options β²] ββ
β β ββ
β β Constraints: ββ
β β β Respect hard constraints (avoid times, speaker conflicts) ββ
β β Never violate speaker-specified avoid times ββ
β β ββ
β β β Balance session distribution across days ββ
β β Avoid clustering all sessions on one day ββ
β β ββ
β β β Prioritize keynotes in prime time slots ββ
β β Assign keynote sessions to morning/early afternoon slots ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Room Preferences: ββ
β β β Use all available rooms ββ
β β β Prefer specific rooms for certain session types ββ
β β β’ Keynotes β Main Hall ββ
β β β’ Workshops β Conference Rooms A/B ββ
β β β’ Panels β Main Hall or Conference Room A ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Conflict Resolution: ββ
β β β Stop and ask (recommended - show conflicts for review) ββ
β β β Auto-resolve (find alternatives, may reduce match scores) ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Validation:
- At least 1 session must be selected
- Selected optimization strategy required
- If βRespect hard constraintsβ unchecked β warning confirmation
Button States:
- [Preview Assignments]: Primary CTA, enabled when β₯1 session selected
- [Cancel]: Secondary, always enabled
Step 2: Processing Indicator
Display: After clicking [Preview Assignments], modal transitions to processing state
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ Auto-Assign Session Timings [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β³ Analyzing assignments... β β
β β β β
β β ββββββββββββββββββββββββββββββββββ 78% β β
β β β β
β β Status: Evaluating speaker preferences for Workshop 2 β β
β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β Analyzed 5 sessions β β β
β β β β Calculated preference scores for 5 speakers β β β
β β β β Evaluated 120 possible slot combinations β β β
β β β β³ Optimizing assignments (Hungarian algorithm) β β β
β β β β³ Validating for conflicts... β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Estimated time remaining: 5 seconds β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Cancel Processing] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Processing Steps:
- β Analyzed sessions (2s)
- β Calculated preference scores (3s)
- β Evaluated slot combinations (5s)
- β³ Optimizing assignments (3s)
- β³ Validating for conflicts (2s)
Total: ~15 seconds
Step 3: Preview Assignments
Display: After processing completes, modal transitions to preview state
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ Preview Auto-Assignments [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Algorithm: Balanced Schedule β
β Sessions Analyzed: 5 β
β Assignments Generated: 5 β
β Overall Match Score: 82% π’ (Good) β
β β
β ββββ Side-by-Side Comparison ββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β Current State β Proposed Assignments ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Workshop 1 β Workshop 1 ββ
β β Dr. Sarah Miller Dr. Sarah Miller ββ
β β No timing assigned June 10, 14:00-15:30 ββ
β β Conference Room B ββ
β β Match: 92% π’ (Strong) ββ
β β [View Details] ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Panel Discussion β Panel Discussion ββ
β β John Smith, Jane Doe, R. Chen John Smith, Jane Doe, R.C. ββ
β β No timing assigned June 10, 16:00-17:30 ββ
β β Main Hall ββ
β β Match: 78% π’ (Good) ββ
β β [View Details] ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Afternoon Workshop β Afternoon Workshop ββ
β β Dr. Maria Lopez Dr. Maria Lopez ββ
β β No timing assigned June 11, 13:00-14:30 ββ
β β Conference Room A ββ
β β Match: 85% π’ (Strong) ββ
β β [View Details] ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Evening Session β Evening Session ββ
β β Robert Williams Robert Williams ββ
β β No timing assigned June 11, 18:00-19:30 ββ
β β Conference Room B ββ
β β Match: 65% π‘ (Acceptable) ββ
β β β οΈ Speaker prefers afternoon ββ
β β [View Details] [Adjust] ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ
β β ββ
β β Lightning Talks β Lightning Talks ββ
β β Multiple speakers Multiple speakers ββ
β β No timing assigned June 12, 10:00-11:30 ββ
β β Main Hall ββ
β β Match: 88% π’ (Strong) ββ
β β [View Details] ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ββββ Detected Issues ββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β β οΈ 1 Warning: ββ
β β ββ
β β β’ Evening Session: Low match score (65%) ββ
β β Speaker Robert Williams prefers afternoon slots but was ββ
β β assigned to 18:00-19:30 (evening). This was the best available ββ
β β slot that avoids conflicts. ββ
β β ββ
β β Recommendation: Contact speaker to confirm availability OR ββ
β β manually adjust after accepting assignments. ββ
β β ββ
β β βΉοΈ 0 Conflicts detected - all assignments are valid ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ββββ Summary Statistics βββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β Total sessions assigned: 5 of 5 (100%) ββ
β β Average match score: 82% (Good overall quality) ββ
β β Strong matches (β₯80%): 4 sessions ββ
β β Acceptable matches (50-79%): 1 session ββ
β β Poor matches (<50%): 0 sessions ββ
β β ββ
β β Time distribution: ββ
β β β’ June 10: 2 sessions (Workshop 1, Panel) ββ
β β β’ June 11: 2 sessions (Afternoon Workshop, Evening Session) ββ
β β β’ June 12: 1 session (Lightning Talks) ββ
β β ββ
β β Room utilization: ββ
β β β’ Main Hall: 2 sessions ββ
β β β’ Conference Room A: 1 session ββ
β β β’ Conference Room B: 2 sessions ββ
β β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β What would you like to do? β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Accept All Assignments] [Customize Before Applying] [Cancel]β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[View Details] Button (expands inline):
β β Workshop 1 β Workshop 1 ββ
β β Dr. Sarah Miller Dr. Sarah Miller ββ
β β No timing assigned June 10, 14:00-15:30 ββ
β β Conference Room B ββ
β β Match: 92% π’ (Strong) ββ
β β [Hide Details β²] ββ
β β ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β Match Score Breakdown: βββ
β β β βββ
β β β β Time of Day: Afternoon (preferred) +30 points βββ
β β β β Avoid Times: No conflicts +40 points βββ
β β β β Room Features: Natural light, quiet room +12 points βββ
β β β β A/V Setup: Projector + mic available +10 points βββ
β β β βββ
β β β Total: 92/100 βββ
β β β βββ
β β β Why this slot was chosen: βββ
β β β β’ Matches speaker's preferred time (afternoon) βββ
β β β β’ No conflicts with avoid times (June 10, 08:00-09:00) βββ
β β β β’ Room B has natural light (speaker preference) βββ
β β β β’ All required A/V equipment available βββ
β β β β’ No room or speaker conflicts βββ
β β β βββ
β β β Alternative slots considered: βββ
β β β β’ June 10, 11:00-12:30, Room A (score: 85%) βββ
β β β β’ June 11, 14:00-15:30, Main Hall (score: 78%) βββ
β β β βββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
[Adjust] Button (for sessions with warnings):
Click [Adjust] β Opens mini slot picker:
β ββββ Adjust Evening Session βββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Current Assignment: β β
β β June 11, 18:00-19:30, Conference Room B β β
β β Match: 65% π‘ (Speaker prefers afternoon) β β
β β β β
β β Alternative Slots: β β
β β β β
β β β June 11, 14:00-15:30, Conference Room A β β
β β Match: 82% π’ (Better match, afternoon slot) β β
β β β οΈ Requires moving "Afternoon Workshop" to different slot β β
β β β β
β β β June 12, 13:00-14:30, Main Hall β β
β β Match: 75% π’ (Afternoon, different day) β β
β β β No conflicts, slot available β β
β β β β
β β β Keep current assignment (65% match) β β
β β β β
β β [Apply Change] [Cancel] β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
Step 4A: Accept All Assignments (Success Flow)
Trigger: User clicks [Accept All Assignments]
Confirmation:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Assignments Applied [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β π Success! All session timings have been assigned. β β
β β β β
β β ββββββββββββββββββββββββββββββββββββ 100% β β
β β β β
β β β 5 sessions assigned β β
β β β Average match score: 82% β β
β β β 0 conflicts detected β β
β β β All assignments saved β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββ Next Steps βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β What would you like to do now? β β
β β β β
β β β’ Review the full agenda timeline β β
β β β’ Manually adjust any sessions if needed β β
β β β’ Proceed to Publishing to make schedule public β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [View Timeline] [Make Adjustments] [Go to Publishing] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Auto-dismiss: Modal auto-closes after 3 seconds OR user clicks button
On Close: Returns to slot assignment page with updated timeline grid showing all assignments
Toast Notification (appears in slot assignment page):
β Auto-assignment complete: 5 sessions assigned with 82% avg match score
Step 4B: Customize Before Applying (Hybrid Flow)
Trigger: User clicks [Customize Before Applying]
Result: Modal closes, returns to slot assignment page with:
- Proposed assignments shown as semi-transparent overlays on timeline grid
- Speaker cards remain in pool (not moved yet)
- Accept/Reject buttons on each proposed assignment
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Slot Assignment - BATbern 2025 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β β οΈ Review Proposed Assignments (5 sessions) β
β Accept or reject each suggestion, or make manual adjustments. β
β [Accept All] [Reject All] β
β β
β ββββ Session Timeline βββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β June 10, 2025 β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Room A Room B Main Hall β β β
β β β 14:00 ββββββββββββββββ βββββββββββββββββββββ β β β
β β β β β β PROPOSED: β β β β
β β β β β β Workshop 1 β β β β
β β β 15:30 β β β Dr. S. Miller β β β β
β β β β β β Match: 92% π’ β β β β
β β β β β β [βAccept][βReject]β β β β
β β β ββββββββββββββββ βββββββββββββββββββββ β β β
β β β β β β
β β β 16:00 ββββββββββββββββ ββββββββββββββββ β β β
β β β β β β PROPOSED: β β β β
β β β β β β Panel β β β β
β β β 17:30 β β β Multiple β β β β
β β β β β β Match: 78% π’β β β β
β β β β β β [β][β] β β β β
β β β ββββββββββββββββ ββββββββββββββββ β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Actions:
1. Click [βAccept] on individual proposals β Assignment becomes permanent (overlay becomes solid)
2. Click [βReject] on individual proposals β Overlay disappears, speaker returns to pool
3. Drag speaker from pool to different slot β Overrides proposal
4. Click [Accept All] β All proposals become permanent
5. Click [Reject All] β All proposals removed, return to manual assignment
Proposed Assignment Visual:
- Border: Dashed 2px (indicates temporary/proposed state)
- Background: Semi-transparent with match score color (green π’ / yellow π‘)
- Badge: βPROPOSEDβ label in top-left corner
- Buttons: Inline [βAccept] and [βReject] buttons
After All Accepted/Rejected:
- Banner disappears
- Timeline grid shows final state
- Success toast: βAll proposed assignments reviewed. X accepted, Y rejected.β
Algorithm Details (Technical Documentation)
Balanced Schedule Algorithm
Objective: Maximize overall match quality while balancing multiple criteria
Input:
sessions[]: Array of unassigned sessions with speaker assignmentsspeakers[]: Array of speakers with preferencesslots[]: Array of available time slots with room assignments
Output:
assignments[]: Array of { sessionId, slotId, matchScore }
Algorithm: Hungarian Algorithm (Munkres Assignment Algorithm)
interface Assignment {
sessionId: string;
slotId: string;
matchScore: number;
}
function balancedScheduleAlgorithm(
sessions: Session[],
speakers: Speaker[],
slots: Slot[]
): Assignment[] {
// Step 1: Build cost matrix
const costMatrix: number[][] = [];
for (const session of sessions) {
const rowCosts: number[] = [];
for (const slot of slots) {
const speaker = speakers.find(s => s.id === session.speakerId);
const matchScore = calculateMatchScore(slot, speaker.preferences);
// Convert match score (0-100) to cost (higher match = lower cost)
const cost = 100 - matchScore;
rowCosts.push(cost);
}
costMatrix.push(rowCosts);
}
// Step 2: Apply Hungarian algorithm to minimize total cost
const hungarianResult = hungarianAlgorithm(costMatrix);
// Step 3: Convert result to assignments
const assignments: Assignment[] = [];
for (let i = 0; i < hungarianResult.length; i++) {
const sessionIndex = i;
const slotIndex = hungarianResult[i];
assignments.push({
sessionId: sessions[sessionIndex].id,
slotId: slots[slotIndex].id,
matchScore: 100 - costMatrix[sessionIndex][slotIndex]
});
}
// Step 4: Validate for hard conflicts
const validated = validateAssignments(assignments);
return validated;
}
Complexity: O(nΒ³) where n = number of sessions
Expected Runtime:
- 5 sessions: ~5 seconds
- 10 sessions: ~15 seconds
- 20 sessions: ~45 seconds
Speaker Preference Algorithm
Weights:
- Time preference: 40%
- Avoid times: 40%
- Room features: 10%
- A/V setup: 10%
(Prioritizes speaker availability and time preferences)
Expertise Match Algorithm
Uses: Natural Language Processing (NLP) for topic similarity
function expertiseMatchScore(sessionTopic: string, speakerExpertise: string[]): number {
// Use TF-IDF + cosine similarity
const sessionVector = tfidf(sessionTopic);
const expertiseVectors = speakerExpertise.map(e => tfidf(e));
const similarities = expertiseVectors.map(v => cosineSimilarity(sessionVector, v));
const maxSimilarity = Math.max(...similarities);
return maxSimilarity * 100; // Convert to 0-100 scale
}
Weights:
- Topic similarity: 60%
- Speaker credentials: 20%
- Past speaking experience: 20%
Error Handling
Insufficient Slots
Scenario: More sessions than available slots
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β οΈ Insufficient Available Slots [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Unable to auto-assign all sessions. β
β β
β Sessions to assign: 8 β
β Available slots: 5 β
β Shortfall: 3 slots β
β β
β Recommendations: β
β 1. Add more time slots to the event schedule β
β 2. Assign only some sessions (select which to prioritize) β
β 3. Increase session duration to fit more in fewer slots β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Add Time Slots] [Assign Partial] [Cancel] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Unavoidable Conflicts
Scenario: Algorithm cannot find conflict-free assignments
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β οΈ Conflicts Detected [X] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β The algorithm found optimal assignments but detected 2 conflicts: β
β β
β 1. Workshop 2: All available slots conflict with speaker's avoid timesβ
β Dr. Sarah Miller is unavailable June 10-11 (traveling) β
β β
β 2. Evening Session: No room available during preferred time range β
β All rooms occupied 18:00-20:00 β
β β
β What would you like to do? β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Assign Conflict-Free Only] [Show Best Effort] [Cancel] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[Show Best Effort]: Shows assignments with warnings, allows manual override
Accessibility
Screen Reader Support
Algorithm Selection:
"Auto-assign session timings dialog. Choose optimization strategy.
Currently selected: Balanced Schedule.
3 options available. Press Down arrow to explore options."
Preview Assignments:
"Preview auto-assignments. 5 sessions assigned with average match score 82 percent.
1 warning detected. Press Tab to review each assignment."
ARIA Attributes:
<div role="dialog" aria-labelledby="auto-assign-title" aria-modal="true">
<h2 id="auto-assign-title">Auto-Assign Session Timings</h2>
<fieldset aria-labelledby="strategy-legend">
<legend id="strategy-legend">Optimization Strategy</legend>
<input type="radio" id="balanced" name="strategy" aria-describedby="balanced-desc" />
<label for="balanced">Optimize for Balanced Schedule</label>
<p id="balanced-desc">Balance speaker preferences, expertise, and time distribution</p>
</fieldset>
</div>
Testing Checklist
Related Wireframes
- story-5.7-slot-assignment-page.md: Main interface where [Auto-Assign All] button appears
- story-5.7-speaker-preference-panel.md: Preferences used by matching algorithm
- story-5.7-conflict-resolution-modal.md: Conflict detection for manual overrides
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-12-25 | 1.0 | Initial bulk auto-assignment wireframe | Sally (UX Expert) |