Inspiration

Job hunting during internship season means rewriting your resume for every single posting, but most of the time, you're just guessing what the employer actually cares about. We spend hours researching a company's culture on LinkedIn, but barely two minutes checking if our resume actually matches the job description. That gap is exactly what Match was built to close.

What it does

Match lets you upload your resume (PDF or Word) and a job description, even as a screenshot, and instantly:

  • Calculates a match score using real term-frequency vector math and cosine similarity, the same category of algorithm used in classic information retrieval and search-ranking systems
  • Shows exactly which important keywords from the job posting are present in your resume, and which are missing, ranked by how heavily the posting emphasizes them
  • Generates a tailored version of your resume, powered by Groq, that naturally works in the missing keywords without fabricating experience you don't actually have, shown side-by-side with your original so you can see exactly what changed

How we built it

  • Frontend: React + TypeScript, with client-side parsing so resumes and job descriptions never need to leave the browser unnecessarily. PDF/Word text extraction and OCR for screenshotted job postings happen locally
  • Backend: Spring Boot, built with Kiro's spec-driven development workflow. We wrote requirements in plain English and let Kiro turn them into structured specs and implementation tasks
  • Matching engine: a deterministic algorithm, not an LLM call. Tokenization, stopword filtering, term-frequency vectors, and cosine similarity, so the match score is explainable and reproducible, not a black box
  • AI tailoring layer: Groq's fast inference (Llama 3.3 70B) rewrites resume content to close keyword gaps truthfully, called server-side so the API key is never exposed to the browser

Challenges we ran into

  • Balancing the "AI-powered" expectation with wanting the core scoring to be genuinely explainable rather than just another prompt wrapper. We solved this by splitting the product into two clear layers: a deterministic scoring engine, and a separate AI-assisted tailoring step on top of it
  • Getting file parsing (PDF, Word, and OCR from screenshots) working reliably entirely in the browser without a heavy backend dependency
  • Iterating quickly under a tight hackathon timeline while still keeping the UI polished and the algorithm technically sound

What's next

Deeper resume formatting support (ATS-optimized export), semantic matching to catch synonyms and related skills the current keyword approach misses, and tracking match-score improvement over multiple tailoring rounds.

Built With

Share this project:

Updates

Submission history