diff --git a/.cursor/config/llm-params.json b/.cursor/config/llm-params.json new file mode 100644 index 0000000..7d029f7 --- /dev/null +++ b/.cursor/config/llm-params.json @@ -0,0 +1,9 @@ +{ + "defaultModel": "claude-3.5-sonnet-20240620", + "fallbackModel": "gpt-4-turbo-2024-04-09", + "temperature": { + "codeGeneration": 0.3, + "errorDebugging": 0.7 + }, + "contextWindow": 16000 +} diff --git a/.cursor/prompts/cv-analysis.md b/.cursor/prompts/cv-analysis.md new file mode 100644 index 0000000..c75d10f --- /dev/null +++ b/.cursor/prompts/cv-analysis.md @@ -0,0 +1,13 @@ +# CV Enhancement Workflow + +1. **Structural Analysis** + - Identify missing sections using industry benchmarks + - Check chronological consistency of employment history + +2. **ATS Optimization** + - Cross-reference with 50+ tracking systems + - Generate keyword gap report + +3. **LLM Enhancement** + - Rewrite summaries using power verbs + - Convert responsibilities to measurable achievements diff --git a/.cursor/prompts/error-handling.md b/.cursor/prompts/error-handling.md new file mode 100644 index 0000000..e657161 --- /dev/null +++ b/.cursor/prompts/error-handling.md @@ -0,0 +1,5 @@ +**Debugging Process** +1. Reproduce the error in isolation +2. Analyze stack trace with @backend/logger.js +3. Propose 3 potential solutions with pros/cons +4. Implement safest option with rollback plan diff --git a/.cursor/rules/cv-platform-rules.mdc b/.cursor/rules/cv-platform-rules.mdc new file mode 100644 index 0000000..8cda89c --- /dev/null +++ b/.cursor/rules/cv-platform-rules.mdc @@ -0,0 +1,13 @@ +**CV Platform Development Protocol** +1. Security First: + - Always sanitize user input using DOMPurify + - Encrypt resume files with AES-256-GSM during storage + +2. LLM Implementation Rules: + - Use OpenAI text-embedding-3-small for semantic analysis + - Maintain 0.7 temperature for balance between creativity/accuracy + - Verify ATS keyword suggestions against JobCopilot's latest data + +3. Task Management: + - Reference .notes/task_list.md before making changes + - Create atomic Git commits per feature using Conventional Commits diff --git a/.notes/project_overview.md b/.notes/project_overview.md new file mode 100644 index 0000000..5c81596 --- /dev/null +++ b/.notes/project_overview.md @@ -0,0 +1,13 @@ +# CV Optimization Platform + +## Key Features +- AI-powered resume analysis +- ATS compliance checking +- Real-time editing suggestions +- GDPR-compliant storage + +## Tech Stack +- React.js frontend +- Node.js/Express.js backend +- MongoDB database +- OpenAI/Cline LLM integration diff --git a/.notes/task_list.md b/.notes/task_list.md new file mode 100644 index 0000000..07f42d0 --- /dev/null +++ b/.notes/task_list.md @@ -0,0 +1,10 @@ +## P-0: Critical Path (Current Sprint) +- [ ] Implement PDF parser using PyPDF2 and @breezypdf/pdf-extract +- [ ] Create ATS keyword mapping system (Due: 2025-03-01) + +## P-1: Near-Term Backlog +- [ ] Design premium subscription flow +- [ ] Research GDPR-compliant storage solutions + +## P-X: Innovation Pipeline +- [ ] Experiment with Claude 3 Opus for cover letter generation diff --git a/scripts/setup-environment.sh b/scripts/setup-environment.sh new file mode 100755 index 0000000..3ac91e6 --- /dev/null +++ b/scripts/setup-environment.sh @@ -0,0 +1,13 @@ +#!/bin/zsh + +# Install core dependencies +brew install poppler +npm install -D eslint @types/node + +# Configure Cline models +curl -O https://raw.githubusercontent.com/instructa/ai-prompts/main/cline-defaults.json + +# Setup Python virtualenv +python -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt diff --git a/setup-project.sh b/setup-project.sh old mode 100644 new mode 100755 diff --git a/utils/pdf.worker.js b/utils/pdf.worker.js new file mode 100644 index 0000000..b11c711 --- /dev/null +++ b/utils/pdf.worker.js @@ -0,0 +1,8 @@ +const { PDFDocument } = require('pdf-lib'); + +self.addEventListener('message', async (e) => { + const pdfDoc = await PDFDocument.load(e.data); + const pages = pdfDoc.getPages(); + const textContent = pages.map(p => p.getTextContent()); + self.postMessage(textContent); +}); diff --git a/utils/resume_analysis.py b/utils/resume_analysis.py new file mode 100644 index 0000000..a8d46fe --- /dev/null +++ b/utils/resume_analysis.py @@ -0,0 +1,16 @@ +from openai import OpenAI +from pdfminer.high_level import extract_text + +client = OpenAI() + +def analyze_resume(file_path): + text = extract_text(file_path) + response = client.chat.completions.create( + model="gpt-4-turbo", + messages=[{ + "role": "system", + "content": "Analyze resume for:\n1. Missing ATS keywords\n2. Skill gaps\n3. Achievement opportunities" + }, + {"role": "user", "content": text}] + ) + return response.choices[0].message.content