Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

ResumeIQ

An AI-powered career copilot that turns a résumé and job description into practical, actionable feedback.

ResumeIQ helps candidates evaluate role fit, identify skill gaps, improve résumé bullets, practise interviews, and discover job opportunities—all from one full-stack web application.

Live demo: ResumeIQ on AWS Elastic Beanstalk

Demo access note: The current student/demo deployment uses an HTTP Elastic Beanstalk URL. If the demo does not open, check that your browser has not automatically changed http:// to https:// in the address bar. HTTPS is a planned production upgrade; it requires additional infrastructure beyond this free-tier single-instance setup.

Why ResumeIQ?

Applying for a role often means manually comparing a résumé with a long job description, guessing which skills matter most, and preparing for interviews without personalised feedback. ResumeIQ brings those steps together in one workflow.

Features

  • AI résumé analysis — match score, skill-gap analysis, rewritten bullets, and tailored interview questions.
  • PDF résumé upload — extracts text from uploaded PDFs without keeping files on disk.
  • AI mock interview — streamed coaching and feedback for interview responses.
  • Job matching — searches current job listings through JSearch and ranks them against the user's résumé.
  • Application tailoring — generates a focused pitch, improved bullets, keywords, and a cover-letter draft for a selected role.
  • Authentication and privacy — OTP-based signup/login, JWT-backed sessions, per-user history, and server-side access guards.
  • Profile and saved jobs — profile details, location-aware job search, avatar support, and bookmarks.
  • Resilient AI integration — clear provider errors, retries for transient failures, timeouts, response recovery, and SQLite caching.

Tech stack

Area Technologies
Application Node.js, Express, JavaScript (ES modules)
Frontend HTML, CSS, vanilla JavaScript
AI Google Gemini API
Job data JSearch API via RapidAPI
Data SQLite via Node's built-in node:sqlite
Authentication bcrypt, JWT, HTTP-only cookies, email OTP
Deployment Docker, AWS Elastic Beanstalk, Nginx

Architecture

flowchart LR
 B["Browser"] --> E["Express application"]
 E --> S[("SQLite")]
 E --> G["Google Gemini API"]
 E --> J["JSearch / RapidAPI"]
 EB["AWS Elastic Beanstalk"] --> E
Loading

See architecture notes for the request flow and deployment context.

Screenshots

ResumeIQ match-report summary

Skill-gap feedback AI mock interview
Skill gaps and bullet improvements Mock interview questions
Job matches Résumé tailoring
AI-ranked job matches Tailored résumé recommendations

Screenshots are cropped to exclude browser chrome, URLs, and account navigation. Continue to avoid committing real résumés, email addresses, OTPs, API keys, or other private application data.

Run locally

Prerequisites

  • Node.js 22.5 or later
  • A Google Gemini API key
  • Optional: RapidAPI JSearch credentials for live job matching
  • Optional: SMTP credentials for sending OTP emails (otherwise codes are printed in the server terminal during development)

Setup

git clone https://github.com/YOUR-USERNAME/resumeiq.git
cd resumeiq
npm install
cp .env.example .env

Update .env with a strong JWT_SECRET and your GEMINI_API_KEY, then start the app:

npm start

Open http://localhost:8080.

To validate the Gemini configuration and list the models available to your key:

npm run check-ai

Environment variables

All supported configuration is documented in .env.example. Never commit a real .env file.

Variable Required Purpose
JWT_SECRET Yes Signs user sessions; use a long random value.
GEMINI_API_KEY Yes Enables résumé analysis, interview feedback, and AI job-fit scoring.
GEMINI_MODEL Yes Gemini model to use; check availability with npm run check-ai.
RAPIDAPI_KEY Optional Enables live job matching through JSearch.
SMTP_HOST, SMTP_USER, SMTP_PASS Optional Sends OTP emails in non-development use.
DB_PATH Optional SQLite file location.

Deploying to AWS Elastic Beanstalk

This repository includes a Dockerfile, .ebextensions/, and Nginx timeout configuration for Elastic Beanstalk. Configure all secrets as Elastic Beanstalk environment properties instead of placing a .env file in the deployment bundle.

For the current SQLite-based demo deployment, set:

DB_PATH=/var/app/data/resumeiq.db

The provided setup preserves data across ordinary redeployments. For a production system, use a managed database such as PostgreSQL and enable HTTPS before handling real user data.

Project structure

resumeiq/
├── public/ # Client pages, styles, and browser JavaScript
├── src/
│ ├── middleware/ # Authentication, uploads, validation, rate limits
│ ├── providers/ # Gemini, PDF, mail, and job-search integrations
│ └── routes/ # API endpoints
├── scripts/ # Gemini connectivity diagnostic
├── docs/ # Architecture and engineering notes
├── .ebextensions/ # Elastic Beanstalk data-directory setup
├── .platform/ # Nginx timeout configuration
├── .env.example # Safe configuration template
└── Dockerfile

Security and privacy notes

  • .env, local databases, logs, dependencies, and editor files are excluded through .gitignore.
  • Real API keys, passwords, OTPs, and personal résumés should never be committed.
  • Secrets should be set through environment variables in deployment platforms.
  • The application uses HTTP-only session cookies; configure HTTPS and secure-cookie settings before a public production launch.

Engineering notes

The project’s implementation decisions and resolved integration issues are recorded in engineering notes.

Roadmap

  • Move persistence from SQLite to managed PostgreSQL.
  • Add HTTPS with a custom domain, ACM, and CloudFront or a load balancer.
  • Add automated tests and CI checks.
  • Add an exportable analysis report and improved accessibility coverage.

Contributors

  • Krishna Sharma — Team Lead; project architecture, full-stack development, AI integration, AWS deployment, and repository preparation.
  • Sarthak Singh Bisht — Testing, research, documentation, and creation of the project presentation, PRD, project note, project report, and concept note.

License

Released under the MIT License.

About

AI-powered career copilot that analyzes résumés against job descriptions, identifies skill gaps, provides interview coaching, matches live jobs, and generates tailored application content using Google Gemini.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /