CV Evaluator sends a CV to an LLM for review. A CodeYourFuture project.
-
Create a virtual environment:
python -m venv cveval-venv
-
Activate the virtual environment:
- Windows:
cveval-venv\Scripts\activate - macOS/Linux:
source cveval-venv/bin/activate
- Windows:
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.envfile in the project root with the following content:OPENROUTER_API_KEY=your_openrouter_api_key_here -
Update
app/llm_evaluator.ymlwith your desired LLM configuration (model, reasoning level, etc.).
From the project root directory:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- Static site: http://localhost:8000
- API documentation: http://localhost:8000/api/docs
app/
├── main.py # Main FastAPI application with API and static file serving
├── llm_evaluator.py # LLM evaluator module
└── static/ # Static files served at root path
└── index.html # Main HTML page for the CV Evaluation application
The application creates two FastAPI instances:
app: Main application that serves static files and mounts the APIapi_app: API-specific application mounted under/apiwith CORS enabled
slowapiis used for rate limiting, since there's LLM cost involved with each evaluation. The default limit is set to 5 requests per minute per IP address.markitdownis used to convert uploaded CV files (PDF, DOCX) into markdown format for easier processing by the LLM.
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
From the root of the project, where the Dockerfile is located:
$ sudo docker build -t cyf-cv-evaluator .
Run the local image, passing in the openrouter API key as an environment variable:
sudo docker run -ti --rm -e OPENROUTER_API_KEY=your_openrouter_api_key_here --name cyf-cv-evaluator -p 8000:8000 cyf-cv-evaluatorsudo docker save -o ~/cyf-cv-evaluator.tar cyf-cv-evaluator:latest
sudo chmod 777 ~/cyf-cv-evaluator.tarscp ~/cyf-cv-evaluator.tar user@server:/home/usersudo docker stop cyf-cv-evaluator
sudo docker rm cyf-cv-evaluator
sudo docker rmi cyf-cv-evaluatorLoad the image into docker:
sudo docker load -i ./cyf-cv-evaluator.tar
sudo docker imagesCopy docker-compose.yaml to the server, update the OPENROUTER_API_KEY environment variable, and run:
sudo docker compose up -d