02 / AI Agents
RagResume: RAG-Powered Resume Building Agent
RagResume is a solo-built agentic pipeline that takes a job description and a candidate's full career activity bank, then autonomously generates a tailored, ATS-optimized resume — dropping application time from 60+ minutes to under 5, while keeping the human in control of every bullet selected.
Company
Personal Project
Role
PM, Designer & Builder
Year
Feb – Mar 2026
Tags
01 / Role & Scope
Scope
I was the sole product manager, designer, and builder. This was a personal project born from my own job search, but I scoped and built it as if it were a product, with user research, architectural decisions, and iterative testing.
02 / Problem
The Grind
Job seekers with strong backgrounds still fail ATS screens because their resumes don't mirror the exact language of each posting. Customizing manually takes over an hour per application, and existing AI tools either stuff keywords generically or hallucinate experience the candidate never had.
The cost isn't just time. Every hour spent tailoring one resume is an hour not spent on networking, interview prep, or applying to the next role.
03 / Discovery
Research & Validation
I started where any PM should, with the existing solutions. I spent weeks using ChatGPT, Jobscan, and Teal to tailor my own resumes. The failure modes became clear quickly. ChatGPT didn't have full context of my work history, so it could only rework what was already on the page, even when I had better-fit experiences sitting unused. It couldn't selectively choose which bullets to include versus cut, so it left in irrelevant lines and padded the rest. When prompted to align with a job description, it hallucinated. It fabricated accomplishments to close the gap rather than surfacing real ones. Tools like Jobscan optimized for keyword density but had no formal process for understanding the deeper requirements of modern ATS parsers or AI-based resume screeners.
I talked to four other job seekers to pressure-test my assumptions. Three things stood out. First, speed matters more than perfection. People wanted to fire off a tailored resume the moment a posting dropped, not spend an evening on it. Second, they wanted control over which bullets appeared. The frustration wasn't that AI was helping. It was that AI was choosing for them. Third, they wanted their master activity bank to look like a resume, not a spreadsheet. Something they could scan visually and recognize as their own career.
I also analyzed my own failed applications. Two distinct failure modes emerged. ATS screens auto-rejected based on specific knockout criteria like missing keywords or mismatched titles. Human reviewers assessed holistic fit. "This reads like a product marketer, not a product manager." Any solution would need to address both gates separately.
04 / Solution
The Pipeline
I whiteboarded the initial pipeline as a simple three-step flow: a resume table database plus a JD rubric fed into RAG search, producing text output. That evolved significantly as I pressure-tested each step.
The first major architectural decision was choosing RAG over plain prompting. Prompting alone failed for a specific reason. It let the AI pick which experiences to surface based on superficial keyword overlap rather than semantic meaning. RAG solved this by vectorizing every activity in my career bank and matching on actual intent similarity to the job description, much closer to what the JD writer actually meant. It also reduced noise. By narrowing the candidate bullets before generation, the AI could spend its token budget on deep thinking and quality writing rather than sifting through irrelevant context. RAG also gave me observability. I could see exactly why the system chose specific bullets, and the user could override those choices.
The second key decision was splitting the scoring into two distinct rubrics: ATS and Intent. ATS optimization is mechanical. Keywords, knockout criteria, parseable formatting. But I'd seen firsthand that resumes passing ATS screens still fell flat with human reviewers. A hiring manager reads for career narrative, domain fluency, and whether this person thinks like the role demands. The pipeline runs the ATS rubric first to ensure the resume clears automated screens, then applies the Intent rubric to reframe emphasis, adjust narrative arc, and make the resume read the way a hiring manager expects for that specific role.
The hallucination problem required a layered fix. Early versions would claim you had the exact skill listed in the JD even when you didn't. I addressed this at multiple levels. The schema itself was restructured from full resume lines into chunked Situation-Action-Impact entries. This gave the RAG system cleaner, more atomic units to match against, reducing the temptation for the AI to blend or fabricate across experiences. At the prompt level, I added explicit constraints: no assumptions without evidence, and hard requirements versus transferable skills handled differently. If a JD lists Salesforce CRM but you have HubSpot experience, the system treats that as a transferable match rather than lying about Salesforce. But only if CRM knowledge isn't a knockout criterion. I also built human-in-the-loop checkpoints where the AI surfaces uncertainty and asks for permission before adding or changing anything, rather than making silent editorial decisions.
The final shipped product included a resume-formatted activity bank so users could visualize their full career in a familiar layout, the dual-rubric system, human-in-the-loop checkpoints at both matching and final review, and a WYSIWYG editor for last-mile adjustments. I used Gemini 2.0 Flash for generation, sentence-transformers for vector matching, and Streamlit for the interface.
05 / Result
What Shipped
Resume generation dropped from 60+ minutes to under 5 per application. User testing with four participants validated the approach. All identified it as a meaningfully smarter method than manual tailoring or generic AI tools, specifically calling out the control over bullet selection and the readability of the final output.
06 / What It Unlocked
What's Next
The architecture is designed to extend into a fully agentic workflow. Connecting to job-scraping and application agents so a user gets notified about a relevant posting and can one-click send a fully tailored resume instantly.