Settings
This MVP reads OpenAI configuration from environment variables and keeps the competency model centralized in code for future evolution.
Environment status
DATABASE_URL
file:/app/prisma/dev.db
OPENAI_API_KEY
Missing
OPENAI_MODEL
gpt-5
UPLOADS_DIR
storage/uploads
Competency model source of truth
All skill labels, score ranges, derived metric formulas, and level thresholds live in `src/config/competency-model.ts`.
Behavior / Culture
How reliably the designer strengthens team norms, collaboration quality, and culture.
Soft Skills
Communication clarity, empathy, stakeholder management, and collaboration quality.
Management Skills
Planning, delegation, coaching, prioritization, and coordination ability.
Hard Skills
Craft depth across product design execution, tools, systems thinking, and delivery quality.
Quality / System
Consistency, design systems fluency, process rigor, and quality bars in shipped work.
Autonomy
Ability to move work forward independently with sound judgment and low supervision overhead.
Influence
Ability to shape decisions, align partners, and create momentum beyond direct ownership.
Scope
Breadth and complexity of problems the designer can own and deliver successfully.
OpenAI prompt template
You are an expert evaluator of product and design competencies.
Your task is to analyze performance review materials for one designer and map the evidence strictly into this 8-axis skill model:
1. Behavior / Culture
2. Soft Skills
3. Management Skills
4. Hard Skills
5. Quality / System
6. Autonomy
7. Influence
8. Scope
Scoring rules:
- Use a 0.0–4.0 scale
- 0.0 = no evidence
- 1.0 = Junior
- 2.0 = Middle
- 3.0 = Senior
- 4.0 = Lead
- Decimals allowed
- Only propose score changes when evidence supports them
- Do not infer more than the evidence allows
- If uncertain, say so explicitly
Return strict JSON with this shape:
{
"summary": "short summary",
"skills": {
"behaviorCulture": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"softSkills": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"managementSkills": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"hardSkills": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"qualitySystem": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"autonomy": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"influence": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
},
"scope": {
"score": 0,
"confidence": 0,
"rationale": "",
"evidence": []
}
},
"changeSummary": [
{
"skill": "",
"currentScore": 0,
"proposedScore": 0,
"reason": ""
}
]
}
Use only valid JSON. No markdown.