Inspiration
We wanted to make job hunting less manual and more personalized by letting AI digest resumes, surface tailored openings, and keep recruiters in the loop automatically.
What it does
Candidates upload resumes, get matched to curated and SerpAPI-listed roles, answer dynamic questions, and trigger notification emails while recruiters manage listings and see scored submissions.
How we built it
Flask powers the backend (SQLite, RAG search, LLM scoring), Next.js handles the frontend, Vertex/OpenAI provide embeddings and chat, SendGrid sends emails, and secrets live in Google Secret Manager for all environments.
Challenges we ran into
Wrangling RAG quality, handling multiple credential sources, dealing with Vertex model deprecations, shipping secrets securely, and keeping the SerpAPI flow resilient.
Accomplishments that we're proud of
A single workflow that ranks jobs intelligently, delivers both recruiter and candidate email alerts, and is deploy-ready on Cloud Run with consistent secret management.
What we learned
Design secret access once and reuse it everywhere; model versions change quickly so fallbacks matter; and combining local/job-board data with RAG improves match quality.
What's next for the Job - search AI
Move to Cloud SQL or Firestore, add richer analytics and interview prep, tighten model monitoring, broaden job-source integrations, and polish the deployment pipeline for teams.
Log in or sign up for Devpost to join the conversation.