Introduction
Applying for tech roles is a numbers game, but sending a generic resume is a guaranteed rejection. Every application needs a tailored resume, but manually rewriting bullet points for every single Job Description (JD) is exhausting.
As a Cloud and DevOps Engineer, I prefer automating my problems. So, I built a completely local, zero-cost, AI-powered Applicant Tracking System (ATS) and Resume Tailor. It ingests my master profile, reads a target JD, uses a local LLM to rewrite my experience, and spits out a perfectly formatted, ATS-friendly PDF.
Here is a look under the hood at how I built it, the architecture, and how you can run it locally.
The Tech Stack
I wanted an architecture that was robust, decoupled, and cloud-ready for eventual deployment to AWS.
- Frontend: React (Vite) for a lightning-fast, dynamic UI.
- Backend: FastAPI (Python) for asynchronous routing and high performance.
- Database: MongoDB (Containerized via Docker) for unstructured document storage.
- AI Engine: LangChain orchestrating Ollama (Llama 3), running entirely locally for data privacy and zero API costs.
- PDF Rendering: WeasyPrint & Jinja2 templates.
Core Features
- Dynamic Master Profile Builder Instead of relying on a static text file, I built a LinkedIn-style dashboard. It allows you to dynamically add, edit, and organize your professional experience, technical projects, and certifications. This acts as the "source of truth" database for the AI.
- AI Resume Tailoring & Rendering You simply paste a target Job Description into the generator. The FastAPI backend streams this to the local Llama 3 model, which intelligently filters and rewrites your master profile to highlight the exact keywords the employer is looking for. It then compiles this into a strict, Harvard-style HTML template and renders a downloadable PDF—guaranteed to pass automated ATS parsers.
- Kanban Application Tracker Once the resume is generated, the app automatically tracks the application. I built a drag-and-drop Kanban board to visualize the CI/CD pipeline of the job hunt: from Preparing to Applied, Interviewing, and Offered.
How to Run It Locally
I have open-sourced the project so you can use it for your own job hunt. You will need Docker and Ollama installed.
- Clone & Start the Database:
Bash
git clone https://github.com/zubair-gulbarge/job-hunter-ai.git
cd job-hunter-ai
docker-compose up -d
- Start the Backend:
Bash
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload
- Start the Frontend:
Bash
cd frontend
npm install
npm run dev
What’s Next?
Building this was a massive learning experience in uniting AI with full-stack development and containerization. I am planning to implement AWS infrastructure via Terraform next.
I would love the community's feedback! Clone the repo, try tailoring your own resume, and let me know what features you think I should add next. If you run into issues, drop a comment below or open a PR.
https://github.com/zubair-gulbarge/job-hunter-ai.git



Top comments (0)