-
Notifications
You must be signed in to change notification settings - Fork 0
Context and Requirements Specification
Problem Description
Itestra hosts various internal events to foster connection across its distributed workforce of over 160 employees across 15 European locations. However, informal networking often remains limited, with employees interacting only within familiar roles, locations, or project teams. Manual seating arrangements for events such as Exchange Days or Year-End Parties are time-consuming, inflexible, and consistently fail to achieve diverse interaction. Additionally, maintaining an overview of past matches and applying complex constraints—like avoiding repeated pairings or balancing affiliations—is unmanageable without technical support.
Statement of Intent
This project aims to develop an innovative event seating tool that automates optimal match generation based on configurable constraints. The system will support importing employee and event data, defining rules, and visualising seating plans through an intuitive interface. It will enhance employee engagement by promoting meaningful connections across roles, locations, and projects.
Business Goals
- Strengthen internal collaboration across locations, departments, and roles.
- Enhance employee engagement and satisfaction through more inclusive event experiences.
- Reduce manual effort and improve efficiency in event planning and execution.
Usage Goals
- Allow event organizers to import and manage employee and event data easily.
- Enable flexible configuration of matching rules tailored to each event's needs.
- Provide event organisers with clear visualisations of seating plans.
System Goals
- Ensure high usability through an intuitive user interface accessible to non-technical users.
- Guarantee reliable performance, regardless of participant number and seating constraints.
- Support maintainability, scalability, and data security to ensure long-term adaptability.
| Stakeholder | Description | Interests | Additional Information |
|---|---|---|---|
| Event Organizers (Anne Zülke) | Staff responsible for planning and executing internal events | Efficiently create diverse and engaging seating/pairing arrangements; save time | Primary users of the tool; provide input data and constraints. Ensures strategic alignment with company goals |
| System Administrators (Stefan Haas) | Maintains infrastructure and systems hosting the tool | Reliable, secure, and maintainable application integration | Handles deployment, access control, and updates |
| Employees / Event Participants | All Itestra employees participating in events | Meet new colleagues, engage in diverse conversations, and feel more connected | Indirect users; profiles and preferences are used by the system |
| Business Object | Description |
|---|---|
| Employee | An employee of itestra. |
| Event Organizer | The employee of itestra responsible for planning an itestra event. |
| System Administrator | The employee of itestra responsible for maintaining and hosting the system. |
| Event | An event (e.g. Summer/Winter, End of year) that is being organised for itestra employees. |
| Constraint | Potential attributes that are used by matching algorithm and constrain its outputs. For example: only employees with families should be matched together. |
| Matching Result | The one to one matching of employee to a specific seat of a table of a event. |
| Table / Seat | The tables and seats available at itestra events. One table has a limited amount of seats associated to it. |
|

The purpose of this system is to facilitate employee matching at company events to improve connections within staff, help connect employees who do not know one another, and enable exchange between different roles and locations.
-
Epic 1: CONTAINERIZATION + DEPLOYMENT
As a System Administrator, I want the system to be containerised and support one-command deployment so that it can run reliably and consistently on the given on-premise infrastructure.
-
User Story 1.1: Create Dockerfile for Backend
As a System Administrator, I want the backend service to be containerised so that it can be easily and consistently deployed.
Acceptance Criteria:
- Dockerfile includes all runtime dependencies.
- Backend container builds and runs locally.
- Environment variables are configurable via
.env.
-
User Story 1.2: Create Dockerfile for Frontend
As System Administrator, I want the frontend service to be containerised, so it can be easily deployed.
Acceptance Criteria:
- Dockerfile builds a production-ready version of the frontend.
- Frontend can be served via Nginx or equivalent.
-
User Story 1.3: Define
docker-compose.ymlfor Local and Production EnvironmentsAs a System Administrator, I want to use a
docker-compose.ymlfile, so that I can spin up the entire application stack with a single command.Acceptance Criteria:
- Includes frontend, backend, database, and any necessary services.
- Environment-specific configs are supported (
.env). - Dependencies are defined.
-
User Story 1.4: Configure Persistent Volumes and Database Initialisation
As a System Administrator, I want to configure volumes and initialization scripts for the database container, so data persists between restarts and the schema is set up automatically.
Acceptance Criteria:
- Data volume is defined and mapped.
- Initialization script creates required tables and schemas.
- Container logs show successful initialization.
-
User Story 1.5: Deploy to On-Prem Infrastructure
As a System Administrator, I want to deploy the containerized system to our on-prem servers, so that the tool is available in the company environment.
Acceptance Criteria:
- Deployment process is documented and repeatable.
- Services are accessible within the internal network.
- System survives reboots.
-
-
Epic 2: EVENT MANAGEMENT
As an Event Organizer, I want to be able to manage all information regarding upcoming events. This includes creating, editing and deleting event information such as the event type, event date, event location, maximum number of participants of an event and available tables with the number of associated seats.
-
User Story 2.1: Create New Event As an Event Organizer, I want to create new events together with associated information such as the event type, event date, event location, the maximum number of participants of an event and data regarding tables/seats.
Acceptance Criteria:
- The newly created event is stored persistently.
- The event information contains the event type, event date, event location, the maximum number of participants of an event and specific table/seat information.
-
User Story 2.2: Edit Event Information As an Event Organizer, I want to edit existing event information in case changes occur.
Acceptance Criteria:
- The changed event information are updated immediately and stored persistently.
-
User Story 2.3: Delete Event Information As an Event Organizer, I want to delete event information in case the event is for example cancelled or not needed anymore.
Acceptance Criteria:
- The respective event and all associated data is deleted from the system.
-
User Story 2.4: Export Event Information As an Event Organizer, I want to export all information that is associated to a respective event.
Acceptance Criteria:
- The event information ist exportable via a single press of a button.
- The exported information is accessible to the Event Organizer.
-
-
Epic 3: EMPLOYEE DATA HANDLING
As an Event Organizer, I want to import, view, and edit employee data, so that I can prepare accurate inputs for the seating and matching algorithm.
-
User Story 3.1: Import Employee List
As an Event Organizer, I want to upload a list of employees from a CSV or Excel file, so that I can quickly populate the system with participant data for an event.
Acceptance Criteria:
- System accepts CSV or Excel file uploads.
- Each row includes required fields (e.g., name, location, team, gender) and is properly written to the database.
- Upload success/failure is clearly indicated.
- Invalid records are flagged with helpful error messages.
-
User Story 3.2: View Employee Directory
As an Event Organizer/System Administrator, I want to view all imported employees in a table format.
Acceptance Criteria:
- Displays all employee records in a sortable, searchable table.
- Columns include name, location, and team.
- Pagination or infinite scroll is supported for large lists.
-
User Story 3.3: Edit Employee Information
As an Event Organizer/System Administrator, I want to edit individual employee records, so that I can correct or update details as needed.
Acceptance Criteria:
- Employee records are editable via an inline editor.
- Edits are saved persistently.
- Validation ensures required fields are correctly formatted.
-
User Story 3.4: Add or Remove Employees Manually
As an Event Organizer/System Administrator, I want to add new employees or delete existing ones from the system, so that I can manage participants flexibly without relying on file imports.
Acceptance Criteria:
- New employee entries can be added through a form.
- Employees can be removed with a confirmation prompt.
- Changes are reflected immediately in the employee list.
-
User Story 3.5: Manage Custom Attributes
As an Event Organizer/System Administrator, I want to define and assign custom fields to employees.
Acceptance Criteria:
- New custom attributes can be added to employees.
- Custom attributes appear in the employee list.
-
-
Epic 4: CONSTRAINT CONFIGURATION
As an Event Organizer, I want to be able to manage event specific constraints for the seat allocation algorithm to ensure optimal seating arrangements.
-
User Story 4.1: Manage Event Matching Constraints As an Event Organizer, I want to choose seating arrangement constraints for each event.
Acceptance Criteria:
- I can activate or deactivate specific constraints for different events.
- The constraints are used by the matching algorithm to generate seat allocations.
- I can set a constraint to maximise different locations per table (if applicable).
- I can set a constraint to distribute participants by their affiliation (e.g., department, team) across tables.
- I can set a constraint to distribute participants from different projects across tables.
- I can set a constraint to ensure a balanced distribution by gender at tables.
-
User Story 4.2: View and Prioritise Constraints As an Event Organizer, I want to be able to view all active constraints for an event and, if necessary, set priorities.
Acceptance Criteria:
- The system displays a list of all currently active constraints for a selected event.
- The system allows me to assign a priority level to each constraint.
- The matching algorithm considers constraint priorities when generating matches, attempting to satisfy higher priority constraints first.
-
-
Epic 5: PAST EVENT MANAGEMENT
As an Event Organizer, I want the system to track and manage historical seat allocation data across events so that participants can be paired with new people, improving networking opportunities and avoiding repeat connections.
-
User Story 5.1: Store Seat Allocation History
As a Event Organizer, I want the system to automatically store who has been matched with which seat at respective events, so that historical match data is available for future pairing decisions.
Acceptance Criteria:
- The system stores seat allocation data after each event.
-
User Story 5.2: View Event History
As an Event Organizer, I want to view past events.
Acceptance Criteria:
- Past events can be accessed in the UI and are shown to the Event Organizer.
-
User Story 5.3: Prevent Repeat Matches
As an Event Organizer, I want the matching algorithm to avoid pairing people who have met in past events, so that new connections are prioritised.
Acceptance Criteria:
- The matching logic references stored match history.
-
-
Epic 6: SEAT PLAN DESIGN
As an Event Organizer, I want to visually design and customize seating layouts using a drag-and-drop canvas, so I can efficiently plan, save, and share event floor plans.
-
User Story 6.1: Create a Seat Plan on Canvas
As an Event Organizer, I want to create a seating layout using a drag-and-drop canvas interface, so that I can visually plan and arrange the event space.
Acceptance Criteria:
- Canvas supports drag-and-drop addition of tables, chairs, walls, and rooms.
- Elements can be selected, resized, rotated, and moved freely.
- Zoom and pan functionalities are available for navigating large layouts.
-
User Story 6.2: Define and Customise Element Properties
As an Event Organizer, I want to assign names, numbers, and colours to tables, so that I can easily distinguish them.
Acceptance Criteria
- Users can set custom labels (names/numbers) for tables and rooms.
- Users can change visual properties (e.g., colors ).
-
User Story 6.3: Duplicate Elements
As an Event Organizer, I want to duplicate tables, chairs, or groups of elements, so that I can create repetitive layouts more efficiently.
Acceptance Criteria:
- Copy/paste and clone functions are available for selected elements.
- Cloned elements maintain all original properties (labels, colors, attachments).
-
User Story 6.4: Undo and Redo Actions
As an Event Organizer, I want to undo or redo recent changes
Acceptance Criteria:
- Multi-step undo/redo is available via toolbar buttons.
- Common shortcuts (Ctrl+Z, Ctrl+X ) are supported.
-
User Story 6.5: Provide Table Upload Functionality
As an Event Organizer, I want to import predefined seat plan templates (e.g., Excel format), so that I can quickly create layouts based on standard setups.
Acceptance Criteria:
- System accepts uploads in a specific format (e.g., Excel with table names and chair counts).
- Uploaded data generates tables with chairs auto-arranged in the center of the canvas with appropriate initial spacing in between them.
- Imported elements can be fully edited post-import.
-
User Story 6.6: Save Draft of Layout Plan
As an Event Organizer, I want to save my progress on the layout, so that I can return and continue editing later.
Acceptance Criteria:
- Save option stores the current state in the user’s account/database.
- Unsaved changes trigger a visual save prompt or indicator.
-
User Story 6.7: Export Seat Plan to File
As an Event Organizer, I want to export the seat plan as an image or PDF, so that I can print or share it with staff or vendors.
Acceptance Criteria:
- Supported export formats: PNG, JPG, PDF.
- Export includes all visible elements and labels.
- Export is downloadable directly from the editor.
-

| ID | Description |
|---|---|
| QR01 | The system must generate seating or pairing matches within 30 minutes for events with up to 500 participants to ensure timely usability. |
| QR02 | UI interactions (e.g., saving constraints, loading data) must respond within 200 milliseconds to support a smooth user experience. |
| QR03 | In the event of data corruption or invalid input, the system should trigger a fail-safe mechanism to preserve system integrity. |
| QR04 | The system should follow a modular architecture to allow future enhancements, such as new constraint types, without major redesign. |
| QR05 | The UI must be intuitive enough for non-technical users (e.g., HR staff) to configure events and manage data without training. |
| QR06 | The UI and documentation must be written in english to be understandable to all stakeholders. |
| ID | Description |
|---|---|
| SC01 | The system must adhere to the General Data Protection Regulation (GDPR) when processing personal employee data. |
| SC02 | All data transmissions and storage operations must utilise secure protocols and standards, including HTTPS and 256-bit encryption. |
| ID | Description |
|---|---|
| DR01 | The system must be deployable on itestra’s on-premises server infrastructure. Deployment should be executable via a docker-compose project to ensure a consistent and containerised setup. |
| ID | Description | Impact |
|---|---|---|
| RL01 | The matching algorithm may fail to meet performance expectations, resulting in excessive computation times. | Degraded user experience and reduced usability of the platform. |
| RL02 | The user interface may not adequately visualise seating plans or provide sufficient interactivity. | Limited usability and reduced clarity regarding the spatial arrangement of participants. |
| RL03 | Misalignment within the project team regarding system requirements and objectives. | Increased coordination overhead and potential rework due to inconsistent implementation approaches. |
| RL04 | Users misconfigure constraints due to unclear UI | Algorithm failure or poor quality seating outcomes |