My Journey Building the Resume Filtering Bot

The Inspiration

My inspiration for this project stemmed from two major pain points in the hiring landscape. Firstly, I observed firsthand how the manual processing of resumes by HR teams takes an inordinate amount of time, leading to slow hiring cycles and potential oversights. Secondly, as a candidate myself, I often wished for a tool that could provide objective feedback on my resume, helping me understand its strengths and weaknesses against specific job descriptions. This dual perspective ignited the idea for an intelligent bot that could automate and optimize resume screening, benefiting both recruiters seeking efficiency and candidates aiming for clarity.

🛠️ How I Built It

I developed a multi-agent system using Google ADK and Gemini 2.0 Flash. The RootDispatcherAgent orchestrates the workflow, delegating tasks to specialized agents:

  • Input Agents: Read resume and job description PDFs.
  • Processing Agents: Parse resume text (skills, experience, education, contact) and match skills against the job description.
  • Scoring Agent: Calculates a 1-100 compatibility score (50% skills, 30% experience, 20% education).
  • Notification Agents: Sends real follow-up or rejection emails via Gmail API based on the score.

Each agent has clear instructions and uses tools and Pydantic output_schema for structured communication and reliable task execution.

What I Learned

Building this bot taught me the power of ADK for complex conversational flows, the art of prompt engineering for consistent LLM behavior, and the critical role of FunctionTools in enabling real-world actions. I also gained practical experience with multi-agent state management and integrating external APIs securely.

⛰️ Challenges Faced

  1. Structuring the Multi-Agent System: Designing clear agent responsibilities and seamless state handoffs for effective delegation via the RootDispatcherAgent was a significant architectural challenge.
  2. Crafting Effective Prompts: Achieving precise data extraction and reliable tool calls from the LLM required iterative prompt engineering, focusing on clarity, negative constraints, and explicit formatting examples.
  3. Improving the Scoring System: Developing a balanced, weighted scoring algorithm that accurately reflected candidate compatibility (considering skills, experience, and education contributions) required several iterations to fine-tune.

Built With

Share this project:

Updates