fix(scanner): Bewertungsprompt ohne erfundene Luecken

Das JSON-Beispiel im alten Prompt ("Deutsch nur auf B2-Niveau") hat das
Modell in rund 1600 Cons uebernommen, und knappe Beschreibungen (Freelancermap
meist nur Titel) wurden pauschal niedrig bewertet. Lisa und Ariane kamen so
nie ueber 80 % und blieben unter der Anzeigeschwelle von 85 %.

Neuer Prompt: nur belegte Fakten, Rolle aus dem Titel bei knapper
Beschreibung, feste Fuenf-Stufen-Skala, Platzhalter statt Beispielinhalt.
Alter Prompt liegt als Backup in server/src/scanner/prompts/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-09-24 09:31:23 +02:00
co-authored by Claude Opus 5.5
parent e2ad8ab03e
commit 1eb115bb7a
3 changed files with 104 additions and 19 deletions
+41
View File
@@ -53,6 +53,47 @@ Zwei Sparmassnahmen stecken bewusst **vor** dem OpenAI-Aufruf: der vorhandene
Treffer (Unique-Key `agent_id, project_id`) und die Ausschlussbegriffe. Ein
Projekt, das „Arbeitnehmerüberlassung" enthält, kostet damit keinen Cent.
## Bewertungsprompt
Den Systemprompt der Bewertung Lebenslauf gegen Projekt enthält
`services/matchingEngine.js`. Seit dem 24.09.2026 gilt eine neue Fassung. Die
alte liegt wörtlich in `server/src/scanner/prompts/matching-backup-2026-09-24.txt`.
Zum Zurückstellen setzt man sie wieder als `systemPrompt` ein.
**Warum er ersetzt wurde.** Lisa und Ariane (Marketing, Kommunikation, PMO)
bekamen bei rund 1700 Bewertungen keinen Wert über 80 %. Bei einer
Anzeigeschwelle von 85 % erschienen sie also nie im Dashboard. Zwei Ursachen im
alten Prompt:
- **Abgeschriebenes Beispiel.** Das JSON-Beispiel enthielt den Con „Berater
listet Deutsch nur auf B2-Niveau". Das Modell hat ihn in 1584 von rund
10 000 Bewertungen übernommen, auch bei Lebensläufen, die Deutsch ohne Niveau
nennen. So kostete eine erfundene Lücke jedes Mal Punkte.
- **Knappe Beschreibungen.** Freelancermap liefert im Schnitt 99 Zeichen, also
praktisch nur den Titel. Ohne Regel dafür bewertete das Modell vorsichtig
niedrig. Profile mit einem klaren Technik-Schlagwort (etwa „M365") kamen damit
noch durch, allgemeinere Profile nicht.
**Was der neue Prompt festlegt:**
- nur, was in Lebenslauf und Beschreibung steht. Sprache, Reisen, Zertifikate
nennt das Modell nur, wenn das Projekt sie ausdrücklich fordert
- eine Sprache ohne Niveau gilt als vorhanden
- bei knapper Beschreibung wird die Rolle aus dem Titel bewertet, fehlende
Details sind kein Minuspunkt
- eine feste Skala in fünf Stufen (90-100 genau passend bis 0-29 anderes Fach)
- das Profil wird nach seinem eigenen Fach bewertet, nicht nach technischer Tiefe
- Platzhalter im Schema statt Beispielinhalt, leere Cons sind erlaubt
Stichprobe vor dem Rollout (33 Paare aus Lisa, Ariane und Tobias, gespeicherter
Wert gegen neuen Prompt, gleiches Modell): passende Rollen stiegen von 80 auf 85-90 (Ariane: Change Manager
Kommunikation, Marketing & Communications). Fachfremde Projekte fielen von
30-60 auf 0-30. Tobias' M365-Treffer blieben bei 90-95.
Bereits gespeicherte Treffer werden **nicht** neu bewertet
(Unique-Key `agent_id, project_id`). Die neue Skala gilt für Projekte, die
nach dem Deployment gefunden werden.
## Abgleich „bereits beworben!"
Dieselbe Ausschreibung kommt oft mehrfach: über zwei Börsen, über mehrere