Skip to content

dvarte-dev/ai_cv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CV Analyzer 📄✨

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.

🌟 Features

1. CV Data Extraction 📊

  • 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

2. CV-Job Fit Analysis 🎯

  • 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

🚀 Quick Start

Prerequisites

  • Python 3.12+
  • UV package manager
  • AI Provider API keys (OpenAI or AWS Bedrock)

Installation

  1. Clone the repository

    git clone https://github.com/dvarte-dev/cv_analyzer.git
    cd cv_analyzer
  2. Install dependencies

    # Install UV
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Instal Project Libs
    uv sync
  3. 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"

Running the Application

Option 1: Using the launcher script (Recommended)

python run_app.py

Option 2: Direct Streamlit command

streamlit run app/interface.py

Option 3: Using main.py

python main.py

The application will open in your browser at http://localhost:8501

🎨 User Interface

Main Dashboard

  • Modern Design: Clean, professional interface with gradient styling
  • Responsive Layout: Optimized for desktop and tablet viewing
  • Intuitive Navigation: Clear tabs for different functionalities

Configuration Sidebar

  • AI Provider Selection: Choose between OpenAI and AWS Bedrock
  • Model Selection: Pick from available models for each provider
  • Real-time Configuration: Changes apply immediately

📋 How to Use

Extracting CV Data

  1. Navigate to the "📄 Extract CV Data" tab
  2. Upload your CV file (PDF, Word, or Text format)
  3. Wait for AI processing (usually 10-30 seconds)
  4. View the extracted structured data
  5. Download results as JSON or copy to clipboard

Analyzing CV Fit

  1. Go to the "🎯 Analyze CV Fit" tab
  2. Provide a CV using one of three methods:
    • Upload a new file
    • Use previously extracted CV
    • Paste CV text directly
  3. Enter the job description in the text area
  4. Click "🚀 Analyze CV Fit"
  5. Review the detailed analysis results:
    • Match score (0-10)
    • Fit assessment (Good/Poor)
    • Overall recommendation
    • Detailed reasons and recommendations
  6. Download the analysis report

🤖 AI Models Supported

OpenAI Models

  • gpt-4o
  • gpt-4.1

AWS Bedrock Models

  • claude-4-sonnet (Latest Claude)
  • claude-4-opus (Best responses)

📁 Project Structure

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

🔧 Technical Details

Architecture

  • 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

Data Models

  • CVData: Structured schema for extracted CV information
  • Response: Analysis results with scoring and recommendations
  • Pydantic Validation: Ensures data quality and type safety

🎯 Use Cases

For Recruiters

  • Quickly extract key information from candidate CVs
  • Batch process multiple resumes
  • Standardize CV data for database storage
  • Assess candidate-job fit at scale

For HR Professionals

  • Streamline initial candidate screening
  • Generate consistent evaluation reports
  • Identify skill gaps and training needs
  • Maintain objective hiring criteria

For Job Seekers

  • 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

🔒 Security & Privacy

  • 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

📈 Performance

  • 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

🐛 Troubleshooting

Common Issues

"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 sync to install dependencies
  • Check Python version (3.12+ required)

Getting Help

  • Check the console output for detailed error messages
  • Verify environment variables are set correctly
  • Ensure all dependencies are installed

🚧 Development

To contribute or modify the application:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

📄 License

This project is licensed under the terms specified in the LICENSE file.


CV Analyzer - Making CV analysis intelligent, fast, and beautiful! 🎉

About

Uma aplicação web simples para avaliação automatizada de currículos em PDF, construída com Streamlit e integrada a serviços de extração de texto e modelos de linguagem avançados.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages