AI-Powered Skills Framework & Demand-Supply Matching

Quick Summary

Challenge
A global technology services major needed to convert thousands of unstructured job descriptions and resource demands into a standardized skills taxonomy, then match them against its workforce, an all-manual process too slow to scale.
Solution
Tatras Data built a Python-based NLP pipeline that parses raw job descriptions into structured Skill Cluster Units (SKUs), then runs a multi-layered matching engine to pair incoming demand with the best-fit associates, flagging skill gaps and recommending upskilling paths along the way.
Result
The system went into production, automating skill extraction and associate matching across the full demand-supply lifecycle — from converting incoming job descriptions into structured skill data, to matching live demand, to matching against resource forecasts — cutting manual JD-to-skill mapping down to a repeatable script and giving recruiters a ranked, explainable shortlist in place of hours of manual JD reading and spreadsheet cross-referencing.

Tech Stack

AI/NLP: spaCy NLTK Porter Stemmer | Matching: Fuzzy matching Jaccard index Substring & edit-distance matching | Data: JSON-based skill cluster taxonomy Excel ingestion/export | Dev: Python (main.py / utils.py modular pipeline) | Architecture: Rule-based + supervised NER hybrid extraction

The Challenge

The client, a global technology services provider, was building a new skills framework to better align its workforce with incoming client demand. On paper, the idea was simple: describe every job in a common language of skills, then match people to work based on that language. In practice, the job descriptions arriving from customers were dense, inconsistent blocks of free text, and the associate data lived across separate spreadsheets that had never been designed to talk to each other.

A Day in the Life: Before Our Solution

Every new job description landed in someone's inbox as an unstructured wall of text: required skills, nice-to-haves, certifications, and role details all run together. A team member would read through it, manually decide which of the company's defined skill clusters it belonged to, and note which clusters were an exact fit versus a rough approximation. Multiply that by daily incoming JDs and a growing associate bench, and matching the right person to the right demand became a game of institutional memory and spreadsheet cross-referencing. There was no consistent way to say how good a match actually was, or what a near-miss associate would need to learn to close the gap.

Pain Points:

  • Job descriptions arrived as unstructured free text with no standard mapping to skill clusters
  • No repeatable method to distinguish "must-have" (anchor) skills from "nice-to-have" (supplementary) skills at scale
  • Associate data was split across disconnected spreadsheets (skills, proficiency, cluster fit)
  • No scoring system to rank how well an associate matched a piece of demand
  • Skill gaps for near-matches were invisible, so reactive and proactive upskilling had no data to run on

Solution

1. Core Innovation

Tatras Data designed a three-part pipeline that turns unstructured hiring and workforce data into a structured, scoreable matching system, and shows exactly how strong (or weak) each match is.

Here's how it works:

  1. JD-to-SKU Conversion: Job descriptions are run through a hybrid extraction pipeline, combining unsupervised keyphrase extraction, supervised NER, and lookup-based skill spotting, to identify the skills buried in free text.
  2. Normalization: Abbreviations are expanded (e.g., "SFDC" becomes "Salesforce"), text is cleaned, and both the JD and the skill taxonomy are stemmed to a common root form.
  3. Multi-Layered Matching: Each extracted phrase is checked against the skill cluster taxonomy through a cascading pipeline, exact match first, then substring matching, then fuzzy matching and Jaccard-index similarity as fallbacks, so nothing gets missed just because the wording was slightly different from the source data.
  4. Associate-Demand Scoring: For incoming demand, the system filters associates by availability, location, and cluster/role fit, then computes a Relevance & Interest Score (RIS) that weighs anchor skills, supplementary skills, adjacent skills, and domain expertise to rank the best-fit associates.
  5. Gap Identification: Where an associate is a near-match rather than an exact one, the system surfaces the specific skill gap, laying the groundwork for targeted upskilling recommendations.

The system doesn't just say "match" or "no match", it shows its work, so recruiters and resource managers can see why a candidate or associate was ranked the way they were.

2. Key Features

  • Hybrid skill extraction combining rule-based, NER-based, and lookup-based methods
  • Automatic abbreviation expansion and text normalization tuned to client terminology
  • Cascading match pipeline (exact → substring → fuzzy → Jaccard) for higher recall on messy text
  • Configurable Relevance & Interest Score (RIS) that accounts for anchor skills, supplementary skills, adjacent skills, and domain knowledge
  • Modular, script-based architecture (main.py / utils.py) that runs against a client's existing Excel and JSON exports with no new infrastructure

3. Workflow Integration

The pipeline was built to run against the client's existing exports, with no new systems required. Job descriptions come in as an Excel file; the script cleans, extracts, and maps them to skill clusters, then writes a structured output back to Excel alongside a JSON audit trail showing exactly which phrase matched which skill, via which algorithm, and at what confidence score. The same underlying matching engine powers both reactive matching (against live demand) and proactive matching (against resource forecasts), so the client can use one framework across hiring, staffing, and workforce planning.

Outcomes

🧩 Unstructured JDs converted into standardized, scoreable skill data🎯 Ranked, explainable associate-to-demand matches instead of manual spreadsheet work📊 Skill gaps surfaced automatically for near-match candidates🔁 One matching framework reused across reactive and proactive (forecast-based) staffing

Ready to build your AI system?

Let's discuss how our pipeline can accelerate your path to production.

Start a Conversation
You're interacting with a beta version of our chatbot—thanks for helping us improve!