Index: backend/auth_form/migrations/0016_student_assistants.py
===================================================================
--- backend/auth_form/migrations/0016_student_assistants.py	(revision dc161479c763185986bcc2afdae011784218d05f)
+++ backend/auth_form/migrations/0016_student_assistants.py	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -0,0 +1,19 @@
+# Generated by Django 5.1.7 on 2025-06-10 10:09
+
+import django.contrib.postgres.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('auth_form', '0015_rename_preferred_evaluation_student_evaluation_and_more'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='student',
+            name='assistants',
+            field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), blank=True, null=True, size=None),
+        ),
+    ]
Index: backend/auth_form/models.py
===================================================================
--- backend/auth_form/models.py	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ backend/auth_form/models.py	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -63,4 +63,5 @@
     evaluation = ArrayField(models.CharField(max_length=16), null=True, blank=True)
     professors = ArrayField(models.CharField(max_length=64), null=True, blank=True)
+    assistants = ArrayField(models.CharField(max_length=64), null=True, blank=True)
     passed_subjects = models.ManyToManyField('subjects.subject', related_name="passed_subjects", blank=True)
     has_extracurricular = models.BooleanField(default=False, null=True)
Index: backend/subjects/consts.py
===================================================================
--- backend/subjects/consts.py	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ backend/subjects/consts.py	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -3,5 +3,6 @@
 
 WEIGHTS = {
-    "professors": 0.065,
+    "professors": 0.0325,
+    "assistants": 0.0325,
     "technologies": 0.065,
     "tags": 0.4,
@@ -12,3 +13,14 @@
 }
 
+# WEIGHTS = {
+#     "professors": 0.065,
+#     "assistants": 0,
+#     "technologies": 0.065,
+#     "tags": 0.4,
+#     "evaluation": 0.15, 
+#     "effort": 0.3,
+#     "activated": 0.01,
+#     "participant_score": 0.01,
+# }
+
 NUMBER_OF_SUGGESTIONS = 6
Index: backend/subjects/utils.py
===================================================================
--- backend/subjects/utils.py	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ backend/subjects/utils.py	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -76,5 +76,4 @@
     student_vector['index'] = student.index
     for key in vocabulary:
-        if key == "assistants": continue
         student_values = getattr(student, key, [])
 
Index: frontend/src/components/StudentForm/FieldButton.tsx
===================================================================
--- frontend/src/components/StudentForm/FieldButton.tsx	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/components/StudentForm/FieldButton.tsx	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -6,5 +6,5 @@
 	state: string[];
 	stateSetter: Dispatch<SetStateAction<any[]>>;
-	field: "prof" | "tech" | "eval" | "domains";
+	field: "prof" | "tech" | "eval" | "domains" | "ass";
 	isSelected: boolean;
 	isDisabled: boolean;
@@ -15,4 +15,5 @@
 			eval: boolean;
 			prof: boolean;
+			ass: boolean;
 		}>
 	>;
Index: frontend/src/components/StudentForm/StudentForm.tsx
===================================================================
--- frontend/src/components/StudentForm/StudentForm.tsx	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/components/StudentForm/StudentForm.tsx	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -7,4 +7,5 @@
 	YEARS,
 } from "../../constants/subjects";
+import useAxiosAuth from "../../hooks/useAxiosAuth";
 import { StudentData, StudyTrack, Subject } from "../types";
 import FieldButton from "./FieldButton";
@@ -17,5 +18,4 @@
 	validateForm,
 } from "./utils";
-import useAxiosAuth from "../../hooks/useAxiosAuth";
 
 interface StudentFormProps {
@@ -28,4 +28,5 @@
 	tags: string[];
 	professors: string[];
+	assistants: string[];
 	technologies: string[];
 }
@@ -54,4 +55,5 @@
 	>({});
 	const [professorsSearchTerm, setProfessorSearchTerm] = useState("");
+	const [assistantsSearchTerm, setAssistantsSearchTerm] = useState("");
 	const [technologies, setTechnologies] = useState<string[]>(
 		formData?.technologies || []
@@ -61,4 +63,7 @@
 		formData?.professors || []
 	);
+	const [favoriteAssistants, setFavoriteAssistants] = useState<string[]>(
+		formData?.assistants || []
+	);
 	const [isNemamSelected, setIsNemamSelected] = useState({
 		domains: false,
@@ -66,4 +71,5 @@
 		eval: false,
 		prof: false,
+		ass: false,
 	});
 	const [formStatus, setFormStatus] = useState<{
@@ -77,4 +83,5 @@
 	});
 	const [showProfessors, setShowProfessors] = useState(false);
+	const [showAssistants, setShowAssistants] = useState(false);
 	const [subjects, setSubjects] = useState<Subject[]>([]);
 	const [distinctSubjectData, setDistinctSubjectData] =
@@ -82,4 +89,5 @@
 			tags: [],
 			professors: [],
+			assistants: [],
 			technologies: [],
 		});
@@ -121,4 +129,9 @@
 			setFavoriteProfs(favoriteProfs_);
 
+			const favoriteAssistants_ = (formData.assistants || []).includes("None")
+				? []
+				: formData.assistants || [];
+			setFavoriteAssistants(favoriteAssistants_);
+
 			setPassedSubjectsPerSemester(formData.passed_subjects_per_semester || []);
 		}
@@ -132,4 +145,5 @@
 					const subJson: Subject[] = await resSubjects.json();
 					setSubjects(subJson || []);
+
 					const allProfessors: string[] = subJson
 						.flatMap((subject: Subject) => subject.subject_info.professors)
@@ -138,4 +152,12 @@
 					const allProfessors_ = uniqueProfessors
 						.filter((prof) => prof.trim().toLowerCase() !== "сите професори")
+						.sort((a, b) => a.localeCompare(b));
+
+					const allAssistants: string[] = subJson
+						.flatMap((subject: Subject) => subject.subject_info.assistants)
+						.filter((p): p is string => typeof p === "string");
+					const uniqueAssistants = Array.from(new Set(allAssistants));
+					const allAssistants_ = uniqueAssistants
+						.filter((ass) => ass.trim().toLowerCase() !== "сите асистенти")
 						.sort((a, b) => a.localeCompare(b));
 					setDistinctSubjectData(() => ({
@@ -151,4 +173,5 @@
 						).sort((a, b) => a.localeCompare(b)),
 						professors: allProfessors_,
+						assistants: allAssistants_,
 					}));
 				}
@@ -239,4 +262,5 @@
 			),
 			professors: favoriteProfs,
+			assistants: favoriteAssistants,
 			passed_subjects_per_semester: mapToID(passedSubjectsPerSemester),
 			has_extracurricular: hasExtracurricular,
@@ -303,4 +327,24 @@
 							.toLowerCase()
 							.includes(LatinToCyrillic(professorsSearchTerm).toLowerCase()))
+			)
+			.sort((a, b) => a.localeCompare(b)),
+	];
+
+	const filteredAssistants = [
+		...favoriteAssistants.filter(
+			(ass) =>
+				assistantsSearchTerm === "" ||
+				ass
+					.toLowerCase()
+					.includes(LatinToCyrillic(assistantsSearchTerm).toLowerCase())
+		),
+		...distinctSubjectData.assistants
+			.filter(
+				(ass) =>
+					!favoriteAssistants.includes(ass) &&
+					(assistantsSearchTerm === "" ||
+						ass
+							.toLowerCase()
+							.includes(LatinToCyrillic(assistantsSearchTerm).toLowerCase()))
 			)
 			.sort((a, b) => a.localeCompare(b)),
@@ -610,4 +654,60 @@
 				</div>
 			</div>
+
+			<div>
+				<div className="flex items-center mb-2 gap-7">
+					<h3 className="text-lg font-medium text-gray-900 mb-2">
+						Омилени асистенти
+					</h3>
+					{
+						<input
+							onChange={(e) => setAssistantsSearchTerm(e.target.value)}
+							value={assistantsSearchTerm}
+							disabled={isNemamSelected["ass"]}
+							type="text"
+							className="w-60 px-3 py-2.5 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 text-gray-900 text-sm"
+							placeholder="Пребарај асистент"
+						/>
+					}
+				</div>
+				<div className="flex flex-wrap gap-2">
+					{["Немам", ...filteredAssistants]
+						.slice(0, showAssistants ? undefined : 10)
+						.map((item) => {
+							if (item === "None") return;
+							// hides "Nemam" when searching
+							if (item == "Немам" && assistantsSearchTerm !== "") return;
+							const isSelected =
+								favoriteAssistants.includes(item) ||
+								(item === "Немам" && isNemamSelected["ass"]);
+							const shouldBeDisabled =
+								isNemamSelected["ass"] && item !== "Немам";
+							return (
+								<FieldButton
+									key={item}
+									keyProp={item}
+									state={favoriteAssistants}
+									stateSetter={setFavoriteAssistants}
+									field="ass"
+									isSelected={isSelected}
+									isDisabled={shouldBeDisabled}
+									setIsNemamSelected={setIsNemamSelected}
+								/>
+							);
+						})}
+					{filteredAssistants.length == 0 && (
+						<p className="text-gray-500 italic">Нема таков асистент</p>
+					)}
+					{filteredAssistants.length > 10 && (
+						<button
+							type="button"
+							onClick={() => setShowAssistants(!showAssistants)}
+							className="px-3 py-2 rounded-md transition-colors duration-200 bg-blue text-blue-500"
+						>
+							{showAssistants ? "Прикажи помалку" : "Прикажи повеќе"}
+						</button>
+					)}
+				</div>
+			</div>
 			<div className="pt-4">
 				<button
Index: frontend/src/components/SubjectCatalog/SubjectModal.tsx
===================================================================
--- frontend/src/components/SubjectCatalog/SubjectModal.tsx	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/components/SubjectCatalog/SubjectModal.tsx	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -135,5 +135,5 @@
 							</div>
 						</div>
-						<div>
+						{/* <div>
 							{selectedSubject.subject_info.participants[0] == 0 ? (
 								<div className="bg-red-500 py-3 pl-2 rounded-md">
@@ -144,7 +144,13 @@
 									${selectedSubject.subject_info.participants[0]} студенти.`}</p>
 							)}
+						</div> */}
+
+						<div className="mt-4 bg-blue-50 border-l-4 border-blue-400 p-4 rounded">
+							<p className="text-blue-800">
+								Отвори го предметот за да ги видиш сите информации
+							</p>
 						</div>
 
-						<div className="mt-8 flex justify-end space-x-3">
+						<div className="mt-4 flex justify-end space-x-3">
 							<button
 								onClick={closeModal}
Index: frontend/src/components/types.ts
===================================================================
--- frontend/src/components/types.ts	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/components/types.ts	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -22,4 +22,5 @@
 	evaluation: string[];
 	professors: string[];
+	assistants: string[];
 	has_filled_form: boolean;
 	passed_subjects_per_semester: Record<number, Subject[] | []>;
Index: frontend/src/constants/subjects.ts
===================================================================
--- frontend/src/constants/subjects.ts	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/constants/subjects.ts	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -23,2 +23,10 @@
 	Проект: "Project",
 };
+
+export const EVALUATION_MAP_TO_MK = {
+	None: "Нема",
+	Theory: "Теорија",
+	Practical: "Практично",
+	Code: "Код",
+	Project: "Проект",
+};
Index: frontend/src/pages/SubjectView.tsx
===================================================================
--- frontend/src/pages/SubjectView.tsx	(revision 62f88df413485677e36b0f2afb6b6c4dc9b2bb63)
+++ frontend/src/pages/SubjectView.tsx	(revision dc161479c763185986bcc2afdae011784218d05f)
@@ -4,4 +4,5 @@
 import { getSubjectPrerequisites } from "../components/SubjectCatalog/utils";
 import { Subject } from "../components/types";
+import { EVALUATION_MAP_TO_MK } from "../constants/subjects";
 
 function SubjectView() {
@@ -14,4 +15,5 @@
 	const [isLoading, setIsLoading] = useState(true);
 	const [isExpanded, setIsExpanded] = useState(false);
+	const [filteredTechonologies, setFilteredTechnologies] = useState([]);
 	const { id } = useParams();
 	const navigate = useNavigate();
@@ -45,4 +47,14 @@
 			.then((data) => {
 				setSelectedSubject(data);
+				const technologies = data.subject_info.technologies.map(
+					(tech: string) => (tech === "any" ? "По избор" : tech)
+				);
+				const filtered = technologies.filter(
+					(tech: string) => tech !== "По избор"
+				);
+				if (technologies.includes("По избор")) {
+					filtered.push("По избор");
+				}
+				setFilteredTechnologies(filtered);
 				setSubjectPrerequisites(getSubjectPrerequisites(selectedSubject, data));
 				setIsLoading(false);
@@ -353,7 +365,25 @@
 									<p className="text-sm text-gray-500 mb-1">Технологии</p>
 									<p className="font-medium">
-										{selectedSubject.subject_info.technologies.length
-											? selectedSubject.subject_info.technologies.join(", ")
+										{filteredTechonologies.length
+											? filteredTechonologies.join(", ")
 											: "Нема одредени технологии"}
+									</p>
+								</div>
+
+								<div>
+									<p className="text-sm text-gray-500 mb-1">
+										Начин на евалуација
+									</p>
+									<p className="font-medium">
+										{selectedSubject.subject_info.evaluation.length
+											? selectedSubject.subject_info.evaluation
+													.map(
+														(ev) =>
+															EVALUATION_MAP_TO_MK[
+																ev as keyof typeof EVALUATION_MAP_TO_MK
+															]
+													)
+													.join(", ")
+											: "Нема одредена евалуација"}
 									</p>
 								</div>
