Inspiration
After constantly rewriting résumés for different roles and practicing interview questions that changed with every job description, we realized that students need a tool that adapts with them. Preparing for interviews shouldn’t require manually tweaking keywords, guessing what questions will be asked, or juggling scattered prep resources. We wanted a system that personalizes everything—résumé refinement, technical drills, and behavioral questions—based on the specific job a student is applying to.
What it does
Recruit uses Gemini to automatically tailor a résumé to a job description by revising keywords, structure, and phrasing for stronger alignment. It also generates personalized technical and behavioral interview questions by analyzing both the user’s résumé and the job description. For technical practice, it surfaces semantically similar coding questions from a curated dataset so students can prepare with material that actually matches the role.
How we built it
The frontend is built with React 19, TypeScript, and Vite 7 for fast iteration. The backend uses FastAPI with Pydantic models, uvicorn for serving, and permissive CORS to allow the Vite client to interact with endpoints directly during development. The google-genai SDK powers a GeminiClient that uploads PDFs and images and streams text using Gemini 2.5 models for résumé rewrites, question generation, and LaTeX conversion. For technical problem matching, we load Hugging Face’s LeetCode dataset with pandas, embed questions using sentence-transformers (all-MiniLM-L6-v2), and select semantically relevant problems for each job description.
Challenges we ran into
Because nearly every feature—from résumé rewriting to question generation to LaTeX conversion—relies on Gemini, output consistency was a challenge. Ensuring stable formatting, JSON-structured responses, and safe generations required deliberate prompt and schema design. Finding a sufficiently large and diverse technical problem dataset was also difficult; identifying and embedding the right dataset took significant iteration.
Accomplishments that we're proud of
We successfully integrated multiple complex components: multimodal résumé ingestion, Gemini-powered structured outputs, semantic search for technical prompts, and a fast, responsive frontend. The pipeline between uploading a résumé, refining it for a role, and receiving tailored interview prep works end-to-end with minimal friction.
What we learned
We learned to rely on structured output techniques rather than ad-hoc prompts to maintain consistency across generations. Working with multimodal Gemini inputs and strict schema validation reinforced the value of disciplined prompt engineering and clear model contracts.
What's next for Recruit
We plan to expand technical question coverage across more domains, integrate résumé version tracking, and develop role-specific preparation tracks so students can prepare with increasing depth as they approach interview season.
Log in or sign up for Devpost to join the conversation.