Inspiration

Job seekers spend hours tweaking resumes without knowing if they're hitting the right signals for ATS systems or hiring managers. We wanted to build an AI agent that gives honest, multidimensional feedback — not just a spell-check, but a full coaching session that adapts to freshers vs. experienced candidates alike.

What it does

ResumeIQ lets you upload a PDF or DOCX resume and instantly get:

  • A 7-dimension AI score (ATS Compatibility, Impact & Quantification, Skill Relevance, Language & Authenticity, Structure & Readability, Completeness, Competitive Standing)
  • A targeted AI rewrite with a side-by-side comparison and change log
  • Company-fit research powered by Gemini's grounded Google Search
  • A personalized improvement roadmap with time-boxed milestones
  • A downloadable professional DOCX/PDF from polished templates
  • Google Drive export of your rewritten resume + roadmap

How we built it

The backend is a FastAPI async service backed by PostgreSQL (via SQLAlchemy + asyncpg). All AI work — analysis, rewriting, roadmap generation, company research, cover letters — runs through Google Gemini 2.5 Flash via the google-genai SDK, with structured JSON prompting and validation layers to ensure reliable outputs. Document generation uses docxtpl (Jinja2-powered DOCX templates). Session history and benchmarking are persisted to MongoDB Atlas via the MCP server. The frontend is React 18 + Vite with a clean component architecture.

Challenges we ran into

Gemini occasionally returns invalid JSON for complex multi-field prompts, so we built a robust parsing layer with fallback error schemas. Async DOCX-to-PDF conversion on Windows (via LibreOffice or MS Word) required careful subprocess handling. We also had to design a "fresher mode" — when the AI detects an entry-level resume, it reruns the analysis with calibrated benchmarks so new graduates aren't penalized for lacking years of experience.

Accomplishments that we're proud of

Getting the 7-dimension scoring model to return consistent, validated JSON across varied resume formats was a significant win. The dual-mode analysis (general vs. fresher) meaningfully improves fairness for entry-level candidates. The full pipeline — upload → analyze → rewrite → generate → download — runs end-to-end reliably, which required fixing 12 bugs before the first clean run.

What we learned

Structured prompting with strict JSON schemas and post-response validation is essential for agent reliability. MCP makes it remarkably simple to plug MongoDB Atlas into a Python backend as a first-class agent tool. Async SQLAlchemy with connection pooling requires careful lifespan management in FastAPI to avoid connection leaks.

What's next for ResumeIQ

  • LinkedIn profile import and live job description scraping
  • Multi-template gallery with user-uploaded custom templates
  • Comparative benchmarking across anonymized aggregate session data
  • Email/calendar integrations for application tracking
  • Mobile-optimized PWA

Built With

Share this project:

Updates