Skip to content
04Web application2025Shipped

Smart Career Guide

AI Resume & Job Matcher

A web application that analyses a resume against job descriptions, then returns role recommendations and a structured skill-gap report.

0+

Processing stages

0+

Supported formats

0+

Report sections

  • Python
  • NLP
  • Flask
  • PostgreSQL
Smart Career Guide interface showing match score and skill gap breakdown
01

Problem

Candidates apply broadly and learn nothing from rejections. The information needed to target better applications is sitting in the gap between their resume and the job description, but comparing the two by hand across dozens of postings is not something anyone sustains.

  • No structured feedback on why a resume does not match a role
  • Manual comparison across many postings is impractical
  • Skill gaps stay implicit, so learning effort is unfocused
02

Solution

Upload a resume once, point it at job descriptions, and get a structured report: what overlaps, what is missing, and which roles fit best. The interface leads with the gap rather than a single opaque score, because the gap is the part a candidate can act on.

  • Resume parsing across common document formats into a normalised profile
  • Job description analysis extracting required and preferred skills
  • Match scoring with the contributing terms shown, not hidden
  • Skill-gap report grouped by theme so it maps onto learning decisions
03

Features

  • Resume upload and text extraction with format detection
  • Normalisation of skills and titles against a controlled vocabulary
  • Job description parsing into required versus preferred requirements
  • Match score with visible contributing and missing terms
  • Skill-gap report grouped into themes
  • Role recommendations ranked by fit
04

Architecture

A thin web layer handles upload and rendering. Extraction, normalisation and matching run as distinct stages so each can be tested and swapped independently, with parsed profiles and postings persisted for reuse.

Client
Edge
Services
Data & external

Swipe sideways to see the full diagram · tap a node to trace its outbound calls

05

Implementation

The application architecture mattered more than the modelling. Keeping each stage independent is what made the pipeline debuggable.

  • Extraction, normalisation and matching are separate stages with explicit data contracts
  • A controlled skill vocabulary collapses synonyms so scoring is not defeated by wording
  • Parsed artefacts are cached, so re-analysing against a new posting skips extraction
  • Scores always ship with their contributing terms, which keeps the output inspectable
  • Uploads are validated by type and size before any parsing runs
06

Challenges

Resume formats are not a format

Two PDFs that look identical can extract into completely different text orders. Adding a normalisation pass after extraction, and checking for obviously degenerate output before continuing, made downstream stages far more predictable.

Vocabulary mismatch between resumes and postings

The same skill appears under many names. Without a controlled vocabulary the matcher penalised candidates for word choice. Mapping surface forms onto canonical skills fixed most of the false gaps.

Making a score trustworthy

An unexplained number invites suspicion. Showing the terms that produced the score, and which requirements went unmatched, turned it from a verdict into something a user could reason about.

07

Result

A working application where a single resume upload produces a match score, an explicit skill-gap breakdown and ranked role recommendations against the job descriptions it is compared with.

08

Lessons Learned

Explainability was a product feature, not a nicety — the report only became useful once the reasoning was visible. If I extended it, the next step would be tracking a candidate's gaps over time so the app can show progress rather than a snapshot.

09

Screens

Resume match report with skill gap breakdown
Match report — overlap, gaps and recommended roles from one upload

Next project

GymFlow

Gym Management SaaS Platform