Skip to content

Releases

SkillGraph v1.0.0

Choose a tag to compare

@AtulACleaver AtulACleaver released this 06 Oct 11:08
271a30f

What's Changed

Full Changelog: data-v4...v1.0.0

rules-v2

Choose a tag to compare

@AtulACleaver AtulACleaver released this 05 Oct 19:34
e23834f

rules-v2
artifacts/rules.parquet: 772e49d57903dedda6833a6480bd5e40ea53d39ff4582d52c1940d6379f89c8b

model-v4

Choose a tag to compare

@AtulACleaver AtulACleaver released this 05 Oct 19:34
e23834f

model-v4
artifacts/classifier.pkl: 9aea092ad75e9ab938bb463e6ad067ef8fbd42ccffe3dc1123d6aa1c59d3f051
artifacts/label_encoder.pkl: b267b408e9b0b9be719c9cfde23858ae9f94780c0a2ef584e61f1252ea31454e

data-v4

Choose a tag to compare

@AtulACleaver AtulACleaver released this 05 Oct 19:34
e23834f

data-v4
data/dataset.parquet: 700336df38002c9c57b407fdc02a5697e114e8fc9f34e9fa162b8ddac2cbdc8a
data/baskets.parquet: 5d9252bc32ac0282f2e14734e7bd137c4ec6d52449549e7d171590952673bae9

rules-v1

Choose a tag to compare

@AtulACleaver AtulACleaver released this 04 Oct 07:06

Association rules mined on data-v3 baskets using FP-growth.

  • Rule count: 336
  • min_sup: 0.005 (0.50%)
  • min_confidence: 0.3
  • min_lift: 1.2
  • SHA-256 (baskets.parquet): a2dfd96cae05f12a32bc09f85ac4c32d1830e7e46681d98af8ebd7165c51b0bb
  • SHA-256 (rules.parquet): f607fa3a0976c3e0d2d22442bdc7017bbec4936a7bcd4888c9a229e3e97190a7

model-v3

Choose a tag to compare

@AtulACleaver AtulACleaver released this 04 Oct 04:16

Training commit SHA: bf4e0be

data-v3 Asset Hashes (SHA256):

  • baskets.parquet: a2dfd96cae05f12a32bc09f85ac4c32d1830e7e46681d98af8ebd7165c51b0bb
  • dataset.parquet: f6a06ba428981d3a0298f611b92706306644f8e36bdec03f07e607e158142752
  • skill_vocab.json: d749eb5d5044fea1e366972fba1bf94351c822dd580ac66a0e711a6f8f92dece
  • skills_autocomplete.json: aa45b9dff320373682a87c49bdfeee87ffabe181f13558305c78611c36ccf036

Model Selection:
We chose Logistic Regression because LightGBM's lead was under 3 points, favoring simplicity and interpretability.

Test Metrics:

  • Macro-F1: 0.742
  • Accuracy: 0.746 (Majority baseline: 0.177)
  • Top-3 Accuracy: 0.925

Note: The model is consistently overconfident in the upper probability bins (e.g., predicting 0.976 when the true probability is 0.915, or predicting 0.854 when true is 0.724).

Band Cutoffs (p75/p50 percentiles on val set):

  • Backend: Ready >=0.25, Close >=0.15
  • Data / BI Analyst: Ready >=0.20, Close >=0.10
  • Data Science / ML: Ready >=0.20, Close >=0.10
  • DevOps / Cloud: Ready >=0.15, Close >=0.10
  • ERP / Enterprise: Ready >=0.10, Close >=0.10
  • Frontend: Ready >=0.20, Close >=0.15
  • Full Stack: Ready >=0.25, Close >=0.15
  • Mobile: Ready >=0.20, Close >=0.15
  • QA / Test: Ready >=0.15, Close >=0.10
  • Support / IT Ops: Ready >=0.11, Close >=0.05
    (Probability cutoffs remain: Ready >=0.6, Close >=0.3)

Environment:

  • Python: 3.11
  • Packages: numpy 2.4.6, scipy 1.17.1, scikit-learn 1.9.1, pandas 3.0.6, pyarrow 25.0.1, rapidfuzz 3.14.6, lightgbm 4.7.0, mlxtend 0.25.0

Asset Hashes (SHA256):

  • classifier.pkl: 9eb0a756879d1491ed2e9f9acb6f71f43ffdf452e2ed725b1795bd2bef5a7a8b
  • label_encoder.pkl: b267b408e9b0b9be719c9cfde23858ae9f94780c0a2ef584e61f1252ea31454e
  • metrics.json: 05cfb86195be431c1699b1cd5b30d3ea31d405e184beded65f9430793ab2dd13
  • role_profiles.json: 72d6a8d886b1d173adf7dd27c8448e3b164831b230cfafb52ccdb88616e5b6cf
  • rules.parquet: cd2842f8495b16a9f58d2dad6d68925499fb362696f48c73817331bb0f256cfe
  • skill_vocab.json: d749eb5d5044fea1e366972fba1bf94351c822dd580ac66a0e711a6f8f92dece
  • skills_autocomplete.json: aa45b9dff320373682a87c49bdfeee87ffabe181f13558305c78611c36ccf036
    (Byte-identical copies of skill_vocab.json and skills_autocomplete.json are included so one download fills ARTIFACTS_DIR)

model-v2

Choose a tag to compare

@AtulACleaver AtulACleaver released this 03 Oct 17:13
a4eab02

Superseded by data-v3 / model-v3. Built from unmerged code. Do not use.

data-v3

Choose a tag to compare

@AtulACleaver AtulACleaver released this 03 Oct 18:20
a4eab02

Supersedes data-v2. Built from 0a1b387 on atul/20-data-v3 (PR #21); the tag points at a4eab02 by mistake and stays there.

Rows per family:

  • DevOps / Cloud: 2279
  • QA / Test: 1649
  • ERP / Enterprise: 1495
  • Data / BI Analyst: 1365
  • Full Stack: 1290
  • Backend: 1276
  • Data Science / ML: 1212
  • Support / IT Ops: 1088
  • Frontend: 784
  • Mobile: 434

dataset.parquet keeps 103 rows with no skill IDs, which ml/train drops.
The baskets.parquet row count is 34,569 against the plan's ~30,134 (unexplained).
Vocab size: 800. Mapped mass: 77,217 / 100,912 (76.5%).

Asset Hashes (SHA256):

  • baskets.parquet: a2dfd96cae05f12a32bc09f85ac4c32d1830e7e46681d98af8ebd7165c51b0bb
  • dataset.parquet: f6a06ba428981d3a0298f611b92706306644f8e36bdec03f07e607e158142752
  • skill_vocab.json: d749eb5d5044fea1e366972fba1bf94351c822dd580ac66a0e711a6f8f92dece
  • skills_autocomplete.json: aa45b9dff320373682a87c49bdfeee87ffabe181f13558305c78611c36ccf036

data-v2

Choose a tag to compare

@AtulACleaver AtulACleaver released this 03 Oct 17:13
a4eab02

Superseded by data-v3 / model-v3. Built from unmerged code. Do not use.

Data Handoff v1

Choose a tag to compare

@AtulACleaver AtulACleaver released this 02 Oct 07:47

First complete dataset handoff. dataset.parquet: 17,993 labelled rows across 10 families. baskets.parquet: 30,134 rows. skill_vocab.json: 1,500 canonical skills.