Table Management
Floor plan, reservations, seating, and table service diagrams
Table Management
This page covers table and floor management including reservations, seating workflow, and table service operations.
Floor Plan Architecture
flowchart TB
subgraph "Floor Structure"
VENUE[Venue/Restaurant]
FLOOR1[Floor 1]
FLOOR2[Floor 2]
PATIO[Patio]
end
subgraph "Sections"
SEC_A[Section A]
SEC_B[Section B]
SEC_BAR[Bar Area]
SEC_PATIO[Outdoor Section]
end
subgraph "Tables"
T1[Table 1]
T2[Table 2]
T3[Table 3]
T4[Table 4]
BAR_SEATS[Bar Seats]
end
VENUE --> FLOOR1
VENUE --> FLOOR2
VENUE --> PATIO
FLOOR1 --> SEC_A
FLOOR1 --> SEC_B
FLOOR1 --> SEC_BAR
PATIO --> SEC_PATIO
SEC_A --> T1
SEC_A --> T2
SEC_B --> T3
SEC_B --> T4
SEC_BAR --> BAR_SEATS
style VENUE fill:#e1f5feTable States
stateDiagram-v2
[*] --> AVAILABLE: Open
AVAILABLE --> RESERVED: Reservation Created
RESERVED --> AVAILABLE: No Show/Cancel
RESERVED --> SEATED: Party Arrives
AVAILABLE --> SEATED: Walk-in
SEATED --> OCCUPIED: Order Placed
SEATED --> AVAILABLE: Immediate Leave
OCCUPIED --> OCCUPIED: Additional Orders
OCCUPIED --> PAYING: Check Requested
PAYING --> PAID: Payment Complete
PAID --> DIRTY: Guest Leaves
DIRTY --> CLEANING: Bus Started
CLEANING --> AVAILABLE: Reset Complete
AVAILABLE --> BLOCKED: Block Table
BLOCKED --> AVAILABLE: Unblock
note right of RESERVED
Holding for
upcoming party
end note
note right of DIRTY
Needs bussing
and reset
end noteReservation Flow
sequenceDiagram
participant Guest as Guest
participant System as Reservation System
participant DB as Database
participant Staff as Host Staff
participant SMS as SMS Service
Guest->>System: Request reservation
System->>DB: Check availability
DB-->>System: Available slots
alt Online Booking
System-->>Guest: Show available times
Guest->>System: Select time & party size
System->>DB: Create reservation
System->>SMS: Send confirmation
SMS-->>Guest: Confirmation text
else Phone Booking
Staff->>System: Enter details
System->>DB: Create reservation
Staff-->>Guest: Confirm verbally
end
Note over System: Day of reservation
System->>SMS: Send reminder (2h before)
SMS-->>Guest: Reminder text
Guest->>System: Confirm/Cancel
System->>DB: Update status
alt Guest Arrives
Staff->>System: Mark as arrived
System->>DB: Update to SEATED
else No Show
System->>System: Grace period expires
System->>DB: Mark as NO_SHOW
System->>DB: Release table
endSeating Workflow
flowchart TD
ARRIVAL[Party Arrives] --> CHECK{Has Reservation?}
CHECK -->|Yes| FIND_RES[Find Reservation]
CHECK -->|No| WALKIN[Walk-in Process]
FIND_RES --> VERIFY[Verify Party Size]
VERIFY --> TABLE_READY{Table Ready?}
TABLE_READY -->|Yes| SEAT[Seat Party]
TABLE_READY -->|No| WAIT_LIST[Add to Wait]
WALKIN --> SIZE[Get Party Size]
SIZE --> AVAILABLE{Table Available?}
AVAILABLE -->|Yes| SEAT
AVAILABLE -->|No| WAIT_LIST
WAIT_LIST --> ESTIMATE[Give Wait Estimate]
ESTIMATE --> PAGER{Give Pager?}
PAGER -->|Yes| ASSIGN_PAGER[Assign Pager]
PAGER -->|No| SMS_WAIT[Take Phone #]
ASSIGN_PAGER --> WAIT[Wait for Table]
SMS_WAIT --> WAIT
WAIT --> TABLE_FREE[Table Becomes Free]
TABLE_FREE --> NOTIFY[Notify Guest]
NOTIFY --> RESPONSE{Guest Returns?}
RESPONSE -->|Yes| SEAT
RESPONSE -->|No, Grace| WAIT
RESPONSE -->|No Show| REMOVE[Remove from List]
SEAT --> ASSIGN_SERVER[Assign Server]
ASSIGN_SERVER --> START_SESSION[Start Table Session]
START_SESSION --> CREATE_ORDER[Create Order]
style SEAT fill:#e8f5e9Wait List Management
flowchart TD
ADD[Add to Waitlist] --> INFO[Collect Info]
INFO --> NAME[Guest Name]
INFO --> SIZE[Party Size]
INFO --> PHONE[Phone Number]
INFO --> PREFS[Preferences]
NAME --> ESTIMATE[Calculate Wait Time]
SIZE --> ESTIMATE
PREFS --> ESTIMATE
ESTIMATE --> POSITION[Assign Position]
POSITION --> DISPLAY[Show on Wait Board]
subgraph "Wait Time Factors"
TABLES[Available Tables]
AVG_TURN[Average Turn Time]
AHEAD[Parties Ahead]
MATCH[Table Size Match]
end
TABLES --> ESTIMATE
AVG_TURN --> ESTIMATE
AHEAD --> ESTIMATE
MATCH --> ESTIMATE
DISPLAY --> MONITOR[Monitor Progress]
MONITOR --> UPDATE{Position Changed?}
UPDATE -->|Yes| NOTIFY[Update Guest]
UPDATE -->|No| MONITOR
NOTIFY --> READY{Table Ready?}
READY -->|Yes| PAGE[Page Guest]
READY -->|No| MONITOR
PAGE --> RESPOND{Guest Responds?}
RESPOND -->|Yes| SEAT[Seat Party]
RESPOND -->|Grace Period| PAGE
RESPOND -->|No Response| SKIP[Move to End/Remove]
style SEAT fill:#e8f5e9Table Session Lifecycle
sequenceDiagram
participant Host as Host
participant Table as Table
participant Server as Server
participant POS as POS System
participant Kitchen as Kitchen
Host->>Table: Seat guests
Table->>Table: Session started
Server->>Table: Greet, take drink order
Server->>POS: Enter drinks
POS->>Kitchen: Send to bar
Server->>Table: Deliver drinks
Server->>Table: Take food order
Server->>POS: Enter food
POS->>Kitchen: Send to kitchen
loop Courses
Kitchen-->>Server: Course ready
Server->>Table: Deliver course
Server->>Table: Check on guests
end
Table->>Server: Request check
Server->>POS: Print check
Server->>Table: Present check
Table->>Server: Payment
Server->>POS: Process payment
POS-->>Server: Approved
Server->>Table: Return receipt
Table->>Table: Guests leave
Host->>Table: Mark for cleaning
Note over Table: Bus and reset
Host->>Table: Mark availableServer Section Management
flowchart TD
SHIFT[Shift Start] --> ASSIGN[Assign Sections]
ASSIGN --> BALANCE[Balance by]
BALANCE --> TABLES_COUNT[Table Count]
BALANCE --> COVERS[Expected Covers]
BALANCE --> EXPERIENCE[Server Experience]
TABLES_COUNT --> SECTIONS[Create Sections]
COVERS --> SECTIONS
EXPERIENCE --> SECTIONS
SECTIONS --> SERVER1[Server 1: Tables 1-4]
SECTIONS --> SERVER2[Server 2: Tables 5-8]
SECTIONS --> SERVER3[Server 3: Tables 9-12]
subgraph "Section Display"
MAP[Floor Map]
COLOR[Color by Server]
STATUS[Table Status]
end
SERVER1 --> MAP
SERVER2 --> MAP
SERVER3 --> MAP
subgraph "Rotation"
NEXT[Next Available]
ROUND_ROBIN[Round Robin]
MANUAL[Manual Assign]
end
style SECTIONS fill:#e8f5e9Table Merging and Splitting
flowchart TD
REQUEST[Large Party Request] --> CHECK[Check Available Tables]
CHECK --> ADJACENT{Adjacent Tables?}
ADJACENT -->|Yes| MERGE[Merge Tables]
ADJACENT -->|No| ALTERNATIVES[Find Alternatives]
MERGE --> SELECT[Select Tables]
SELECT --> COMBINE[Create Combined Table]
COMBINE --> UPDATE_CAPACITY[Update Capacity]
UPDATE_CAPACITY --> SEAT_LARGE[Seat Large Party]
ALTERNATIVES --> WAIT_OPTION[Wait for Large Table]
ALTERNATIVES --> SPLIT_OPTION[Split Party]
WAIT_OPTION --> ESTIMATE_TIME[Estimate Wait]
SPLIT_OPTION --> TWO_TABLES[Seat at 2 Tables]
subgraph "Merge Rules"
RULE1[Same Section]
RULE2[Compatible Heights]
RULE3[No Blocking Paths]
end
subgraph "After Party Leaves"
UNMERGE[Unmerge Tables]
RESET_EACH[Reset Each Table]
AVAILABLE_SEPARATE[Mark Available]
end
SEAT_LARGE --> UNMERGEFloor Plan Data Model
erDiagram
VENUE ||--o{ FLOOR : has
FLOOR ||--o{ FLOOR_SECTION : contains
FLOOR_SECTION ||--o{ TABLE : contains
TABLE ||--o{ TABLE_SESSION : has
TABLE_SESSION ||--o{ POS_TRANSACTION : generates
VENUE {
string id PK
string tenantId FK
string name
string address
json operatingHours
}
FLOOR {
string id PK
string venueId FK
string name
int level
json layoutData
}
FLOOR_SECTION {
string id PK
string floorId FK
string name
string code
boolean isActive
json boundaries
}
TABLE {
string id PK
string sectionId FK
string number
int minCapacity
int maxCapacity
enum shape
json position
enum status
string serverId FK
}
TABLE_SESSION {
string id PK
string tableId FK
string reservationId FK
int guestCount
timestamp seatedAt
timestamp leftAt
string serverId FK
}Table Status Display
flowchart TD
subgraph "Status Colors"
GREEN[Green: Available]
YELLOW[Yellow: Reserved]
BLUE[Blue: Seated]
RED[Red: Occupied]
GRAY[Gray: Cleaning]
BLACK[Black: Blocked]
end
subgraph "Status Info"
TIME[Time in Status]
SERVER[Assigned Server]
GUEST[Guest Name]
COVERS[Cover Count]
end
subgraph "Table Actions"
SEAT_ACTION[Seat Party]
MERGE_ACTION[Merge Tables]
BLOCK_ACTION[Block Table]
TRANSFER[Transfer Table]
VIEW_ORDER[View Order]
end
GREEN --> SEAT_ACTION
GREEN --> MERGE_ACTION
GREEN --> BLOCK_ACTION
BLUE --> VIEW_ORDER
BLUE --> TRANSFER
RED --> VIEW_ORDER
RED --> TRANSFERTurn Time Analytics
flowchart LR
subgraph "Turn Time Components"
SEAT_TIME[Seating: 5 min]
ORDER_TIME[Ordering: 10 min]
COOK_TIME[Cooking: 20 min]
EAT_TIME[Dining: 30 min]
PAY_TIME[Payment: 10 min]
CLEAN_TIME[Cleaning: 5 min]
end
SEAT_TIME --> ORDER_TIME --> COOK_TIME --> EAT_TIME --> PAY_TIME --> CLEAN_TIME
subgraph "Metrics"
TOTAL[Total Turn: 80 min]
COVERS_HOUR[Covers/Hour: 45]
REV_SEAT[Rev/Seat: $42]
endgantt
title Table #5 Timeline
dateFormat HH:mm
axisFormat %H:%M
section Session 1
Reserved :r1, 18:00, 30m
Seated :s1, 18:30, 10m
Dining :d1, 18:40, 50m
Payment :p1, 19:30, 10m
Cleaning :c1, 19:40, 10m
section Session 2
Available :a2, 19:50, 10m
Walk-in Seated :s2, 20:00, 10m
Dining :d2, 20:10, 60mReservation Reminders
flowchart TD
CREATE[Reservation Created] --> SCHEDULE[Schedule Reminders]
SCHEDULE --> R1[24h Reminder]
SCHEDULE --> R2[2h Reminder]
SCHEDULE --> R3[Arrival Check]
R1 --> SEND1[Send SMS/Email]
R2 --> SEND2[Send SMS]
R3 --> CHECK_IN[Check-in Request]
SEND1 --> CONFIRM1{Confirmed?}
CONFIRM1 -->|Yes| UPDATE_CONFIRMED[Update Status]
CONFIRM1 -->|No Response| R2
SEND2 --> CONFIRM2{Confirmed?}
CONFIRM2 -->|Yes| READY_TABLE[Prepare Table]
CONFIRM2 -->|Cancel| RELEASE[Release Table]
CONFIRM2 -->|No Response| R3
CHECK_IN --> ARRIVE{Guest Arrives?}
ARRIVE -->|Yes| SEAT[Seat Guest]
ARRIVE -->|No + Grace| WAIT_GRACE[Wait 15 min]
WAIT_GRACE --> NO_SHOW[Mark No-Show]
NO_SHOW --> RELEASE
style SEAT fill:#e8f5e9
style RELEASE fill:#fff3e0