diff --git a/app/models/assignment.rb b/app/models/assignment.rb
index 20fabd09597b2916f934e6d9c7f86e004e2273ee..88cd32d9cbd913419e6f5271c981c9cb39ca1964 100644
--- a/app/models/assignment.rb
+++ b/app/models/assignment.rb
@@ -9,6 +9,8 @@ class Assignment < ApplicationRecord
   after_create_commit :notify_assignment_created
   after_destroy_commit :notify_assignment_destroyed
 
+  scope :future, -> { joins(:session).where('sessions.starts_at' => Time.now..) }
+
   after_create_commit -> {
     Rails.logger.debug('Created assignment, broadcasting')
     broadcast_replace_to "sessions",
diff --git a/app/models/session.rb b/app/models/session.rb
index 462c3d6dde332579325ed19201e4c363b2b5623e..43137cd1b2a189159ee52dc8c841f27755089c76 100644
--- a/app/models/session.rb
+++ b/app/models/session.rb
@@ -7,6 +7,7 @@ class Session < ApplicationRecord
   has_many :speakers, through: :session_speakers
 
   scope :scheduled, -> { where(status: 'scheduled') }
+  scope :future, -> { where(starts_at: Time.now..) }
 
   validates :ref_id, uniqueness: { scope: :conference_id }
 
diff --git a/app/views/assignments/by_user.html.erb b/app/views/assignments/by_user.html.erb
index 9274e3a74c329dd7fe5b162622b43fac5be7575a..555708396cc9956863dd5b323c3e569ab854c3cc 100644
--- a/app/views/assignments/by_user.html.erb
+++ b/app/views/assignments/by_user.html.erb
@@ -12,7 +12,7 @@
       </tr>
     </thead>
     <tbody>
-  <% @user.assignments.includes(:session, session: :conference).order('sessions.starts_at').each do |assignment| %>
+  <% @user.assignments.future.includes(:session, session: :conference).order('sessions.starts_at').each do |assignment| %>
     <tr class="*:border *:p-1">
       <td><%= assignment.session.conference.name %></td>
       <td><%= assignment.session.starts_at.strftime('%Y-%m-%d') %></td>
diff --git a/app/views/assignments/index.html.erb b/app/views/assignments/index.html.erb
index 86bfbb25a7f7f3ba49652d6de2d0fd94e5694a28..63d8176aa2d9be269a32d147d5514949f0223a54 100644
--- a/app/views/assignments/index.html.erb
+++ b/app/views/assignments/index.html.erb
@@ -1,5 +1,5 @@
 <div>
-  <% @assignments.group_by(&:user).each do |user, assignments| %>
+  <% @assignments.future.group_by(&:user).each do |user, assignments| %>
     <div class="my-8">
       <h4 class="text-xl my-2"><%= link_to user.name, user_assignments_path(user) %> <span class="font-normal"><%= link_to user_assignments_path(user, format: 'ics') do %><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="ml-2 mb-1 size-4 inline-block stroke-slate-400 fill-slate-400"><path fill-rule="evenodd" d="M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z" clip-rule="evenodd"></path></svg><% end %></span></h4>
         <% assignments.group_by { |a| a.session.starts_at.strftime('%Y-%m-%d') }.each do |date, assignments_on_date| %>