-
-
Notifications
You must be signed in to change notification settings - Fork 1
Master Plan
Stand: 2026-07-03 — v1.7.5 Stable (
--latest): Fuehrung & Pflege — G11 Onboarding-Hints im Frontend, B13 Probes adapter-konsistent (#748), A20 Umlaut-Restaurierung (#742) · Lebendiges Dokument · Wird mit jedem Schritt aktualisiert.Arbeitsprinzip: Master-Plan-First. Neue Ideen werden erst hier eingeordnet (mit Status ⬜ und ggf. Issue), dann nach Plan abgearbeitet — nicht ad-hoc gebaut und spaeter nachgezogen.
Akzeptanzkriterium: Eine Position ist nur ✅ wenn Code im Repo + Tests gruen + Wiki-Eintrag vorhanden — alle drei. Sonst bleibt sie 🟨 oder ⬜.
Hinweis fuer Claude: Wie dieser Plan technisch gepflegt wird (Wiki-Klon, Push, Konflikt-Aufloesung), steht in Wiki-Pflege.
PBP ist seit Ende Februar 2026 in Entwicklung (gut drei Monate, Erstrelease v0.0.x → v1.7.0, seit 2026-06-18 Stable — die hohe Versionsnummer spiegelt das schnelle Iterationstempo, nicht die Kalenderzeit). Dieser Plan dokumentiert was schon da ist (retroaktiv, ✅) und was kommt (⬜). Reihenfolge innerhalb eines Clusters folgt Abhaengigkeit. Reihenfolge zwischen Clustern: A → H → B → C → D → E → F → G → I → J.
Legende Status:
- ⬜ geplant / Roadmap
- 🟨 in Arbeit / teilweise umgesetzt
- ✅ fertig (Code + Tests + Wiki)
- ⏸ bewusst zurueckgestellt (Begruendung in Master-Plan-Optimierung)
- ⛔ aus Scope rausgenommen / deprecated
Detail-Plaene pro Cluster (Issue-Level):
- Plan-Datenbasis (A)
- Plan-Jobsuche (B)
- Plan-Stellen (C)
- Plan-Bewerbungen (D)
- Plan-Dokumente (E)
- Plan-Lokale-KI (F)
- Plan-Frontend (G)
- Plan-MCP-Layer (H)
- Plan-Distribution (I)
- Plan-Roadmap-v18 (J)
Risiken / Trade-offs / Annahmen: Master-Plan-Optimierung.
✅ ERREICHT am 2026-06-18: v1.7.0 wurde als Stable (
--latest) veroeffentlicht — promotet aus beta.108 nach mehrtaegigem Realbetrieb und ausdruecklichem User-Wort. Release-Gates A1–A3 (#705/#723/#701, K25–K27) erfuellt, Migrations-Generalprobe verifiziert, volle Suite gruen. v1.6.10 bleibt als aelterer Release verfuegbar. Naechster Zyklus: v1.8 (Cluster J).
Verbindlich seit 2026-06-09 (User-Vorgabe): v1.7.0 verlaesst die Beta erst, wenn das fertige Produkt fuer komplett unerfahrene Anwender fehlerfrei laeuft — Menschen ohne PBP- und ohne KI-Vorwissen. Das ist schaerfer als „Tests gruen": es zielt auf die End-to-End-Erfahrung beim Erstkontakt.
Konkret muss zutreffen:
-
Lauffaehige, fehlerfreie Suite — die volle
pytest-Suite ist mit den vom Installer mitgelieferten Extras ([docs]/[scraper]) gruen, und der CI-Gate (K5) faengt Regressionen automatisch ab. -
Kein user-sichtbarer Fehler im Normalpfad — keine White-Screens, keine
„Inhalt konnte nicht geladen werden"-Toasts, keine
no such table-/Schema- Crashes in Tools, die ein Erstnutzer ueber Claude oder das Dashboard ausloest. - Kern-Workflows ohne Sackgasse — Ersterfassung → Jobsuche → Bewertung → Bewerbung → Dokumente → Nachfass, jeweils ohne Total-Timeout (B21) und mit verstaendlichen Fehlermeldungen statt Tracebacks.
-
Abgeschlossener User-Test —
--latesterst nach ausdruecklichem User-Wort (siehe CLAUDE.md).
Offene Beta-Blocker (Stand 2026-06-10, nach beta.101): die ⬜-Positionen in B (B13/B15/B16), F (F6/F15), G (G8/G11) und I (I8/I9) — plus der Abschlusstest des Users (Beta-Exit Punkt 4). Alle bekannten Bugs sind gefixt: #692/#691/#690/#686/#685/#684 (K1-K10), die Neulings-Audit-Befunde #694-#697 (K11-K15) und die User-Test-Funde #699/#700/#701-Teilfix (K16-K18) sind in beta.101 enthalten; #668 ist entschaerft (Live-Verifikation durch den User offen). #687/#688/#689/#698 sind Enhancements (C23/B24/F21/C24) und keine Beta-Blocker; #701-Vollausbau laeuft als A18 (beta.102-Kandidat). Cluster J ist v1.8 und kein Beta-Blocker.
Gezielter Stabilisierungs-Durchlauf gegen user-sichtbare Fehler, plus der bisher fehlende automatische Test-Gate.
| Nr | Funktion | Issue | Status |
|---|---|---|---|
| K1 | Prompt-Delegation FastMCP-3.x-robust: /tipps_und_tricks + /profil_sync luden „Inhalt konnte nicht geladen werden" (FastMCP 3.x kennt _prompt_manager nicht mehr, Exception wurde verschluckt). Statische Texte als modul-level Builder (build_*_prompt, Single Source), kein Zugriff mehr auf FastMCP-Interna |
#692 | ✅ |
| K2 |
kontakt_verknuepfen Meeting-Link: link_contact fragte Tabelle meetings statt application_meetings ab → no such table
|
#685 | ✅ |
| K3 |
kontakt_verknuepfen akzeptiert CON--Praefix: IdKind.CONTACT ergaenzt, damit parse_id/strip_prefix die Kontakt-ID entprefixen (Output emittierte CON-, Input lehnte es ab) |
#684 | ✅ |
| K4 |
stellenbeschreibung_nachladen kappte bei 2000 Zeichen: fetch_description_from_detail(max_chars=...), explizites Nachladen nutzt 20000 (Bulk-Scraper bleiben bei 2000) |
#690 | ✅ |
| K5 | CI-Test-Gate (.github/workflows/tests.yml): volle Suite bei push/PR mit [docs,dev,scraper]-Extras + Playwright-Chromium. Schliesst die Luecke, dass Regressionen (fehlende Extras, FastMCP-Major-Bump) bisher unbemerkt blieben |
— | ✅ |
| K6 |
fastmcp in pyproject.toml auf >=3.0,<4 begrenzt — ein erneuter Major-Bump kann nicht mehr lautlos Interna brechen |
#692 | ✅ |
| K7 | Issue-Hygiene: 14 im Code erledigte, aber offen gebliebene Issues geschlossen (beta.81–100) | — | ✅ |
| K8 |
stellen_auto_aussortieren (#691): (a) Platzhalter/leere LLM-Begruendung 'KURZBEGRUENDUNG' wird zentral in _clean_match_reason bereinigt; (b) Wall-Clock-Budget-Default 180→50s (unter dem ~60s-MCP-Client-Timeout) + die zwei ungeschuetzten DB-Reads abgesichert → schemakonformes status='teilweise' statt hartem outputSchema-Validierungsfehler |
#691 | ✅ |
| K9 | Jobsuche-Orchestrator (#668): Phase-1 (httpx-Quellen) sammelt Ergebnisse jetzt via as_completed statt in Submit-Reihenfolge (Fortschritt bewegt sich mit der schnellsten Quelle, statt bis zu 90-180s an der zuerst-submitteten zu haengen) + globales Phasen-Budget fuer haengende Quellen. Behebt "Jobsuche laeuft komplett in Timeout (0%)". Live verifiziert + Code-Audit beta.105 (K28) |
#668 | ✅ |
| K10 | Doku→Bewerbung-Matching (#686): analyse_plan_erstellen erkennt Firmen jetzt auch aus dem Dokument-INHALT (_company_match_key, Rechtsformen-Stopliste) und matcht gegen bestehende Bewerbungen → neues Feld bewerbungs_zuordnungen + Dubletten-Hinweis in der Empfehlung. Regressionstest test_v17_doku_bewerbung_match_686
|
#686 | ✅ |
| K11 | Onboarding-Sackgassen in gefuehrten Prompts: nicht-existentes anschreiben_generieren + falsche fit_analyse/lebenslauf_angepasst_exportieren-Signaturen im Workflow bewerbung_vorbereitung; Umlaut-Toolnamen (skill_hinzufügen, bewerbung_status_ändern, position_hinzufügen) in 4 Live-Prompts; workflow_starten normalisiert Umlaut-Namen + klarer Fehler statt status='gestartet' bei unbekanntem Workflow; Kein-Profil-Fall im Ersterfassungs-Prompt; willkommen-Quellen-Zahl; faq-Verweis auf Wiki statt unlesbarem docs/FAQ.md; tote Alt-Prompt-Bloecke entfernt |
#694 | ✅ (beta.101) |
| K12 | Stille Falsch-Erfolge: Existenz-Guards in stelle_bewerten (verhindert Phantom-Statistik) + bewerbung_status_aendern (inkl. APP--Praefix-Support + bool-Auswertung); profil_erstellen merged Bestandsfelder statt sie mit Leerwerten zu ueberschreiben (Datenverlust-Fix, empirisch belegt); jobsuche_starten-Guard ohne Suchkriterien (verhindert BA-Default-Keyword-Flut) |
#695 | ✅ (beta.101) |
| K13 | Neulings-Robustheit: ehrliche Leere-DB-Antworten der Dokument-Tools (0 Dokumente ≠ "alle analysiert"; kein_profil mit Handlungsanweisung); pbp_capabilities-Sync: kennlerngespraech_abschliessen korrekt beschrieben (Onboarding-Wizard, NICHT Interview-Nachgang), King-Features beta.78-100 ergaenzt (Tasks, Dokument-Lifecycle, stelle_reaktivieren, Wiedergaenger, Ablehnungsgruende-Editor, Minus-Keywords, onboarding_hints) |
#696 | ✅ (beta.101) |
| K14 | Installation fuer Neulinge: macOS-Doku ehrlich (Python-Voraussetzung + Gatekeeper-Hinweis in README/Release-Notes-Template/Wiki); Chromium-Install-Schritt in INSTALLIEREN.command (Paritaet zu install.sh); ServicePointManager-Typo im BAT-PowerShell-Fallback; Release-Notes-Block um Schritt 6/7 ergaenzt (Claude-Desktop-Neustart + Erstbefehl "Starte die Ersterfassung"); ZIP-Unterordner-Hinweis; Linux-Claude-Desktop-Korrektur |
#697 | ✅ (beta.101) |
| K15 | Wiki-Sync beta.92-101: User-Doku-Welle (Home, FAQ, Erste-Schritte, MCP-Tools, Workflows, Architektur, Jobportale, Tab-Seiten) + Plan-Begleitseiten (MCP-Layer, Jobsuche B21/B23-Kollision, Bewerbungen D20-D23, Dokumente #643-Dublette) + Zahlen-Normierung (177 Tools, Schema v46, 34 Quellen) | — | ✅ (beta.101) |
| K16 | Blacklist-Schutz fuer laufende Bewerbungen: blacklist_verwalten(typ='firma') prueft vor dem Eintragen auf Bewerbungen mit kritischem Status (interview/zweitgespraech/angebot/interview_abgeschlossen) → Warnung mit betroffenen Bewerbungen statt Eintrag; force=True uebersteuert. User-Test-Fund 10.06. (beinahe-Verlust einer Interview-Bewerbung) |
#699 | ✅ (beta.101) |
| K17 | Auto-Reconciler respektiert Termine: (a) kein Auto-Nachfass wenn fuer die Bewerbung ein zukuenftiger Termin (geplant/bestaetigt) existiert; (b) Dashboard trennt echte Termine (Anstehende Termine) von Follow-up-Erinnerungen (eigener Block) | #700 | ✅ (beta.101) |
| K18 | Zeitdarstellung Teilfix: relative Datums-Labels im Dashboard (heute/morgen/in X Tagen) rechnen auf lokalem Datum statt UTC (Kipp-Fehler um Mitternacht UTC); Vollausbau Timestamp-Standard siehe A18 | #701 | ✅ (beta.101) |
| K19 | Feinschliff-Welle aus der eigenen Dashboard-Tour (beta.101 gegen DB-Kopie, alle 8 Bereiche geklickt, 0 JS-Fehler): nackte React-0 (is_private-Integer), stale hints.json (v1.6.2-Banner), Follow-ups ohne Uhrzeit statt "02:00", Singular/Plural + n=1-Hinweis bei Gehaltskennzahl, Elwosa-Pick ueberspringt Linien mit leeren Platzhaltern, Wiki-Snippets-Zahlen, Hilfe-Text + MINUS-Keywords, KPI-Label "Faellige Nachfaesse", Quellen-Zahl auf 35 normiert (len(SOURCE_REGISTRY)). Nebenbei live verifiziert: #668 + #701-Teilfix |
#702 | ✅ (beta.102) |
| K20 | DB-Lock-Haertung (User-Test 11.06., kritisch): busy_timeout=5000 auf der Haupt-Connection (fehlte — Write scheiterte sofort statt zu warten) + Rollback-Sicherheitsnetz in der Tool-Middleware (on_call_tool: offene Transaktion nach Tool-Ende → rollback + WARNING) + gleiches Netz um Auto-Engine-Zyklen. Vorher liess ein geleakter Write-Lock alle Folge-Writes bis zum Neustart scheitern |
#708 | ✅ (beta.103) |
| K21 | Dedup-Gate ehrlich: der in der Fehlermeldung versprochene notes-Override war NIE implementiert → expliziter force=True-Parameter; endkunde-Parameter in bewerbung_erstellen/bewerbung_bearbeiten durchgereicht (Spalte existiert seit Schema v14!) und Dedup vergleicht bei gesetztem Endkunden company+endkunde statt nur company+title (Vermittler-Mehrfach-Engagements) |
#709 #710 | ✅ (beta.103) |
| K22 | Release-Banner = Update-Hinweis (Regression aus K19-hints.json-Update): Hint nur anzeigen wenn Hint-Version NEUER als installierte Version (Semantik wie 1.6.x); hints.json bekommt version-Feld, Endpoint filtert per Versionsvergleich |
#711 | ✅ (beta.103) |
| K23 | Profil-Datenverlust-Haertung: Migrationen leeren nachweislich keine Felder (ALTER-only) — wahrscheinliche Ursachen des Reports sind der erst in beta.101 gefixte profil_erstellen-Bug (User lief beta.99/100) bzw. die Backup-Wiederherstellung vom 10.06.; Haertung trotzdem: Profil-Integritaets-Check nach Migration (warnt wenn vorher gefuellte Pflichtfelder/informal_notes leer wurden) + Wiederherstellungs-Weg aus data/backups dokumentiert |
#705 | ✅ (beta.103) |
| K24 | Jobsuche-Workflow schliesst manuelle Quellen ein: Workflow-Prompt + jobsuche_starten-Hinweis weisen Claude an, die in manuelle_quellen genannten Portale automatisch via Claude-in-Chrome abzuarbeiten (wenn verbunden) statt auf Nachfrage zu warten |
#704 | ✅ (beta.103) |
| K25 | Release-Gate A1 — Datenintegritaet (#705): Generalprobe Migration (voll befuelltes 1.6.x-Profil inkl. informal_notes -> aktuelles Schema, Feld- und Tabellen-Zaehler-genauer Vorher/Nachher-Vergleich, kein Datenverlust); belegt dass der reale 1.6.x->1.7-Pfad rein additiv ist (Tabellen-Rebuilds nur fuer Schema < v23); Pre-Migration-Backup bricht bei Fehler HART ab statt ohne Netz zu migrieren; Merge-Randfaelle (#695) + Export/Import-Roundtrip (informal_notes). Tests test_v17_migration_generalprobe_705
|
#705 | ✅ (beta.105) |
| K26 | Release-Gate A2 — DB-Schreib-Kontention Dashboard<->MCP (#723): busy_timeout 5s->30s (BUSY_TIMEOUT_MS) auf der geteilten Connection (ueberdauert Bulk-Writes/Auto-Engine-Zyklen, bleibt unter dem 4-Min-Client-Limit); WAL + rollback_if_stale (K20) bereits da. Reproduktionstest test_v17_db_contention_723: contended Write wartet auf Lock-Freigabe und geht durch statt zu haengen |
#723 | ✅ (beta.105) |
| K27 | Release-Gate A3 — Zeitanzeige (#701): relative Datumslabels rechnen jetzt tz-robust in Europe/Berlin (pure Hilfsfunktion frontend/src/lib/relativeDate.js), kippen nicht mehr um Mitternacht UTC; Kipp-Test relativeDate.test.mjs laeuft in der CI bewusst unter TZ=UTC. A18 (UTC-Vollumbau) bleibt bewusst vertagt |
#701 | ✅ (Teilfix, beta.105) |
| K28 | Release-Gate verifiziert+geschlossen: #668 (Jobsuche-Timeout — Pro-Scraper-Timeout, Auto-Skip, Teilergebnis, Parallelisierung alle belegt), #724 (E-Mail-Matching ueber ALLE Bewerbungs-Status, kein Aktiv-Filter), #725 (offen-Kachel klickbar mit Zuordnen/Loeschen) | #668 #724 #725 | ✅ (beta.105) |
| K29 |
B2 Scraper-Robustheit (Feature-Block, Teil B): Fehlerklassifikation statt Pauschal-Deaktivierung. (#720) classify_scraper_error -> tot/blockiert/server_weg/kaputt, durchgereicht in scraper_health.last_status_detail + neue Spalte error_class (Schema v47, additiv). (#721) fail-Pfad nutzt Backoff-/Probe-Mechanik nach Klasse: server_weg/blockiert pausiert-mit-Probe (Retry-After respektiert), tot/kaputt hart; einzelner Aussetzer deaktiviert nicht; fehlende Klasse = Altverhalten. (#722) differenzierte Health-Badges (pausiert/blockiert/tot/kaputt) + Fehlerklasse im Klartext + Probe-Zeitpunkt + letzter Erfolg/Treffer. Generalprobe als Test. 1.8-Roadmap (Claude-Handoff, Playwright-SPA #656, Langzeit-Auswertung) bleibt offen |
#719 #720 #721 #722 | ✅ (beta.106) |
| K30 |
Bugfix-Welle beta.107 (5 Issues): (#728) macOS-Installer probiert versionierte Homebrew-Binaries (python3.13/3.12/3.11) zuerst statt nur auf Apples System-Python 3.9 zu fallen; (#729) Blacklist-Check in stelle_manuell_anlegen (force ueberbrueckt) + kein doppelter Blacklist-Hinweis nach stelle_bewerten (neuer Helfer is_company_blacklisted); (#701) relative Labels mit Berliner Uhrzeit ('in 2 Tagen, 14:00 Uhr') + Serverzeit im Footer + tz-robuste berlinTimeOfDay — DB-Timestamp-Vollumbau bleibt A18; (#698) Hochschulabschluss-Malus konfigurierbar (Scoring-Regler hochschulabschluss/fehlt, Default -2, ignorierbar; Schema v47->v48 additiv); (#630 Stufe 1) Aktualisieren-Button + 'Letzter Sync' + FAQ |
#728 #729 #701 #698 #630 | ✅ (beta.107) |
| K31 |
Bugfix-Welle beta.108 (Datenqualitaet Suche + Stilarchiv): (#732) Geo-Filter — neue konservative is_non_dach_location (DACH-Marker gewinnt immer, unbekannte/reine-Remote-Orte bleiben drin) + Hard-Exclude in save_jobs: neue Stellen aus Scraper-Quellen mit klar nicht-DACH Ort -> is_active=0/dismiss_reason='zu_weit_entfernt' (manuelle/Email ausgenommen via _manual_entry, umkehrbar via stelle_reaktivieren); (#731) Consumer-Tech-False-Positives via Remote-Aggregatoren (z.B. „Brazil" durch MUSS-Keyword „Product Lifecycle") dadurch schon vor dem Scoring geblockt; (#736) stil_auswertung zaehlt Interview-Erreichung ueber Status-Verlauf (application_events) + has_reached_interview-Flag statt finalem Status, neue Aufschluesselung absage_nach_interview/absage_ohne_interview; (#733) stelle_manuell_anlegen gibt hinweis wenn Quelle 'manuell' bleibt; (#734) anschreiben_exportieren -> Stilarchiv-Autosave (neue upsert_document_version, „letzte Version gewinnt"; CV bewusst vertagt). Keine Schema-Migration (v48). Tests test_v17_beta108_fixes (35). Begleit: Master-Issue #719 geschlossen, 1.8-Folge als #735 ausgegliedert |
#731 #732 #733 #734 #736 | ✅ (beta.108) |
Regressionstests: test_v167_quickfixes (#692), test_v17_kontakt_link_684_685
(#684/#685), test_v17_refetch_690 (#690), test_v17_auto_aussortieren_691 (#691),
test_v17_doku_bewerbung_match_686 (#686), test_v17_prompts_workflows_694 (#694),
test_v17_guards_695 + test_v17_profil_merge_695 (#695),
test_v17_doku_leere_db_696 + test_v17_capabilities_696 (#696),
test_v17_user_test_699_700 (#699/#700). Volle Suite gruen (Stand beta.101: ueber 1700 Tests).
Foundation: Schema, Multi-Profil, Skills mit Zeitraeumen, Suchkriterien. Alles Aendern an Stellen/Bewerbungen/Dokumenten laeuft durch DB-Helper mit Lifecycle (Audit, Lerneffekt, Statistik).
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| A1 | SQLite-Schema mit _migrate-Funktion (v1 → v46, ALTER-only) |
mehrere | Architektur | ✅ |
| A2 | Multi-Profil-System (mehrere Karrieren parallel verwalten) | — | Tab-Profil | ✅ |
| A3 | Skills mit Zeitraeumen (start/end pro Skill) | — | Tab-Profil | ✅ |
| A4 | Positionen / Ausbildung / Projekte (STAR-Struktur) | — | Tab-Profil | ✅ |
| A5 | Suchkriterien (MUSS/PLUS/AUSSCHLUSS-Keywords, Regionen, Gewichtungen) | — | Suchkriterien | ✅ |
| A6 | Profile-Cluster-Klassifikation (9 Cluster) | #590 | Profile-Cluster | ✅ |
| A7 | Typisierte IDs (Praefix-System: APP-, JOB-, DOC-) | #505 | — | ✅ |
| A8 | Profil-Importieren / Exportieren | — | Tab-Profil | ✅ |
| A9 | Hash-Resolve mit Profil-Prefix (resolve_job_hash) |
— | — | ✅ |
| A10 | Update-Whitelist mit _ALLOWED_UPDATE_FIELDS
|
— | — | ✅ |
| A11 | Hard-Guard save_jobs gegen leere URLs aus Scraper-Quellen |
#645 | Stellen-Qualitaet | ✅ |
| A12 | Inhalts-Duplikat-Erkennung (Titel+Firma → duplikat) | #641 | — | ✅ |
| A13 | DB-Backup-Strategie + automatisches Restore | — | Architektur | ✅ |
| A14 | Mojibake-Repair fuer doppelt-encodete Strings | — | — | ✅ |
| A15 | SQLite WAL-Mode + busy_timeout fuer Parallel-Reads | — | — | ✅ |
| A16 | Skill-Datenqualitaet: Junk-Heuristik verschaerft (Satzfragmente raus) + skills_bereinigen-Tool fuer Altbestand + ehrliches Skill-Loeschen |
#681 | Tab-Profil | ✅ (beta.96) |
| A17 | Informelle Notizen voll editierbar: profil_bearbeiten(notizen, ...) kann jetzt lesen (strukturiert), ersetzen + loeschen pro Sektion — vorher nur anhang/aendern
|
#680 | Tab-Profil | ✅ (beta.97) |
| A18 | Einheitlicher Timestamp-Standard (Cross-Cutting, beta.102-Kandidat): alle DB-Timestamps UTC mit Offset (keine naiven/aware-Mischung in application_events/meetings/follow_ups), zentrales "Jetzt" im Backend, Frontend-Relativlabels auf Europe/Berlin, Serverzeit im Dashboard sichtbar. Anzeige-Teil komplett (relative Labels Europe/Berlin + Uhrzeit + Serverzeit, K27/K30, beta.105-107); offen bleibt nur der DB-weite naive/aware-Umbau | #701 | — | ⬜ |
| A19 | Generischer Fresh-Install-Schema-Parity-Test: Doppel-Migrations-Trick (frische DB → _migrate(1, SCHEMA_VERSION) → Snapshot-Diff leer) + v31-Fixture-Vergleich (migrierte Alt-DB spaltenidentisch zu Fresh-Install). Sichert die #737-Fehlerklasse (Spalte per Migration, fehlt im CREATE TABLE) dauerhaft in der CI ab. Fund beim Einbau: #737-Restluecke fuer v1.6.x-Fresh-Install-Upgrader → is_imported-Safety-Net in initialize() |
#738 | Plan-Datenbasis | ✅ (v1.7.3) |
| A20 | Umlaut-Restaurierung Altbestand: kuratierte Wortlisten-Korrektur (ae/oe/ue → echte Umlaute) in Profil-/Projekttexten. Neues Tool profil_umlaute_reparieren(anwenden=False) nach skills_bereinigen-Dry-Run-Muster; Schreiben nur ueber bestehende db.update_*-Whitelists (Anti-DB-Bypass #514); ss→ß nie automatisch; technologies-Felder ausgenommen; Pflicht-Backup vor Anwenden; ungemappte Kandidaten als Kuratierungs-Liste |
#742 | Plan-Datenbasis | ✅ (v1.7.5, 179 Tools) |
34 Quellen-Adapter, Scraper-Health-System, Auto-Reactivate-Backoff, Profile-Cluster-Empfehlung. Die einzelnen Quellen sind in Plan-Jobsuche gelistet.
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| B1 | Scraper-Plugin-Architektur (LegacyAdapter + AdapterResult) | #499 | Jobportale | ✅ |
| B2 | 34 Quellen-Adapter (HTTP/API, Browser, JobSpy) | mehrere | Jobportale | 🟨 (6 produktiv, 7 defekt, siehe Health-Stand) |
| B3 | Scraper-Health-System mit Auto-Reactivate-Backoff (24h/48h/72h/168h) | #432 | Jobportale | ✅ |
| B4 | Aktiver Quellen-Probe via quellen_health_check
|
#624 | — | 🟨 (Probe-URLs teilweise veraltet) |
| B5 | Profile-Cluster-basierte Quellen-Empfehlung | #590 | Profile-Cluster | ✅ |
| B6 | Workday-DAX-Cluster fuer Konzern-Bewerbungen | #590 | Jobportale | ✅ |
| B7 | Suchprofile (mehrere parallel verwaltbar) | #564 | Suchkriterien | ✅ |
| B8 | Scoring (6 Kriterien: Skills/Erfahrung/Branche/Standort/Gehalt/Modell) | mehrere | Tab-Stellen | ✅ |
| B9 | URL-Pflege-Pipeline (Detail-URL > jobId-rekonstruiert > Such-URL Fallback) | #436, #645 | Stellen-Qualitaet | ✅ |
| B10 | Stellenbeschreibung-Auto-Refetch (max 8/Lauf, Backoff bei 3 Fehlern) | #622 | Tab-Stellen | ✅ |
| B11 | URL-Aging-Auto-Cleanup (404/expired → dismiss veraltet_url) |
#645 | Stellen-Qualitaet | 🟨 (beta.73 ausgespielt, beta.72 hat es noch nicht) |
| B12 | 7 defekte Quellen — URL-Updates fuer ferchau/ingenieur_de, Deprecation fuer monster/solcom | #653 | Jobportale | 🟨 (URL-Fixes + Deprecation ✅ beta.77; gulp/kimeta/heise_jobs in B18) |
| B13 |
quellen_health_check Probe-URLs aktualisieren: fehlende Probes ingenieur_de + ferchau ergaenzt + Konsistenz-Tests (#747, v1.7.4); Alt-Drift in v1.7.5 geschlossen (#748: Probe == Adapter — bundesagentur X-API-Key, workable v1-Widget-API, personio Adapter-Firma; RSS-Probes waren korrekt) |
#747 #748 | Plan-Jobsuche | ✅ (v1.7.5) |
| B14 | Chrome-Extension-Fallback fuer Login-Wall-Quellen | — | Jobportale | ✅ |
| B15 | Quellen-Rotation im job_runner | #590-C.4 | — | ⬜ |
| B16 | Eigene Karriereseiten-URLs als Custom-Source | #627 | — | ⬜ |
| B17 | Neuer Adapter: Adzuna API (REST, kostenlos, deutsche Stellen) | #654 | Jobportale | ✅ |
| B18 | Playwright-Adapter fuer SPA-Quellen (gulp/kimeta/heise_jobs) — bewusst zurueckgestellt, siehe Optimierung | #656 | — | ⏸ |
| B19 | Minus-Keywords: weiche Score-Abwertung zusaetzlich zu harten Ausschluss-Keywords (Backend: Tools + Scoring) | #667 | — | ✅ |
| B20 | Minus-Keywords Frontend-Sektion + Gewicht-Slider | #667 | — | ✅ (Backend beta.84, Frontend beta.89) |
| B21 | Scraper-Auto-Skip bei consecutive_failures >= 5 (Total-Timeout-Bugfix) |
#668 | — | ✅ |
| B22 |
stelle_manuell_anlegen Duplikat-Erkennung verfeinern (Titel-Aehnlichkeit statt nur Firma+Keyword, URL als starkes Signal, force=true-Override statt hartem Block) |
#670 | — | ✅ |
| B23 | Interne Jobsuche nach Zeitplan (taeglich/woechentlich/alle 3 Tage; nur Scraper-Quellen, Browser-Quellen bleiben manuell). Teil des Automatik-Schedulers | #678 | Tab-Einstellungen | ✅ (beta.94) |
| B24 | Snapshot-Nachhol-Trigger: Stellen ohne Volltext-Snapshot in der Tagesroutine nachziehen (Flag + Auto-Engine-Step; deterministischer HTTP-Refetch, Ollama optional) | #688 | — | ⬜ |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| C1 |
stellen_anzeigen mit Filter/Score/Quellen |
— | Tab-Stellen | ✅ |
| C2 |
stelle_bewerten (Score) mit Ablehnungsgruende-Whitelist |
#108 | — | ✅ |
| C3 |
stellen_bulk_bewerten mit Filtern (#514 Anti-DB-Bypass) |
#514 | MCP-Tools | ✅ |
| C4 |
stellen_bulk_bewerten 90s-Wall-Clock-Budget |
#646 | FAQ | ✅ |
| C5 |
stellen_auto_aussortieren via Lokaler AI (Profil-Match) |
#586 | Lokale-KI | ✅ |
| C6 |
stellen_auto_aussortieren Hard-Cap + Wall-Clock-Budget |
#646 | FAQ | ✅ |
| C7 |
stelle_manuell_anlegen (LinkedIn/XING via Chrome-Extension) |
#160 | — | ✅ |
| C8 |
stelle_bearbeiten mit url=-Parameter (Backfill) |
#645 | Stellen-Qualitaet | ✅ |
| C9 |
stelle_vergleichen (Skills + Score + Gehalt + Standort) |
#580 | — | ✅ |
| C10 |
stelle_mergen (Master + Duplikat zusammenfuehren) |
#470 | — | ✅ |
| C11 |
aehnliche_stellen_finden (Token-Overlap) |
#580 | — | ✅ |
| C12 |
fit_analyse mit MUSS/PLUS-Hits + Risiko-Faktoren |
mehrere | Tab-Stellen | ✅ |
| C13 |
scoring_konfigurieren (Slider fuer Gewichtungen) |
— | Suchkriterien | ✅ |
| C14 |
stellen_qualitaet_pruefen (URL-Health + Beschreibungs-Vollstaendigkeit) |
#645 | Stellen-Qualitaet | 🟨 (beta.73, beta.72 noch nicht) |
| C15 | Adaptive Hints "Score unsicher / Beschreibung fehlt" | #594 | Lern-System | ✅ |
| C16 | Pin / Unpin von Top-Kandidaten | — | Tab-Stellen | ✅ |
| C18 |
fit_analyse mit 3-Stufen-Empfehlung (EMPFOHLEN/BEDINGT/NICHT_EMPFOHLEN) + k.o.-Kriterien |
#662 | Plan-Stellen | ✅ |
| C19 |
scoring_vorschau robust gegen Bracket-Keys mit Einheit (50km) |
#661 | — | ✅ |
| C20 | Ablehnungsgruende editierbar: dyn. Whitelist + 4 MCP-Tools + is_active-Spalte + Frontend-Tab |
#663 | — | ✅ (Backend beta.85, Frontend beta.90) |
| C21 |
stelle_reaktivieren MCP-Tool (Anti-DB-Bypass-Lueckenschluss) |
#664 | — | ✅ |
| C22 | Ablehnungsgruende loeschen (mit Pflicht-Neuzuordnung) + umbenennen (Cascade auf jobs, Merge) + ablehnungsgrund_loeschen-Tool. User-Test-Fix |
#663 | Tab-Einstellungen | ✅ (beta.92) |
| C17 | Outcome-Signal in fit_analyse (Warnung bei aussortierten Aehnlichen) |
#648 | Tab-Stellen | ✅ |
| C23 | Volltext-Snapshot beim Anlegen einer Stelle (unveraenderliches Feld beschreibung_snapshot + Quelle/Zeitstempel; schuetzt vor Offline-Gehen der URL; Schema-Anteil bei A1) |
#687 | — | ⬜ |
| C24 | Hochschulabschluss-Malus konfigurierbar: als Scoring-Dimension in scoring_konfigurieren (Default -2 rueckwaertskompatibel, ignorieren=True moeglich, wirkt bei scores_neu_berechnen). beta.102-Kandidat |
#698 | — | ⬜ |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| D1 | Bewerbungs-Wizard (Anschreiben + Doku-Zuordnung + Status) | — | Tab-Bewerbungen | ✅ |
| D2 | Status-Lifecycle (offen → beworben → interview → angenommen/abgelehnt) | — | Tab-Bewerbungen | ✅ |
| D3 | Event-Timeline pro Bewerbung (jedes Status-Update als Event) | — | Tab-Bewerbungen | ✅ |
| D4 | Follow-up / Nachfass mit Auto-Reminder | — | Workflows | ✅ |
| D5 | Recruiter-Inbound-Workflow (Anfrage → optional ablehnen oder anlegen) | — | MCP-Tools | ✅ |
| D6 | Bewerbung ↔ Stelle n:m-Verknuepfung (eine Stelle → mehrere Varianten) | #472 | — | ✅ |
| D7 | Bewerbungs-Bericht-Export (PDF/XLSX/ZIP) | #313 | — | ✅ |
| D8 | Bewerbungs-Print-Layout (HTML-Protokoll mit Timeline+Doku) | #313 | — | ✅ |
| D9 |
bewerbung_event_datum_setzen (Status-Datum nachtraeglich korrigieren) |
#631 | MCP-Tools | ✅ |
| D10 | Kontakte-System (Recruiter, Hiring Manager, ...) mit Kategorien | #607 | — | ✅ |
| D11 | Kontakte aus Bestand importieren (Bewerbungen + Mails durchsuchen) | #563 | — | ✅ |
| D12 | Phantom-Bewerbungen aus CV-Dateinamen verhindern | #642 | FAQ | ✅ |
| D13 | Mail-Doku-Verknuepfung (email_verknuepfen mit getrennten ID-Raeumen) |
#644 | — | ✅ |
| D14 | Interview-Reflexion (eigene Notizen pro Interview-Termin) | — | — | ✅ |
| D15 | Nachfass-Trigger bei Status ohne Update >7 Tage (Adaptive Hint + Elwosa) | #650 | Tab-Bewerbungen | ✅ |
| D17 |
nachfass_planen Dubletten-Check (MCP-Teil) |
#665 | — | ✅ |
| D18 |
nachfass_planen Frontend: Direkt-Abhaken-Button in "Offene Aktionen" |
#665 | — | ✅ (Backend beta.85, Frontend beta.90) |
| D19 | Generisches Task/Todo-System: Schema v45 + 4 MCP-Tools + REST-API + Frontend-Sektion | #666 | — | ✅ (Backend beta.85, Frontend beta.90) |
| D20 |
recherche_speichern Bugfix: Bewerbung-Recherche landete in applications.fit_analyse (Kollision + unsichtbar) — jetzt ins anzeigbare research_notes der verknuepften Stelle geroutet, Dedupe, klare Meldung ohne Stelle |
#672 | Tab-Bewerbungen | ✅ (beta.97) |
| D21 | Recherchen in Timeline/Details sichtbar machen (eigener Abschnitt, alle Kategorien) | #673 | Tab-Bewerbungen | ✅ (beta.98 — recherchen-Abschnitt in bewerbung_details + Detail-Dialog, auf-/zuklappbar pro Kategorie) |
| D22 | Ein-Schritt-Persistenz fuer Recherche-Tools + Kategorie-Routing (eigene Tabelle research_notes, Schema v46) |
#674 | MCP-Tools | ✅ (beta.98 — Tabelle research_notes + add/get-Helper; firmen_recherche/branchen_trends/skill_gap_analyse persistieren optional direkt) |
| D23 | Aufgaben mit „Erledigt bis"-Datum (Frontend-Datumsfeld) + prominente Dashboard-Warnung bei Ueberfaelligkeit (get_overdue_tasks → Workspace-Summary) |
#683 | Tab-Bewerbungen | ✅ (beta.100) |
| D24 | Kontakte-Untermenue „Referenzen": Kontakte als Referenz markieren (Art aus Whitelist + Zeitraum + Bemerkung, optional Bewerbungs-/Projektbezug), Filter + Referenzliste-Export (DOCX/PDF). Eigene Tabelle contact_references (Migration v49, in _migrate UND SCHEMA_SQL — A19-Parity beachten); Verhaeltnis zur bestehenden System-Kategorie referenz definieren (Tabelle = Quelle der Wahrheit) |
#740 | Tab-Kontakte | ⬜ |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| E1 | Dokumenten-Upload + Auto-Klassifikation (CV/Anschreiben/Zeugnis/Mail/...) | — | Tab-Dokumente | ✅ |
| E2 | Lokale-AI-Profil-Extraktion (Skills, Stationen aus CV/Zeugnis) | — | Profil-aus-Dokumenten | ✅ |
| E3 |
/dokumente_verarbeiten-Prompt (Routing: Profil/Mail/Anhang/Termin) |
#634 | Profil-aus-Dokumenten | ✅ |
| E4 | Tiefenanalyse nach Basis-Extraktion (basis_analysiert weiterprozessieren) |
#640 | — | ✅ |
| E5 | Bewerbungs-Anhang-Erkennung (bewerbungs_dokumente_erkennen) |
— | Tab-Dokumente | ✅ |
| E6 | Lebenslauf-/Anschreiben-Generierung + Export (DOCX/PDF) | — | — | ✅ |
| E7 | Mail-Import (.msg/.eml/IMAP) + Auto-Status-Erkennung | — | — | ✅ |
| E8 | Mail-Anhang-Auto-Extract zu Dokumenten + Verknuepfung | — | — | ✅ |
| E9 | Auto-Klassifikation eingehender Mails via Lokale AI | — | Lokale-KI | ✅ |
| E10 | Doku-Integrity-Check (DB-Eintrag vs. Datei auf Disk + Auto-Fix) | #441 | — | ✅ |
| E11 | Dokumente verarbeiten — alle bewerbungsrelevanten Typen (Einladungen/Absagen/Termine) | #643 | Plan-Dokumente | ✅ |
| E12 | Auto-Tiefenanalyse-Step fuer basis_analysiert-Dokumente (max N/Lauf) |
#651 | — | ✅ |
| E13 | Few-Shot fuer Recruiter-Anfrage-Klassifikator (Recall-Problem fixen) | #649 | — | ✅ |
| E14 | Doku-Typen erweitern + Per-Typ-Handler-System | #655 | Profil-aus-Dokumenten | ✅ |
| E15 | Dokument-Lifecycle Reparatur: basis_analysiert → angewendet fuer Korrespondenz entkoppeln |
#658 | Plan-Dokumente | ✅ |
| E16 | Lifecycle-Spalte aktiv/archiviert/veraltet + Auto-Veralten |
#657 | Plan-Dokumente | ✅ |
| E17 | Dokument-/E-Mail-Auto-Matching haerten: Bewerbungen mit Archiv-Status (abgelehnt/zurueckgezogen/abgelaufen) nie auto-verknuepfen (nur Vorschlag); Dateiname-Matcher auto_assign_document Schwelle 0.7→0.9 (Angleich an #523 „im Zweifel unverknuepft"); Ambiguitaets-Check bei Domain-Signalen (Vermittler-Agenturen wie Hays/SThree); Warnhinweis im Analyse-Plan (#686) bei abgeschlossenen Bewerbungen |
#743 | Plan-Dokumente | ✅ (v1.7.3) |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| F1 | LLM-Service-Routing (LOCAL/CLAUDE/MANUAL, TaskKind-Tabelle) | #512 | Lokale-KI | ✅ |
| F2 | Ollama-Integration mit Status-Caching + Auto-Detect | #591 | Lokale-KI | ✅ |
| F3 | Ollama-Modell-Selection mit models_detail (Name, Size, Family) |
#592 | Lokale-KI | ✅ |
| F4 | Ollama Cold-Start-Fix (keep_alive 60min, Pre-Warmup) | #638 | Lokale-KI | ✅ |
| F5 | Ollama als permanente KI-Backbone fuer Hintergrund-Tasks | #638 | Lokale-KI | ✅ |
| F6 | Token-Klassen-Anzeige + Pre-Flight-Schaetzung pro Tool | #632 | — | 🟨 (Stufe 1 ✅, Pre-Flight-Schaetzung ⬜) |
| F7 | Ollama-Genauigkeits-Statistik (auto-aussortiert vs. spaeter reaktiviert/beworben) | #638 | Lokale-KI | ✅ |
| F8 | Few-Shot-Beispiele aus User-History fuer match_job_to_skills | #638 | — | ✅ |
| F9 |
validate_job_quality TaskKind (Stelle vollstaendig genug?) |
#645 | Stellen-Qualitaet | 🟨 (beta.73, beta.72 noch nicht) |
| F10 | Ollama aus PBP heraus starten (wenn gestoppt) | #637 | — | ✅ |
| F11 | Elwosa Live-Statusanzeige mit Persoenlichkeit | #599 | Elwosa | ✅ |
| F12 | Elwosa Tonfall-Modi (aus/sachlich/minimal/humorvoll) | #612 | Elwosa | ✅ |
| F13 | Elwosa Varianz-Pools (Same-Day-Anti-Repeat) | #614 | Elwosa | ✅ |
| F14 | Elwosa Wiki-Snippets pro Page-Wechsel | #594 | Elwosa | ✅ |
| F15 | Elwosa Ollama-Live-Generierung + Claude-Eskalation (Ebene 1/2) | #669 | — | ⬜ |
| F17 | Elwosa KI-freies Safety-Net: Validierungs-Retry + Tageslebenszeichen-Garantie (rotierender Pool) | #669 | — | ✅ |
| F16 | Wiedergaenger-Erkenner: KI-freier DB-Check (Ebene 0) + Claude-Kontext in fit_analyse (Ebene 2). Firma+Domaene schon X-mal mit Grund Y verworfen | #671 | — | ✅ (Ebene 0+2; Ollama-Ebene 1 optional ⬜) |
| F22 | Lern-System: Pattern-Analyse aus User-Aktivitaet (LLM, opt-in Telemetrie) — war faelschlich als zweites F15 nummeriert | #594 | Lern-System | ✅ |
| F21 | Transparenz + Steuerung der lokalen KI (konkretisiert 12.06.): eigener Bereich "Was wurde aussortiert" (Liste der Auto-Aussortierungen mit KI-Begruendung + Zurueckholen-Aktion; Minimal: Leistungs-Kachel klickbar → Ausgeblendet-Filter) + Lernprotokoll in den Einstellungen (learning_insights + Few-Shot-Basis) + Insight-Loeschen/Reset | #689 | — | 🟨 (Teil 1 beta.104; offen: Insight-Loeschen/Reset) |
| F23 | Empfehlungs-Kanal: Ollama-Erkenntnisse, Empfehlungen-an-Claude und Bug-/Feature-Kandidaten sammeln + anzeigen; pro Eintrag auf User-Klick als GitHub-Issue (PII-gescrubbt) oder Mail an den Maintainer melden — nie automatisch. v1.7.1/v1.8-Kandidat | #714 | — | ⬜ |
| F24 | Ollama-gestuetzte Keyword- und Jobtitel-Vorschlaege: neue TaskKinds EXTRACT_KEYWORDS/SUGGEST_JOB_TITLES (LOCAL bevorzugt, Heuristik-Fallback unveraendert), keyword_vorschlaege auch auf Profil-Basis (0 Bewerbungen), Quelle in Response gekennzeichnet, Feature-Gate ki_features. Zubringer fuer G17 |
#745 | Plan-Lokale-KI | ✅ (v1.7.4) |
| F24 | Elwosa: nutzungsbasierte, anklickbare Feature-Tipps — user_activity_events erkennt selten/nie genutzte Funktionen, Elwosa stellt sie gezielt vor ([link:]-Markup zur Navigation bzw. copyPrompt fuer den fertigen Claude-Prompt). Spielt endlich die onboarding_hints (#652/G11) aus | #713 | — | ✅ (beta.104) |
| F18 | Ollama-Lern-Automatik: Pattern-Analyse + Doku-Lernen laeuft periodisch (Intervall einstellbar) statt nur bei offenem Dashboard. Teil des Automatik-Schedulers | #677 | Tab-Einstellungen | ✅ (beta.94) |
| F19 | Elwosa nennt die echte Uhrzeit: {zeit}-Platzhalter (format_uhrzeit) statt fester Zeiten im Linientext |
#679 | Elwosa | ✅ (beta.95) |
| F20 | Ollama-Zeitkontext: aktuelles Datum vor jeden lokalen LLM-Prompt (_run_local), damit Zeitraeume/Aktualitaet gegen das echte Jahr gerechnet werden |
#679 | — | ✅ (beta.96) |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| G1 | 8-Tab-Layout (Dashboard / Profil / Stellen / Bewerbungen / Dokumente / Kalender / Statistiken / Einstellungen) | — | Dashboard | ✅ |
| G2 | Dashboard mit Workspace-Card "naechster sinnvoller Schritt" | — | Tab-Dashboard | ✅ |
| G3 | AdaptiveHintBanner pro Page (#594 Stufe 4) | #594 | Lern-System | ✅ |
| G4 | Split-View Festanstellung / Freelance | — | Tab-Stellen | ✅ |
| G5 | Verwaltungsnummern (S-/B-/D-/K-Praefix, Klick = in Zwischenablage kopieren) | — | Erste-Schritte | ✅ |
| G6 | Statistik-Charts + Bewerbungsbericht-Export | — | Tab-Statistiken | ✅ |
| G7 | Gefahrenzone (DB-Reset, Komplett-Deinstallation) | — | Tab-Einstellungen | ✅ |
| G8 | Live-Updates Frontend zeigt Claude-Aenderungen ohne Refresh | #630 | — | ⬜ |
| G9 | Sidebar-Menue-Vorrang-Fix | #625 | — | ✅ |
| G10 | Ollama-Leistung-Card in Einstellungen | #638 | Lokale-KI | ✅ |
| G11 | Onboarding-Hints fuer ungenutzte Features — Backend seit beta.76, Frontend seit v1.7.5: REST-Endpoints + OnboardingHintBanner auf 4 Tabs, Hover-Erklaerungen, persistentes Dismiss (REST↔MCP synchron), neuer Hint g11_erste_suche_starten (G17-Anschluss) |
#652 | MCP-Tools | ✅ (v1.7.5) |
| G12 | App-weite ErrorBoundary (ein Tab-Crash blankt nie die ganze App, Sidebar bleibt) + White-Screen-Fix (fehlender SelectInput-Import im Datenschutz-Tab) + Telemetrie-MCP (telemetrie_status/_setzen) als Recovery. User-Test-Fix |
#676 | Tab-Einstellungen | ✅ (beta.93) |
| G16 | Interview-Vorbereitung direkt aus der Bewerbung: Button in Uebersicht + Timeline (Status interview/zweitgespraech), startet den Workflow vorbefuellt + legt Todo mit Faelligkeit an | #706 | — | ⬜ |
| G17 | Gefuehrte Einsteiger-Kette (CV-Upload → Profil → Keywords → erste Suche): Wizard-Phase 5 (keyword_vorschlaege → suchkriterien_setzen → quellen_health_check + Smart-Default-Quellen bundesagentur/arbeitnow/jobspy_indeed → jobsuche_starten → Treffer-Vorschau), 0-Treffer-Diagnostik, Ollama-fehlt-Hinweis; UI: CV-Upload prominent im Welcome; Quellen-Defekt-Badges existierten bereits (SourceSelectionList) | #744 | Erste-Schritte | ✅ (v1.7.4) |
| G13 | Outcome-Quoten (expired/rejection/withdrawal) + Segmentierung am PBP-Startdatum (gesamt/seit_pbp/vor_pbp) in get_statistics; Statistik-Kachel mit Umschalter. Aktiv-vs-Inbound-Schnitt bewusst offen (kein zuverlaessiger Marker) |
#682 | Tab-Statistiken | ✅ (beta.99) |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| H1 | FastMCP-Server-Setup mit 11 Tool-Modulen | — | MCP-Tools | ✅ |
| H2 | 177 MCP-Tools (volle UI-Parity) | mehrere | MCP-Tools | ✅ |
| H3 | 24 Prompts (vorgefertigte Workflow-Starter) | — | MCP-Tools | ✅ |
| H4 |
pbp_capabilities (kuratierte Tool-Uebersicht) |
#514 | — | ✅ |
| H5 |
pbp_diagnose (Gesundheits-Check + Auto-Fix) |
mehrere | — | ✅ |
| H6 |
pbp_mcp_diagnose (Tool-Call-Telemetrie fuer Timeout-Diagnose) |
#636 | MCP-Tools | ✅ |
| H7 |
pbp_grenze_melden (Edge-Case-Reporter) |
#514 | — | ✅ |
| H8 |
scraper_diagnose mit Reaktivierungs-Tool |
#432 | — | ✅ |
| H9 | Anti-DB-Bypass-Pattern (Claude darf nicht direkt in SQLite) | #514 | — | ✅ |
| H10 | Slow-Call-WARNING ins Server-Log (>= 5s) | #636 | — | ✅ |
| H11 | Wall-Clock-Budget fuer Bulk-Tools (90s/180s) | #646 | FAQ | ✅ |
| H12 |
pbp_capabilities Tool-Count-Sync (gesamt 152 vs. kuratiert 95 transparent) |
#647 | — | ✅ |
| H13 |
profil_bearbeiten: Umlaut-Normalisierung fuer aktion/bereich |
#659 | — | ✅ |
| H15 | informal_notes aktiv pflegen: Prompt-Guidance (Claude notiert persoenliche Erkenntnisse proaktiv via profil_bearbeiten) + Dashboard-Hint bei leeren/kurzen Notizen + UI-Tooltip | #707 | — | ⬜ |
| H14 | CLAUDE.md: hartes Verbot eigener Ablehnungsgruende + Fit-Verdict-Stil | #663 #662 | — | ✅ |
| H16 |
projekte_anzeigen: STAR-Volltext aller Projekte als strukturierte Profil-Abfrage (+ Projekt-IDs fuer profil_bearbeiten, is_confidential-Maskierung, position_id-Filter). Schliesst die Luecke, dass profil_zusammenfassung kuerzt und kein Tool Volltext liefert; Prompt-Guidance in bewerbung_schreiben + Workflow-Prompts |
#741 | MCP-Tools | ✅ (v1.7.3) |
| H17 | Melde-Hilfe: Prompt problem_melden — Claude versucht erst eine Sofortloesung, formuliert dann den PII-gescrubbten Bug-/Feature-Report fuer den Anwender (24→25 Prompts); Wiki-Guidance in FAQ + Erste-Schritte. Leichtgewichtige Vorstufe zu F23/#714 |
#746 | FAQ | ✅ (v1.7.4) |
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| I1 |
INSTALLIEREN.bat (Windows, Doppelklick-Install) |
— | Installation | ✅ |
| I2 |
INSTALLIEREN.command (macOS) |
— | Installation | ✅ |
| I3 |
installer/install.sh (Linux) |
— | Installation | ✅ |
| I4 |
DEINSTALLIEREN.bat mit klarer Abgrenzung (Claude Desktop bleibt) |
— | Installation | ✅ |
| I5 | Komplett-Deinstallation aus der Gefahrenzone (UI-getrieben) | — | Tab-Einstellungen | ✅ |
| I6 | Installer-Autostart (PBP nach Installation automatisch starten) | #639 | — | ✅ |
| I7 | Cross-Platform-Build-Pipeline (GitHub Actions) | — | — | ✅ |
| I8 | Code-Signing (Win + macOS) | — | — | ⬜ |
| I9 | Auto-Updater | — | — | ⬜ |
Explizit User-Vorgabe: das soll als Plug-Ins kommen, nicht als Kern-Code.
| Nr | Funktion | Issue | Wiki | Status |
|---|---|---|---|---|
| J1 | Plugin-Plattform v1.7 (Sub-Add-Ins, Capability-Manifest, stabile Ingest-API) | #504 | — | ⬜ |
| J2 | Thunderbird-Add-On "An PBP senden" | #478 | — | ⬜ |
| J3 | Outlook-Office-Add-In "An PBP senden" | #480 | — | ⬜ |
| J4 | Calendar-Sync (iCalendar-Export, optional CalDAV/Graph) | #481 | — | ⬜ |
| J5 | Newsletter-Ingest (StepStone/JobLeads/freelance.de/LinkedIn/XING) | #525 | — | ⬜ |
| J6 | Interview-Training-Arc (eigener PBP-Bereich) | #452 | — | ⬜ |
| J7 | Community-Tagesimpulse (User koennen Sprueche beisteuern) | #513 | — | ⬜ |
| J8 | Branchen-Radar & Tools-News (gemeinsame Recherche-Engine, 2 Kanaele: Dossier-Abschnitt on-demand + erinnerungsbasierter Radar als Dauerwert) | #718 (Master), #716, #717 | ⬜ |
Warum Datenbasis (A) und MCP-Layer (H) zuerst, dann Domains (B-G)? Schema + MCP-Layer sind Querschnitts-Module. Jede neue Domain ist von ihnen abhaengig. Wenn das Schema sich aendert nachdem 5 Domains drauf bauen, ist es teurer als wenn 5 Domains an einem fertigen Schema dranhaengen.
Warum Jobsuche (B) vor Stellen-Lifecycle (C) vor Bewerbungen (D)? Pipeline-Reihenfolge. Erst kommt die Stelle ueber Scraping rein (B), dann wird sie bewertet/aussortiert (C), dann wird daraus eine Bewerbung (D). Wer B fixed muss nicht zwingend C/D anfassen.
Warum Lokale KI (F) als eigener Cluster, nicht in einzelne Tools verteilt?
Weil das Ollama-Routing in services/llm_service.py zentral ist. Jeder Task-Typ (Doku-Klassifikation, Profil-Match, Stelle-Validierung, ...) nutzt dieselbe Routing-Tabelle. Aenderung dort wirkt ueberall.
Warum Elwosa in F und nicht in G (Frontend)? Elwosa ist konzeptuell Persoenlichkeit + Trigger-Engine, nicht UI. Die UI in der Sidebar ist nur das Frontend einer Backend-Logik die selber Lokale AI nutzen kann. G ist nur die Anzeige.
Warum Plugin-Plattform (J) erst nach allem anderen? Weil Plugins gegen eine stabile Ingest-API andocken. Erst muss die API stabil sein, dann darf sie nach aussen geoeffnet werden. Andersrum entsteht Wildwuchs.
PBP ist kein:
- Job-Search-Aggregator-Hosting — wir scrapen lokal, kein Backend-Cache, kein "PBP-Cloud-Service".
- ATS-System — keine Recruiter-Tools fuer Firmen.
- Karriere-Coaching-Service — die KI gibt Sparring, ist aber kein Coach-Ersatz.
- CV-Builder-fuer-andere — kein Multi-User-Hosting, jede Installation ist persoenlich.
- Direkt-Bewerbungs-Versender — PBP traegt Anschreiben + CV bei, der User schickt selbst (keine Auto-Send-Funktion).
- Headhunter-Marktplatz — keine Verbindung Recruiter ↔ User-Profile.
- Gehalts-Statistik-Datenbank — wir nutzen externe Daten (Stepstone-Gehaltsanalyse etc.), bauen keine eigene.
Eine Position gilt nur als ✅ wenn alle drei zutreffen:
- Code ist im Repo, lauffaehig.
-
Tests sind gruen — die jeweils relevanten in
tests/. -
Wiki-Eintrag existiert mit:
- Kurzbeschreibung der Funktion
- Wie nutzt man sie (Beispiel-Call oder UI-Screenshot)
- Welche Parameter / Optionen gibt es
- Bekannte Einschraenkungen
- Verweis auf Issue + relevante Code-Pfade
Solange ein Punkt fehlt, bleibt die Position 🟨 oder ⬜. Diese Disziplin ist ab beta.74 verbindlich (siehe CLAUDE.md).
- Plan-Fortschritt: Status-Spalten oben werden mit jedem Schritt aktualisiert.
- Wiki-Vollstaendigkeit: Stub-Verweise werden ergaenzt sobald die Position fertig ist.
- Issue-Verlinkung: Jede Position verweist auf das relevante GitHub-Issue (wenn vorhanden).
- Test-Anzahl: wird im CI gemessen (aktuell 1679 passed, 1 skipped — Stand Beta-Stabilisierung 2026-06-09, +7 Regressionstests; automatischer Gate via K5).
-
MCP-Tool-Count: aktuell 177 Tools, 24 Prompts,
pbp_capabilitiesist die kuratierte Uebersicht. -
QA-Selbsttest (beta.90): voller Test-Lauf + Migration v43→v45 auf einer Real-DB-Kopie + 10/10 REST-Endpoints (FastAPI-TestClient) gruen. Wiki-Drift (beta.74→beta.90) korrigiert, beta.78-90-Features user-seitig dokumentiert. Details:
docs/QA-Audit-beta90.md. -
Beta-Stabilisierung (2026-06-09): FastMCP-3.x-Prompt-Bug (#692),
kontakt_verknuepfenMeeting+CON-Praefix (#685/#684), Nachlade-Cap (#690), auto_aussortieren-Schema+Begruendung (#691) gefixt — je mit Regressionstest; Jobsuche-Timeout (#668) entschaerft; CI-Test-Gate eingefuehrt (K5); fastmcp gepinnt (K6); 14 im Code erledigte Issues geschlossen (Hygiene). Volle Suite gruen (1679 passed). Siehe Teil K.
Priorisierung + Zeitschaetzung in Master-Plan-Optimierung.
🗺 Plan
- Master-Plan
- Master-Plan-Optimierung
- Plan-Datenbasis (A)
- Plan-Jobsuche (B)
- Plan-Stellen (C)
- Plan-Bewerbungen (D)
- Plan-Dokumente (E)
- Plan-Lokale-KI (F)
- Plan-Frontend (G)
- Plan-MCP-Layer (H)
- Plan-Distribution (I)
- Plan-Roadmap-v18 (J)
Einstieg
Tabs
Features
- Elwosa
- Lern-System
- Lokale KI & KI-Steuerung
- Profile-Cluster
- Suchkriterien & Gewichtungen
- Profil aus Dokumenten
- Workflows
- Jobportale
- Stellen-Qualitaet
Reference