mirror of
https://github.com/gabrielkheisa/gemini-resume-checker.git
synced 2025-02-23 01:14:12 +07:00
add README.md
This commit is contained in:
parent
356a3a2d21
commit
a0b1d3e392
104
README.md
Normal file
104
README.md
Normal file
@ -0,0 +1,104 @@
|
||||
# Resume Analyzer API
|
||||
|
||||
This project is a Flask-based web service that allows users to upload their resumes in PDF format and compare them against a given job description. The application uses Google's Gemini AI to analyze compatibility and provide a score out of 100.
|
||||
|
||||
## Features
|
||||
- Upload a resume in PDF format
|
||||
- Analyze compatibility against a provided job description
|
||||
- Convert PDF to images for AI processing
|
||||
- Secure API with CSRF protection and reCAPTCHA validation
|
||||
- Rate-limiting to prevent abuse
|
||||
- Uses Flask-Limiter, Flask-WTF, and Flask-CORS for security enhancements
|
||||
- Deletes uploaded files after processing
|
||||
|
||||
## Requirements
|
||||
Before running the application, ensure you have the following dependencies installed:
|
||||
|
||||
- Python 3.8+
|
||||
- Flask
|
||||
- Flask-WTF
|
||||
- Flask-CORS
|
||||
- Flask-Limiter
|
||||
- PyMuPDF (fitz)
|
||||
- pdf2image
|
||||
- Pillow
|
||||
- Google Generative AI SDK
|
||||
- python-dotenv
|
||||
- requests
|
||||
- markdown
|
||||
|
||||
Install dependencies using:
|
||||
```sh
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
Create a `.env` file in the root directory and configure the following:
|
||||
|
||||
```ini
|
||||
GOOGLE_API_KEY=<your_google_api_key>
|
||||
UPLOAD_FOLDER=uploads/
|
||||
MAX_FILE_SIZE=4194304 # 4MB limit
|
||||
SECRET_KEY=<your_secret_key>
|
||||
RATE_LIMIT=1 per 10 seconds
|
||||
RECAPTCHA_SECRET_KEY=<your_recaptcha_secret_key>
|
||||
RECAPTCHA_SITE_KEY=<your_recaptcha_site_key>
|
||||
CORS_ORIGIN=<your_allowed_origin>
|
||||
FLASK_RUN_HOST=0.0.0.0
|
||||
FLASK_RUN_PORT=49465
|
||||
```
|
||||
|
||||
## Usage
|
||||
### Running the Application
|
||||
Start the Flask server:
|
||||
```sh
|
||||
flask run --host=0.0.0.0 --port=49465
|
||||
```
|
||||
or
|
||||
```sh
|
||||
python app.py
|
||||
```
|
||||
|
||||
### API Endpoints
|
||||
#### `GET /`
|
||||
Returns the upload page with reCAPTCHA integration.
|
||||
|
||||
#### `POST /`
|
||||
Accepts form data with a job description and a PDF resume.
|
||||
|
||||
- **Parameters:**
|
||||
- `g-recaptcha-response`: Required for reCAPTCHA verification.
|
||||
- `text_input`: The job description.
|
||||
- `file`: A valid PDF file (max 4MB).
|
||||
|
||||
- **Response:**
|
||||
```json
|
||||
{
|
||||
"summary": "Resume compatibility summary",
|
||||
"score": 85
|
||||
}
|
||||
```
|
||||
|
||||
- Returns a compatibility summary and a score (0-100).
|
||||
- If reCAPTCHA fails, returns `{ "error": "reCAPTCHA verification failed." }`.
|
||||
- If the PDF is invalid, returns `{ "error": "Invalid or potentially harmful PDF." }`.
|
||||
|
||||
## Security Features
|
||||
- **CSRF Protection**: Uses `Flask-WTF` for CSRF token validation.
|
||||
- **Rate Limiting**: Limits users to 1 request per 10 seconds.
|
||||
- **reCAPTCHA**: Ensures human users.
|
||||
- **PDF Sanitization**: Checks for JavaScript, embedded files, and potential security threats.
|
||||
- **Secure Headers**: Implements X-Frame-Options, Content-Security-Policy, and other security headers.
|
||||
|
||||
## Deployment
|
||||
To deploy this application in development mode, use:
|
||||
```sh
|
||||
flask run --host=0.0.0.0 --port=49465
|
||||
```
|
||||
or
|
||||
```sh
|
||||
python app.py
|
||||
```
|
||||
|
||||
You can also deploy it using Docker, Nginx, or cloud services like AWS, Google Cloud, or Heroku.
|
||||
|
Loading…
Reference in New Issue
Block a user