Index: backend/subjects/utils.py
===================================================================
--- backend/subjects/utils.py	(revision 69e98955796a6fb01a2f288acd79748bdeae7a75)
+++ backend/subjects/utils.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
@@ -258,12 +258,13 @@
     return subjects_tag_scores
 
-def get_explanation_message(criterion, score):
+def get_explanation_message(criterion, score, student_vector):
     """Generates a human-readable explanation for a single matching criterion."""
 
+    study_effort = student_vector.get('study_effort', 0)
     # Thresholds to decide if a match is significant enough to be an "explanation"
     thresholds = {
         'tags': 0.7, 'evaluation': 0.5, 'technologies': 0.5,
         'professors': 0.5, 'assistants': 0.5, 'participant_score': 0.5,
-        'effort': 0
+        'effort': 0 # no threshold for effort, as it is binary
     }
 
@@ -271,4 +272,9 @@
         return None
 
+    if criterion == "effort":
+        if round(study_effort * 5) not in (2, 4):  # only show for effort==2 or 4
+            return None
+        return "Се совпаѓа со твојот вложен труд" if score == 1 else "Не се совпаѓа со твојот вложен труд"
+    
     messages = {
         'tags': f"Супер совпаѓање со твоите полиња на интерес ({score:.1%})",
@@ -278,5 +284,4 @@
         'assistants': f"Има асистенти кои ги сакаш ({score:.1%})",
         'participant_score': f"Одбран од многу студенти",
-        # 'effort': f"Се совпаѓа со твојот вложен труд" if score == 1 else f"Не се совпаѓа со твојот вложен труд",
     }
     return messages.get(criterion)
@@ -297,5 +302,5 @@
 
 
-def get_recommendations_with_details(subjects_tag_scores):
+def get_recommendations_with_details(subjects_tag_scores, student_vector):
     """
     Generates a sorted list of recommended subjects with detailed explanations.
@@ -320,5 +325,5 @@
             weighted_scores[criterion] = weighted_score
             
-            message = get_explanation_message(criterion, score)
+            message = get_explanation_message(criterion, score, student_vector)
             if message:
                 explanations.append(message)
Index: backend/subjects/views.py
===================================================================
--- backend/subjects/views.py	(revision 69e98955796a6fb01a2f288acd79748bdeae7a75)
+++ backend/subjects/views.py	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
@@ -55,5 +55,5 @@
             
             recommendations_with_details = get_recommendations_with_details(
-                subjects_scores
+                subjects_scores, student_vector
             )
 
Index: frontend/src/components/SubjectCatalog/SubjectCard.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectCard.tsx	(revision 69e98955796a6fb01a2f288acd79748bdeae7a75)
+++ frontend/src/components/SubjectCatalog/SubjectCard.tsx	(revision 3d5719a8d67c5c6702433bb42247497426d5951c)
@@ -60,5 +60,5 @@
 								recommendationDetails.match_percentage === 100 && isFirst
 									? "bg-green-50 text-green-800 border-green-200"
-									: recommendationDetails.match_percentage > 50
+									: recommendationDetails.match_percentage > 25
 									? "bg-blue-50 text-blue-800 border-blue-200"
 									: "bg-red-50 text-red-800 border-red-200"
@@ -77,5 +77,5 @@
 										: recommendationDetails.match_percentage >= 75
 										? "Многу добар избор"
-										: recommendationDetails.match_percentage >= 50
+										: recommendationDetails.match_percentage >= 25
 										? "Добар избор"
 										: "Не е најдобриот избор"}
