Craft Your CV, Unlock Your Career Potential
Built with the tools and technologies:
CVWizard is an innovative web application designed to enhance job application success by aligning CVs with specific job descriptions. Utilizing AI-driven analysis, it extracts and compares skills from uploaded CVs against job requirements, offering tailored advice for optimization. Ideal for job seekers aiming to boost their marketability, CVWizard simplifies the process of tailoring resumes to meet targeted job criteria effectively.
Feature | Summary | |
---|---|---|
βοΈ | Architecture |
|
π€ | AI-Powered Insights |
|
π | CV Processing |
|
π© | Code Quality |
|
π | Integrations |
|
π§© | Modularity |
|
π | Job-CV Matching |
|
π | Cross-Origin Support |
|
βββ CVWizard/
βββ LICENSE
βββ README.md
βββ backend
β βββ ai_insights.py
β βββ app.py
β βββ cv_reader.py
β βββ scrapper.py
βββ frontend
β βββ .gitignore
β βββ README.md
β βββ eslint.config.js
β βββ index.html
β βββ package-lock.json
β βββ package.json
β βββ postcss.config.js
β βββ public
β β βββ wizard.png
β βββ src
β β βββ App.tsx
β β βββ components
β β β βββ AnalysisResults.tsx
β β β βββ LoadingState.tsx
β β βββ index.css
β β βββ main.tsx
β β βββ services
β β β βββ api.ts
β β βββ vite-env.d.ts
β βββ tailwind.config.js
β βββ tsconfig.app.json
β βββ tsconfig.json
β βββ tsconfig.node.json
β βββ vite.config.ts
βββ requirements.txt
CVWIZARD/
__root__
requirements.txt - Manages the dependencies essential for the project's operation, ensuring compatibility and functionality across various modules
- It includes libraries for web framework capabilities, cross-origin resource sharing, and specialized tools for indexing and experimental features related to llama data processing
- This setup is crucial for maintaining the project's architecture and facilitating future enhancements or integrations.
backend
app.py - Backend/app.py serves as the server-side interface for a web application, handling file uploads, data extraction, and AI-driven analysis
- It processes uploaded CVs, extracts relevant information, scrapes job data from URLs, and generates insights by comparing CVs with job descriptions, facilitating a comprehensive interaction between the frontend and backend components.scrapper.py - Scrapes and structures job-related data from specified URLs using BeautifulSoup and requests libraries in Python
- It extracts job titles, required skills, and detailed descriptions from web pages, normalizes text spacing, and handles potential errors during the scraping process, returning structured job data or error information as needed.ai_insights.py - Generates AI-powered insights for tailoring CVs to specific job descriptions by comparing candidate skills with job requirements
- It utilizes an AI model to provide structured feedback, highlighting key areas for improvement and suggesting ways to enhance CV alignment with job skills, ultimately offering personalized advice to candidates.cv_reader.py - Processes and indexes curriculum vitae (CV) data by leveraging a document reader, a Markdown parser, and an OpenAI embedding model
- It extracts structured information such as skills, languages, and professional summaries from the indexed data, outputting the results in a structured JSON format.
frontend
postcss.config.js - Configures PostCSS to use TailwindCSS and Autoprefixer plugins, enhancing the CSS build process for the frontend
- TailwindCSS facilitates utility-first styling, while Autoprefixer ensures CSS compatibility across different browsers
- This setup is crucial for maintaining a streamlined, responsive design across the project's frontend architecture.tsconfig.node.json - Configures TypeScript compiler options for the frontend's node environment, focusing on modern JavaScript standards and strict type-checking to enhance code quality and maintainability
- It specifically targets the setup for the Vite configuration file, ensuring efficient module resolution and error management during development without outputting compiled files.package-lock.json - The `package-lock.json` file located in the `frontend` directory plays a crucial role in the overall architecture of the project by ensuring consistent installations and version control of the frontend dependencies
- This file lists specific versions of libraries such as React, Axios, and other UI-related packages that are essential for the frontend application's functionality
- By locking down these versions, the file prevents discrepancies between development environments and ensures that all developers and deployment pipelines use the exact same versions of each package, thereby avoiding potential conflicts and bugs that could arise from version mismatches
- This contributes to the stability and reliability of the frontend codebase within the larger project ecosystem.tsconfig.json - Manages TypeScript configuration inheritance within the frontend module by referencing specific configurations for application and node environments
- It centralizes TypeScript settings, ensuring consistent compiler behavior across different parts of the frontend development environment, thereby streamlining the build process and maintenance of the codebase.tailwind.config.js - Configures Tailwind CSS for the frontend, specifying which HTML and JavaScript files should utilize Tailwind's utility classes
- It sets up the basic theming structure and declares no additional plugins
- This configuration ensures that the styling framework is optimized for the project's specific frontend architecture, enhancing UI consistency and performance.tsconfig.app.json - Configures TypeScript compiler options for the frontend application, targeting modern JavaScript features and optimizing for React JSX
- It enhances code quality and maintainability by enforcing strict type-checking and linting rules
- The configuration also improves build performance by utilizing module resolution suited for bundlers and excluding code generation.package.json - Serves as the configuration backbone for the frontend module of the project, specifying dependencies and scripts essential for development, building, and testing
- It supports the React framework integration, ensuring tools like Vite, TypeScript, and ESLint are configured for efficient workflow and code quality management in the frontend development environment.vite.config.ts - Defines the configuration for the Vite build tool within the frontend architecture, specifically integrating React support through plugins
- This setup enhances the development environment by enabling features like fast refresh and optimized build times, crucial for efficient frontend development and deployment in the project's broader ecosystem.index.html - Serves as the entry point for the CV Wizard web application, establishing the foundational HTML structure and linking essential resources
- It sets up the viewport settings, specifies character encoding, and integrates the main TypeScript application file to activate the user interface components within the designated root element.eslint.config.js - Configures ESLint for the frontend directory, focusing on TypeScript and React standards
- It integrates specific plugins for React hooks and refresh patterns, setting up recommended rules and ignoring compiled output
- The configuration ensures code adheres to best practices for a modern JavaScript and TypeScript environment, enhancing maintainability and developer productivity across the project.src
main.tsx - Initializes the React application by setting up the root component within a strict mode context
- It imports essential styles and the main application component from 'App', then mounts it to the DOM, ensuring a structured and error-checked environment for the app's frontend development.index.css - Integrates Tailwind CSS into the frontend architecture, enabling the application of utility-first styling across the web interface
- By including base, components, and utilities directives, it ensures a consistent design system that enhances UI development speed and maintenance within the project's frontend framework
- This setup is crucial for scalable and efficient style management.App.tsx - Frontend/src/App.tsx serves as the user interface for CVWizard, enabling users to upload their CVs, input job URLs, and utilize AI-driven analysis to tailor their CVs for specific job opportunities
- It manages user interactions, data input, and displays analysis results, integrating seamlessly with backend services for data processing and insight generation.vite-env.d.ts - Frontend/src/vite-env.d.ts serves as a TypeScript declaration file that integrates Vite-specific types into the project's development environment
- By referencing Vite's client types, it ensures that the development tools recognize and correctly handle Vite's features, enhancing the efficiency and reliability of the frontend development process within the broader codebase architecture.components
AnalysisResults.tsx - AnalysisResults.tsx visualizes AI-generated insights for evaluating CV-job alignment within the frontend of the application
- It displays a radial chart for alignment scores, lists matched and missing keywords, and offers AI-powered suggestions to enhance CV effectiveness, contributing to a user-friendly interface that aids in optimizing job applications.LoadingState.tsx - Provides a visual feedback component for asynchronous operations within the application's frontend
- It displays an animated spinner, a dynamic progress percentage, and a progress bar to indicate the status of ongoing processes, such as AI computations on user-uploaded CVs, enhancing user experience by communicating operation progress clearly.services
api.ts - Manages interactions with the backend API for a web application, facilitating the upload of CVs, retrieval of job descriptions, and generation of AI-driven insights by posting data to specific endpoints
- It handles data transmission securely and manages errors effectively, ensuring robust communication between the frontend and server.
Before getting started with CV Wizard, ensure your runtime environment meets the following requirements:
-
Backend:
- Python
^3.10
- Pip for dependency management
- Python
-
Frontend:
- Node.js
^18.x
- npm or yarn as a package manager
- Modern browser for running the app
- Node.js
Install CVWizard using one of the following methods:
Build from source:
- Clone the CVWizard repository:
git clone https://github.com/maciekmalachowski/CVWizard
- Navigate to the project directory:
cd CVWizard
- Install Backend Dependencies:
cd backend
pip install -r requirements.txt
Create a .env
file in the backend/ folder with the following OpenAI API key:
OPENAI_API_KEY=your_api_key_here
- Install Frontend Dependencies:
cd frontend
npm install
Run Backend:
Navigate to the backend folder and start the Flask server:
cd backend
flask run
Backend will run on http://localhost:5000
with Flask-CORS enabled to match requests from the frontend.
Run Frontend:
Open a new terminal window and start the frontend:
cd frontend
npm run dev
Frontend will run on http://localhost:5173
.
Method | Endpoint | Description |
---|---|---|
POST | /read-cv |
Upload and process CV |
POST | /get-job-data |
Scrape job description from URL |
POST | /get-ai-insights |
Generate AI insights comparing CV and job requirements |
This project is protected under the MIT License.