diff --git a/app/controllers/admin/university/organizations_controller.rb b/app/controllers/admin/university/organizations_controller.rb
index 9f297faf3ed37140a1e297f43baeaf0e4c7c91ef..47fa31a3bbeb21795f85454625af9ddb84c749e9 100644
--- a/app/controllers/admin/university/organizations_controller.rb
+++ b/app/controllers/admin/university/organizations_controller.rb
@@ -4,6 +4,7 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio
                               through_association: :organizations
 
   has_scope :for_search_term
+  has_scope :for_category
   has_scope :for_kind
 
   def index
diff --git a/app/controllers/admin/university/people_controller.rb b/app/controllers/admin/university/people_controller.rb
index eff89dcb3feda76da576015b4d9851f0525a45c0..6ad5728a0fa7dbd66ac80cb498b21201fcc7f59f 100644
--- a/app/controllers/admin/university/people_controller.rb
+++ b/app/controllers/admin/university/people_controller.rb
@@ -5,6 +5,7 @@ class Admin::University::PeopleController < Admin::University::ApplicationContro
 
 
   has_scope :for_search_term
+  has_scope :for_category
   has_scope :for_role
 
   def index
diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb
index 3541ed39ad45f26fff2ebe993c596e8c641a49f6..ada7676b205033aa8a50de8b6579c001abdb759b 100644
--- a/app/models/university/organization.rb
+++ b/app/models/university/organization.rb
@@ -74,6 +74,7 @@ class University::Organization < ApplicationRecord
 
   scope :ordered, -> { order(:name) }
   scope :for_kind, -> (kind) { where(kind: kind) }
+  scope :for_category, -> (category_id) { includes(:categories).where(categories: { id: category_id })}
   scope :for_search_term, -> (term) {
     where("
       unaccent(university_organizations.address) ILIKE unaccent(:term) OR
diff --git a/app/models/university/person.rb b/app/models/university/person.rb
index 9532be84ef4347a94077a1a2e9f913156d116bd2..f101aa1dd5e0413c8a94044b1a9178b58d2c4a78 100644
--- a/app/models/university/person.rb
+++ b/app/models/university/person.rb
@@ -141,6 +141,7 @@ class University::Person < ApplicationRecord
   scope :researchers,     -> { where(is_researcher: true) }
   scope :alumni,          -> { where(is_alumnus: true) }
   scope :for_role, -> (role) { where("is_#{role}": true) }
+  scope :for_category, -> (category_id) { includes(:categories).where(categories: { id: category_id })}
   scope :for_program, -> (program_id) {
     left_joins(:education_programs_as_administrator, :education_programs_as_teacher)
       .where(education_programs: { id: program_id })
diff --git a/app/services/filters/admin/university/organizations.rb b/app/services/filters/admin/university/organizations.rb
index bfd4cbb4f71f712f85ffec85ed951710781bc7db..117954fb751cbff2651cdc6e7f5d5dbf064a977f 100644
--- a/app/services/filters/admin/university/organizations.rb
+++ b/app/services/filters/admin/university/organizations.rb
@@ -3,6 +3,11 @@ module Filters
     def initialize(user)
       super
       add_search
+      if user.university.organizations_categories.any?
+        add :for_category,
+            user.university.organizations_categories.ordered,
+            I18n.t('filters.attributes.category')
+      end
       add :for_kind,
           ::University::Organization::kinds.keys.map { |r| { to_s: I18n.t("enums.university.organization.kind.#{r}"), id: r } },
           I18n.t('filters.attributes.kind')
diff --git a/app/services/filters/admin/university/people.rb b/app/services/filters/admin/university/people.rb
index 138f8291dd3e6557dc484137732a2ac52b7c9f5c..6b8d329cecf34b851daa9bf1a27d95ab53d9f464 100644
--- a/app/services/filters/admin/university/people.rb
+++ b/app/services/filters/admin/university/people.rb
@@ -3,6 +3,11 @@ module Filters
     def initialize(user)
       super
       add_search
+      if user.university.people_categories.any?
+        add :for_category,
+            user.university.people_categories.ordered,
+            I18n.t('filters.attributes.category')
+      end
       add :for_role,
           ::University::Person::LIST_OF_ROLES.map { |r| { to_s: I18n.t("activerecord.attributes.university/person.#{r}"), id: r } },
           I18n.t('filters.attributes.role')
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d579c70fc6e031c592d614e01d143f67c6c616ee..85a703d66c0b73e6628130a3174cc0a88e4a1dc9 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -190,6 +190,7 @@ en:
     remove: Remove image
   filters:
     attributes:
+      category: Filter by category
       date: Filter by date
       element: Filter by %{element}
       kind: Filter by kind
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 4f1a549dc85744cb787cda958c3c016f0b947f15..1e441444b1eb2e7cdc625f2a9c766e8050721f85 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -190,6 +190,7 @@ fr:
     remove: Supprimer l'image
   filters:
     attributes:
+      category: Filtrer par catégorie
       date: Filtrer par date
       element: Filtrer par %{element}
       kind: Filtrer par type