5.0 KiB
Inventory — baseline before full-catalog build-out (2026-07-07)
Snapshot taken at the start of the Fable-5 quality-foundation day
(Sites(staging)\skillfactor\auftrag_fable.md). Numbers verified against the
working tree, MSSQL and the Gitea API — not guessed.
What exists
Code (pipeline/, 1 623 lines Python)
| Script | Purpose | State |
|---|---|---|
p1_load.py |
ESCO 1.2.1 + O*NET 30.3 + crosswalk → MSSQL | done, idempotent |
p2_generate.py / p2b_add_workflows.py |
package generator + PR-gate workflows | done, ran for 100 occupations |
p3a_fetch_jobs.py |
JSearch fetcher, cached, budget-capped (55 req) | done, recruiter-only queries hard-coded |
p3b_store_evidence.py |
extractions.json → evidence tables | done, single-occupation, rebuilds tables per run |
p3c_aggregate.py |
market percentages → tools.md/skills.md/market.md | done, recruiter-only paths |
p3d_provenance.py |
PROVENANCE.md per package | done |
p4_publish.py / p4b_tenant_demo.py |
Gitea publisher, tenant demo | done |
p5_screenshots.mjs, landing_shots.mjs, factorial_probe.mjs |
screenshots/UI | done |
run_all.py |
orchestrator | done |
Not present yet (today's deliverables): pipeline/prompts/,
pipeline/templates/, pipeline/extract_local.py (Ollama), QA harness,
data/progress.json resume mechanics, Ollama keys in .env.
Data
- MSSQL
skillfactor(localhost, 12 tables):esco_occupation3 039,esco_skill13 939,esco_occ_skill126 051,esco_isco_group619,onet_occupation1 016,onet_task18 796,onet_dwa2 087,onet_task_dwa23 850,onet_software31 821,crosswalk_esco_onet4 210,evidence_job350,evidence_entity6 558. - data/raw/: ESCO + O*NET source dumps;
jobs/= 55 cached JSearch responses (~788 ads incl. duplicates, all recruiter-family queries, us+gb) +recruiter_ads.json(deduped full texts). - data/evidence/: 700 extraction records in JSON (350 stored in DB from
extractions.json;extractions_new_part1-7.json= second 350-ad sample, loaded 2026-07-06, commit9ab9f03).
Packages & Gitea (https://zeiterfassung.cloud/skillfactor/)
- skills/: 100 packages (SKILL.md + references/profile|tasks|skills|tools.md
- manifest.json + PROVENANCE.md), all pushed.
- Gitea orgs:
skills-core101 repos (100 packages +marketplace),skills-community1,tenant-acme1 (private). Actions PR-gates (sanitize/eval) included by p2b in every repo. - Full depth exists for exactly 1 occupation:
recruitment-consultant(market.md from 350 ads, glossary, literature, usecases, intake, quality, 5 evals) — the gold-standard candidate.
What is missing (gap list)
| Layer | Have | Missing | Gap |
|---|---|---|---|
| Package (deterministic, no LLM) | 100 | 2 939 ESCO occupations | Phase 1 (Sonnet) |
| Evidence (job-ad market %) | 1 (recruitment-consultant) | 3 038 | Phase 2 (Sonnet + Ollama) |
| LLM depth (usecases/intake/quality/evals) | 1 | 3 038 (Top-200 first) | Phase 3 (Sonnet) |
| Enrichment (curriculum/learning/literature/glossary/capabilities) | partially 1 (glossary+literature for recruiter) | rest | Phase 3 (Sonnet) |
Per-occupation gap list = trivially derivable (all 3 039 minus the single
fully-built recruiter; the 100 published slugs are ls skills/ /
skills-core repo list). A generated CSV would be stale tomorrow; Sonnet's
batch runner tracks live status per slug in data/progress.json instead.
Architectural findings that constrain the batch design
evidence_jobhas no occupation column — the store was built for one occupation. Full-catalog runs needoccupation_slug(nullable ALTER + backfillrecruitment-consultant) and p3b must become incremental (MERGE per occupation) instead of drop-and-rebuild.- Extraction so far was done by Claude in-session (p3b docstring) — not
scalable to ~180 000 ads. Replaced today by
extract_local.pyagainst Ollama (gemma3:27b on the RTX-3090 box,OLLAMA_URLin.env). - p3a is recruiter-specific (hard-coded QUERIES). The generic fetcher
must derive queries from ESCO altLabels per occupation (2 countries,
top synonyms) — see
docs/batch-plan.mdbudget math. - JSearch plan assumed 200 req/month in
docs/batch-plan.md; the finalize order allows a hard total budget of 33 000 requests — the staged plan in batch-plan.md remains valid as priority ordering, not as pacing. - Uncommitted working-tree changes at session start: 3 landing screenshots +
gitea-custom/css/theme-factorial.css(leftover from the 2026-07-06 UI session) — committed with today's work.
End state (updated at handover, 2026-07-07)
See HANDOVER.md. Today added: extraction schema + Ollama prompt
(pipeline/prompts/), depth templates + QUALITY_BAR
(pipeline/templates/), gold-standard review of recruitment-consultant,
pipeline/extract_local.py + QA harness + data/progress.json design,
.env Ollama keys. No mass runs, no new JSearch requests, no Gitea pushes.