Abdelrhman

Bilingual Skills Engine
0 Views

Bilingual Skills Engine

Private Arabic-English skills taxonomy and search library with autocomplete, typo matching, and job-text extraction.

Project Overview

Skills Engine is a private JavaScript library and local browser demo for searching a bilingual skills taxonomy. It serves the skills-matching work used in Leviro's job tooling. A developer can load the generated data, search for a skill, inspect its place in the taxonomy, or extract skills from a job description.

The problem

Job posts use different spellings and languages for the same skill. A plain string search misses aliases, Arabic letter variants, and small typing errors. Broad category labels can also make a job alert too noisy. The engine creates one searchable representation from source lists and returns the taxonomy path with each match.

Key features

  • An offline build pipeline loads source skills, merges aliases, classifies entries, and writes JSON data files.
  • Exact lookup resolves a normalized name or alias to a canonical skill.
  • Prefix suggestions use sorted keys for autocomplete.
  • Token search finds skills when the words appear in a different order.
  • Trigram candidates and edit distance support typo-tolerant lookup.
  • Arabic normalization handles diacritics and common letter variants before matching.
  • Job-text extraction prefers longer non-overlapping skill phrases and returns their taxonomy paths.
  • Browser pages let a developer browse the tree and test extraction on sample text.

Technical architecture

Build scripts read source data and classification rules, then emit skills and tree JSON files. At runtime, an ES module loads those files into memory and builds exact maps, a sorted prefix list, token postings, and a trigram index. The extractor scans word groups in supplied job text and calls the same resolver. A small Node.js server serves the browser demos; the core modules can also be imported directly.

Engineering highlights

  • Canonical names retain priority when another skill uses the same text as an alias.
  • Longest-match span selection avoids counting a phrase and its contained word as separate matches.
  • The targeting module distinguishes specific skills from broad leaves before planning notifications.
  • The package has no runtime npm dependencies.

Image Gallery

No media available for this project.

Client Reviews

Feedback from people who used or collaborated on this project.

Share your experience with this project