Index: pages/forge/utils/componentCalculations.ts
===================================================================
--- pages/forge/utils/componentCalculations.ts	(revision 1d8f088659dc64b64a7330420b70bc03a9be8504)
+++ pages/forge/utils/componentCalculations.ts	(revision 1d8f088659dc64b64a7330420b70bc03a9be8504)
@@ -0,0 +1,54 @@
+// Helper Functions
+import {BuildSlot} from "../types/buildTypes";
+
+export function calculateUsedRamSlots(slots: BuildSlot[]): number {
+    return slots
+        .filter(s => s.type === 'memory' && s.component)
+        .reduce((sum, s) => {
+            const modules = Number(s.component?.details?.modules || s.component?.modules || 1);
+            const quantity = Number(s.component?.quantity || 1);
+            return sum + (modules * quantity);
+        }, 0);
+}
+
+export function getMaxRamSlots(slots: BuildSlot[]): number | null {
+    const mobo = slots.find(s => s.type === 'motherboard' && s.component);
+    if (!mobo?.component?.details?.numRamSlots) return null;
+    return Number(mobo.component.details.numRamSlots);
+}
+
+export function calculateUsedStorageSlots(slots: BuildSlot[], formFactor: string): number {
+    return slots
+        .filter(s => s.type === 'storage' && s.component)
+        .reduce((sum, s) => {
+            const componentFormFactor = s.component?.details?.formFactor || s.component?.details?.form_factor || s.component?.formFactor;
+            if (componentFormFactor?.trim().toLowerCase() === formFactor?.trim().toLowerCase()) {
+                return sum + Number(s.component?.quantity || 1);
+            }
+            return sum;
+        }, 0);
+}
+
+export function getMaxStorageSlots(slots: BuildSlot[], formFactor: string): number | null {
+    const pcCase = slots.find(s => s.type === 'case' && s.component);
+    if (!pcCase?.component?.details?.storageFormFactors) return null;
+
+    const storageFormFactors = pcCase.component.details.storageFormFactors;
+
+    if (!Array.isArray(storageFormFactors)) {
+        return null;
+    }
+
+    const storageFF = storageFormFactors.find((sf: any) => {
+        const sfFormFactor = sf.formFactor || sf.form_factor;
+        return sfFormFactor?.trim().toLowerCase() === formFactor?.trim().toLowerCase();
+    });
+
+    if (!storageFF) {
+        return null;
+    }
+
+    const numSlots = storageFF.numSlots || storageFF.num_slots;
+
+    return Number(numSlots) || null;
+}
