Creating a nice looking curriculum with, of course, open source:
- Open-Resume - No need for DB’s
- Reactive-Resume - Json allow us to get creative with LLMs ✨
Creating a CV with Open Source
An applicant tracking system (ATS) is software used by organizations to manage the hiring process.
Some tricks to know if your CV is ATS-Friendly ⏬
- Export your PDF to word and see if it captures all the information properly
- Use the Open Resume Parser with your current template
It come sreally handy to have some templates which are easy to customize and that are seen properly by those ATS.
There are two FREE and OSS that do precisely that:
- The Open Resume Project - Option 1 to create a CV
- Reactive Resume Project - Option 2 to create a CV
Let’s get started!
The Open Resume Project
OpenResume is a powerful open-source resume builder and resume parser.
How to Setup Open-Resume ⏬
Guess what, it uses Tailwind and React.
Clone it and run it with:
git clone https://github.com/xitanggg/open-resume.git
cd open-resume
npm install
npm run dev
You can alternatively use the container image:
docker build -t open-resume .
docker run -p 3000:3000 open-resume
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t openresume .
#docker run -p 3000:3000 ghcr.io/jalcocert/open-resume:latest
#docker run -p 3000:3000 itsnoted/open-resume:latest
With this docker-compose for open-resume:
version: '3'
services:
open-resume:
container_name: openresume
image: itsnoted/open-resume:latest #ghcr.io/jalcocert/open-resume:latest
ports:
- "3000:3000" #UI
# networks:
# - cloudflare_tunnel
# - nginx_default
# networks:
# cloudflare_tunnel:
# external: true
# nginx_default:
# external: true
The package will be at: https://github.com/yourGHuser?tab=packages
After deployment, Open-Resume is waiting for you at:
localhost:3000
The best thing? It does NOT require authentication to use it.
It is built with NextJS, btw.
The Reactive Resume Project
-
The Reactive Resume Source Code at Github
- License: MIT ❤️
- The Reactive Resume Official Site
- Making Your Resume Publicly Available Guide
A free and open-source resume builder that simplifies managing your resume.
And the best of all? You can export the .json
of your resume and continue later (without parsing it again)
Also, you can make it publicaly accesible.
How to setup Reactive Resume with Docker⏬
- https://docs.rxresu.me/engineering/tech-stack?ref=fossengineer.com
- https://hub.docker.com/r/amruthpillai/reactive-resume/tags?ref=fossengineer.com
#https://hub.docker.com/r/amruthpillai/reactive-resume
version: "3.8"
services:
postgres:
image: postgres:alpine
restart: always
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
start_period: 15s
interval: 30s
timeout: 30s
retries: 3
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
server:
image: amruthpillai/reactive-resume:server-latest
restart: always
ports:
- 3100:3100
depends_on:
- postgres
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- SECRET_KEY=change-me-to-something-secure
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- JWT_SECRET=change-me-to-something-secure
- JWT_EXPIRY_TIME=604800
client:
image: amruthpillai/reactive-resume:client-latest
restart: always
ports:
- 3000:3000 #UI for RR
depends_on:
- server
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
# networks:
# - cloudflare_tunnel
# - nginx_default
# networks:
# cloudflare_tunnel:
# external: true
# nginx_default:
# external: true
volumes:
pgdata:
Visit
http://localhost:3000
and use Reactive Resume
Open-source alternatives to PostgreSQL - Reactive Resume with ARM64 ⏬
-
MariaDB: MariaDB is a community-developed fork of MySQL. It’s fully open source and is developed and maintained by the original developers of MySQL.
-
CockroachDB: CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters. It’s PostgreSQL compatible and offers fully-distributed ACID transactions.
-
SQLite: SQLite is a self-contained, serverless, and zero-configuration database engine. It’s very lightweight and is a good choice for small applications, embedded systems, and local storage in web browsers.
-
MySQL: MySQL is one of the most popular open-source relational databases. It’s widely used in web applications and is part of the popular LAMP (Linux, Apache, MySQL, PHP) stack.
CockroachDB: Build global, survivable, scalable cloud services with CockroachDB SQL database
- Option A) Reactive Resume + MariaDB:
version: "3.8"
services:
mariadb:
image: mariadb:latest
restart: always
ports:
- 3306:3306
volumes:
- dbdata:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -u root -p$$MYSQL_ROOT_PASSWORD"]
interval: 30s
timeout: 20s
retries: 3
environment:
- MYSQL_ROOT_PASSWORD=yourpassword
- MYSQL_DATABASE=yourdatabase
- MYSQL_USER=youruser
- MYSQL_PASSWORD=yourpassword
server:
image: amruthpillai/reactive-resume:server-arm64-latest
restart: always
ports:
- 3100:3100
depends_on:
- mariadb
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
- MYSQL_DATABASE=yourdatabase
- MYSQL_USER=youruser
- MYSQL_PASSWORD=yourpassword
- SECRET_KEY=change-me-to-something-secure
- MYSQL_HOST=mariadb
- MYSQL_PORT=3306
- JWT_SECRET=change-me-to-something-secure
- JWT_EXPIRY_TIME=604800
client:
image: amruthpillai/reactive-resume:client-arm64-latest
restart: always
ports:
- 3000:3000
depends_on:
- server
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
volumes:
dbdata:
- Option B) Reactive Resume + CockroachDB:
version: "3.8"
services:
cockroachdb:
image: cockroachdb/cockroach:latest
command: start-single-node --insecure
restart: always
ports:
- 26257:26257
- 8080:8080
volumes:
- dbdata:/cockroach/cockroach-data
server:
image: amruthpillai/reactive-resume:server-arm64-latest
restart: always
ports:
- 3100:3100
depends_on:
- cockroachdb
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
- POSTGRES_DB=postgres
- POSTGRES_USER=root
- POSTGRES_PASSWORD=
- SECRET_KEY=change-me-to-something-secure
- POSTGRES_HOST=cockroachdb
- POSTGRES_PORT=26257
- JWT_SECRET=change-me-to-something-secure
- JWT_EXPIRY_TIME=604800
client:
image: amruthpillai/reactive-resume:client-arm64-latest
restart: always
ports:
- 3000:3000
depends_on:
- server
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
volumes:
dbdata:
- Option C) Reactive Resume + SQLite
SQLite is an embedded database, which means it’s not a standalone server that can be accessed over a network.
Instead, it’s a library that’s linked into your application, and the database is a regular file on your filesystem. Therefore, you don’t need (and can’t use) a separate service for SQLite in your Docker Compose file.
version: "3.8"
services:
server:
image: amruthpillai/reactive-resume:server-arm64-latest
restart: always
ports:
- 3100:3100
volumes:
- dbdata:/path/to
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
- DATABASE_URL=sqlite:////path/to/database.db
- SECRET_KEY=change-me-to-something-secure
- JWT_SECRET=change-me-to-something-secure
- JWT_EXPIRY_TIME=604800
client:
image: amruthpillai/reactive-resume:client-arm64-latest
restart: always
ports:
- 3000:3000
depends_on:
- server
environment:
- PUBLIC_URL=http://localhost:3000
- PUBLIC_SERVER_URL=http://localhost:3100
volumes:
dbdata:
-
Browse SQL with:
-
https://github.com/linuxserver/docker-sqlitebrowser?ref=fossengineer.com
-
https://github.com/clidey/whodb - GPL3.0
A lightweight next-gen database explorer - Postgres, MySQL, SQLite, MongoDB, Redis, MariaDB & Elastic Search
Now you are free to use this resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free
Conclusions
Alternatively you can use SSG’s to create a public CV…
Looking for something more?
An AI Based Free & Open Source Tool. To tailor your resume to a job description. Find the matching keywords, improve the readability and gain deep insights into your resume.
Document Analytics Tools
Mass document analytics platform based on LlamaIndex, Pgvector, React and Django.
What Does it Do? It provides several key features:
- Manage Documents - Manage document collections (Corpuses)
- Layout Parser - Automatically extracts layout features from PDFs
- Automatic Vector Embeddings - generated for uploaded PDFs and extracted layout blocks
- Data Extract - ask multiple questions across hundreds of documents using complex LLM-powered 8 querying behavior. Our sample implementation uses LlamaIndex + Marvin.
FAQ
Preparing a Python Environment to Parse CV’s ⏬
I used Python 3.8 as per the Dockerfile:
FROM python:3.8-slim
# Install git and nano (I find them useful)
RUN apt-get update && apt-get install -y git nano
# Will copy your local folder to the container
COPY . ./
# Install production dependencies.
RUN pip install -r requirements.txt
# Set the entrypoint to a bash shell
CMD ["/bin/bash"]
#docker build -t pythondev .
#podman build -t pythondev .
#podman exec -it python_container_for_dev /bin/bash
Once built, use the stack:
version: '3.8'
services:
pythondev_service:
image: pythondev #podman build -t pythondev .
container_name: python_container_for_dev
ports:
- "8502:8501"
#command: streamlit run app.py
command: tail -f /dev/null
# networks:
# - cloudflare_tunnel
# networks:
# cloudflare_tunnel:
# external: true
#docker run -d --name python_container_for_dev -p 8502:8501 pythondev tail -f /dev/null
docker build -t pythondev .
#podman build -t pythondev .
podman exec -it python_container_for_dev /bin/bash
python --version
pip list
Checking how readable is a CV Template
Resume Parsing with Python (spaCy) ⏬
spaCy is a library for advanced Natural Language Processing in Python and Cython. It’s built on the very latest research, and was designed from day one to be used in real products.
Resume Parsing with Python (Pyresparser) ⏬
- https://pypi.org/project/pyresparser/?ref=fossengineer.com - GPL v3
- https://github.com/OmkarPathak/pyresparser
pip install pyresparser
A simple resume parser used for extracting information from resumes
Resume Parsing with Python (PDFMiner) ⏬
https://github.com/pdfminer/pdfminer.six - MIT Licensed https://pypi.org/project/pdfminer.six/ https://pdfminersix.readthedocs.io/en/latest/
pip install pdfminer.six
#from CLI
pdf2txt.py example.pdf
pdf2txt.py example.pdf > output.txt
podman exec -it python_container_for_dev /bin/bash
The library works like this:
#FROM PYTHON
# from pdfminer.high_level import extract_text
# text = extract_text("sample.pdf")
# print(text)
###pdf2txt.py example.pdf
from pdfminer.high_level import extract_text
text = extract_text("sample.pdf")
print(text)
# Write the extracted text to a file
with open("output.txt", "w", encoding="utf-8") as f:
f.write(text)
podman exec -it python_container_for_dev /bin/bash
docker cp python_container_for_dev:/output.txt C:\Users\testuser\Desktop
Resume Parsing with Python (NLTK) ⏬
The Natural Language Toolkit (NLTK) is a Python package for natural language processing.
NLTK is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for industrial-strength NLP libraries, and an active discussion forum.
https://github.com/nltk/nltk - Apache v2 https://pypi.org/project/nltk/ https://www.nltk.org/
NLTK requires Python 3.7, 3.8, 3.9, 3.10 or 3.11/12.
How to create a F/OSS CV with Astro
You can use with Astro -SSG for websites (and not only):
- Astro CV Esquelete Source Code at Github
- Astro CV Theme Source Code at Github
- Astro Vitae Source Code at Github
How to manage SQLite
- https://github.com/pawelsalawa/sqlitestudio - GNU v3
- No need to install or uninstall. Just download, decompress and run.
A free, open source, multi-platform SQLite database manager.
- If you are lost with sql, you can check this sql 101 post