Work management software · Production service · 2026
Turning ticket text into standardized skills
A work item, such as a ticket in a project management system, describes a task in free text. The service we built reads that description and extracts the skills needed to do the task, so the system can identify who could work on it. The skills come from a standardized taxonomy, the European ESCO classification, so they can be matched across work items and against the skills recorded for each employee.
The challenge
Asked simply to name the skills, an LLM produces plausible but ad hoc labels: the same skill is worded differently from one work item to the next, so the results cannot be compared. Mapping to a fixed taxonomy avoids that, but then the service has to find the right entries among around 13,900 ESCO skills, whose formal names rarely match the wording of a ticket.
What we did
- Discovery and requirements with the product team
- Architecture of an agentic extraction loop
- Prototyping of prompt and tool strategy
- Production-grade API service with automated tests
- Containerized delivery with CI, plus handover documentation
How it works
- A LangGraph agent works with four tools: search the taxonomy, browse its hierarchy, verify a skill, and submit. Every skill is checked against a local full-text index before it is returned, so the service never returns a skill it cannot verify.
- The prompt translates tech jargon into formal taxonomy terms, scores relevance, isolates untrusted input against prompt injection, and runs deterministically for reproducible results.
- Guardrails cap tool turns and total time and detect loops.
- An asynchronous job API supports submitting, polling, retrieving, and rating results. Webhook callbacks use token auth, retries with backoff, and SSRF protection.
- Hardening covers token authentication, rate limiting, security headers, non-root containers, and least-privilege database roles. LiteLLM keeps the service provider-agnostic across OpenAI, Gemini, and Anthropic models.
Result
A secure, observable service that turns unstructured work descriptions into consistent, machine-readable skill profiles, with a taxonomy link, hierarchy path, and relevance score for every skill.