Index: backend/subjects/management/commands/format_prereqs.py
===================================================================
--- backend/subjects/management/commands/format_prereqs.py	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ backend/subjects/management/commands/format_prereqs.py	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -35,5 +35,4 @@
             _, val, _, _ = entry.values()
             if val in arr:
-                print(val)
                 self.stdout.write(self.style.ERROR(f"${val} is a duplicate value. Remove it before you rerun this script"))
                 exit(1)
Index: backend/subjects/management/data/subject_details.json
===================================================================
--- backend/subjects/management/data/subject_details.json	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ backend/subjects/management/data/subject_details.json	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -713,5 +713,5 @@
 		"semester": 3,
 		"season": "W",
-		"electiveFor": ["IE23", "IMB23", "PIT23", "SIIS23"],
+		"electiveFor": ["IE23", "IMB23", "PIT23"],
 		"professors": [
 			"Александра Поповска Митровиќ",
@@ -3186,27 +3186,4 @@
 		"isEasy": false
 	},
-	"Дипломска работа": {
-		"subject": "Дипломска работа",
-		"code": "F18L3S168, F23L3S168",
-		"level": 3,
-		"abstract": "Во рамките на дипломската работа, студентот се стекнува со вештина за дефинирање на проблем, и примена на стекнатото знаење на факултетот за дизајн и имплементација на решение на дадениот проблем. Дополнително, студентот успешно идентификува потреба од дополнителни знаења за решавање на проблемот. Исто така студнетот ги документира и презентира резултатите од дипломската работа",
-		"short": "ДР",
-		"prerequisite": {
-			"credits": 204
-		},
-		"activated": false,
-		"participants": [0, 0, 0],
-		"mandatory": true,
-		"mandatoryFor": ["SIIS23", "IMB23", "PIT23", "IE23", "KI23", "KN23"],
-		"semester": 8,
-		"season": "S",
-		"electiveFor": [],
-		"professors": ["Сите професори"],
-		"assistants": [],
-		"tags": [],
-		"technologies": [],
-		"evaluation": ["Project"],
-		"isEasy": false
-	},
 	"Дистрибуирани системи": {
 		"subject": "Дистрибуирани системи",
Index: backend/subjects/tag_graph.json
===================================================================
--- backend/subjects/tag_graph.json	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ backend/subjects/tag_graph.json	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -1,21 +1,75 @@
 {
-	"0": [6, 5, 10],
-	"1": [12, 18],
-	"2": [16, 12, 3, 4],
-	"3": [10, 13, 2],
-	"4": [16, 12, 2],
-	"5": [0, 10],
-	"6": [18, 0],
-	"7": [14],
-	"8": [9],
-	"9": [8, 10, 13],
-	"10": [13, 3, 9, 0, 5],
-	"11": [17],
-	"12": [1, 2, 4],
-	"13": [10, 3, 9],
-	"14": [7],
+	"0": [
+		[6, 1.5],
+		[5, 3],
+		[10, 3]
+	],
+	"1": [
+		[12, 0.75],
+		[18, 1.5]
+	],
+	"2": [
+		[16, 1.5],
+		[12, 2],
+		[3, 1],
+		[4, 1]
+	],
+	"3": [
+		[10, 1],
+		[13, 0.33],
+		[2, 0.5]
+	],
+	"4": [
+		[16, 1],
+		[12, 2],
+		[2, 1]
+	],
+	"5": [
+		[0, 3],
+		[10, 3]
+	],
+	"6": [
+		[18, 2],
+		[0, 1.5]
+	],
+	"7": [[14, 1]],
+	"8": [[9, 1]],
+	"9": [
+		[8, 1],
+		[10, 2],
+		[13, 2]
+	],
+	"10": [
+		[13, 1],
+		[3, 2],
+		[9, 2],
+		[0, 3],
+		[5, 3]
+	],
+	"11": [[17, 1]],
+	"12": [
+		[1, 1.5],
+		[2, 1],
+		[4, 2]
+	],
+	"13": [
+		[10, 1],
+		[3, 0.5],
+		[9, 2]
+	],
+	"14": [[7, 1]],
 	"15": [],
-	"16": [4, 2],
-	"17": [11, 18],
-	"18": [6, 1, 17]
+	"16": [
+		[4, 1],
+		[2, 1]
+	],
+	"17": [
+		[11, 1],
+		[18, 2]
+	],
+	"18": [
+		[6, 2],
+		[1, 1.5],
+		[17, 2]
+	]
 }
Index: backend/subjects/tag_graph.py
===================================================================
--- backend/subjects/tag_graph.py	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ backend/subjects/tag_graph.py	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -24,31 +24,52 @@
 
 EDGES = [
-    ("Mathematics", "Physics"),
-    ("Web Development", "Databases"),
-    ("Databases", "AI / ML"),
-    ("Data Science", "AI / ML"),
-    ("Cybersecurity", "Systems Infrastructure"),
-    ("Computer Architecture", "Systems Infrastructure"),
-    ("Game Development", "Embedded Systems"),
-    ("Cloud Engineering & DevOps", "Networking"),
-    ("Computer Science", "Mathematics"),
-    ("Computer Science", "Physics"),
-    ("Computer Architecture", "Networking"),
-    ("Computer Architecture", "Computer Science"),
-    ("UI/UX & Digital Media", "Multimedia"),
-    ("Societal Skills", "Education"),
-    ("Web Development", "Cloud Engineering & DevOps"),
-    ("Game Development", "Mathematics"),
-    ("Game Development", "Physics"),
-    ("Web Development", "UI/UX & Digital Media"),
-    ("Cybersecurity", "Networking"),
-    ("Cybersecurity", "Computer Architecture"),
-    ("AI / ML", "Mathematics"),
-    ("Data Science", "Mathematics")
+    ("Mathematics", "Physics", 1),
+    ("Physics", "Mathematics", 1),
+    ("Web Development", "Databases", 2),
+    ("Databases", "Web Development", 2),
+    ("Databases", "AI / ML", 1.5),
+    ("AI / ML", "Databases", 1.5),
+    ("Data Science", "AI / ML", 3),
+    ("AI / ML", "Data Science", 3),
+    ("Cybersecurity", "Systems Infrastructure", 1),
+    ("Systems Infrastructure", "Cybersecurity", 1),
+    ("Computer Architecture", "Systems Infrastructure", 1.5),
+    ("Systems Infrastructure", "Computer Architecture", 1),
+    ("Game Development", "Embedded Systems", 1),
+    ("Embedded Systems", "Game Development", 1),
+    ("Cloud Engineering & DevOps", "Networking", 0.75),
+    ("Networking", "Cloud Engineering & DevOps", 1.5),
+    ("Computer Science", "Mathematics", 1),
+    ("Mathematics", "Computer Science", 2),
+    ("Computer Science", "Physics", 0.33),
+    ("Physics", "Computer Science", 0.5),
+    ("Computer Architecture", "Networking", 2),
+    ("Networking", "Computer Architecture", 1),
+    ("Computer Architecture", "Computer Science", 1),
+    ("Computer Science", "Computer Architecture", 0.5),
+    ("UI/UX & Digital Media", "Multimedia", 1),
+    ("Multimedia", "UI/UX & Digital Media", 1),
+    ("Societal Skills", "Education", 1),
+    ("Education", "Societal Skills", 1),
+    ("Web Development", "Cloud Engineering & DevOps", 1.5),
+    ("Cloud Engineering & DevOps", "Web Development", 1.5),
+    ("Game Development", "Mathematics", 2),
+    ("Mathematics", "Game Development", 2),
+    ("Game Development", "Physics", 2),
+    ("Physics", "Game Development", 2),
+    ("Web Development", "UI/UX & Digital Media", 2),
+    ("UI/UX & Digital Media", "Web Development", 2),
+    ("Cybersecurity", "Networking", 2),
+    ("Networking", "Cybersecurity", 2),
+    ("Cybersecurity", "Computer Architecture", 1),
+    ("Computer Architecture", "Cybersecurity", 1),
+    ("AI / ML", "Mathematics", 3),
+    ("Mathematics", "AI / ML", 3),
+    ("Data Science", "Mathematics", 3),
+    ("Mathematics", "Data Science", 3)
 ]
 
-def add(tag1, tag2):
-    tag_graph[tag1].append(tag2)
-    tag_graph[tag2].append(tag1)
+def add(tag1, tag2, weight):
+    tag_graph[tag1].append((tag2, weight))
 
 tag_graph = {}
@@ -57,5 +78,5 @@
 
 for edge in EDGES:
-    add(edge[0], edge[1])
+    add(edge[0], edge[1], edge[2])
 
 tag_to_col_index = {}
@@ -70,5 +91,6 @@
     
     for i, val in enumerate(tag_graph[key]):
-        tag_graph[key][i] = tag_to_col_index[val]
+        n, w = val
+        tag_graph[key][i] = (tag_to_col_index[n], w)
     
     final_tag_graph[key_index] = tag_graph[key]
Index: backend/subjects/utils.py
===================================================================
--- backend/subjects/utils.py	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ backend/subjects/utils.py	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -1,2 +1,3 @@
+from copy import deepcopy
 from subjects.consts import SUBJECTS_VECTOR
 from subjects.management.commands import subjects_vector
@@ -33,4 +34,6 @@
     if study_effort < 3:
         all_subjects = all_subjects.exclude(subject_info__semester__gt=current_year * 2)
+        if study_effort == 1:
+            all_subjects = all_subjects.filter(subject_info__is_easy=True)
     elif study_effort == 3:
         all_subjects = all_subjects.filter(
@@ -40,4 +43,6 @@
     else:
         all_subjects = all_subjects.filter(subject_info__semester__gte=current_year * 2)
+        if study_effort == 5:
+            all_subjects = all_subjects.exclude(subject_info__is_easy=True)
 
     if level_credits[0] >= 6:
@@ -118,10 +123,11 @@
         else:
             neighbors = tag_graph[str(i)]
+            total_weight = sum(weight for _, weight in neighbors)
             if student_tags[i] == 1:
-                for neighbor in neighbors:
-                    if subject_tags[neighbor] == 1: score += 1 / len(neighbors) * BIAS_STUDENT_HAS_ONE
+                for neighbor in neighbors: 
+                    if subject_tags[neighbor[0]] == 1: score += neighbor[1] / total_weight * BIAS_STUDENT_HAS_ONE
             else:
                 for neighbor in neighbors:
-                    if student_tags[neighbor] == 1: score += 1 / len(neighbors) * BIAS_SUBJECT_HAS_ONE
+                    if student_tags[neighbor[0]] == 1: score += neighbor[1] / total_weight * BIAS_SUBJECT_HAS_ONE
     
     return score / tot_count if tot_count != 0 else 0
@@ -154,7 +160,6 @@
         study_effort = student_vector["study_effort"]
 
-        filtered_subjects_vector[subject]['effort'] = (1 - study_effort) * values['isEasy']
-
-        # sorry about this!!!
+        # filtered_subjects_vector[subject]['effort'] = (1 - study_effort) * values['isEasy']
+
         # if 0 < study_effort < 1:
         #     filtered_subjects_vector[subject]['effort'] = (1 - study_effort) * values['isEasy']
@@ -164,6 +169,13 @@
         # vo sprotivno 1 deka se zamara i e tezok i obratno ne se zamara i e lesen 
         # else:
-        #     filtered_subjects_vector[subject]['effort'] = study_effort * (1 - values['isEasy'])
-
+        #     filtered_subjects_vector[subject]['effort'] = 0
+        
+        if study_effort == 0.25 and values['isEasy'] or study_effort == 0.75 and not values['isEasy']:
+            filtered_subjects_vector[subject]['effort'] = 1
+        else:
+            # ova pravi smisla poso za 3 znaci deka mu e seedno, a ako e 1 ili 5 veke se isfiltrirani lesni/nelesni predmeti soodvetno
+            # sto znaci deka toj faktor e veke zemen predvid
+            filtered_subjects_vector[subject]['effort'] = 0
+            
         filtered_subjects_vector[subject]['activated'] = 1
 
@@ -173,8 +185,8 @@
 
 WEIGHTS = {
-    "professors": 0.04,
-    "technologies": 0.04,
-    "tags": 0.5,
-    "evaluation": 0.1, 
+    "professors": 0.065,
+    "technologies": 0.065,
+    "tags": 0.4,
+    "evaluation": 0.15, 
     "effort": 0.3,
     "activated": 0.01,
Index: frontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ frontend/src/components/StudentForm/StudentForm.tsx	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -165,4 +165,12 @@
 			(s) => s.id === subject.id
 		);
+		const totalPassed = Object.values(passedSubjectsPerSemester).reduce(
+			(acc, subjects) => acc + subjects.length,
+			0
+		);
+		if (totalPassed >= 40) {
+			console.log("olabavi");
+			return;
+		}
 		if (exists) {
 			setPassedSubjectsPerSemester({
@@ -291,11 +299,23 @@
 		: [];
 
-	const filteredProfessors = distinctSubjectData.professors.filter(
-		(prof) =>
-			professorsSearchTerm == "" ||
-			prof
-				.toLowerCase()
-				.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase())
-	);
+	const filteredProfessors = [
+		...favoriteProfs.filter(
+			(prof) =>
+				professorsSearchTerm === "" ||
+				prof
+					.toLowerCase()
+					.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase())
+		),
+		...distinctSubjectData.professors
+			.filter(
+				(prof) =>
+					!favoriteProfs.includes(prof) &&
+					(professorsSearchTerm === "" ||
+						prof
+							.toLowerCase()
+							.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase()))
+			)
+			.sort((a, b) => a.localeCompare(b)),
+	];
 
 	if (isLoading) {
@@ -381,41 +401,4 @@
 				<h3 className="text-lg font-medium text-gray-900 mb-2 flex items-center gap-2">
 					Година на студии
-					<span
-						className="relative group cursor-pointer"
-						tabIndex={0}
-						aria-label="Објаснување за година на студии"
-					>
-						<svg
-							xmlns="http://www.w3.org/2000/svg"
-							width="18"
-							height="18"
-							fill="currentColor"
-							viewBox="0 0 20 20"
-							className="text-gray-400"
-						>
-							<circle
-								cx="10"
-								cy="10"
-								r="9"
-								stroke="currentColor"
-								strokeWidth="2"
-								fill="none"
-							/>
-							<text
-								x="10"
-								y="15"
-								textAnchor="middle"
-								fontSize="13"
-								fill="currentColor"
-							>
-								?
-							</text>
-						</svg>
-						<span className="absolute left-1/2 -translate-x-1/2 mt-2 w-64 bg-gray-800 text-white text-xs rounded px-3 py-2 opacity-0 group-hover:opacity-100 group-focus:opacity-100 pointer-events-none transition-opacity z-10">
-							Ако моментално е јуни/јули/август/септември, за да добиеш
-							соодветни препораки избери дека си твојата година + 1. Пример ако
-							си 2 година и е јуни, избери дека си 3 година.
-						</span>
-					</span>
 				</h3>
 				<select
@@ -446,4 +429,5 @@
 				validationErrors={validationErrors}
 				passedSubjectsPerSemester={passedSubjectsPerSemester}
+				setPassedSubjectsPerSemester={setPassedSubjectsPerSemester}
 				invalidSubjects={invalidSubjects}
 			/>
Index: frontend/src/components/StudentForm/SubjectsSelector.tsx
===================================================================
--- frontend/src/components/StudentForm/SubjectsSelector.tsx	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ frontend/src/components/StudentForm/SubjectsSelector.tsx	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -1,2 +1,3 @@
+import { Dispatch, SetStateAction } from "react";
 import { StudyTrack, Subject } from "../types";
 import { LatinToCyrillic } from "./utils";
@@ -12,4 +13,7 @@
 	validationErrors: { [key: string]: string };
 	passedSubjectsPerSemester: Record<number, Subject[]>;
+	setPassedSubjectsPerSemester: Dispatch<
+		SetStateAction<Record<number, Subject[]>>
+	>;
 	invalidSubjects: Subject[];
 }
@@ -41,4 +45,5 @@
 	validationErrors,
 	passedSubjectsPerSemester,
+	setPassedSubjectsPerSemester,
 	invalidSubjects,
 }: SubjectsSelectorProps) {
@@ -103,7 +108,59 @@
 										{semesterMandatory.length > 0 && (
 											<div>
-												<h5 className="text-sm font-medium text-gray-700 mb-2">
-													Задолжителни предмети
-												</h5>
+												<div className="flex items-center gap-4">
+													<h5 className="text-sm font-medium text-gray-700 mb-2">
+														Задолжителни предмети
+													</h5>
+													<button
+														className="mb-2 px-3 py-2 border rounded-md transition-colors duration-200 text-sm text-white bg-blue-500 hover:bg-blue-800"
+														disabled={filteredMandatorySubjects.length === 0}
+														type="button"
+														onClick={() => {
+															const semesterMandatory =
+																filteredMandatorySubjects.filter(
+																	(subject) =>
+																		subject.subject_info.semester === semester
+																);
+
+															const allSelected = semesterMandatory.every(
+																(subject) =>
+																	(
+																		passedSubjectsPerSemester[semester] || []
+																	).some((s) => s.id === subject.id)
+															);
+
+															if (allSelected) {
+																// Deselect all semester mandatory subjects
+																setPassedSubjectsPerSemester((prev) => ({
+																	...prev,
+																	[semester]: (prev[semester] || []).filter(
+																		(subject) =>
+																			!semesterMandatory.some(
+																				(mandatory) =>
+																					mandatory.id === subject.id
+																			)
+																	),
+																}));
+															} else {
+																// Add missing semester mandatory subjects
+																setPassedSubjectsPerSemester((prev) => {
+																	const existing = prev[semester] || [];
+																	const newSubjects = semesterMandatory.filter(
+																		(mandatory) =>
+																			!existing.some(
+																				(s) => s.id === mandatory.id
+																			)
+																	);
+																	return {
+																		...prev,
+																		[semester]: [...existing, ...newSubjects],
+																	};
+																});
+															}
+														}}
+													>
+														Одбери ги сите
+													</button>
+												</div>
 												<div className="flex flex-wrap gap-2">
 													{semesterMandatory.map((subject) => {
Index: frontend/src/pages/Home.tsx
===================================================================
--- frontend/src/pages/Home.tsx	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ frontend/src/pages/Home.tsx	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -4,130 +4,130 @@
 
 export default function Homepage() {
-  const { isAuthenticated } = useAuth();
-  return (
-    <div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100">
-      {/* Main Content */}
-      <main className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
-        {/* Hero Section */}
-        <div className="text-center mb-16">
-          <h2 className="text-4xl font-bold text-gray-900 mb-4">
-            Најди го изборниот предмет за тебе
-          </h2>
-          <p className="text-xl text-gray-600 max-w-2xl mx-auto">
-            ИзбериИзборен е веб апликација која помага на студентите на ФИНКИ да
-            се запознаат со изборните предмети кои ги нуди факултетот, и да им
-            помогне да го изберат најдобриот.
-          </p>
-        </div>
+	const { isAuthenticated } = useAuth();
+	return (
+		<div className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100">
+			{/* Main Content */}
+			<main className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
+				{/* Hero Section */}
+				<div className="text-center mb-16">
+					<h2 className="text-4xl font-bold text-gray-900 mb-4">
+						Најди го изборниот предмет за тебе
+					</h2>
+					<p className="text-xl text-gray-600 max-w-2xl mx-auto">
+						ИзбериИзборен е веб апликација која помага на студентите на ФИНКИ да
+						се запознаат со изборните предмети кои ги нуди факултетот и да им
+						помогне да го изберат најдобриот.
+					</p>
+				</div>
 
-        <section className="bg-white rounded-2xl p-8 shadow-sm mb-8">
-          <div className="flex items-start space-x-4">
-            <div className="flex-shrink-0">
-              <div className="w-12 h-12 bg-red-100 rounded-xl flex items-center justify-center">
-                <Users className="h-6 w-6 text-red-600" />
-              </div>
-            </div>
-            <div>
-              <h3 className="text-xl font-semibold text-gray-900 mb-3">
-                Зошто ИзбериИзборен?
-              </h3>
-              <p className="text-gray-600 leading-relaxed">
-                Студентите на ФИНКИ се соочуваат со огромен избор при
-                селекцијата на изборни предмети. Со многу достапни опции,
-                ограничени описи на предметите и минимален увид во тоа што
-                всушност се изучува, донесувањето информирана одлука е речиси
-                невозможно. Многу студенти избираат на случаен избор или врз
-                основа на нецелосни информации, што често доведува до
-                разочарување и избирање нешто несоодветно за нив. Ова е
-                проблемот којшто ние го решаваме.
-              </p>
-            </div>
-          </div>
-        </section>
+				<section className="bg-white rounded-2xl p-8 shadow-sm mb-8">
+					<div className="flex items-start space-x-4">
+						<div className="flex-shrink-0">
+							<div className="w-12 h-12 bg-red-100 rounded-xl flex items-center justify-center">
+								<Users className="h-6 w-6 text-red-600" />
+							</div>
+						</div>
+						<div>
+							<h3 className="text-xl font-semibold text-gray-900 mb-3">
+								Зошто ИзбериИзборен?
+							</h3>
+							<p className="text-gray-600 leading-relaxed">
+								Студентите на ФИНКИ се соочуваат со огромен избор при
+								селекцијата на изборни предмети. Со многу достапни опции,
+								ограничени описи на предметите и минимален увид во тоа што
+								всушност се изучува, донесувањето информирана одлука е речиси
+								невозможно. Многу студенти избираат на случаен избор или врз
+								основа на нецелосни информации, што често доведува до
+								разочарување и избирање нешто несоодветно за нив. Ова е
+								проблемот којшто ние го решаваме.
+							</p>
+						</div>
+					</div>
+				</section>
 
-        <section className="bg-white rounded-2xl p-8 shadow-sm mb-8">
-          <div className="flex items-start space-x-4">
-            <div className="flex-shrink-0">
-              <div className="w-12 h-12 bg-green-100 rounded-xl flex items-center justify-center">
-                <Lightbulb className="h-6 w-6 text-green-600" />
-              </div>
-            </div>
-            <div className="flex-1">
-              <h3 className="text-xl font-semibold text-gray-900 mb-3">
-                Како работи нашиот алгоритам?
-              </h3>
-              <p className="text-gray-600 leading-relaxed mb-4">
-                Нашиот систем ги анализира вашите положени предмети, интереси и
-                преференци, и ги споредува со деталните информации за сите
-                достапни предмети што може да ги запишете. Секој релевантен
-                фактор добива соодветна тежина при анализата. На крај, системот
-                ги прикажува шесте најсоодветни предмети, подредени според
-                нивната усогласеност со вашите параметри — почнувајќи од
-                најпрепорачаниот.
-              </p>
+				<section className="bg-white rounded-2xl p-8 shadow-sm mb-8">
+					<div className="flex items-start space-x-4">
+						<div className="flex-shrink-0">
+							<div className="w-12 h-12 bg-green-100 rounded-xl flex items-center justify-center">
+								<Lightbulb className="h-6 w-6 text-green-600" />
+							</div>
+						</div>
+						<div className="flex-1">
+							<h3 className="text-xl font-semibold text-gray-900 mb-3">
+								Како работи нашиот алгоритам?
+							</h3>
+							<p className="text-gray-600 leading-relaxed mb-4">
+								Нашиот систем ги анализира вашите положени предмети, интереси и
+								преференци и ги споредува со деталните информации за сите
+								достапни предмети што може да ги запишете. Секој релевантен
+								фактор добива соодветна тежина при анализата. На крај, системот
+								ги прикажува шесте најсоодветни предмети, подредени според
+								нивната усогласеност со вашите параметри, почнувајќи од
+								најпрепорачаниот.
+							</p>
 
-              {isAuthenticated ? (
-                <Link
-                  to="/recommendations"
-                  onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
-                  className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
-                >
-                  Види препораки
-                  <ArrowRight className="h-4 w-4" />
-                </Link>
-              ) : (
-                <div className="bg-gray-50 rounded-lg p-4">
-                  <p className="text-gray-600 font-medium">
-                    <Link
-                      to="/login"
-                      onClick={() =>
-                        window.scrollTo({ top: 0, behavior: "auto" })
-                      }
-                      className="text-blue-600 hover:underline font-semibold"
-                    >
-                      Најавете се
-                    </Link>{" "}
-                    за да добиете персонализирани препораки и да го најдете
-                    најсоодветниот предмет за вас.
-                  </p>
-                </div>
-              )}
-            </div>
-          </div>
-        </section>
+							{isAuthenticated ? (
+								<Link
+									to="/recommendations"
+									onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
+									className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
+								>
+									Види препораки
+									<ArrowRight className="h-4 w-4" />
+								</Link>
+							) : (
+								<div className="bg-gray-50 rounded-lg p-4">
+									<p className="text-gray-600 font-medium">
+										<Link
+											to="/login"
+											onClick={() =>
+												window.scrollTo({ top: 0, behavior: "auto" })
+											}
+											className="text-blue-600 hover:underline font-semibold"
+										>
+											Најавете се
+										</Link>{" "}
+										за да добиете персонализирани препораки и да го најдете
+										најсоодветниот предмет за вас.
+									</p>
+								</div>
+							)}
+						</div>
+					</div>
+				</section>
 
-        <section className="bg-white rounded-2xl p-8 shadow-sm">
-          <div className="flex items-start space-x-4">
-            <div className="flex-shrink-0">
-              <div className="w-12 h-12 bg-blue-100 rounded-xl flex items-center justify-center">
-                <BookOpen className="h-6 w-6 text-blue-600" />
-              </div>
-            </div>
-            <div className="flex-1">
-              <h3 className="text-xl font-semibold text-gray-900 mb-3">
-                База на сите предмети на ФИНКИ
-              </h3>
-              <p className="text-gray-600 leading-relaxed mb-4">
-                Прелистајте ги сите предмети што факултетот моментално ги нуди.
-                За секој предмет нудиме информации како што се начинот на
-                полагање, изучуваните технологии, професорите и асистентите,
-                предусловите и слично. Достапни се опции за пребарување и
-                филтрирање за полесна и поефикасна навигација низ базата.
-              </p>
+				<section className="bg-white rounded-2xl p-8 shadow-sm">
+					<div className="flex items-start space-x-4">
+						<div className="flex-shrink-0">
+							<div className="w-12 h-12 bg-blue-100 rounded-xl flex items-center justify-center">
+								<BookOpen className="h-6 w-6 text-blue-600" />
+							</div>
+						</div>
+						<div className="flex-1">
+							<h3 className="text-xl font-semibold text-gray-900 mb-3">
+								База на сите предмети на ФИНКИ
+							</h3>
+							<p className="text-gray-600 leading-relaxed mb-4">
+								Прелистајте ги сите предмети што факултетот моментално ги нуди.
+								За секој предмет нудиме информации како што се начинот на
+								полагање, изучуваните технологии, професорите и асистентите,
+								предусловите и слично. Достапни се опции за пребарување и
+								филтрирање за полесна и поефикасна навигација низ базата.
+							</p>
 
-              <Link
-                to="/subjects"
-                onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
-                className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
-              >
-                <span>Види предмети</span>
-                <ArrowRight className="h-4 w-4" />
-              </Link>
-            </div>
-          </div>
-        </section>
-      </main>
+							<Link
+								to="/subjects"
+								onClick={() => window.scrollTo({ top: 0, behavior: "auto" })}
+								className="inline-flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-900 transition-colors font-medium"
+							>
+								<span>Види предмети</span>
+								<ArrowRight className="h-4 w-4" />
+							</Link>
+						</div>
+					</div>
+				</section>
+			</main>
 
-      {/* Footer
+			{/* Footer
 			<footer className="bg-white border-t border-gray-200 mt-16">
 				<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
@@ -140,5 +140,5 @@
 				</div>
 			</footer> */}
-    </div>
-  );
+		</div>
+	);
 }
Index: frontend/src/pages/Recommendations.tsx
===================================================================
--- frontend/src/pages/Recommendations.tsx	(revision 9b3c10861743ac5bad03d5091d4ee9eefcda1c6a)
+++ frontend/src/pages/Recommendations.tsx	(revision 5965585b1da4c5b8b21d5ebd26f7dfe963eb3502)
@@ -14,4 +14,5 @@
 	const [isLoading, setIsLoading] = useState(false);
 	const [showModal, setShowModal] = useState(false);
+	const [hasSearched, setHasSearched] = useState(false);
 
 	const mapToSeasonInt = (season: "winter" | "summer" | "all") => {
@@ -33,9 +34,10 @@
 		} finally {
 			setIsLoading(false);
+			setHasSearched(true);
 		}
 	};
 
 	// need to fetch subject data so that we can compare the subject IDs (prerequisites store IDs, but we need names)
-	//  in the modals for the recommendations
+	// in the modals for the recommendations
 	useEffect(() => {
 		const fetchData = async () => {
@@ -96,24 +98,17 @@
 					<h1 className="text-4xl font-bold text-gray-800 mb-2">Препораки</h1>
 					<p className="text-gray-600 text-lg">
-						Предметите што ќе ги добиете од алгоритамот се базирани на она што
-						сте го пополниле во формата.
+						Предметите што ќе ги добиеш од алгоритамот се базирани на она што си
+						го пополнил во формата.
 						<br />
-						Тие се подредени според тоа колку вашите интереси се совпаѓаат со
+						Тие се подредени според тоа колку твоите интереси се совпаѓаат со
 						она што го нудат предметите.
 					</p>
 				</div>
 
-				<div className="bg-blue-50 border border-blue-200 rounded-lg p-6 text-center hover:bg-blue-100 transition-colors duration-200">
-					<p className="text-gray-700 mb-3">Избран семестар: </p>
-					<p className="text-2xl font-semibold text-gray-800">
-						{getSeasonText()}
-					</p>
-				</div>
-
-				<button
-					onClick={cycleSeason}
-					className="bg-blue-500 hover:bg-blue-600 text-white px-8 py-4 rounded-lg text-lg font-medium hover:scale-105 transition-all duration-200 shadow-md hover:shadow-lg"
-				>
-					Промени семестар
+				<button onClick={cycleSeason}>
+					<div className="bg-blue-500 border border-blue-200 rounded-lg p-6 font-semibold text-white text-center hover:bg-blue-800 transition-colors duration-200">
+						<p className="text-white mb-3">Избран семестар: </p>
+						<p className="text-2xl">{getSeasonText()}</p>
+					</div>
 				</button>
 
@@ -151,14 +146,16 @@
 						</div>
 
-						<div className="grid grid-cols-1 lg:grid-cols-2 gap-3 lg:h-[1100px]">
+						<div
+							// className={`grid grid-cols-1 lg:grid-cols-2 gap-3 lg:h-[1150px]`}
+							className={`grid grid-cols-1 lg:grid-cols-2 gap-3 auto-rows-[300px] relative pb-4`}
+						>
 							{recommendations.map((subject, index) => (
 								<div
 									key={subject.id}
 									// Added the `group` class here to enable group-hover functionality.
-									className={`group border border-gray-200 rounded-lg overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-200 relative ${
+									className={`h-56 border border-gray-200 rounded-lg overflow-hidden shadow-sm hover:shadow-md transition-shadow duration-200 relative ${
 										index % 2 === 0 ? "self-start" : "self-end"
 									}`}
 									style={{
-										height: "70%",
 										animationDelay: `${index * 100}ms`,
 										animation: "fadeInUp 0.6s ease-out forwards",
@@ -175,14 +172,12 @@
 										</div>
 
-										{/* Badge Logic: Prioritizes the warning, and shows the selected badge only on hover. */}
-										{/* 1. First, check for the most critical warning. */}
 										<div className="absolute inset-0 flex items-center justify-center pointer-events-none">
 											{subject.subject_info.activated === false ? (
-												<span className="bg-red-500 text-white font-bold px-3 py-1 rounded-full shadow-lg text-xs opacity-0 group-hover:opacity-100 transition-opacity duration-300 z-10">
-													⚠️ Никогаш не бил активиран!
+												<span className="bg-red-500 text-white font-bold px-3 py-1 rounded-full shadow-lg text-xs transition-opacity duration-300 z-10">
+													Никогаш не бил активиран!
 												</span>
 											) : index === 0 ? (
-												<span className="bg-blue-600 text-white font-bold px-3 py-1 rounded-full shadow-lg text-xs opacity-0 group-hover:opacity-100 transition-opacity duration-300 z-10">
-													⭐ Најсоодветен!
+												<span className="bg-blue-600 text-white font-bold px-3 py-1 rounded-full shadow-lg text-xs transition-opacity duration-300 z-10">
+													Најсоодветен!
 												</span>
 											) : null}
@@ -224,6 +219,8 @@
 							))}
 						</div>
-					</div>
-				) : (
+						{/* Fade gradient at bottom-right to signal scrollability */}
+						<div className="absolute bottom-0 right-0 h-24 w-full pointer-events-none bg-gradient-to-t from-gray-50 to-transparent" />
+					</div>
+				) : !hasSearched ? (
 					<div className="flex flex-col items-center justify-center h-full text-center">
 						<div className="text-gray-400 mb-6">
@@ -250,4 +247,13 @@
 						</p>
 					</div>
+				) : (
+					<div className="flex flex-col items-center justify-center h-full text-center">
+						<h3 className="text-2xl font-bold text-gray-600 mb-4">
+							Моментално немаме препораки за тебе :(
+						</h3>
+						<p className="text-gray-500 text-lg max-w-md">
+							Направи промени во профилот и обиди се повторно.
+						</p>
+					</div>
 				)}
 			</div>
