Inspiration
We were inspired to create AgentX Interview Helper to help students and recent graduates tackle the daunting job search process. I realized that while many people have solid skills, they often lack the personalized guidance needed to stand out. AgentX was born out of the idea of an AI-powered career coach that provides tailored feedback on resumes and helps users identify and address skill gaps.
What it does
AgentX is an intelligent chatbot that helps users prepare for job interviews. The user uploads their resume and a job description, then asks a question. AgentX analyzes the documents and routes the query to a specialized AI agent to provide a detailed response.
Resume Review: The agent provides feedback on the user's resume, suggesting improvements to content, formatting, and keyword optimization to better match the job description.
Skill Gap Analysis: It compares the user's resume against the job description to pinpoint missing skills. It then offers a learning plan to help the user acquire those skills.
Interview Preparation: The agent can answer general questions about the role or industry, providing a conversational interview practice experience.
Create candidates DB: extract resumes and save into TiDB for HR.
How we built it
We built the AI Career Assistant as a full-stack web application using Python and the Streamlit framework for the front end. The true magic, however, lies in the back end, which is powered by the Agno agentic framework and the Google Gemini Pro Flash model.
The core of the system is an agentic architecture with a central RouterAgent. This agent, acting as the team's leader, analyzes the user's intent to decide which specialized agent to route the query to:
Recruiter Agent: This agent is an expert in resume and job description analysis. It provides feedback on resume formatting, content, and relevance to a specific job.
Knowledge Agent: This agent focuses on skill development. It identifies skill gaps based on a resume and job description and offers guidance on how to acquire those skills.
To enable seamless communication between these agents, I designed a multi-agent system where the RouterAgent uses tool-calling to delegate tasks. When a user uploads a resume and a job description and asks for help, the RouterAgent analyzes the request, calls the appropriate tool, and passes the documents and query to the correct specialized agent. The agent then processes the request and returns the final response.
I also integrated a PDF parser to extract text content from the uploaded resume and job description files, making the documents accessible to the AI.
Challenges we ran into
Building this project came with its share of challenges, primarily stemming from the rapid evolution of the underlying frameworks. The main issues I encountered were:
Framework Compatibility: Agno, a new and rapidly developing framework, introduced breaking changes between versions. This led to several AttributeError and ValueError issues, such as AttributeError: 'GeminiFlashLLM' object has no attribute 'id' and ValueError: Invalid tool configuration arguments.
Tool-Calling and Pydantic Validation: The most significant challenge was correctly implementing the tool-calling mechanism. I struggled with passing the right arguments to the agent tools. The Pydantic validation system was very strict, and I had to learn exactly how to define tool schemas and ensure the function arguments matched. The core problem was realizing that the RouterAgent's tool callable should not be defined with external arguments but should instead access the necessary data (like resume_content and jd_content) directly from its own self instance.
Debugging None Outputs: An initial bug caused the agent to return None because the tool function was not correctly returning the result from the specialized agent. This required tracing the data flow from the inner agent's run method all the way back to the main RouterAgent's execute method to ensure the response was correctly captured and returned.
Accomplishments that we're proud of
What we learned
This project taught me a lot about the practicalities of building with AI agents.
The Power of Agentic Architectures: I learned how a modular, agent-based design can make a complex application more manageable. Routing tasks to specialized agents is far more efficient than building a single monolithic model to handle everything.
Embracing New Frameworks: Working with Agno, a cutting-edge framework, was a great learning experience. It taught me the importance of being adaptable and resourceful when documentation might be sparse or outdated. The process of debugging and problem-solving through trial and error was invaluable.
The Importance of Clear Communication: Building the RouterAgent required me to think about how to instruct the LLM. The prompt engineering was crucial to ensure the model understood its role as a router and correctly selected the right tool based on the user's intent. This experience reinforced the idea that AI is not just about code; it's also about clear and precise communication with the model itself.
What's next for AgentX Interview Helper
Next, I plan to enhance AgentX by integrating a voice-to-text functionality for a more natural user experience. I also want to add a feature for conversational mock interviews, where the agent can ask questions and provide real-time feedback on the user's responses. Finally, I aim to expand the knowledge base to support a wider range of industries and career paths.
Built With
- agno
- google-generativeai
- python
- streamlit
- tidb
Log in or sign up for Devpost to join the conversation.