Skip to content

Releases: MadGapun/PBP

v1.7.0-beta.73 — URL-Aging-Auto-Cleanup + Ollama-Validator (#645)

31 May 07:38

Choose a tag to compare

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10. 27 neue Tests, 1437/1437 gruen. Keine Schema-Aenderung.

🩺 URL-Aging — auto-Cleanup fuer veraltete Stellen

Schliesst die #645-Iteration ab: ab jetzt erkennt PBP von selbst wenn eine Stelle nicht mehr live ist und sortiert sie als 'veraltet_url' aus. Loest auch das b9f0bbe25d09-Pattern (Workday liefert 200 OK auch fuer vergebene Stellen weil das HTML nur ein JS-Skeleton ist).

services/url_health.py — neuer Pure-Python-Health-Checker

  • HTTP-Status + 17 lokalisierte "Stelle vergeben/expired"-Marker (DE+EN, Greenhouse, Workday, Arbeitsagentur, generisch)
  • Workday-SPA-Sonderfall: HTML ist nur Skeleton, Stellen-Existenz nur ueber wday/cxs/{tenant}/{site}/job/{path}-JSON-API testbar. Workday-API-404 -> EXPIRED.
  • Title-Token-Cross-Check fuer statisches HTML: Server-Replacement-Seiten ohne Job-Titel werden als EXPIRED erkannt.
  • 7 Status-Werte: OK, EXPIRED, HTTP_404, HTTP_ERROR, TIMEOUT, BLOCKED (Cloudflare/Captcha), LEER.
  • should_dismiss-Property: True NUR fuer EXPIRED + HTTP_404. 5xx, Timeout, Blocked sind transient — kein Auto-Aussortieren.

Neues MCP-Tool stellen_qualitaet_pruefen

stellen_qualitaet_pruefen(
    max_stellen=50,
    nur_problematische=True,
    auto_aussortieren=False,
    mit_ollama_validierung=False,
)

Geht durch alle aktiven Stellen, kategorisiert in url_404, url_expired, url_blocked, url_timeout, beschreibung_fehlt, search_url, ok. Default-Vorschau, mit auto_aussortieren=True werden 404/expired sofort dismissed.

🤖 Ollama-Validator: TaskKind.VALIDATE_JOB_QUALITY

Neuer LLM-Task fuer Stellenbeschreibungs-Vollstaendigkeit. Bei aktiver Lokaler AI laeuft Ollama mit strukturiertem JSON-Output:

{
  \"vollstaendig\": true|false,
  \"score\": 0-10,
  \"vorhanden\": [\"aufgaben\", \"anforderungen\", \"gehalt\", ...],
  \"fehlt\": [...],
  \"begruendung\": \"1-2 Saetze\",
  \"claude_action\": \"nachladen\" | \"manuell_ergaenzen\" | \"keine\"
}

claude_action macht Claude direkt actionable: bei \"nachladen\" wird stellenbeschreibung_nachladen empfohlen, bei \"manuell_ergaenzen\" soll Claude beim User nachfragen oder via WebSearch ergaenzen. Parser robust gegen Markdown-Codefence und Vor-/Nachspann.

🔁 Auto-Engine-Step _run_url_aging_check

Laeuft pro Engine-Tick (alle paar Minuten), prueft bis zu 10 aktive Stellen pro Lauf, sortiert 404 + expired auto-aus mit dismiss_reason='veraltet_url'. 24h-Backoff pro Stelle nach OK-Check (Setting url_aging_lastok:{hash}) — keine Server-Bombardierung.

Such-URL-Stellen werden uebersprungen (is_search_url=1). Elwosa bekommt eine neue Trigger-Linie auto_url_aging mit 4 lakonischen Varianten.

Tests

  • tests/test_v17_url_health_645.py — 18 Tests (Workday-API-Routing, Marker-Erkennung, Title-Token-Match, Mock-httpx-Client)
  • tests/test_v17_qualitaet_pruefen_645.py — 9 Tests (Parser-Robustheit inkl. Codefence + Prefix, MCP-Tool-Klassifikation, Auto-Aussortieren)

MCP-Tool-Count: 151 -> 152. Volle Suite: 1437 passed, 1 skipped (vorher 1410).


📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen)

  1. ZIP herunterladen: PBP-1.7.0-beta.73.zip
  2. Entpacken: Rechtsklick auf die ZIP -> "Alle extrahieren..." -> Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Auf dem Desktop liegt jetzt eine Verknuepfung "PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei -> "Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start.

Detaillierte Anleitung & Troubleshooting

📖 Wiki -> Installation · FAQ

v1.7.0-beta.72 — Hard-Guard fuer leere URLs aus Scraper-Quellen (#645)

31 May 06:36

Choose a tag to compare

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10. Direktes Follow-up zu v1.7.0-beta.71. 1410 Tests gruen (vorher 1408).

🛡 Defense-in-Depth fuer #645: save_jobs blockt leere URLs

beta.71 hat die Scraper gefixt. beta.72 schliesst das Loch in der DB-Schicht: selbst wenn ein zukuenftiger Scraper-Refactor wieder den Fallback "vergisst", greift jetzt ein Hard-Guard in Database.save_jobs.

Verhalten

Wenn ein Job aus einer bekannten Scraper-Quelle ankommt (alles ausser manuell, email, recruiter_inbound) und das url-Feld leer ist:

  1. WARN-Log mit Source + Title + Company + Issue-Verweis (#645) — sichtbar in pbp_diagnose und scraper_health.
  2. Defensiv is_search_url=True setzen — damit _run_auto_refetch_descriptions und stellenbeschreibung_nachladen die Stelle korrekt skippen statt Garbage zu fetchen.
  3. Sichtbar im save_jobs-Result via neues Feld leere_url_warnungen: {source: count} — kann von job_runner an scraper_health weitergereicht werden.

Garantie nach #645

jobs.url ist ab jetzt entweder eine Detail-URL oder (mit is_search_url=True markiert) eine Such-URL. Niemals wieder ein leeres Feld ohne Indikator.

Tests

2 neue in tests/test_v17_url_regression_645.py:

  • test_save_jobs_warns_on_empty_url_from_scraper_source — Guard greift bei Stepstone-Quelle
  • test_save_jobs_silent_for_manuell_or_email_without_url — manuell + email werden NICHT geflaggt

Volle Suite: 1410 passed, 1 skipped (vorher 1408).


📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.72.zip
  2. Entpacken: Rechtsklick auf die ZIP -> "Alle extrahieren..." -> Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3-5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung "PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei -> "Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki -> Installation · FAQ

v1.7.0-beta.71 — jobs.url-Regression fixen (#645)

31 May 05:47

Choose a tag to compare

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10. Bugfix-Release, keine Schema-Aenderung. 1408 Tests gruen (vorher 1399).

🐛 Fix: leere jobs.url bei XING/Stepstone-Stellen (#645)

Bei der Durchsicht am 29.05.2026 waren 7 von 8 aktiven Stellen ohne URL — XING/Stepstone/E-Mail-Quellen lieferten leere url-Felder, was #622 stellenbeschreibung_nachladen blockierte und das Oeffnen der Stellenanzeige unmoeglich machte. Der Score basierte nur noch auf dem Titel und wurde unzuverlaessig.

Regression hinter #436 (v1.5.3): dort wurde nur die Detection + Warnung fuer Such-URLs gebaut — der eigentliche Per-Portal-Fallback war nur in monster.py und freelancermap.py implementiert, fuer XING und Stepstone fehlte er.

Scraper — URL-Fallback-Kaskade jetzt einheitlich

  • xing.py _process_raw_job — Reihenfolge: (1) Detail-Link aus der Karte; (2) wenn leer aber jobId vorhanden, Detail-URL aus jobId rekonstruieren (https://www.xing.com/jobs/{jobId}); (3) sonst aktuelle Such-URL eintragen + is_search_url=True. Relative Links bekommen Host vorgeklebt.
  • stepstone.py — Relative Links absolutieren (JSON-LD-Posts liefern manchmal ohne Host); wenn am Ende kein Detail-Link da ist, Such-URL als Fallback + is_search_url=True. _fetch_detail_descriptions ueberspringt Such-URL-Stellen (sonst landet der Anriss der Suchergebnis-Seite als "Beschreibung" und verfaelscht das Scoring).

DB-Schicht — URL nachpflegbar

  • Database.update_job: url und is_search_url in der Allowed-Whitelist (vorher Whitelist-Drop ohne Warnung).
  • stelle_bearbeiten(<hash>, url="..."): akzeptiert URL-Parameter und setzt is_search_url automatisch via is_search_result_url(). Bei nachgereichter Such-URL gibt's url_warnung wie bei stelle_manuell_anlegen.

Tool-Schicht — bessere Fehler-Meldungen

  • stellenbeschreibung_nachladen: konkreter Copy-Paste-Vorschlag stelle_bearbeiten('<hash>', url='https://...') statt ins Leere zu verweisen (der alte Hinweis ging an stelle_bearbeiten, das den url-Parameter gar nicht akzeptierte — Workaround lief leer).
  • Separater Fehler-Branch wenn die gespeicherte URL eine Such-URL ist (kein sinnloser HTTP-Fetch der Suchseite).
  • _run_auto_refetch_descriptions: SQL-Filter COALESCE(is_search_url, 0) = 0.

Tests

9 neue Regressionstests in tests/test_v17_url_regression_645.py. Volle Suite: 1408 passed, 1 skipped (vorher 1399 passed).

Noch offen (eigene Issues empfohlen)

  • AK3 "E-Mail-Quelle ohne Link: definierter Umgang" — Schema-Erweiterung
  • AK5 "Datenheilung fuer bestehende leere Stellen" — eigene Migration
  • medac/Workday-Deep-Link-Pattern aus Kommentar #4582087088 — Workday-Adapter

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.71.zip
  2. Entpacken: Rechtsklick auf die ZIP -> "Alle extrahieren..." -> Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3-5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung "PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei -> "Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki -> Installation · FAQ

v1.7.0-beta.70 — Doku-Fixes sauber (#642 + #644)

29 May 07:47

Choose a tag to compare

[1.7.0-beta.70] - 2026-05-29 — Doku-Fixes: Phantom-Bewerbungen + Mail-Doku-Verknuepfung (#642 + #644)

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10.
🔧 Ersetzt die defekten Zwischen-Releases beta.68 + beta.69 — diese
gingen mit unvollstaendigem Code / roten Tests raus (Edit-Fehler meinerseits).
beta.70 ist die erste saubere Version dieser Fixes, 1401/1401 gruen.
beta.68 + beta.69 NICHT installieren.

🐛 #642 Keine Phantom-Bewerbungen mehr aus CV-Dateinamen

bewerbungs_dokumente_erkennen(auto_erstellen=True) legte aus generischen
CV-Varianten Phantom-Bewerbungen an (Bewerbung bei „Ausfuehrlich",
„freelancer", „SC", „SL"; „Dassault-Systems" zu „Systems" verstuemmelt).
_extract_firma_from_filename neu aufgebaut:

  • Trenner-Logik: enthaelt der Rest nach dem DocType-Praefix ein ;,
    ist die Firma der Teil nach dem letzten ; (darf Bindestriche tragen
    -> „Dassault-Systems" bleibt ganz); sonst der Teil nach dem ersten -
  • Blacklist (umlaut-normalisiert): freelancer, ausfuehrlich,
    deutsch/english, master, version, mit/ohne-foto, kurz/lang, …
  • Kuerzel-Filter: ≤ 3 Zeichen ohne Kleinbuchstaben (SC, SL, BWI) =
    Initialen, keine Firma
  • Zahlen/Datum-Filter

🐛 #644 email_verknuepfen akzeptiert jetzt auch Dokument-IDs

Hochgeladene .eml/.msg landen als documents, gepollte IMAP-Mails als
emails — die IDs sehen identisch aus. email_verknuepfen mit einer
Dokument-ID lieferte „E-Mail nicht gefunden". Jetzt: Fallback-Lookup im
Dokument-Store + transparente Verknuepfung via linked_application_id,
klare Fehlermeldung bei wirklich unbekannter ID.

Geparkt

#643 (Doku-Routing nach doc_type) ueberschneidet sich mit dem
bestehenden /dokumente_verarbeiten-Prompt — nach v1.8.0 verschoben.

Tests

  • 5 neue Tests (test_v170_beta68_doku_fixes.py)
  • 1401 / 1401 gruen

Migration / Breaking Changes

Keine. Beide Aenderungen sind defensiv/additiv.

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.70.zip
  2. Entpacken: Rechtsklick auf die ZIP → „Alle extrahieren..." → Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung „PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei → „Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki → Installation · FAQ


v1.7.0-beta.69 — [DEFEKT, nutze v1.7.0-beta.70]

29 May 07:35

Choose a tag to compare

v1.7.0-beta.69: Hotfix zu beta.68 — #642 + #644 wirklich gefixt

beta.68 ging mit unvollstaendigem Code + roten Tests raus:
- #644 Fallback war gar nicht eingebaut (Edit verfehlte die richtige
  der zwei "E-Mail nicht gefunden"-Stellen)
- #642 Hyphen-Logik unzureichend (Firma mit Bindestrich verstuemmelt)

Jetzt richtig:
- #642: Name/Firma-Trenner-Logik — bei ';' Firma nach letztem ';'
  (Bindestriche bleiben), sonst nach erstem '-'. "Dassault-Systems"
  bleibt ganz statt "Systems".
- #644: email_verknuepfen Dokument-Store-Fallback wirklich eingebaut.

5 Tests gruen, 1401/1401 gesamt.

v1.7.0-beta.68 — [DEFEKT, nutze v1.7.0-beta.69]

29 May 07:29

Choose a tag to compare

v1.7.0-beta.68: Doku-Fixes — Phantom-Bewerbungen + Mail-Doku-Link (#6…

v1.7.0-beta.67 — Ollama-Leistungs-Anzeige (#638 vollstaendig)

22 May 05:39

Choose a tag to compare

[1.7.0-beta.67] - 2026-05-14 — Ollama-Leistungs-Anzeige: #638 vollstaendig

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10.

Letztes fehlendes Stueck von #638: der Feedback-Loop im Dashboard.
Backend (/api/llm/accuracy, beta.66) gab es schon — jetzt die Anzeige.

✨ Ollama-Leistung-Card (Settings → Lokale KI)

Neue Card im Lokale-KI-Tab (nur sichtbar wenn Ollama schon Stellen
auto-aussortiert hat):

  • automatisch aussortiert — Gesamtzahl der auto:-Aussortierungen
  • von dir zurueckgeholt — wie oft du eine Auto-Entscheidung
    korrigiert hast (reaktiviert)
  • Treffergenauigkeit — Anteil der nicht-korrigierten Entscheidungen
    (farbcodiert: gruen ≥85%, amber ≥65%, coral darunter). Erscheint erst
    ab 5 Auto-Entscheidungen (sonst zu duenne Datenbasis).

Damit ist #638 komplett — alle 5 Stufen umgesetzt:

  1. Auto-Aussortierung nach Jobsuche (beta.63/65)
  2. Score-Anreicherung fuer duenne Beschreibungen (beta.65)
  3. Few-Shot-Lernschleife aus Bewertungen (beta.63/65)
  4. Heartbeat/Warmup-Service (beta.62)
  5. Genauigkeits-Tracking + Dashboard-Anzeige (beta.66/67)

Tests

  • Backend unveraendert (Endpoint + Stats seit beta.66 getestet),
    Aenderung ist reine Frontend-Card
  • 1394 / 1394 gruen

Migration / Breaking Changes

Keine. Reine Anzeige.

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.67.zip
  2. Entpacken: Rechtsklick auf die ZIP → „Alle extrahieren..." → Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung „PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei → „Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki → Installation · FAQ


v1.7.0-beta.66 — KI-Transparenz: Token-Klassen + Ollama-Genauigkeit (#632 + #638)

22 May 05:02

Choose a tag to compare

[1.7.0-beta.66] - 2026-05-14 — KI-Transparenz: Token-Klassen + Ollama-Genauigkeit (#632 Stufe 1 + #638 Stufe 5)

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10.

#632 Stufe 1 — Token-/Kosten-Klassen in pbp_capabilities

pbp_capabilities() (ohne Kategorie) liefert jetzt eine Sektion
aufwand_klassen mit vier Stufen, damit Claude VOR einer Operation
einschaetzen kann was sie kostet:

  • gratis_db — reine DB-/Scraper-Operationen, keine Tokens
    (jobsuche_starten, stellen_anzeigen, bewerbung_*, ...)
  • lokal_guenstig — Ollama, kostenlos aber RAM/Zeit
    (stellen_auto_aussortieren, dokument_profil_extrahieren lokal)
  • claude_mittel — ~2-10k Tokens (fit_analyse, anschreiben_exportieren)
  • claude_teuer_bulk — 25k+ Tokens, VOR Start Volumen nennen
    (stellen_bulk_bewerten, batch via Claude)

Plus aufwand_hinweis: bei teuren Bulk-Ops dem User das Volumen
nennen, lokale AI bevorzugen wenn Tokens gespart werden sollen.

#638 Stufe 5 — Ollama-Genauigkeits-Tracking

Wie zuverlaessig sind die automatischen Aussortierungen? Neuer Helper
db.get_ollama_accuracy_stats() misst, wie oft der User eine
auto:-Aussortierung spaeter korrigiert hat:

  • auto_aussortiert_gesamt — alle je auto-aussortierten Stellen
  • reaktiviert — davon wieder aktiv (User-Korrektur = false positive)
  • mit_bewerbung — davon mit Bewerbung verknuepft (starke Korrektur)
  • genauigkeit_prozent — 100·(1 − korrigiert/gesamt), erst ab 5
    Auto-Entscheidungen (sonst None — zu duenne Datenbasis)

Exponiert in pbp_mcp_diagnose (Feld ollama_genauigkeit) und ueber
GET /api/llm/accuracy fuers Dashboard. Filtert manuelle
Aussortierungen korrekt aus (nur auto:-Prefix zaehlt).

Was von #638 noch offen ist

  • Stufe 4 Klick-Reihen-Tipps — die analyze_user_patterns-
    Infrastruktur (#594) laeuft, neue Event-Typen fuer Sortier-/
    Filter-Muster sind reine Frontend-Verkabelung und folgen separat.

Tests

  • 7 neue Tests (test_v170_beta66_ki_transparenz.py):
    Aufwand-Klassen im Capabilities-Overview, Genauigkeits-Stats
    (Datenbasis-Schwelle, Korrektur-Zaehlung, Manual-Filter), MCP +
    REST-Endpoint
  • 1379 / 1381 gruen (2 rote = pre-existing beta24 Ollama-Connection)

Migration / Breaking Changes

Keine. Reine additive Read-Operationen.

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.66.zip
  2. Entpacken: Rechtsklick auf die ZIP → „Alle extrahieren..." → Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung „PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei → „Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki → Installation · FAQ


v1.7.0-beta.65 — Auto-Aussortierung repariert + Score-Anreicherung (#638)

22 May 04:39

Choose a tag to compare

[1.7.0-beta.65] - 2026-05-14 — Auto-Aussortierung repariert + Score-Anreicherung (#638 Stufe 1/2/3)

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10.
🔥 Wichtig: der in beta.63 angekuendigte Auto-Dismiss-Hook
funktionierte tatsaechlich NIE — beta.65 macht ihn erstmals lauffaehig.

Beim Bauen von #638 Stufe 2 ist aufgefallen, dass der Auto-Aussortier-
Hook aus beta.63 wegen vier Fehlern komplett tot war:

Bug Wirkung
Status-Check auf "erledigt" run_search setzt "fertig" → Hook sprang immer sofort raus
svc.run_task(...) Methode heisst run() → AttributeError, verschluckt
payload.get("verdict") Parser liefert decision → immer None
update_background_job(..., ergebnis=) kwarg heisst result= → TypeError, verschluckt

Alle vier gefixt. Der Hook laeuft jetzt wirklich durch.

#638 Stufe 2 — Score-Anreicherung fuer duenne Beschreibungen

Stellen ohne (oder mit sehr kurzer) Beschreibung haben oft Score 0 und
versacken unten in der Liste — obwohl Ollama sie als passend einstuft.
Der Auto-Hook hebt solche Stellen jetzt auf einen moderaten Score (35),
wenn Ollama PASST sagt:

  • Nur bei duenner Beschreibung (< 120 Zeichen)
  • Nur wenn aktueller Score < 35 und nicht gepinnt
  • Ergebnis im Job-Status als score_angereichert

So werden „blinde" Stellen sichtbar statt unsichtbar zu bleiben.

Was jetzt nach einer Jobsuche passiert (wenn Ollama aktiv)

  1. Scraper laeuft → neue Stellen in DB
  2. Auto-Dismiss (jetzt funktional): Ollama bewertet bis zu 30
    Stellen, sortiert PASST_NICHT aus (Grund mit auto:-Prefix)
  3. Score-Anreicherung: PASST-Stellen mit duenner Beschreibung
    bekommen Score 35
  4. Few-Shot-Lernen (beta.63 Stufe 3, lief auch erst jetzt wirklich):
    die letzten 5 manuellen Aussortierungen sind als Beispiele im Prompt
  5. Ergebnis steht im jobsuche_status unter auto_aussortiert

Tests

  • 4 neue Tests (test_v170_beta65_auto_dismiss_enrich.py): Dismiss
    greift wirklich, Score-Anreicherung, fette Beschreibung unangetastet,
    Ergebnis-Recording
  • 1372 / 1374 gruen (die 2 roten beta24-Ollama-Connection-Tests sind
    pre-existing + environment-abhaengig)

Was von #638 noch offen ist

  • Stufe 4: Klick-Reihen-Tipps (Infrastruktur via #594 da, neue
    Event-Typen folgen)
  • Stufe 5: Genauigkeits-Tracking der Ollama-Entscheidungen
    (false-positives via track.llmCorrection)

Migration / Breaking Changes

Keine. Score-Anreicherung ist additiv, betrifft nur Score-0-Stellen
mit duenner Beschreibung.

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.65.zip
  2. Entpacken: Rechtsklick auf die ZIP → „Alle extrahieren..." → Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung „PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei → „Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki → Installation · FAQ


v1.7.0-beta.64 — Installer-Autostart, Doku-Tiefenanalyse, Job-Dedup (#639+#640+#641)

22 May 04:27

Choose a tag to compare

[1.7.0-beta.64] - 2026-05-14 — Installer-Autostart, Doku-Tiefenanalyse, Job-Dedup (#639 + #640 + #641)

⚠️ Pre-Release / Beta. Stable bleibt v1.6.10.

Drei Findings aus der laufenden Test-Schleife — Installer-UX, ein
Doku-Analyse-Bug und Job-Duplikate.

#639 Installer startet PBP automatisch

Beobachtung: nach der Installation passierte (gefuehlt) nichts. Befund:

  • CLI-Installer (INSTALLIEREN.bat, INSTALLIEREN.command,
    install.sh) starten das Dashboard + oeffnen den Browser schon
    seit beta.23/38
    automatisch — hier war nichts zu tun.
  • GUI-Installer (setup_gui.py / setup.exe) hatte den Bug: der
    "Dashboard oeffnen"-Button startete test_demo.py — das laeuft mit
    Demo-Daten in einem TEMP-Verzeichnis, nicht der echten
    Installation. Gefixt: nutzt jetzt start_dashboard.py mit dem echten
    Datenverzeichnis, startet automatisch beim Erreichen der Done-Page
    (Thread, kein GUI-Freeze) + Health-Check auf Port 8200.
  • Irrefuehrenden Text "(verfuegbar wenn Claude Desktop laeuft)"
    korrigiert — das Dashboard laeuft eigenstaendig.

🐛 #640 Doku-Tiefenanalyse: basis_analysiert galt als "fertig"

basis_analysiert ist ein Zwischen-Status (nur Regex-Basics, die
KI-Tiefenanalyse fehlt noch). An einer Stelle wurde er faelschlich wie
ein End-Status behandelt:

  • db-Naechste-Schritte-Guidance zaehlte nur nicht_extrahiert
    jetzt auch basis_analysiert. Verweist auf /dokumente_verarbeiten.
  • dokumente_zur_analyse trennt jetzt explizit nie_analysiert vs
    nur_basis_extraktion und liefert einen hinweis_tiefenanalyse, damit
    klar wird WAS noch aussteht.

(extraktion_starten, analyse_plan_erstellen und die Prompts haben
basis_analysiert schon korrekt einbezogen.)

✨ #641 Job-Duplikat-Erkennung beim Ingest

Dieselbe Stelle landete mehrfach mit verschiedenen Hashes (verschiedene
Quellen / Zeitpunkte). Jetzt:

  • Neuer Helper db._dedup_key(title, company) — normalisiert Titel +
    Firma (Umlaute, Rechtsform-Suffixe GmbH/AG/..., Klammerzusaetze)
  • save_jobs prueft vor dem Insert ob eine aktive Stelle mit
    gleichem Key aber anderem Hash existiert (im selben Batch UND in der DB)
  • Treffer → neuer Eintrag wird is_active=0, dismiss_reason='duplikat',
    mit Verweis auf den Original-Hash in research_notes (Audit-Trail bleibt)
  • Rueckgabe enthaelt jetzt duplikate_erkannt

Bonus-Fix dabei: Re-Ingestion einer vom User aussortierten Stelle
reaktiviert sie nicht mehr und ueberschreibt ihren dismiss_reason/
Notizen nicht (vorher setzte INSERT OR REPLACE die Zeile komplett neu).

Tests

  • 9 neue Tests (test_v170_beta64_dedup_analyse.py): Dedup
    (Content-Match, Suffix-Normalisierung, Audit-Note, Cross-Batch,
    Dismissed-State-Preservation) + Doku-Status-Trennung
  • 1381 / 1383 gruen — die 2 roten (test_v170_beta24 Ollama-Connection)
    sind pre-existing + environment-abhaengig (echte Ollama-Probe),
    keine beta.64-Regression

Migration / Breaking Changes

Keine. Dedup-Check ist additiv, alter Lifecycle bleibt erhalten.

📦 Wie installiere oder aktualisiere ich PBP?

Du brauchst kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: Claude Desktop ist installiert.

Windows (empfohlen, bequemster Weg)

  1. ZIP herunterladen: PBP-1.7.0-beta.64.zip
  2. Entpacken: Rechtsklick auf die ZIP → „Alle extrahieren..." → Zielordner waehlen (z.B. C:\PBP)
  3. Installieren: Im entpackten Ordner Doppelklick auf INSTALLIEREN.bat
  4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop.
  5. Auf dem Desktop liegt jetzt eine Verknuepfung „PBP Bewerbungs-Portal" — Doppelklick startet das Dashboard.

macOS

  1. ZIP herunterladen (siehe Windows-Link)
  2. Entpacken (Doppelklick reicht)
  3. Doppelklick auf INSTALLIEREN.command
  4. Falls macOS warnt: Rechtsklick auf die Datei → „Oeffnen"

Linux

git clone https://github.com/MadGapun/PBP.git
cd PBP
bash installer/install.sh

Update von einer aelteren Version

Einfach drueberinstallieren — deine Daten bleiben erhalten:

  • Windows: %LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db
  • macOS/Linux: ~/.bewerbungs-assistent/pbp.db

Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner data\backups\).

Detaillierte Anleitung & Troubleshooting

📖 Wiki → Installation · FAQ