This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
My friend Arjun kept sending me his resume and asking for feedback. Every time I'd just say "looks good bro" because honestly, telling someone their resume is bad is awkward. But he kept getting rejected from internships and I could see why.
So I built RoastMyResume - an AI tool that gives the kind of brutally honest, section-by-section feedback that friends are too uncomfortable to give. But it doesn't just roast you for fun. It actually helps you fix the problems: keyword gaps, weak bullet points, ATS issues, the works.
The whole thing runs locally on your machine using Ollama. No API keys needed, no data sent anywhere. You upload your PDF resume, paste the job description you're targeting, and the AI tears it apart then helps you rebuild it.
Here's what it does:
The Roast — section-by-section honest feedback, not the polite kind
4-Second Test simulates what a recruiter actually sees in their first 4 seconds
Rejection Risk Score — 0–100 score per resume section with charts
JD Match Analysis — compares your resume against the actual job description
Keyword Gap Finder — shows exactly which ATS keywords are missing
AI Rewriter — rewrites any weak section to be stronger and JD-matched
Interview Prep — predicts the hardest interview questions based on your resume gaps
Voice Roast (optional) — reads the roast aloud using ElevenLabs TTS
Demo
Watch it in action here:
Code
The full source code is on GitHub:
🔥 RoastMyResume
Brutally honest AI career coach for your friend who keeps getting rejected. Built for the "Build for a Friend" challenge — Open-Source AI at its core.
🎯 The Problem
My friend Arjun kept applying to internships and getting rejected. He'd send me his resume and I'd say "looks great!" — because I didn't want to hurt his feelings. He needed someone to tell him the truth.
So I built an AI that would.
RoastMyResume gives the brutal, honest feedback that friends are too polite to give — but in a constructive way that actually fixes the problem.
✨ Features
| Feature | What it does |
|---|---|
| 🔥 The Roast | Section-by-section brutal honest feedback in Gen Z voice |
| ⏱️ 4-Second Test | Simulates exactly what a recruiter sees in 4 seconds |
| 📊 Rejection Risk Score | 0-100 score per section with visual charts |
| 🎯 JD Match Analysis | Compares resume against actual job description |
| 🔑 |
How I Built It
Everything runs locally using open-weight models through Ollama. No OpenAI, no paid API, nothing leaves your machine.
The stack:
Ollama as the local model runner
Llama 3.2 (3B) as the default model — fast, runs on CPU, no GPU needed
Mistral (7B) and Gemma 2 (9B) as optional alternatives you can switch between in the sidebar
Streamlit for the web UI
PyMuPDF for parsing uploaded PDF resumes
ElevenLabs TTS (optional, needs API key) for the voice roast feature
Python for everything tying it together
The core flow: user uploads a PDF → PyMuPDF extracts the text → Ollama runs the chosen local model → the prompt asks it to analyze the resume section by section against the job description → Streamlit displays the results in tabs.
The model switch in the sidebar is just swapping which Ollama model name gets sent in the API call. Simple but works really well , you can literally feel the difference in reasoning quality between the 3B and 7B model.
To run it yourself:
bash
git clone https://github.com/neoquantx/RoastMyResume.git
cd RoastMyResume
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
if you want other models you can got through readme section:
ollama pull llama3.2
ollama serve
in a second terminal:
streamlit run app.py
Then open - http://localhost:8501.
Why Does Open Innovation Matter?
The honest answer: a closed API would have made this impossible to share the way I wanted to.
If I had used GPT-4 or Claude, Arjun would need to hand over his resume to a third-party server. That's a real concern a resume has your phone number, address, work history, everything. With Ollama and open-weight models, the resume never leaves his laptop. Nothing is logged, nothing is stored, no company is reading it.
Beyond privacy, open models let anyone actually run this. No credit card, no account, no API limits. Arjun just clones the repo and runs it. That's the point. If open-weight models didn't exist, this tool would either cost money to use or require people to trust a cloud service with their personal data. Neither of those felt right for something built for a friend.
Prize Categories
Based on what the project actually uses:
Featured categories ($200 each):
Best Use of Gemma — Gemma 2 (9B) is one of the three supported local models. Users can select it in the sidebar and run it fully locally via Ollama.
Partner categories ($100 each):
Best Use of ElevenLabs — the optional voice roast feature uses ElevenLabs TTS to read the roast feedback aloud. The .env setup for this is fully documented in the README.
Best Use of GitHub Copilot — used GitHub Copilot throughout development for UI fixes in Streamlit and other parts of the codebase. It helped speed up the frontend work significantly.
Top comments (0)