Automatically tailors resumes for specific job applications using LibreOffice.
A toolkit for automatically tailoring your resume to specific job applications using LibreOffice. The system allows you to maintain a single resume template and quickly generate customized versions for different job applications.
libreoffice-script-provider-python
system package installed.odt
resume with bookmarksClone the repository
git clone https://github.com/yourusername/ResumeTailor.git
cd ResumeTailor
Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/Mac
Install dependencies
pip install -r requirements.txt
Set up the UNO environment
ln -s /usr/lib/python3/dist-packages/uno.py .venv/lib/python3.*/site-packages/uno.py
ln -s /usr/lib/python3/dist-packages/unohelper.py .venv/lib/python3.*/site-packages/unohelper.py
python3.*
with your actual Python version (e.g., python3.12
)Prepare your resume template
setup_resume_bookmarks.md
to add bookmarksStart LibreOffice in headless mode
soffice --accept="socket,host=localhost,port=2002;urp;" --headless --norestore --nologo --nodefault &
Run one of the test scripts
# Update just the skills section
./test_skill_update.py
# Update a project description
./test_canova_update.py
./test_project_update.py
# Update multiple sections for a specific job
./tailor_for_job.py
Check the output
.odt
files with names like Adityak_For_TechCompany_DataScientist_20250401.odt
Start the resume editor service
./start_resume_editor_service.sh
This script starts LibreOffice in headless mode and runs the MCP server.
Configure Claude Desktop
claude_desktop_config.json
in your home directory:{
"mcpServers": {
"libreOfficeResumeEditor": {
"command": "/home/adi235/ResumeTailor/.venv/bin/python",
"args": [
"resume_editor_server.py"
],
"cwd": "/home/adi235/ResumeTailor"
}
}
}
Restart Claude Desktop
Ask Claude to update your resume
See CLAUDE_MCP_USAGE.md
for more detailed instructions on using with Claude.
The containerized deployment provides consistent execution across macOS and Linux systems without the need to install LibreOffice or UNO libraries on the host system. The container includes both the Resume Editor service and the JD Keyword Extractor service.
Ensure Docker and Docker Compose are installed
Run the containerized application
./run_container.sh
This script will:
Output
directory on your host that maps to the container's output directoryAccessing the services
http://localhost:5001
http://localhost:5002
./Output
directoryManaging the container
# View container logs
docker logs resume-tailor
# Stop the container
docker-compose down
# Restart the container
docker-compose restart resume-tailor
Configure Claude Desktop for containerized use
claude_desktop_config_docker.json
file:# For macOS (adjust path as needed)
cp claude_desktop_config_docker.json ~/claude_desktop_config.json
# For Linux (adjust path as needed)
cp claude_desktop_config_docker.json ~/.claude_desktop_config.json
{
"mcpServers": {
"LibreOfficeResumeEditor": {
"url": "http://localhost:5001"
},
"JDKeywordExtractor": {
"url": "http://localhost:5002"
}
}
}
How the services work together
When asking Claude to update your resume, use these section names:
nc -z localhost 2002 || soffice --accept="socket,host=localhost,port=2002;urp;" --headless --norestore --nologo --nodefault &
ModuleNotFoundError: No module named 'uno'
, check your symlinks:
ls -la .venv/lib/python3.*/site-packages/uno.py
claude_desktop_config.json
is correctly formattedsetup_resume_bookmarks.md
for the correct naming conventionContainer fails to start:
docker logs resume-tailor
netstat -tuln | grep 5001
docker info
Cannot access the service:
docker ps | grep resume-tailor
curl -v http://localhost:5001
docker-compose restart resume-tailor
Output files not appearing:
./Output
directorydocker inspect resume-tailor | grep -A 10 Mounts
edit_resume_uno.py
- Core LibreOffice UNO API interactionresume_editor_server.py
- MCP server for Claude integrationstart_resume_editor_service.sh
- Script to start LibreOffice and the MCP servertest_*.py
- Test scripts for different resume sectionssetup_resume_bookmarks.md
- Guide for adding bookmarks to your resumeCLAUDE_MCP_USAGE.md
- Detailed instructions for using with ClaudeMIT # ResumeTailor
A universal remote MCP server that connects to popular productivity tools such as Notion, Monday, AirTable, and many more.
Manage schedules using the Dooray API. Requires API key, member ID, and calendar ID to be configured.
Talk with your Apple Notes
Interact with the DeepWriter API, an AI-powered writing assistant.
A containerized MCP server for Microsoft 365, featuring OAuth authentication and OpenTelemetry instrumentation for monitoring.
A simple note storage system with a custom note:// URI scheme, allowing users to add and summarize notes.
A comprehensive toolkit for text processing, formatting, and analysis.
Provides read-only access to issues within the Linear project management tool.
A macOS app that connects your digital life with AI, providing access to Calendar, Contacts, Location, Maps, Messages, Reminders, and Weather services.
Create notes in Flomo through AI chat interactions in Cursor or Claude desktop.