apprun.icuPlanner

Planner · Events

Turn a guest list and a set of rules into a table plan that works

Add tables, list guests with their groups and your keep-together or keep-apart rules, and see a seat-by-seat plan instantly. The view marks conflicts, scores the layout and suggests swaps you can print or share — everything runs in your browser.

Free no account Private runs in your browser Offline after first load Export CSV, print, share link

Presets

load example

Overwrites current tables, guests and rules. Preset values are typical, not one venue's spec.

Tables

0 tables

seats

Guests

0 guests
Group keeps families together when the toggle below is on. Tags can be child, elderly, VIP.

Rules & options

+10 score when they share a table.
−20 score when they share a table — flagged as a conflict.

seed 0
Same inputs always give the same plan. Shuffle deliberately changes the seed when you want an alternative.

Table plan

SVG updates with your rules
Assigned Conflict seat Empty seat Head table

Seat assignments

Table Seat Guest Group Tags

Conflicts & score breakdown

What to fix before you print

Export & share

CSV lists every seat; JSON contains the full state. The share link encodes your plan in the URL hash.

How the numbers are worked out

Every figure below is arithmetic you can check by hand. Nothing is fetched from a server.

Placement score

For each guest, score each table with free seats as: +10 per must-sit-with partner already there, −20 per must-sit-apart partner already there, +3 per same-group guest already there when keep-groups-together is on, −1 per extra table the group already spans (soft spread). Ties break by most free seats, then table order. Guests are processed most-constrained first.

Total score & band

Total score sums the same +10/−20/+3 over every co-located pair in the finished plan. Bands: ≥ 30 Excellent, ≥ 10 Good, ≥ 0 Fair, < 0 Needs work; any unresolved apart pair or unassigned guest caps the band at Needs work regardless of points.

Improvement passes

After the greedy pass, 3 sweeps test every cross-table swap — recompute total score, keep the swap only when it raises the score. Seeded tie-order (hash of guest name + seed) makes results reproducible; Shuffle groups increments the seed deliberately.

Capacity & occupancy

Total seats = sum of table seats. Occupancy = assigned ÷ seats. Conflict detection counts apart pairs on the same table, guests without a seat, tables under 50% full or over capacity, groups split across 3+ tables, and a head table with more guests than seats.

What this is not: a heuristic seating plan, not a formal optimisation; review it, and expect to move a few people by hand.

Questions

How does the seating algorithm decide who sits where?

Guests are ordered by constraint count (most constrained first), then placed greedily into the highest-scoring table — +10 for each must-sit-with already there, −20 for each must-sit-apart, +3 for the same group when keep-groups-together is on — and then 2 to 3 passes try every pairwise swap that raises the total score.

What happens when two guests must sit apart?

The planner penalises putting them on the same table and flags any table where an apart pair still sits together as an unresolved conflict. The recommendations then name the exact swap that would resolve it.

How many guests fit at a round versus a rectangular table?

You set the seat count yourself — round tables are usually 6 to 10, rectangular tables 6 to 12 (3 to 6 per side). The tool treats both as capacity numbers and draws seats evenly around or along the table so you can see at a glance whether a table will feel crowded.

Can I print the table plan and share it?

Yes. Use Print for a clean chart with every table and seat, Export CSV for a spreadsheet, or Copy share link — the link encodes the tables, guests and rules in the URL hash so anyone with the link sees the same plan.