-
-
-
- {(form.watch('oceanTraits') || { openness: 50 }).openness || 50}%
-
-
handleOceanChange('openness', values[0])}
- max={100}
- step={1}
- />
-
- Creativity, curiosity, and openness to new ideas
-
-
-
-
-
-
- {(form.watch('oceanTraits') || { conscientiousness: 50 }).conscientiousness || 50}%
-
-
handleOceanChange('conscientiousness', values[0])}
- max={100}
- step={1}
- />
-
- Organization, responsibility, and self-discipline
-
-
-
-
-
-
- {(form.watch('oceanTraits') || { extraversion: 50 }).extraversion || 50}%
-
-
handleOceanChange('extraversion', values[0])}
- max={100}
- step={1}
- />
-
- Sociability, assertiveness, and talkativeness
-
-
-
-
-
-
- {(form.watch('oceanTraits') || { agreeableness: 50 }).agreeableness || 50}%
-
-
handleOceanChange('agreeableness', values[0])}
- max={100}
- step={1}
- />
-
- Compassion, cooperation, and concern for others
-
-
-
-
-
-
- {(form.watch('oceanTraits') || { neuroticism: 50 }).neuroticism || 50}%
-
-
handleOceanChange('neuroticism', values[0])}
- max={100}
- step={1}
- />
-
- Emotional reactivity, anxiety, and sensitivity to stress
-
-
+
+
+ {(
+ [
+ { key: 'openness', label: 'Openness to Experience', desc: 'Creativity, curiosity, and openness to new ideas' },
+ { key: 'conscientiousness', label: 'Conscientiousness', desc: 'Organization, responsibility, and self-discipline' },
+ { key: 'extraversion', label: 'Extraversion', desc: 'Sociability, assertiveness, and talkativeness' },
+ { key: 'agreeableness', label: 'Agreeableness', desc: 'Compassion, cooperation, and concern for others' },
+ { key: 'neuroticism', label: 'Neuroticism', desc: 'Emotional reactivity, anxiety, and sensitivity to stress' },
+ ] as const
+ ).map(({ key, label, desc }) => {
+ const ocean = form.watch('oceanTraits') || { openness: 50, conscientiousness: 50, extraversion: 50, agreeableness: 50, neuroticism: 50 };
+ const val = ocean[key] ?? 50;
+ return (
+
+
+
+
+ handleOceanChange(key, Math.min(100, Math.max(0, parseInt(e.target.value) || 0)))}
+ className="w-16 h-8 text-center text-sm"
+ />
+ %
+
+
+
{desc}
+
+ );
+ })}
diff --git a/src/components/ai-recruiter/AIRecruiterForm.tsx b/src/components/ai-recruiter/AIRecruiterForm.tsx
index 59e0c863..c68518bc 100755
--- a/src/components/ai-recruiter/AIRecruiterForm.tsx
+++ b/src/components/ai-recruiter/AIRecruiterForm.tsx
@@ -179,13 +179,17 @@ export default function AIRecruiterForm({ onSubmit, isGenerating }: AIRecruiterF
/>
-
+
-
)}
@@ -204,13 +208,17 @@ export default function AIRecruiterForm({ onSubmit, isGenerating }: AIRecruiterF
/>
-
+
-
)}
@@ -338,39 +346,33 @@ export default function AIRecruiterForm({ onSubmit, isGenerating }: AIRecruiterF
name="llm_model"
render={({ field }) => (
- AI Model
+ Model
-
- Choose which AI model to use for generating personas
-
)}
/>
-
+
{/* Number of Personas to Generate */}
(
- Number of Personas to Generate
+ Number of personas
-
- How many synthetic users do you need for your research?
-
)}