Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: scoring-interpretation
|
||||
description: >
|
||||
Interpret and explain matching scores from capacity and task searches.
|
||||
Use this skill when the user asks why a result scored high or low,
|
||||
what the scores mean, or how to improve matching results.
|
||||
---
|
||||
|
||||
# Scoring Interpretation
|
||||
|
||||
## Score Components
|
||||
|
||||
Every matching result has three scores:
|
||||
- **Role Score** (0.0–1.0): Cosine similarity between required role and candidate's role embedding
|
||||
- **Competence Score** (0.0–1.0): Aggregated similarity across all required competences
|
||||
- **Overall Score**: `role_weight × role_score + competence_weight × competence_score`
|
||||
|
||||
Weights are configured in `config.toml` under `[matching]`.
|
||||
|
||||
## Result Categories
|
||||
|
||||
Results are grouped by overall score into:
|
||||
- **Top**: Highest scoring matches
|
||||
- **Good**: Strong matches
|
||||
- **Partial**: Some overlap but gaps
|
||||
- **Low**: Weak matches
|
||||
- **Irrelevant**: Very low or no meaningful overlap
|
||||
|
||||
Thresholds are configurable via `matching.category_thresholds`.
|
||||
|
||||
## Availability
|
||||
|
||||
Availability is shown as **overlap percentage** against the provided date range:
|
||||
- 100% = candidate fully covers the requested period
|
||||
- <100% = partial overlap
|
||||
- `is_fully_available=true` filter excludes partial matches
|
||||
|
||||
## Embedding Mode (default)
|
||||
|
||||
- Cosine similarity between embedding vectors
|
||||
- Semantic: "ML" and "Machine Learning" will have high similarity
|
||||
- Range: 0.0 (unrelated) to 1.0 (identical meaning)
|
||||
|
||||
## BM25 + RRF Mode (`use_bm25_search = true`)
|
||||
|
||||
- Lexical token matching, NOT semantic
|
||||
- Score of 0.0 = no shared tokens (not a semantic distance)
|
||||
- "Python" matches "Python" perfectly
|
||||
- "ML" does NOT match "Machine Learning" (no shared tokens)
|
||||
- Eliminates false positives but may miss valid synonyms
|
||||
|
||||
### With Auto-Tagging (`use_auto_tagging = true`)
|
||||
|
||||
- LLM expands candidate competences with canonical equivalents
|
||||
- "ML" → "Machine Learning" expansion happens before BM25 scoring
|
||||
- Positive scores may reflect LLM-inferred equivalence
|
||||
- If LLM fails, scoring continues on unexpanded list (no failure)
|
||||
|
||||
## Common Questions
|
||||
|
||||
**"Why did this person score 0.0 on competences?"**
|
||||
- BM25 mode: no lexical overlap between required and candidate competences
|
||||
- Embedding mode: very different semantic meaning (rare for 0.0)
|
||||
|
||||
**"Why is a good match ranked Low?"**
|
||||
- Check if role mismatch is dragging down overall score
|
||||
- Check weights: high role_weight penalizes role mismatches heavily
|
||||
|
||||
**"How to get better results?"**
|
||||
- Add more specific competences
|
||||
- Use canonical terms (full names, not abbreviations in BM25 mode)
|
||||
- Broaden the time range if too restrictive
|
||||
- Consider enabling auto-tagging for synonym coverage
|
||||
Reference in New Issue
Block a user