Framework User-Klassen Signal-CRM

Profilvollständigkeit Framework

Kandidatenprofile sollen so vollständig und aktuell werden, dass anonymes Active Sourcing für Unternehmen effizient wird, ohne Kandidaten durch zu viele Fragen oder Datenschutzrisiken zu verlieren.

100% vollständig heißt nicht "alles ausgefüllt". Es heißt: alle matchrelevanten Fragen sind beantwortet, frisch genug und für den jeweiligen Kontext nutzbar. Eine explizite Negativantwort wie "keine Weiterbildung" ist genauso wertvoll wie ein ausgewählter Wert.

Backend-Basis

Die Applier-Daten liegen nicht in einem einzigen Profilobjekt. Für das CRM müssen mehrere Datenquellen zusammengedacht werden.

Applier

Suchstatus, Präferenzen, Qualifikation, Standort und Matching-Signale.

User / UserContact

Identität, Kontaktbasis, Verifikation, Erreichbarkeit und Confidence Score.

UserFile / WorkHistory

Dokumenttypen, Lebenslauf, Berufsstationen und geparste Erfahrung.

ApplierHistory

Änderungshistorie, CRM-Aufgaben, Due Dates und manuelle Bearbeitung.

UserOpenTasks

Materialized View für offene Aufgaben je Kandidat.

MessageUnsubscription

Kanal- und Nachrichtentyp-Abmeldungen, die das CRM respektieren muss.

Feldinventar

Diese Felder sind im aktuellen Backend relevant für Profilqualität, Matching und Active Sourcing.

Bereich Backend-Felder Einordnung Aktualität Matching-Must-have Fit probability
Jobsuche-Statusjob_search_status, job_search_urgency, job_search_status_updated_atPräferenz / Status30-60 TageProdukt-GateNein
Verfügbarkeitstart_work_date, newest_registration_date, resubmission_atPräferenz / Timing60-90 TageProdukt-MussNein
Standort internpostcode, city, latitude, longitudeMatching / Datenschutz6 Monate oder UmzugCode-GateDirekt Distanz
Rolle / Zielpositionposition, position_other, position_verbatimQualifikation + Präferenz6-12 MonateProdukt-MussDirekt Positions-Similarity
Ausbildungeducation, education_other, education_verbatim_verboseQualifikationEinmaligCode-GateFilter nicht Formel
Berufserfahrungwork_experience, WorkHistoryQualifikation / CV-SignalJährlich oder JobwechselProdukt-MussNein
Weiterbildungencontinuing_education, continuing_education_otherQualifikationBei neuer WeiterbildungCode-Gate wenn Job requiredDirekt required CE met
Sprachelanguage_skillQualifikation12 Monate oder VerbesserungCode-GateFilter nicht Formel
Führerscheindriving_licenseQualifikation / MobilitätNur bei ÄnderungCode-Gate bei Job-AnforderungFilter nicht Formel
Versorgungsartcare_typePräferenz + Erfahrungskontext60-90 TageProdukt-MussDirekt Care-Type-Similarity
Arbeitsumfangworking_typePräferenz60-90 TageCode-Gate Minijob-LogikDirekt Working-Type-Distanz
Dienstlängeshift_hourPräferenz60-90 TageProdukt-MussIndirekt über match_shift
Schichtpräferenzshift_preferencesPräferenz30-60 TageProdukt-MussNein aktuell nicht gefunden
Gehaltsuntergrenzeminimum_acceptable_salaryPräferenz3-6 MonateNeinNein
Motivation / Wünschemotivation, others, noteSoft Signal / PräferenzKontextbezogenNeinNein
DokumenteUserFile.type, file_url, is_removedNachweis / ProfilqualitätBei ÄnderungProdukt-Muss für QualitätNein
KontaktfähigkeitUserContact, verified_at, email_verified_atCRM / TrustBei Bounce oder fehlender VerifikationAS-GateNein
Kommunikationmail_toggle, MessageUnsubscriptionCRM / ConsentBei jeder Nachricht prüfenCRM-GateNein

Code-Gate = im aktuellen Matching-Code als Filter oder technische Voraussetzung gefunden. Produkt-Muss = für Active-Sourcing-Qualität notwendig, aber nicht zwingend technische Voraussetzung.

Fit probability direkt = in apps/match/match_probabilites.py in der Formel. Filter = beeinflusst, ob ein Match entsteht, aber nicht den finalen Score.

Code-Befund

Die aktuelle Fit-Probability-Formel nutzt direkt care_type, position, match_shift, distance, working_type und required continuing_education. education, language_skill, driving_license und required continuing_education wirken zusätzlich als Matching-Filter. shift_preferences, Gehalt, Dokumente und Job-Suchstatus habe ich aktuell nicht in der Fit-Probability-Formel gefunden.

100%-Framework V1

Profilvollständigkeit wird als Punktestand geführt, aber mit Gates. Ein Profil mit 82% kann trotzdem nicht active-sourcing-ready sein, wenn Suchstatus oder Consent fehlen.

Status & Aktualität

20 Punkte

job_search_status jünger als 60 Tage; bei aktiv zusätzlich Dringlichkeit oder Startdatum.

Match-Präferenzen

25 Punkte

Versorgungsart, Arbeitsumfang, Schichtpräferenz/Dienstlänge und geocodierter interner Standort.

Qualifikation

25 Punkte

Position, Ausbildung, Erfahrung, Sprache, Führerschein und Weiterbildung beantwortet.

Nachweise & Erfahrung

15 Punkte

Lebenslauf, relevante Urkunde und mindestens eine Work-History-Station oder CV-Parsing.

Trust & Kontakt

10 Punkte

Verifizierter Kontaktkanal, keine relevante Abmeldung, Kandidat ist erreichbar.

Active-Sourcing-Consent

5 Punkte

Anonymes Profil aktiviert, Preview-Version und sichtbare Feldgruppen gespeichert.

Active-Sourcing-ready

Score >= 80%, Muss-Module erfüllt, Status active oder open, Consent vorhanden und Datenschutzregel erfüllt: keine exakte PLZ, keine Koordinaten, kein Name, keine Kontaktdaten, keine Dokumentdateien und kein aktueller Arbeitgeber in der Unternehmensansicht.

Qualifikation vs. Präferenz

Qualifikation · selten fragen

  • Ausbildung: education, education_other
  • Weiterbildungen: continuing_education
  • Berufserfahrung: work_experience, WorkHistory
  • Position/Rolle, Sprache, Führerschein
  • Dokumente: Lebenslauf, Examensurkunde, Berufsurkunde, Sprachzertifikat

CRM-Regel: erst fragen, wenn fehlt, widersprüchlich ist, aus Lebenslauf neu ableitbar ist oder seit 12 Monaten nicht bestätigt wurde.

Präferenz · häufiger aktualisieren

  • Suchstatus und Dringlichkeit
  • Startdatum und Verfügbarkeit
  • Versorgungsart, Arbeitsumfang, Dienstlänge
  • Schichtpräferenz und Muttischichten
  • Gehaltsuntergrenze und sonstige Wünsche

CRM-Regel: alle 30-90 Tage aktualisieren. Aktiv suchende Kandidaten häufiger, passive Kandidaten eher per leichtem Confirm-Flow.

Nachrichtensystem

Das CRM sollte nie generisch "Profil vervollständigen" senden. Jede Nachricht fragt genau eine fehlende oder veraltete Signalgruppe ab.

  1. Status bestätigen: aktiv, offen oder gerade nicht suchend?
  2. Timing klären: wann könntest du starten?
  3. Schichten aktualisieren: welche Schichten passen aktuell?
  4. Versorgungsart aktualisieren: welche Bereiche kommen infrage?
  5. Arbeitsumfang / Gehalt: welcher Umfang und welche Untergrenze passen?
  6. Qualifikation schließen: Ausbildung oder Weiterbildung ergänzen.
  7. Nachweis anfordern: Examensurkunde oder Berufsurkunde ergänzen.
  8. Berufserfahrung ergänzen: letzte Station oder Lebenslauf hochladen.

Produkt- und Backend-Gaps

  • Feld-Level-Aktualität: Es gibt job_search_status_updated_at, aber keine Aktualität pro Präferenz- oder Qualifikationsfeld.
  • Explizite Negativantworten: Leere continuing_education bedeutet aktuell "unbekannt" oder "keine Weiterbildung".
  • Spezialisierungs-Erfahrungsjahre: Experiment 05 ist fachlich wichtig, aber nicht als eigenes aktuelles Applier-Feld sichtbar.
  • Dokumenten-Verifikation: UserFile speichert Typ und Datei, aber keine Verifikation.
  • Active-Sourcing-Consent: Opt-in, Preview-Version und sichtbare Feldgruppen müssen persistiert werden.
  • Entfernung: Exakte Standortdaten existieren intern, sollten für Unternehmen aber nur als Bucket oder gar nicht sichtbar sein.

Empfohlene neue Datenstruktur

ProfileSignalStatus

Feldstatus je Signal: missing, answered, confirmed_none, stale, verified.

signal_key · last_answered_at · last_prompted_at · source

AnonymousActiveSourcingConsent

Persistiert Opt-in, Deaktivierung, Preview-Version und sichtbare Feldgruppen.

enabled_at · disabled_at · preview_version

ApplierSpecializationExperience

Spezialisierungs-Erfahrungsjahre aus Experiment 05 als strukturiertes Signal.

area · years · source · confirmed_at