Speaker Management

Manage speaker profiles, session assignments, and self-service portal access

Last updated: June 13, 2026 Reading time: 13 minutes File size: 19.45 KB

Implemented

Last Updated: 2026-06-13

Overview

Speakers are architecture professionals who present at BATbern conferences. Each speaker has a profile containing biographical information, expertise areas, and contact details. Speakers progress through a defined 8-state workflow from initial identification through confirmed participation.

ℹ️ Architecture (Epic 11 — ADR-009): The standalone speakers table and the separate speaker-coordination service were removed. Speaker data and the speaker workflow are now unified into the event-management service, where SpeakerWorkflowService is the sole writer of speaker status. Each speaker is tracked as a per-event pool entry that progresses through its own workflow state.

Self-Service Portal: Invited speakers can accept/decline invitations, submit content, update their company’s public info, and track their engagements through the Speaker Self-Service Portal. Organisers can also manage all of this directly from this screen (hybrid workflow).

Authentication (Epic 11 / Epic 12): Speakers log in through AWS Cognito — email/password or “Continue with Google” — exactly like every other role. The earlier magic-link login was fully torn down in Epic 11; there are no ?token=/?jwt= portal URLs anymore. A Cognito user with the SPEAKER role is provisioned automatically when a speaker reaches the READY workflow transition.

Speaker Profiles

Profile Components

Personal Information:

  • First Name, Last Name
  • Professional headshot (photo upload)
  • Email, Phone
  • LinkedIn profile (optional)

Professional Details:

  • Company affiliation
  • Job title
  • Years of experience
  • Professional biography (≤500 characters)

Expertise:

  • Primary topics (e.g., “Sustainable Building”, “Digital Transformation”)
  • Secondary topics (related interests)
  • Languages spoken (German, French, Italian, English)

Presentation History:

  • Past BATbern presentations
  • External speaking engagements
  • Publications and awards

Creating a Speaker

Navigate to Speakers

Click 🎤 Speakers in the left sidebar.

Click “Create New Speaker”

Click the + Create New Speaker button (top-right).

Fill Speaker Details

Complete the speaker creation form:

Basic Information:

  • First Name* - Given name
  • Last Name* - Family name
  • Email* - Contact email
  • Phone - Contact number

Professional Profile:

  • Company - Select from autocomplete (optional)
  • Job Title - Current position
  • Biography - Professional summary (≤500 characters)

Expertise:

  • Primary Topics* - Main areas of expertise (select 1-3)
  • Secondary Topics - Related interests (optional)
  • Languages - Spoken languages for presentations

Visual Assets:

  • Headshot - Professional photo (PNG, JPG, max 2MB)

Save

Click Save to create the speaker profile.

Speaker is created with initial status: identified

Note: Speakers are created as per-event pool entries (the standalone speakers entity was removed in Epic 11). Speakers added during Phase A workflow start in the “identified” state and are linked to the event.

Speaker Status States

Implemented

Each speaker progresses through their own independent workflow in parallel with other speakers. The speaker workflow operates independently from the event workflow, allowing flexible coordination.

Status Flow

graph LR A[identified] --> B[contacted] B --> C[ready] C --> D[accepted] C --> E[declined] D --> F[content_submitted] F --> G[quality_reviewed] G --> H[confirmed] D --> I[overflow] D --> J[withdrew]

Status Descriptions

Status Description Organizer Actions
identified Potential speaker brainstormed in Phase A Send initial outreach
contacted Outreach email sent, awaiting response Follow up if no response
ready Speaker ready to accept/decline invitation Get acceptance confirmation
accepted Speaker committed to presenting Collect content submission
declined Speaker not available Contact backup speaker
content_submitted Speaker submitted presentation details Review content quality (Phase C)
quality_reviewed Content approved by organizer Assign time slot (Phase D)
confirmed Quality reviewed AND slot assigned Ready for agenda publication
overflow Accepted but no slot available Backup speaker for dropouts
withdrew Speaker dropped out after accepting Find replacement speaker

Critical: Auto-Confirmation

Speakers reach confirmed status automatically when BOTH conditions are met (in any order):

  1. Speaker status = quality_reviewed (content approved in Phase C)
  2. Session has startTime (slot assigned in Phase D)

This means:

  • Quality review first → slot assigned later → auto-confirms when slot saved
  • Slot assigned first → quality review later → auto-confirms when quality approved
  • Order doesn’t matter - confirmation happens when both complete

Status Transitions

Speaker workflow progresses through phases:

  • Phase A: Setup - identified (speakers brainstormed)
  • Phase B: Outreach - identified → contacted → ready → accepted/declined
  • Phase B: Content Collection - accepted → content_submitted
  • Phase C: Quality Review - content_submitted → quality_reviewed
  • Phase D: Assignment - quality_reviewed + slot → confirmed (automatic)
  • Any Phase - accepted → withdrew (if speaker drops out)

Parallel Progression: All speakers move through states independently. Event can have speakers in different states simultaneously (e.g., Speaker A is “contacted”, Speaker B is “content_submitted”, Speaker C is “confirmed”).

See Workflow System Documentation for complete details on the 3 workflow systems.

Content Collection

Implemented

Speakers submit presentation content during Phase B: Outreach. Content can be submitted by the speaker via the self-service portal or by the organiser on the speaker’s behalf (hybrid workflow).

Content Requirements

Mandatory Fields:

  • Presentation Title* - Specific session title (≤100 characters)
  • Abstract* - Session description (≤1000 characters)
  • Learning Objectives - What attendees will learn (3-5 bullets)

Optional Fields:

  • Supporting Materials - Slides, handouts, references (PDF upload)
  • Prerequisites - Required attendee knowledge
  • Target Audience - Who should attend (Beginners, Intermediate, Advanced)

Character Limit Validation

Abstract field enforces 1000-character limit:

Abstract *
[Your presentation description here...     ]

Characters: 287 / 1000 âś…
Abstract *
[Very long text that exceeds the limit... ]

Characters: 1042 / 1000 ❌
Error: Abstract must be 1000 characters or less

Content Review

Content is reviewed during Phase C: Quality Review:

  1. Organizer reviews content for:

    • Relevance to event theme
    • Quality and clarity
    • Originality
    • Audience fit
  2. Feedback provided if revisions needed:

    • Organizer clicks “Request Revisions” in quality drawer
    • Speaker receives comments
    • Speaker revises and resubmits
    • Status remains content_submitted until approved
  3. Content approved:

    • Organizer clicks “Approve” in quality drawer
    • Status advances to quality_reviewed
    • Speaker auto-confirms when slot also assigned (in either order)

See Phase C: Quality Review for details.

Outreach Tracking

Implemented

Track all speaker communications during outreach phase.

Contact History

Contact History - Hans MĂĽller
────────────────────────────────────
2025-02-15 14:23 | Email Sent
Subject: "Invitation to speak at BATbern 2025"
Status: contacted

2025-02-18 09:45 | Response Received
"Yes, interested in presenting on sustainable materials"
Status: ready

2025-02-19 10:15 | Acceptance Confirmed
Speaker accepted invitation
Status: accepted

2025-02-20 16:30 | Content Request Sent
Subject: "Content submission deadline: March 1"

2025-02-28 11:15 | Content Received
Title: "Innovations in Sustainable Building Materials"
Status: content_submitted

2025-03-02 14:30 | Quality Review Completed
Content approved by organizer
Status: quality_reviewed

2025-03-05 09:00 | Slot Assigned
Assigned to 10:00-10:45 AM slot
Status: confirmed (auto-confirmed)

Outreach Templates

Implemented

Pre-built email templates for common communications:

Initial Invitation:

Subject: Invitation to speak at BATbern 2025

Dear {{speaker_name}},

We are planning BATbern 2025 and would like to invite you
to present on "{{topic}}".

Event Details:
- Date: {{event_date}}
- Type: {{event_type}}
- Audience: {{expected_attendees}} architects

Are you interested? Please let us know by {{response_deadline}}.

Best regards,
{{organizer_name}}

Content Request:

Subject: Content submission for BATbern 2025

Dear {{speaker_name}},

Thank you for confirming your participation! Please submit:

- Presentation title (≤100 characters)
- Abstract (≤1000 characters)
- 3-5 learning objectives

Deadline: {{content_deadline}}

Submit via: {{submission_link}}

Looking forward to your presentation!

See Phase B: Outreach for outreach management details.

Session Assignment

Implemented

Confirmed speakers are assigned to event time slots during Phase D: Assignment.

Slot Assignment Interface

Drag-and-drop interface for assigning speakers to slots:

BATbern 2025 - March 15, 2025
──────────────────────────────────────────

Morning Track A         | Morning Track B
────────────────────────────────────────
09:00-09:45            | 09:00-09:45
[Drag speaker here]     | [Hans MĂĽller]
                        | Sustainable Materials

10:00-10:45            | 10:00-10:45
[Anna Schmidt]         | [Drag speaker here]
Digital Architecture    |

Assignment Constraints

System enforces constraints:

  • âś… No double-booking: Speaker can’t be in two slots simultaneously
  • âś… Break enforcement: Minimum 15-minute gap between speaker’s sessions
  • âś… Availability check: Speakers can mark unavailable time slots
  • ❌ Conflict warnings: Flag potential scheduling conflicts

See Phase D: Assignment for details.

Speaker Directory

Implemented

Public-facing speaker directory showcases confirmed speakers.

Directory Display

BATbern 2025 Speakers
────────────────────────────────────────

[Photo]  Hans MĂĽller
         MĂĽller Architekten AG
         Senior Architect

         "Innovations in Sustainable Building Materials"

         Expert in sustainable design with 15 years experience.
         Previous speaker at BATbern 2022, 2023.

         [View Session Details]

────────────────────────────────────────

[Photo]  Anna Schmidt
         Schmidt & Partner
         Digital Innovation Lead

         "Digital Transformation in Architecture"

         Leading digital initiatives in architectural practice.

         [View Session Details]

Editing a Speaker

Find the Speaker

Search or browse the speaker list.

Click Edit

Click 📝 Edit icon in speaker row.

Modify Fields

Update speaker information. Note:

  • Email cannot be changed (linked to user account)
  • Status should be changed through workflow UI (Phase B Kanban, Phase C Quality drawer)
  • Content can be edited at any time
  • Manual status override available via “Override workflow validation” checkbox (use sparingly)

Save Changes

Click Save Changes to persist updates.

Handling Speaker Dropouts

Implemented

If a speaker withdraws participation:

Mark as Withdrew

Change speaker status to withdrew via:

  • Phase B Kanban board: Drag speaker to “Withdrew” column
  • Or speaker edit modal with workflow override

Document Reason

Add note explaining withdrawal:

  • Schedule conflict
  • Personal reasons
  • Company policy
  • Health issues

Find Replacement

Options:

  • Promote backup speaker from identified list
  • Reassign session to confirmed speaker (if compatible topic)
  • Cancel session and adjust agenda

Update Agenda

If event already published:

  • Update public agenda
  • Send notification to registered attendees
  • Update printed materials if time permits

See Phase B: Outreach for speaker state management and dropout handling.

Searching Speakers

🔍 [Müller]

Searches across:

  • First name, Last name
  • Company name
  • Topics/expertise

Filter by Status

status:confirmed
status:contacted,accepted

Filter by Topic

topic:Sustainable Building

Common Issues

“Speaker stuck in contacted status”

Problem: Speaker contacted but no response received.

Solution:

  • Send follow-up reminder (after 3-5 days)
  • Try alternative contact method (phone instead of email)
  • Move to backup speaker if deadline approaching
  • Update status to declined if no response after 2 reminders (via Kanban drag-and-drop)

“Content exceeds 1000 characters”

Problem: Speaker submitted abstract longer than limit.

Solution:

  • Request speaker to revise and shorten
  • Provide editing suggestions
  • Emphasize need for concise, focused abstracts
  • Offer to help edit if language barrier

“Speaker has scheduling conflict after confirmation”

Problem: Confirmed speaker can’t attend assigned time slot.

Solution:

  • Check if alternative slot available in Phase D
  • Swap with another speaker if possible (drag-and-drop slot reassignment)
  • If no alternatives, may need to mark as withdrew
  • Communicate changes promptly
  • Update published agenda if event already in AGENDA_PUBLISHED state

Speaker Self-Service Portal

Implemented — Epic 6 (auth refactored in Epic 11)

Invited speakers manage their own participation through the Speaker Self-Service Portal after logging in with their Cognito account (email/password or “Continue with Google”):

  • Accept or decline invitations
  • Submit presentation content (title, abstract, file) through a guided wizard
  • Update their company’s public info (display name, website, logo) with organizer review — see below
  • View the speaker dashboard — upcoming engagements, deadlines, organiser contact, past events

How organisers trigger portal access:

  1. Add the speaker to the event’s speaker pool (Phase A: Setup)
  2. Click Send Invitation on the speaker’s Phase B Kanban card
  3. The system sends the invitation email automatically; at the READY transition a Cognito user with the SPEAKER role is provisioned so the speaker can log in
ℹ️ Note (Epic 11): Speaker portal access is now standard Cognito-authenticated login. The earlier JWT magic-link mechanism was fully removed — invitation emails point speakers to the normal login, not a password-free token URL.

Hybrid workflow: Organisers can always manage content and status on behalf of speakers directly from this screen — the portal supplements but does not replace organiser control.

Automated deadline reminders are sent at 14 days, 7 days, and 3 days before the content deadline. Each reminder email includes a fresh dashboard link.

See the Speaker Portal documentation → for the full speaker-facing experience.

Speaker Company Self-Service

Implemented — Story 11.G.1

A speaker whose company’s logo, display name, and website appear on the public site beside their session can update those fields from their own speaker profile page — with an organizer reviewing the change before it goes live.

How it works:

  1. The speaker edits the company section on their profile page (display name, website, logo) and submits.
  2. The submission creates a pending company-update request (it does NOT change the public company immediately) and raises a review task for organisers.
  3. An organiser reviews the proposed change on the /organizer/companies surface (a badge and filter chip flag companies with a pending request) and approves or rejects it with an optional note.
  4. On approval the company’s public fields are updated; on rejection nothing changes.

Rules:

  • Only one pending request per company at a time (a second concurrent submission is rejected).
  • The decision is audited (submitted_by / reviewed_by / reviewed_at / decision note); first decision wins.
  • This keeps speakers in control of their company’s public footprint without emailing an organiser, while preserving an organizer sign-off gate.

API Reference

ℹ️ Note (Epic 11 — ADR-009): Speaker workflow and data are served by the event-management service (the standalone speaker-coordination service was removed). Speakers are managed as per-event pool entries, and status writes go exclusively through SpeakerWorkflowService. Refer to the current OpenAPI specs for the authoritative paths.

Endpoints (illustrative)

GET    /api/speakers               List speakers (paginated)
GET    /api/speakers/{id}          Get speaker by ID
PUT    /api/speakers/{id}          Update speaker
PUT    /api/speakers/{id}/status   Update speaker status (via SpeakerWorkflowService)
POST   /api/speakers/{id}/content  Submit presentation content
POST   /api/speakers/{id}/photo    Request presigned URL for headshot upload

See API Documentation for complete specifications.