Story 3.1: Intelligent Speaker Matching Interface - Wireframe
Story: Epic 3, Story 3.1 - Speaker Management Service
Intelligent Speaker Matching Interface (FR17)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back Speaker Management - Spring Conference 2025 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Event: Cloud Native Architecture Slots: 8 Confirmed: 5/8 β
β β
β ββββ ACCEPTED SPEAKERS βββββββββββββββββββββ¬βββ SLOT ASSIGNMENT ββββββββββββββββββ β
β β β β β
β β βββββββββββββββββββββββββββββββββββββ β Morning (Technical) β β
β β β Peter Muller β β ββββββββββββββββββββββββββββββ β β
β β β Kubernetes Expert β’ Swiss Re β β β 09:00 β Sara Kim - Docker β β β
β β β [View Profile] [Contact] β β ββββββββββββββββββββββββββββββ€ β β
β β βββββββββββββββββββββββββββββββββββββ β β 09:45 β Peter Muller - K8s β β β
β β β Drag to assign β β ββββββββββββββββββββββββββββββ€ β β
β β βββββββββββββββββββββββββββββββββββββ β β 10:30 β [Empty - Drop here]β β β
β β β Sara Kim β β ββββββββββββββββββββββββββββββ€ β β
β β β Docker & Containers β’ ZKB β β β 11:15 β [Empty - Drop here]β β β
β β β [View Profile] [Contact] β β ββββββββββββββββββββββββββββββ β β
β β βββββββββββββββββββββββββββββββββββββ β β β
β β β Drag to assign β β Afternoon (Practical) β β
β β βββββββββββββββββββββββββββββββββββββ β ββββββββββββββββββββββββββββββ β β
β β β Marc Baum β β β 13:30 β [Empty - Drop here]β β β
β β β Cloud Architecture β’ PostFinance β β ββββββββββββββββββββββββββββββ€ β β
β β β [View Profile] [Contact] β β β 14:15 β [Empty - Drop here]β β β
β β βββββββββββββββββββββββββββββββββββββ β ββββββββββββββββββββββββββββββ€ β β
β β β Drag to assign β β β 15:00 β [Empty - Drop here]β β β
β β βββββββββββββββββββββββββββββββββββββ β ββββββββββββββββββββββββββββββ€ β β
β β β Thomas Weber β β β 15:45 β [Empty - Drop here]β β β
β β β DevOps Lead β’ Swisscom β β ββββββββββββββββββββββββββββββ β β
β β β [View Profile] [Contact] β β β β
β β βββββββββββββββββββββββββββββββββββββ β β Drag speakers from left β β
β β β Drag to assign β β to assign to time slots β β
β β βββββββββββββββββββββββββββββββββββββ β β β
β β β Anna Meyer β β β β
β β β Cloud Native β’ Credit Suisse β β β β
β β β [View Profile] [Contact] β β β β
β β βββββββββββββββββββββββββββββββββββββ β β β
β β β β β
β βββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
- Accepted Speakers List: Left panel showing all speakers who have accepted invitations
- Drag-and-Drop Assignment: Drag speaker cards from left panel to time slots on right
- Slot Assignment Panel: Right panel showing morning/afternoon agenda with drop zones
- Speaker Actions: View profile or contact speaker directly from speaker card
Functional Requirements Met
- Speaker Management: Display accepted speakers for event assignment
- Slot Assignment: Interactive agenda planning with manual speaker assignment
User Interactions
- View Accepted Speakers: Browse list of speakers in left panel who have accepted invitations
- Drag Speaker Card: Drag speaker from left panel to time slot on right
- Drop on Slot: Drop speaker card into empty time slot to assign
- View Profile: Click to view detailed speaker information and expertise
- Contact Speaker: Click to send direct communication to speaker
- Remove Assignment: Drag speaker out of slot back to left panel to unassign
Technical Notes
- Drag-and-drop UI using HTML5 drag API or library like react-beautiful-dnd
- Integration with speaker profiles and speaker status data
- Slot assignment with conflict detection for double-booking prevention
- Real-time visual feedback during drag operations
- Optimistic UI updates for immediate feedback
API Requirements
APIs needed to load and display data for this screen:
Initial Page Load
-
GET /api/v1/events/{eventId}
- Retrieve event details (title, topic, date, status)
- Used for: Header display showing event name and basic info
-
GET /api/v1/events/{eventId}/slots
- Retrieve all event slots with type and assignment status
- Query params: None (get all slots)
- Used for: Slot assignment panel showing morning/afternoon agenda
-
GET /api/v1/speakers?filter={βeventIdβ:β{eventId}β,βstatusβ:βacceptedβ}&include=profile
- Consolidated API: Replaces
/api/v1/events/{eventId}/speakers/accepted - Retrieve all speakers in accepted state for this event with profile data included
- Response includes: speaker details, expertise, company, bio
- Used for: Accepted speakers list display
- Consolidation benefit: Single endpoint with field inclusion eliminates need for separate profile calls
- Consolidated API: Replaces
Action APIs
APIs called by user interactions and actions:
Speaker Management
-
GET /api/v1/speakers/{speakerId}?include=profile,events,availability
- Consolidated API: Replaces
/api/v1/speakers/{speakerId}/profile - Triggered by: [View Profile] button in accepted speakers list
- Response: Full speaker profile with history, expertise, availability, and events
- Opens: Speaker profile modal/page
- Consolidation benefit: Single call retrieves all profile data including availability and event history
- Consolidated API: Replaces
-
POST /api/v1/organizers/{organizerId}/messages/send
- Triggered by: [Contact] button for speaker
- Payload:
{ recipientId, recipientType: "speaker", subject, message } - Response: Message sent confirmation
- Side effect: Email sent to speaker
Slot Assignment
-
POST /api/v1/events/{eventId}/slots/{slotId}/assign
- Triggered by: Drop speaker card on time slot (drag-and-drop)
- Payload:
{ speakerId, sessionDetails } - Response: Slot assignment created
- Validation: Check conflicts, speaker availability
-
DELETE /api/v1/events/{eventId}/slots/{slotId}/assign
- Triggered by: Drag speaker out of assigned slot
- Response: Slot cleared, speaker returned to available list
Navigation Map
Screen transitions triggered by actions and events:
Primary Navigation
-
β Back Button
- Target: Event Management Dashboard (Story 1.16)
- Context: Returns to main event overview
-
[View Profile] (from accepted speakers list)
- Target: Speaker Profile Page (Story 7.1)
- Type: Modal or new page
- Context: View full speaker details, history, expertise
-
[Contact] (from accepted speakers list)
- Target: Message composer modal
- Type: Modal overlay
- Context: Send message to speaker
-
Drag-and-Drop Speaker to Slot
- Target: No navigation, inline interaction
- Type: Drag-and-drop operation
- Context: Drag speaker card from left panel to time slot on right panel
- Feedback: Visual drag preview, drop zone highlighting, success animation
Event-Driven Navigation
-
On Slot Assignment Complete
- No Navigation: Remains on current screen
- Feedback: Success toast, visual update to agenda
- Update: Slot assignment updated in display
-
On All Slots Filled
- Suggested Action: Show success message with option to navigate to:
- Event Timeline (Story 3.5) - Review full event agenda
- Publishing Engine (Story 2.3) - Begin event promotion
- Suggested Action: Show success message with option to navigate to:
Error States & Redirects
-
On Event Not Found
- Target: Event Management Dashboard (Story 1.16)
- Feedback: Error message βEvent not foundβ
-
On Unauthorized Access
- Target: Login page or Permission Denied page
- Feedback: βOrganizer access requiredβ
-
On Slot Conflict Detected
- No Navigation: Remains on current screen
- Feedback: Error modal showing conflict details with resolution options