Inspiration

Most job seekers apply to dozens of roles without knowing if their resume actually matches what the employer is looking for. I wanted to give people a quick, data-driven way to check how well their resume aligns with a job description before they hit submit and get actionable advice on how to improve it.

What it does

Upload a resume PDF and paste a job description. The app computes a similarity score using NLP sentence embeddings, then sends both through Claude on Amazon Bedrock to generate personalized feedback that explains the score, highlights missing keywords, and suggests specific improvements.

How it was built

Backend: FastAPI serving a REST API, with sentence-transformers (all-mpnet-base-v2) for computing cosine similarity between resume and job description embeddings AI Feedback: Claude Sonnet 4.5 via Amazon Bedrock analyzes the resume against the job description and provides actionable coaching Frontend: React with Vite, featuring a clean dark-themed UI with color-coded score tiers Infrastructure: Deployed on AWS EC2 (Ubuntu 22.04) with systemd for process management, CPU-optimized PyTorch build to minimize resource usage

Challenges I ran into

Disk space on EC2: PyTorch installs GPU libraries by default, even on a CPU-only instance. This ate through the 8 GB default disk. I had to resize the EBS volume live and switch to a CPU-only PyTorch build, cutting the install from 2+ GB to 200 MB.

Bedrock model access: Newer Claude models require inference profiles rather than direct model invocation — took some debugging to figure out the right model ID format.

Temporary credentials: As a beginner to AWS, I found IAM roles, session tokens, and credential rotation a steep learning curve. Hackathon accounts use temporary credentials that expire, so I had to design the app to handle Bedrock failures gracefully without breaking the core scoring functionality.

Version compatibility: My local Python was 3.13, but EC2 had 3.10, so pinned dependency versions broke. We had to use flexible versioning for cross-platform compatibility.

Accomplishments

End-to-end full-stack deployment from a single codebase — React frontend and FastAPI backend served from one EC2 instance Combining traditional NLP (embeddings + cosine similarity) with generative AI (Claude) to give users both a quantitative score and qualitative feedback The app actually works and gives useful advice — it's not just a demo

What I learned

How to deploy ML models on cloud infrastructure with real resource constraints The difference between CPU and GPU PyTorch builds and when each matters How to integrate Amazon Bedrock and Claude into a Python backend CORS, systemd, security groups, EBS volumes — the unglamorous but essential parts of putting an app on the internet

What's next for Resume-Desc Similarity Analyzer

Add a React frontend deployed on Vercel for a cleaner public URL Section-by-section breakdown (skills match, experience match, education match) instead of a single score Support for multiple file formats (DOCX, plain text) Resume version comparison: upload multiple versions and see which scores best against a role Replace temporary AWS credentials with IAM roles for production-grade deployment.

Built With

Share this project:

Updates