diff --git a/scripts/set_assignees.py b/scripts/set_assignees.py
index 4253773..15564f0 100755
--- a/scripts/set_assignees.py
+++ b/scripts/set_assignees.py
@@ -55,7 +55,6 @@
     log(f"working on https://github.com/{args.org}/{args.repo}/pull/{pr.number} : {pr.title}")
 
     labels = set()
-    collab = set()
     area_counter = defaultdict(int)
     maint = defaultdict(int)
 
@@ -75,19 +74,24 @@
             for a in areas:
                 area_counter[a.name] += 1
                 labels.update(a.labels)
-                collab.update(a.collaborators)
-                collab.update(a.maintainers)
                 for p in a.maintainers:
                     maint[p] += 1
 
     ac = dict(sorted(area_counter.items(), key=lambda item: item[1], reverse=True))
     log(f"Area matches: {ac}")
     log(f"labels: {labels}")
-    log(f"collab: {collab}")
     if len(labels) > 10:
         log(f"Too many labels to be applied")
         return
 
+    # Create a list of collaborators ordered by the area match
+    collab = list()
+    for a in ac:
+        collab += maintainer_file.areas[a].maintainers
+        collab += maintainer_file.areas[a].collaborators
+    collab = list(dict.fromkeys(collab))
+    log(f"collab: {collab}")
+
     sm = dict(sorted(maint.items(), key=lambda item: item[1], reverse=True))
 
     log(f"Submitted by: {pr.user.login}")
@@ -168,13 +172,20 @@
             except UnknownObjectException as e:
                 log(f"Can't get user '{c}', account does not exist anymore? ({e})")
 
-        if reviewers:
-            try:
-                log(f"adding reviewers {reviewers}...")
-                if not args.dry_run:
-                    pr.create_review_request(reviewers=reviewers)
-            except GithubException:
-                log("cant add reviewer")
+        if len(existing_reviewers) < 15:
+            reviewer_vacancy = 15 - len(existing_reviewers)
+            reviewers = reviewers[:reviewer_vacancy]
+
+            if reviewers:
+                try:
+                    log(f"adding reviewers {reviewers}...")
+                    if not args.dry_run:
+                        pr.create_review_request(reviewers=reviewers)
+                except GithubException:
+                    log("cant add reviewer")
+        else:
+            log("not adding reviewers because the existing reviewer count is greater than or "
+                "equal to 15")
 
     ms = []
     # assignees
