diff --git a/.rubocop_todo/gitlab/namespaced_class.yml b/.rubocop_todo/gitlab/namespaced_class.yml
index 8b59571249c215eab1b160f02e02aeee2627ce57..67f946e05ecb6d4578c130cfc4c26e67c270c4b0 100644
--- a/.rubocop_todo/gitlab/namespaced_class.yml
+++ b/.rubocop_todo/gitlab/namespaced_class.yml
@@ -327,7 +327,6 @@ Gitlab/NamespacedClass:
     - 'app/models/user_custom_attribute.rb'
     - 'app/models/user_detail.rb'
     - 'app/models/user_highest_role.rb'
-    - 'app/models/user_interacted_project.rb'
     - 'app/models/user_mention.rb'
     - 'app/models/user_preference.rb'
     - 'app/models/user_status.rb'
diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml
index 174fda7107fe5b25464629bb733cecced4af57e5..bc5a5880d201af19db1aca9ead184a3134dfc2d5 100644
--- a/.rubocop_todo/rspec/feature_category.yml
+++ b/.rubocop_todo/rspec/feature_category.yml
@@ -4776,7 +4776,6 @@ RSpec/FeatureCategory:
     - 'spec/models/user_custom_attribute_spec.rb'
     - 'spec/models/user_detail_spec.rb'
     - 'spec/models/user_highest_role_spec.rb'
-    - 'spec/models/user_interacted_project_spec.rb'
     - 'spec/models/user_mentions/commit_user_mention_spec.rb'
     - 'spec/models/user_mentions/issue_user_mention_spec.rb'
     - 'spec/models/user_mentions/merge_request_user_mention_spec.rb'
diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml
index 960b5bb5a05a8bd35059e244688e371994125212..461d4114408ba083e82a3539e58a7599fcc1d034 100644
--- a/.rubocop_todo/rspec/named_subject.yml
+++ b/.rubocop_todo/rspec/named_subject.yml
@@ -2869,7 +2869,6 @@ RSpec/NamedSubject:
     - 'spec/models/uploads/fog_spec.rb'
     - 'spec/models/uploads/local_spec.rb'
     - 'spec/models/user_custom_attribute_spec.rb'
-    - 'spec/models/user_interacted_project_spec.rb'
     - 'spec/models/user_spec.rb'
     - 'spec/models/user_status_spec.rb'
     - 'spec/models/users/credit_card_validation_spec.rb'
diff --git a/app/models/event.rb b/app/models/event.rb
index 7b91727f7d49a36584c919443bd68e4f39ad03e3..3f024958899bd327d0d3127438d5ee821732d0c3 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -82,7 +82,6 @@ class Event < ApplicationRecord
   # Callbacks
   after_create :reset_project_activity
   after_create :set_last_repository_updated_at, if: :push_action?
-  after_create ->(event) { UserInteractedProject.track(event) }
 
   # Scopes
   scope :recent, -> { reorder(id: :desc) }
diff --git a/app/models/user.rb b/app/models/user.rb
index a7c90765be1845f570c85c977e6c5d3246c87596..8576a9fbb3172a0614c82f35ea14b740e194e27b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -219,9 +219,6 @@ def update_tracked_fields!(request)
   has_many :project_authorizations, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent
   has_many :authorized_projects, through: :project_authorizations, source: :project
 
-  has_many :user_interacted_projects
-  has_many :project_interactions, through: :user_interacted_projects, source: :project, class_name: 'Project'
-
   has_many :snippets,                 dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent
   has_many :notes,                    dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent
   has_many :issues,                   dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent
diff --git a/app/models/user_interacted_project.rb b/app/models/user_interacted_project.rb
deleted file mode 100644
index 73bca3629602de5a6049af6997ea5c114a15b28c..0000000000000000000000000000000000000000
--- a/app/models/user_interacted_project.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# frozen_string_literal: true
-
-class UserInteractedProject < ApplicationRecord
-  extend SuppressCompositePrimaryKeyWarning
-
-  belongs_to :user
-  belongs_to :project
-
-  validates :project_id, presence: true
-  validates :user_id, presence: true
-
-  CACHE_EXPIRY_TIME = 1.day
-
-  class << self
-    def track(event)
-      # For events without a project, we simply don't care.
-      # An example of this is the creation of a snippet (which
-      # is not related to any project).
-      return unless event.project_id
-
-      attributes = {
-        project_id: event.project_id,
-        user_id: event.author_id
-      }
-
-      cached_exists?(**attributes) do
-        where(attributes).exists? || UserInteractedProject.insert_all([attributes], unique_by: %w[project_id user_id])
-        true
-      end
-    end
-
-    private
-
-    def cached_exists?(project_id:, user_id:, &block)
-      cache_key = "user_interacted_projects:#{project_id}:#{user_id}"
-      Rails.cache.fetch(cache_key, expires_in: CACHE_EXPIRY_TIME, &block)
-    end
-  end
-end
diff --git a/ee/app/services/security/orchestration/create_bot_service.rb b/ee/app/services/security/orchestration/create_bot_service.rb
index 171f83e490bcbacbeec532f95a7cb1220c27d19b..2d29ca3439b2ab0922f9031bfdb5bd45f52019fb 100644
--- a/ee/app/services/security/orchestration/create_bot_service.rb
+++ b/ee/app/services/security/orchestration/create_bot_service.rb
@@ -24,7 +24,7 @@ def execute
             bot_user_params
           ).execute
           Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification.temporary_ignore_tables_in_transaction(
-            %w[members notification_settings events user_interacted_projects projects], url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/424290'
+            %w[members notification_settings events projects], url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/424290'
           ) do
             if skip_authorization
               project.add_guest(bot_user)
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
index 6430fc2ffc898b435fa36db056fa9a6e1892bcb8..e142c35a681868f41d677494460814cf13851831 100644
--- a/spec/models/event_spec.rb
+++ b/spec/models/event_spec.rb
@@ -68,15 +68,6 @@
         end.not_to change { project.last_repository_updated_at }
       end
     end
-
-    describe 'after_create UserInteractedProject.track' do
-      let(:event) { build(:push_event, project: project, author: project.first_owner) }
-
-      it 'passes event to UserInteractedProject.track' do
-        expect(UserInteractedProject).to receive(:track).with(event)
-        event.save!
-      end
-    end
   end
 
   describe 'validations' do
diff --git a/spec/models/user_interacted_project_spec.rb b/spec/models/user_interacted_project_spec.rb
deleted file mode 100644
index aa038b06d8dd600765881044ed308345d5a52aeb..0000000000000000000000000000000000000000
--- a/spec/models/user_interacted_project_spec.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe UserInteractedProject do
-  let_it_be(:project) { create(:project) }
-  let_it_be(:author) { project.creator }
-
-  describe '.track' do
-    subject { described_class.track(event) }
-
-    let(:event) { build(:event, project: project, author: author) }
-
-    Event.actions.each_key do |action|
-      context "for all actions (event types)" do
-        let(:event) { build(:event, project: project, author: author, action: action) }
-
-        it 'creates a record' do
-          expect { subject }.to change { described_class.count }.from(0).to(1)
-        end
-      end
-    end
-
-    it 'sets project accordingly' do
-      subject
-      expect(described_class.first.project).to eq(event.project)
-    end
-
-    it 'sets user accordingly' do
-      subject
-      expect(described_class.first.user).to eq(event.author)
-    end
-
-    it 'only creates a record once per user/project' do
-      expect do
-        subject
-        described_class.track(event)
-      end.to change { described_class.count }.from(0).to(1)
-    end
-
-    describe 'with an event without a project' do
-      let(:event) { build(:event, project: nil) }
-
-      it 'ignores the event' do
-        expect { subject }.not_to change { described_class.count }
-      end
-    end
-  end
-
-  it { is_expected.to validate_presence_of(:project_id) }
-  it { is_expected.to validate_presence_of(:user_id) }
-end
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index 17dc7fa6dbf8164113dd6d6988f7530b34d1ad23..b32e64fda3db1ae3ce903288a8a52520ccadbfb4 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -7600,7 +7600,6 @@
 - './spec/models/user_custom_attribute_spec.rb'
 - './spec/models/user_detail_spec.rb'
 - './spec/models/user_highest_role_spec.rb'
-- './spec/models/user_interacted_project_spec.rb'
 - './spec/models/user_mentions/commit_user_mention_spec.rb'
 - './spec/models/user_mentions/issue_user_mention_spec.rb'
 - './spec/models/user_mentions/merge_request_user_mention_spec.rb'