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.

Built With

Share this project:

Updates