Skip to content

Stellen Qualitaet

MadGapun edited this page Jun 18, 2026 · 3 revisions

Stellen-Qualitaet — URL-Pflege und Vollstaendigkeits-Checks

PBP scrapt aus dutzenden Portalen — und je nach Portal kommt nicht immer eine vollstaendige Stelle bei dir an. Diese Seite erklaert welche Qualitaets-Marker es gibt, was Claude fuer dich nachpflegen kann, und wie das System sich selbst aufraeumt.

Eingefuehrt mit #645 in v1.7.0-beta.71-74, nach einer Regression bei der XING/Stepstone-Stellen ohne URL gespeichert wurden.

Drei Qualitaets-Marker pro Stelle

Marker Bedeutung
is_search_url=1 URL zeigt auf eine Suchseite, nicht auf die konkrete Anzeige. Tritt auf wenn der Scraper die Detail-URL nicht extrahieren konnte und auf die Such-URL als Fallback gegangen ist.
URL leer Stelle wurde manuell ohne URL angelegt (Email-Recruiter ohne Link) oder ein Scraper hat die URL nicht geliefert. Bei Scraper-Quellen ist das ein Bug — save_jobs markiert ab beta.72 solche Faelle mit WARN-Log + Auto-is_search_url=1.
Beschreibung fehlt / < 50 Zeichen Stelle hat keine brauchbare Beschreibung. Score basiert dann nur auf dem Titel — unzuverlaessig.

Wie Claude dir hilft (#645 Workflow)

Eine URL nachpflegen

stelle_bearbeiten('<hash>', url='https://...')
  • Setzt die URL.
  • Bestimmt automatisch is_search_url via is_search_result_url().
  • Bei Such-URL kommt ein url_warnung-Hinweis zurueck damit du weisst dass die nachgereichte URL auch nur eine Suchseite ist.

Anschliessend:

stellenbeschreibung_nachladen('<hash>')
  • Macht eine HTTP-GET auf die URL.
  • Parsed Beschreibung aus JSON-LD / Content-Selektoren.
  • Speichert sie in der Stelle und triggert Score-Neuberechnung.

Was Claude konkret macht wenn du fragst

"Stelle S-0042 hat keine richtige URL. Pflege sie nach."

  1. WebSearch nach Firma + Titel
  2. Identifiziert die Original-Stellenanzeige
  3. stelle_bearbeiten('<hash>', url='https://...')
  4. stellenbeschreibung_nachladen('<hash>')
  5. Optional fit_analyse('<hash>') zur Neubewertung

"Pruefe alle aktiven Stellen-URLs und sortier die toten aus."

(verfuegbar ab beta.73 via stellen_qualitaet_pruefen)

  1. Geht durch alle aktiven Stellen
  2. Pro Stelle: HTTP-GET + Body-Scan auf 17 lokalisierte „Stelle vergeben"- Marker (DE+EN)
  3. Bei Workday-URLs (SPA): zusaetzlich JSON-API-Cross-Check, da das HTML-Skeleton auch fuer vergebene Stellen 200 OK liefert
  4. Bei statischem HTML: Title-Token-Cross-Check — wenn keiner der signaltragenden Title-Tokens im Body steht, ist die Server-Replacement- Seite gekommen (kein echtes 404 aber Job ist weg)
  5. Auto-Dismiss als dismiss_reason='veraltet_url' (auto_aussortieren=True)

Was die Auto-Engine automatisch macht

_run_auto_refetch_descriptions (#622, seit beta.44)

  • Laeuft im Hintergrund alle paar Minuten
  • Bis zu 8 Stellen/Lauf mit leerer Beschreibung
  • Macht HTTP-GET, parsed Beschreibung, schreibt zurueck
  • Bei 3 Fehlversuchen → Backoff fuer diese Stelle
  • is_search_url=1-Stellen werden uebersprungen (sonst landet der Anriss der Suchseite als „Beschreibung")

_run_url_aging_check (#645, ab beta.73)

  • Laeuft im Hintergrund alle paar Minuten
  • Bis zu 10 Stellen/Lauf mit URL
  • Pruefung wie oben (stellen_qualitaet_pruefen)
  • Auto-Dismiss bei EXPIRED / HTTP_404
  • 24h-Backoff pro Stelle nach erfolgreichem Check — kein Server-Bombing
  • Elwosa meldet sich wenn Stellen aussortiert wurden

Hard-Guard in save_jobs (#645, seit beta.72)

  • Wenn ein Scraper (alles ausser manuell, email, recruiter_inbound) eine Stelle mit leerer URL durchschiebt:
    1. WARN-Log mit Source + Titel + Firma + Issue-Verweis
    2. is_search_url=1 wird defensiv gesetzt
    3. Counter leere_url_warnungen[source] im Result
  • Garantie: jobs.url ist entweder Detail-URL oder mit Markierung Such-URL — nie wieder leeres Feld ohne Indikator.

Wann es nicht funktioniert

Bot-Block: Stepstone, Adzuna und ein paar Workday-Tenants haben Anti-Bot-Mechanismen. stellenbeschreibung_nachladen scheitert dann mit "Login-Wall oder Bot-Block?". Workaround:

  1. URL im Browser oeffnen
  2. Beschreibung kopieren
  3. stelle_bearbeiten('<hash>', beschreibung='...') setzt sie manuell

E-Mail-Recruiter ohne Link: Wenn ein Recruiter dich anschreibt aber keine konkrete Stelle verlinkt, kann es keine URL geben. Workaround: die is_search_url=1-Markierung mit einer Such-URL der Vermittlungs- Agentur (z.B. https://www.michaelpage.de/jobs/interim-it/hamburg) hilft zumindest beim Wiederfinden im Kontext.

Verwandte Tools (Stand v1.7.1)

  • stelle_bearbeiten(hash, url=...) — URL nachpflegen
  • stellenbeschreibung_nachladen(hash) — Beschreibung holen
  • stellen_qualitaet_pruefen(auto_aussortieren=True) — Bulk-Audit (neu in beta.73)
  • stellen_anzeigen(filter='aktiv') — zeigt url_warnung bei Such-URLs
  • stelle_reaktivieren(hash, grund='...') — versehentlich aussortierte Stelle zurueckholen (neu in beta.82, #664)
  • stelle_wiedergaenger_pruefen(...) — Repost einer abgelehnten Stelle erkennen (neu in beta.86, #671)
  • stelle_manuell_anlegen(..., force=True) — Duplikat-Pruefung bewusst umgehen (verfeinert in beta.87, #670)

Verwandte Issues

  • #436 — Erstmalige Detection von Such-URLs (v1.5.3, 2026-04)
  • #622stellenbeschreibung_nachladen Tool + Auto-Refetch
  • #645 — URL-Backfill-Regression + Hard-Guard + URL-Aging (beta.71-73)
  • #646 — Bulk-Tools-Timeout-Schutz (beta.74)
  • #664stelle_reaktivieren (beta.82)
  • #671 — Wiedergaenger-Erkenner, KI-frei (beta.86)
  • #670 — Duplikat-Erkennung verfeinert: Titel-Aehnlichkeit + force (beta.87)

Mit Claude

„Pflege URL fuer S-0042 nach" „Sind alle Stellen-URLs noch aktuell?" (ab beta.73) „Sortier veraltete Stellen aus" „Warum hat Stelle X keine Beschreibung?"

Clone this wiki locally