CV-Maker is a Python-based tool designed to streamline the process of creating professional resumes tailored to the position. It leverages GenAI agentic capabilities using LangGraph to enhance resume generation with intelligent suggestions and adaptive formatting. By utilizing Pydantic models for data validation, adapter patterns for presentation logic, and a modular architecture, the tool ensures a clear separation of concerns and high maintainability. Users can input their resume data in JSON format, which is then processed and rendered into a polished PDF document. The application supports Docker for easy deployment and includes scripts for running locally or deploying to Azure Web App Service.
It suppports upload of pdf and plain text/json files.
These models define the data structure and validation rules:
Header- Contact informationPosition- Job position detailsEducation- Educational backgroundExperience- Work experience with multiple positionsProject- Project informationSkillElement- Skills grouped by categoryResumeData- Container for all resume data
Adapters wrap Pydantic models and add presentation logic:
EducationAdapter- Formats education entriesExperienceAdapter- Formats work experience entriesProjectAdapter- Formats project entriesSkillAdapter- Formats skill entries
ModelAdapter- Generic adapter base class that provides common functionalityResumeElement- Protocol defining the interface for resume elements
Section- Groups related elements under a heading
- JSON data is loaded and validated using Pydantic models
- Adapters wrap the models to provide presentation logic
- Sections organize the elements for rendering
- The PDF is generated with proper styling and layout
This architecture provides a clear separation of concerns:
- Data validation and structure (Models)
- Presentation logic (Adapters)
- Layout and organization (Sections)
The application incorporates a React agent from LangGraph to assist with interactivity and provide intelligent suggestions. This agent uses LangGraph's features to offer context-aware responses, helping users create resumes that are more personalized and polished.
This code utilizes Chainlit, a framework designed for building both backend and frontend components of an application. Chainlit simplifies the process of creating interactive user interfaces while integrating seamlessly with backend logic. It allows developers to focus on the core functionality of their application by providing tools for rapid development and deployment of full-stack solutions.
Run docker compose up --build to fetch the image, install all dependencies, run the code, and generate the resume inside src/ directory
We've created a convenient script that handles running the application in Docker with the proper environment variables:
- Make sure
dev.envfile is properly configured with your Azure OpenAI credentials - Make the script executable:
chmod +x run-with-env.sh - Run the script:
./run-with-env.sh
The application will be available at http://localhost:8000
# Run with environment variables from dev.env
./run-with-env.sh
# Or run manually with Docker
sudo docker run -d \
-p 8000:8000 \
--name cv-maker-app \
--env-file dev.env \
-v "$(pwd)/src:/app/src" \
-v "$(pwd)/output:/app/output" \
-v "$(pwd)/res:/app/res" \
cv-maker# List all running containers
docker ps
# List all containers (including stopped ones)
docker ps -a# Stop the container
docker stop cv-maker-app
# Start an existing container
docker start cv-maker-app
# Remove the container
docker rm cv-maker-app
# View logs with timestamps
docker logs --timestamps cv-maker-app# Check what's using port 8000
sudo lsof -i :8000
# Execute a command in the container
sudo docker exec -it cv-maker-app /bin/sh
# Check network connections in the container
sudo docker exec cv-maker-app netstat -tulpnTo deploy this application to Azure Web App Service, follow these steps:
-
Make sure you have the Azure CLI installed and are logged in:
az login
-
Configure your
dev.envfile (environment variables) with your Azure OpenAI credentials -
Run the Azure deployment script:
chmod +x azure-deploy.sh ./azure-deploy.sh
-
The script will:
- Build your Docker image using Docker Compose
- Create an Azure Container Registry and push your image
- Create an Azure Web App for Containers
- Configure environment variables and persistent storage
- Deploy your application
-
Once deployment is complete, your application will be available at:
https://ats-resume-app.azurewebsites.net
- Azure Container Registry: Stores your Docker container image
- Azure Web App for Containers: Hosts your application
- Azure Storage Account: Provides persistent storage for generated resumes
You can monitor and manage your application through the Azure Portal:
- View logs: Azure Portal > Your Web App > Monitoring > Log stream
- Scale up/down: Azure Portal > Your Web App > Settings > Scale up (App Service plan)
- Configure custom domains: Azure Portal > Your Web App > Settings > Custom domains

