diff --git a/app/javascript/controllers/filteredlist_controller.js b/app/javascript/controllers/filteredlist_controller.js
index 2cabbaf07fc48f369a1b836d557036e574a718a8..72026abde72d106531460d0a4407eff0212c5733 100644
--- a/app/javascript/controllers/filteredlist_controller.js
+++ b/app/javascript/controllers/filteredlist_controller.js
@@ -51,9 +51,13 @@ export default class extends Controller {
       this.clearTarget.classList.add("hidden");
     }
 
+    const filter = document.querySelector(this.element.dataset.filterSelector);
+
     // Filter options by the `data-filteredlist-match` attribute
     for (const option of this.listTarget.children) {
-      if (option.dataset.filteredlistMatch.includes(query)) {
+      const uid = option.querySelector("a.add_button").dataset.user;
+      const unavailable = filter && filter.querySelector(`a[data-uid="${uid}"]`);
+      if (!unavailable && option.dataset.filteredlistMatch.includes(query)) {
         option.classList.remove("hidden");
       } else {
         option.classList.add("hidden");
diff --git a/app/javascript/controllers/session_controller.js b/app/javascript/controllers/session_controller.js
index 2be5137db714dc5217115a249e62611f43081111..6f16c2f375b92dd297263442230cb8ddb99db2b3 100644
--- a/app/javascript/controllers/session_controller.js
+++ b/app/javascript/controllers/session_controller.js
@@ -13,7 +13,7 @@ export default class extends Controller {
 
   connect() {
     const uid = document.body.dataset.loggedinUid;
-    const isCandidate = this.candidatesTarget.querySelector(`a.candidate[data-candidate-uid="${uid}"]`);
+    const isCandidate = this.candidatesTarget.querySelector(`a.candidate[data-uid="${uid}"]`);
     const isShiftcoordinator = document.body.dataset.isShiftcoordinator;
 
     this.element.querySelectorAll('.only-loggedin').forEach(el => {
diff --git a/app/views/assignments/_filteredlist.html.erb b/app/views/assignments/_filteredlist.html.erb
index be2746c7e8f9505ae2da327b4ac30545997fc02f..f6c3d2ebc7b3897cf434c63f799790371734aab0 100644
--- a/app/views/assignments/_filteredlist.html.erb
+++ b/app/views/assignments/_filteredlist.html.erb
@@ -1,4 +1,4 @@
-<div data-controller="filteredlist" data-conference="<%= session.conference.slug %>" data-session="<%= session.ref_id %>">
+<div data-controller="filteredlist" data-conference="<%= session.conference.slug %>" data-session="<%= session.ref_id %>" data-filter-selector="#<%= dom_id(session) %> .assigned">
   <div class="relative">
     <input
       type="text"
diff --git a/app/views/assignments/_user_avatar.html.erb b/app/views/assignments/_user_avatar.html.erb
index bfc7e8dd3fc64639b69020af3672260b57608d62..02537db42b8f8fe0ef2cbf5fbde19701adf3cf99 100644
--- a/app/views/assignments/_user_avatar.html.erb
+++ b/app/views/assignments/_user_avatar.html.erb
@@ -2,7 +2,7 @@
 <span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
   <span style="color: <%= user.text_color %>"><%= user.name %></span>
   <button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20">
-    <%= link_to conference_session_assignment_path(assignment.session.conference, assignment.session, assignment), data: { turbo_method: :delete, confirm: 'Are you sure?' }, method: :delete do %>
+    <%= link_to conference_session_assignment_path(assignment.session.conference, assignment.session, assignment), data: { turbo_method: :delete, confirm: 'Are you sure?', uid: user.id }, method: :delete do %>
       <span class="sr-only">Remove</span>
       <svg viewBox="0 0 14 14" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75" style="stroke: <%= user.text_color %>">
         <path d="M4 4l6 6m0-6l-6 6" />
diff --git a/app/views/candidates/_user_avatar.html.erb b/app/views/candidates/_user_avatar.html.erb
index 12e8acb5c6e37360d63ed392c09ae89deee5f6e9..a40fc17d097ec5259663c04a759408ff8363c396 100644
--- a/app/views/candidates/_user_avatar.html.erb
+++ b/app/views/candidates/_user_avatar.html.erb
@@ -3,7 +3,7 @@
 <span class="gap-x-0.5 rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10" style="background-color: <%= user.avatar_color %>" title="<%= user.name %>">
   <span style="color: <%= user.text_color %>"><%= user.name %></span>
   <button type="button" class="only-shiftcoordinator hidden group relative -mr-1 size-3.5 rounded-sm hover:bg-gray-500/20">
-    <%= link_to conference_session_assignments_path(session.conference, session, user_id: user.id), class: "candidate", data: { turbo_method: :post, turbo_frame: dom_id(session), candidate_uid: user.id } do %>
+    <%= link_to conference_session_assignments_path(session.conference, session, user_id: user.id), class: "candidate", data: { turbo_method: :post, turbo_frame: dom_id(session), uid: user.id } do %>
       <span class="sr-only">Add</span>
       <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" stroke-width="1" class="size-3.5 stroke-gray-600/50 group-hover:stroke-gray-600/75 fill-gray-600/50" style="stroke: <%= user.text_color %>; fill: <%= user.text_color %>">
         <path d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z" />
diff --git a/app/views/sessions/_session.html.erb b/app/views/sessions/_session.html.erb
index b0584be9fa1e13b670837562f9931db3db6a9464..f145ef13b54c2f6676a69bd82c267f51c9043dad 100644
--- a/app/views/sessions/_session.html.erb
+++ b/app/views/sessions/_session.html.erb
@@ -73,7 +73,7 @@
     <% end %>
 
     <small>assigned (<%= session.assignments.length %>)</small>
-    <ul class="inline-flex flex-wrap gap-1 my-1">
+    <ul class="assigned inline-flex flex-wrap gap-1 my-1">
       <% session.assignments.each do |assignment| %>
         <li>
           <span class="assigned-user"><%= render partial: 'assignments/user_avatar', locals: { assignment: assignment } %></span>