A modern, AI-powered CV analysis tool with an intuitive Streamlit interface. Extract structured data from resumes and analyze candidate fit against job descriptions using advanced AI models.
- Upload CVs in multiple formats (PDF, Word, Text)
- Extract structured information:
- Personal details (name, email, phone, address)
- Education history
- Work experience
- Skills and competencies
- Projects and achievements
- Export extracted data as JSON
- Beautiful, organized display of extracted information
- Compare CVs against job descriptions
- AI-powered matching and scoring (0-10 scale)
- Detailed fit assessment with reasons
- Personalized recommendations for improvement
- Multiple input methods for CVs
- Export analysis reports
- Python 3.12+
- UV package manager
- AI Provider API keys (OpenAI or AWS Bedrock)
-
Clone the repository
git clone https://github.com/dvarte-dev/cv_analyzer.git cd cv_analyzer -
Install dependencies
# Install UV curl -LsSf https://astral.sh/uv/install.sh | sh # Instal Project Libs uv sync
-
Set up environment variables
For OpenAI:
export OPENAI_API_KEY="your-openai-api-key"
For AWS Bedrock:
export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export AWS_DEFAULT_REGION="us-east-1"
Option 1: Using the launcher script (Recommended)
python run_app.pyOption 2: Direct Streamlit command
streamlit run app/interface.pyOption 3: Using main.py
python main.pyThe application will open in your browser at http://localhost:8501
- Modern Design: Clean, professional interface with gradient styling
- Responsive Layout: Optimized for desktop and tablet viewing
- Intuitive Navigation: Clear tabs for different functionalities
- AI Provider Selection: Choose between OpenAI and AWS Bedrock
- Model Selection: Pick from available models for each provider
- Real-time Configuration: Changes apply immediately
- Navigate to the "📄 Extract CV Data" tab
- Upload your CV file (PDF, Word, or Text format)
- Wait for AI processing (usually 10-30 seconds)
- View the extracted structured data
- Download results as JSON or copy to clipboard
- Go to the "🎯 Analyze CV Fit" tab
- Provide a CV using one of three methods:
- Upload a new file
- Use previously extracted CV
- Paste CV text directly
- Enter the job description in the text area
- Click "🚀 Analyze CV Fit"
- Review the detailed analysis results:
- Match score (0-10)
- Fit assessment (Good/Poor)
- Overall recommendation
- Detailed reasons and recommendations
- Download the analysis report
gpt-4ogpt-4.1
claude-4-sonnet(Latest Claude)claude-4-opus(Best responses)
cv_analyzer/
├── app/
│ ├── agents/
│ │ ├── cv_analyzer/ # CV analysis agent
│ │ └── data_extractor/ # Data extraction agent
│ ├── interface.py # Streamlit UI (Main Interface)
│ ├── orchestrator.py # Coordinates agents
│ └── document_parser.py # File parsing utilities
├── main.py # Application entry point
├── run_app.py # Streamlit launcher script
└── README.md # This file
- Frontend: Streamlit with custom CSS styling
- Backend: Pydantic AI agents with structured outputs
- Document Processing: Docling for multi-format support
- AI Integration: Support for multiple providers and models
- CVData: Structured schema for extracted CV information
- Response: Analysis results with scoring and recommendations
- Pydantic Validation: Ensures data quality and type safety
- Quickly extract key information from candidate CVs
- Batch process multiple resumes
- Standardize CV data for database storage
- Assess candidate-job fit at scale
- Streamline initial candidate screening
- Generate consistent evaluation reports
- Identify skill gaps and training needs
- Maintain objective hiring criteria
- Understand how well your CV matches job requirements
- Get specific recommendations for improvement
- Optimize CV content for better job matching
- Track CV performance across different roles
- Local Processing: All CV analysis happens locally or through your API keys
- No Data Storage: CVs are not permanently stored by the application
- API Security: Your API keys remain in your environment
- Session Management: Data is cleared when you close the browser
- Fast Processing: Most CVs processed in under 30 seconds
- Scalable: Handles various document sizes and formats
- Efficient: Optimized API calls and caching
- Responsive: Real-time UI updates and progress indicators
"Failed to initialize AI models"
- Check your API keys are set correctly
- Verify internet connection
- Ensure sufficient API credits/permissions
"Error processing CV"
- Try a different file format
- Check if the file is corrupted
- Ensure the file contains readable text
"Module not found errors"
- Run
uv syncto install dependencies - Check Python version (3.12+ required)
- Check the console output for detailed error messages
- Verify environment variables are set correctly
- Ensure all dependencies are installed
To contribute or modify the application:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the terms specified in the LICENSE file.
CV Analyzer - Making CV analysis intelligent, fast, and beautiful! 🎉