feat: CV overhaul — modernize skills, add projects, fix proficiency scale
- Title: "Senior Technical Consultant & Full-Stack Developer" - Add Swift & macOS Development skill category (SoundInbox, Commando) - Rename "AI-Assisted Development" → "AI Engineering & Integration" with MCP, ADK, Gemini, CLIP - Remove "Design Tools" (Corel Draw, GIMP) and "Legacy Enterprise" (Struts, Yii, Zend) - Remove jQuery, Assembler, Groovy; add Swift to programming languages - Rewrite Team Management with professional language - Proficiency scale: 1-5 → 1-10 (validation, tests, chat agent prompt) - Add SoundInbox (Swift) and Commando (Go+SwiftUI) to projects - Remove personal details: dateOfBirth, placeOfBirth, domestika, driverLicense - Trim weak LinkedIn Learning courses (speed reading, persuasive UX) - Fix Spanish soft_skills duplicates - Chat agent: 11 new assertions (proficiency scale, new projects, removed skills) - Fix hardcoded year 2025 in TestDefaultCVShortcut → time.Now().Year()
This commit is contained in:
@@ -10,6 +10,10 @@
|
||||
* - Responds in the same language as the question
|
||||
* - Off-topic questions redirect to CV scope with email
|
||||
* - Technology questions use cross-section search
|
||||
* - Proficiency uses 1-10 scale (never 1-5)
|
||||
* - Knows new projects (SoundInbox, Commando)
|
||||
* - Knows new skills (Swift, MCP, AI Engineering)
|
||||
* - Does not claim removed skills (jQuery, Corel Draw)
|
||||
*
|
||||
* NOTE: These tests call a live LLM and are inherently non-deterministic.
|
||||
* A single failure may be a flaky response — run twice to confirm real issues.
|
||||
@@ -137,7 +141,50 @@ async function testResponseRules() {
|
||||
console.log('\n9️⃣ Years of Experience');
|
||||
|
||||
const years = await chat('How many years of experience does Juan have?');
|
||||
record('Years: mentions 21', /21/.test(years));
|
||||
record('Years: mentions 20 or 21', /20|21/.test(years));
|
||||
|
||||
// ================================================================
|
||||
// 10. PROFICIENCY SCALE — must use /10, never /5
|
||||
// ================================================================
|
||||
console.log('\n🔟 Proficiency Scale (1-10)');
|
||||
|
||||
const cssProficiency = await chat('What is Juan\'s proficiency level in CSS and frontend technologies?');
|
||||
record('CSS: uses /10 scale', /\/10|out of 10|over 10/i.test(cssProficiency), cssProficiency.substring(0, 150));
|
||||
record('CSS: does NOT use /5 scale', !/\b[0-9]\/5\b|out of 5|over 5/i.test(cssProficiency));
|
||||
record('CSS: high rating (8-10)', /[89]\/10|9 out of 10|10\/10|10 out of 10|8\/10|8 out of 10/i.test(cssProficiency));
|
||||
|
||||
// ================================================================
|
||||
// 11. NEW PROJECTS — SoundInbox, Commando
|
||||
// ================================================================
|
||||
console.log('\n1️⃣1️⃣ New Projects (SoundInbox, Commando)');
|
||||
|
||||
const swift = await chat('Does Juan have experience with Swift or macOS development?');
|
||||
record('Swift: mentions SoundInbox', /soundinbox/i.test(swift));
|
||||
record('Swift: mentions Swift or SwiftUI', /swift/i.test(swift));
|
||||
|
||||
const commando = await chat('Tell me about the Commando project');
|
||||
record('Commando: mentions terminal/command', /terminal|command/i.test(commando));
|
||||
record('Commando: mentions Go or SQLite', /go|sqlite/i.test(commando));
|
||||
|
||||
// ================================================================
|
||||
// 12. NEW SKILLS — MCP, AI Engineering
|
||||
// ================================================================
|
||||
console.log('\n1️⃣2️⃣ New Skills (MCP, AI)');
|
||||
|
||||
const mcp = await chat('Does Juan have experience with MCP or Model Context Protocol?');
|
||||
record('MCP: mentions MCP', /mcp|model context protocol/i.test(mcp));
|
||||
record('MCP: mentions Immich project', /immich/i.test(mcp));
|
||||
|
||||
// ================================================================
|
||||
// 13. REMOVED SKILLS — should not claim expertise
|
||||
// ================================================================
|
||||
console.log('\n1️⃣3️⃣ Removed Skills (no false claims)');
|
||||
|
||||
const jquery = await chat('Does Juan know jQuery?');
|
||||
record('jQuery: honest — not listed or minimal', !/expert|proficien|specialist|strong|extensive/i.test(jquery));
|
||||
|
||||
const corel = await chat('Does Juan use Corel Draw?');
|
||||
record('Corel: not found or not listed', /not found|no se encontr|not listed|not included|not mention|did not find|does not|no result|couldn/i.test(corel));
|
||||
|
||||
// ================================================================
|
||||
// SUMMARY
|
||||
|
||||
Reference in New Issue
Block a user