Skip to content

loresalm/CV-Loop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CV Optimizer - Project Summary

Overview

CV Optimizer is a web application that helps users generate custom prompts to optimize their CVs for specific job applications. The app allows users to manage multiple job application projects, prepare materials in setup mode, and iteratively refine their CVs in optimize mode using their favorite LLM.

Key Features

User Authentication

  • Login/Register: Simple user authentication system
  • User sessions: Persists login state using browser localStorage
  • Multi-user support: Each user has their own isolated projects

Projects Management (Homepage)

  • View all projects: Dashboard displaying all user's job application projects
  • Create new project: Add new job application projects with one click
  • Open projects: Navigate to any project to work on it
  • Delete projects: Remove projects that are no longer needed
  • Project cards: Each project shows title and job offer preview

Setup Mode

Purpose: Prepare all materials for initial CV generation

Features:

  • Project title: Editable project name/title
  • Job offer input: Large text area to paste the complete job description
  • Relevant links:
    • Add multiple URLs (company website, product pages, etc.)
    • Remove links individually
    • Links are clickable and open in new tabs
  • Previous CVs upload:
    • Upload multiple .tex files from past CVs
    • Files are read and stored for reference
    • Display list of uploaded CV filenames
  • Template CV upload:
    • Upload a single .tex template file to use as starting point
    • Confirmation when template is uploaded
  • Copy prompt button:
    • Generates a comprehensive system prompt
    • Combines job offer, links, previous CVs, and template
    • Copies to clipboard for use in any LLM

Setup Prompt Structure:

# CV Optimization Assistant
- System instructions for the LLM
- Job offer details
- Relevant links (numbered list)
- Previous CVs (with LaTeX code blocks)
- Template CV (with LaTeX code block)
- Instructions for CV generation

Optimize Mode

Purpose: Iteratively refine the generated CV

Features:

  • Upload generated CV:
    • Upload .tex file generated by LLM
    • Or paste LaTeX content directly into textarea
  • LaTeX preview:
    • Converts LaTeX to basic HTML for readability
    • Renders sections, subsections, bold, italic, lists
    • Scrollable preview area
  • Text highlighting & comments:
    • Select any text in the preview
    • Add comment/feedback for selected section
    • Creates highlight with text excerpt and comment
    • View all highlights in dedicated section
    • Remove individual highlights
  • Copy optimization prompt:
    • Generates refinement prompt for LLM
    • Includes full current CV
    • Lists all highlighted sections with comments
    • Copies to clipboard for iterative improvements

Optimize Prompt Structure:

# CV Refinement Assistant
- System instructions
- Current CV (full LaTeX code)
- Sections to improve (each highlight with text + comment)
- Instructions for refinement

Data Persistence

  • localStorage: All data persists across browser sessions
  • Auto-save: Changes saved automatically on blur/interaction
  • User isolation: Each user's data is separate
  • Projects storage: All projects, CVs, links, highlights stored locally

Technical Stack

  • Frontend: Svelte 4
  • Build tool: Vite
  • Styling: Component-scoped CSS
  • Data storage: Browser localStorage (Firebase ready for future)
  • File handling: FileReader API for .tex file uploads
  • LaTeX preview: Custom parser (basic HTML conversion)

User Workflow

Initial Setup:

  1. Register/Login to the application
  2. Click "Add Project" on homepage
  3. Enter project title
  4. Switch to Setup Mode

Setup Phase:

  1. Paste job offer description
  2. Add relevant company/product links
  3. Upload previous CV .tex files for reference
  4. Upload template CV .tex file
  5. Click "Copy Prompt"
  6. Paste prompt into favorite LLM (ChatGPT, Claude, etc.)
  7. LLM generates optimized CV in LaTeX format

Optimization Phase:

  1. Switch to Optimize Mode
  2. Upload/paste the generated .tex file
  3. Review the preview
  4. Highlight sections needing improvement
  5. Add specific comments for each section
  6. Click "Copy Optimization Prompt"
  7. Paste into LLM for refinement
  8. Repeat steps 2-7 until satisfied

File Structure

cv-optimizer/
├── src/
│   ├── App.svelte         # Main application component
│   └── main.js            # Entry point
├── index.html             # HTML template
├── package.json           # Dependencies
├── vite.config.js         # Vite configuration
├── svelte.config.js       # Svelte configuration
└── README.md              # This file

Installation & Running

Prerequisites:

  • Node.js (v16 or higher)
  • npm or yarn

Steps:

# Navigate to project directory
cd cv-optimizer

# Install dependencies
npm install

# Run development server
npm run dev

# Open browser to http://localhost:5173

Build for production:

npm run build

Future Enhancements (Planned)

Firebase Integration:

  • Replace localStorage with Firebase Firestore
  • Real-time data synchronization
  • Cloud storage for CV files
  • User authentication via Firebase Auth

Deployment:

  • Deploy to Vercel
  • Continuous deployment pipeline
  • Environment variables for Firebase config

Additional Features (Potential):

  • Export project as PDF report
  • Comparison view (before/after CV versions)
  • Multiple CV versions per project
  • Collaboration features (share projects)
  • AI-powered suggestions directly in app
  • Template library
  • Job application tracking (status, dates, follow-ups)

Current Limitations (POC)

  • Data stored only in browser (cleared if cache cleared)
  • No data backup or export
  • Basic LaTeX preview (not full PDF rendering)
  • Simple authentication (no password hashing)
  • No multi-device sync

Design Principles

  • Simple & readable code: Easy to understand and modify
  • Minimal dependencies: Only essential packages
  • User-friendly: Intuitive interface with clear workflows
  • Flexible: Works with any LLM (not locked to specific provider)
  • Privacy-focused: User controls their data and LLM choice

Security Notes (For Production)

  • Current POC stores passwords in plain text (localStorage)
  • Before production: implement proper authentication
  • Use Firebase Auth or similar service
  • Hash passwords server-side
  • Implement HTTPS
  • Add CSRF protection
  • Validate file uploads

License

MIT (or your preferred license)

Contributing

This is a proof of concept. Future contributions welcome once core features are validated.

About

CV Optimizer: A Svelte-powered workflow for tailoring LaTeX resumes using LLMs. Manage multiple job applications, aggregate job specs and past CVs into comprehensive system prompts, and iteratively refine documents with a unique "highlight-and-comment" optimization mode. Perfect for precision and version control of professionals in their job hunt.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors