Semantius Logo

Candidate CRM

1. Overview

The candidate-relationship backbone of an ATS, masters candidates (including the prospect lifecycle state), recruitment sources, agencies, and events. Structurally the same shape as standalone candidate-CRM products. Folds the AI-RECRUIT capability (resume parsing, ML matching, screening assistants) since those tools operate on candidates and are tightly bound to candidate workflows.

2. Entity summary

NameDescription
CandidatesPerson known to the recruiting org, with or without an active application. Carries contact details, resume, tags, GDPR consent, and source. Distinct from Employee until hired.
Recruitment AgenciesThird-party recruiter or staffing firm supplying candidates. Tracks contract terms, contact, performance, and the candidates they have submitted.
Recruitment EventsCareer fair, on-campus event, hackathon, or meetup used as a sourcing channel. Tracks attendees, captured leads, and event ROI.
Recruitment SourcesChannel a candidate came from: job board, referral, agency, sourcing campaign, career event, or inbound. Used for source-of-hire analytics and channel ROI.
Skill ProfilesPer-worker collection of skills with self-assessed and validated proficiency levels, derived from completed courses, certifications, performance signals, and inferred peer-comparison. The central artifact of HCM-side skills-cloud and talent-intelligence offerings.
Career AspirationsWorker-declared career interest: target roles, mobility preferences (geographic, functional), aspired timeline. Drives internal-mobility matching.
flowchart TD
  classDef master fill:#d4f4dd,stroke:#27ae60,color:#0b3d20;
  classDef contributor fill:#cfe8ff,stroke:#1976d2,color:#0d3a66;
  classDef consumer fill:#e8def8,stroke:#7b1fa2,color:#3a155d;
  classDef platform_builtin fill:#e0e0e0,stroke:#424242,color:#1a1a1a;
  candidates["Candidates"]
  recruitment_sources["Recruitment Sources"]
  recruitment_agencies["Recruitment Agencies"]
  recruitment_events["Recruitment Events"]
  skill_profiles["Skill Profiles"]
  career_aspirations["Career Aspirations"]
  users["Users"]
  skill_profiles -->|"feeds (opt)"| candidates
  skill_profiles -->|"feeds (opt)"| career_aspirations
  recruitment_sources -->|"attributes"| candidates
  recruitment_agencies -->|"sources"| candidates
  recruitment_events -->|"attracts"| candidates
  users -->|"holds"| skill_profiles
  users -->|"declares"| career_aspirations
  class candidates master;
  class recruitment_sources master;
  class recruitment_agencies master;
  class recruitment_events master;
  class skill_profiles contributor;
  class career_aspirations consumer;
  class users platform_builtin;
  style career_aspirations stroke-dasharray:5 5;

3. Entities catalog

#data_objectrolemastered innecessitypattern flagsnotes
1candidates (Candidates)master-requiredpersonal_content-
2recruitment_agencies (Recruitment Agencies)master-required--
3recruitment_events (Recruitment Events)master-required--
4recruitment_sources (Recruitment Sources)master-required--
5skill_profiles (Skill Profiles)contributorlms-skillsrequiredpersonal_content-
6career_aspirations (Career Aspirations)consumertalent-succession-careeroptionalpersonal_content-

4. Aliases and industry synonyms

(no industry-scoped aliases or non-synonym alias types loaded for this scope; generic synonyms are omitted as common knowledge.)

5. Relationships

5.1 Intra-scope edges

fromverbtocardinalitykindnecessityowner_sidenotes
skill_profilesfeedscandidatesone_to_manyreferenceoptionalsource-
skill_profilesfeedscareer_aspirationsone_to_manyreferenceoptionalsource-
recruitment_sourcesattributescandidatesone_to_manyreferencerequiredtarget-
recruitment_agenciessourcescandidatesone_to_manyreferencerequiredtarget-
recruitment_eventsattractscandidatesone_to_manyreferencerequiredtarget-

5.2 Built-in edges (users and other platform built-ins)

fromverbtocardinalitynecessityowner_sidenotes
usersholdsskill_profilesone_to_manyrequiredsource-
usersdeclarescareer_aspirationsone_to_manyrequiredtarget-

5.3 Cross-scope edges

fromverbtocardinalitynecessitynotes
employeesholdsskill_profilesone_to_oneoptional-
job_profilesmaps_toskill_profilesmany_to_manyoptional-
employeesbecomescareer_aspirationsone_to_oneoptional-
skill_profilesupdated bylearner_certificationsone_to_manyoptional-
skill_profilesupdated bycourse_enrollmentsone_to_manyoptional-
job_profilesexpectsskill_profilesmany_to_manyoptional-
course_enrollmentsupdatescareer_aspirationsone_to_manyoptional-
career_aspirationsinformssurvey_responsesone_to_manyoptional-
candidatessubmitsjob_applicationsone_to_manyrequired-
candidate_referralsintroducescandidatesone_to_manyrequired-
talent_poolsgroupscandidatesmany_to_manyrequired-
candidatesbecomesemployeesone_to_onerequired-
candidatesbecomes pre-employeepre_employeesone_to_onerequired-
succession_plansconsiderscareer_aspirationsone_to_manyoptional-

6. Cross-domain context

6.1 Master consumers (other modules / domains that embed this scope’s masters)

data_objectother module / domainrolenecessitynotes
candidatesATS-BACKGROUND-CHECKS (Background Checks) - ATSembedded_masterrequired-
candidatesATS-INTERVIEWS (Interviews) - ATSembedded_masterrequired-
candidatesATS-OFFERS (Offers) - ATSembedded_masterrequired-
candidatesATS-PRE-EMPLOYEE-RECORD (Pre-Employee Record) - ATSembedded_masterrequired-
candidatesATS-RECRUITMENT-PIPELINE (Recruitment Pipeline) - ATSembedded_masterrequired-
candidatesATS-REFERRALS (Employee Referrals) - ATSembedded_masterrequired-
candidatesATS-TALENT-POOLS (Talent Pools) - ATSembedded_masterrequired-
candidatesBEN-ENROLLMENT (Enrollment and Life Events) - BEN-ADMINconsumerrequired-
candidatesHCM-LIFECYCLE-WORKFLOWS (Employee Lifecycle Workflows) - HCMconsumerrequired-
candidatesHIRING-STARTER (Hiring Starter) - ATSembedded_masterrequired-
candidatesONB-JOURNEY-MGMT (Onboarding Journey Management) - ONBOARDINGconsumerrequired-
recruitment_sourcesHIRING-STARTER (Hiring Starter) - ATSembedded_masteroptional-
recruitment_sourcesPA-WORKFORCE-METRICS (Workforce Metrics) - PAconsumerrequired-

6.2 Outbound handoffs (events this scope publishes)

source moduletarget domaintarget moduletrigger_eventpayloadintegrationfrictiondescription
ATS-CANDIDATE-CRMHCMHCM-LIFECYCLE-WORKFLOWScandidate.hiredcandidatesevent_streamhighHired-candidate event publishes the hiring outcome to HCM, which must create the employee record. Identifier mapping (candidate_id -> employee_id) is the canonical reconciliation gap.
ATS-CANDIDATE-CRMBEN-ADMINBEN-ENROLLMENTcandidate.hiredcandidatesevent_streamlowHired candidate triggers eligibility window in BEN-ADMIN.
ATS-CANDIDATE-CRMPAPA-WORKFORCE-METRICSrecruitment_source.attributedrecruitment_sourcesbatch_synclowSource attribution feeds people-analytics quality-of-hire and cost-per-hire models.
ATS-CANDIDATE-CRMONBOARDINGONB-JOURNEY-MGMTcandidate.hiredcandidatesevent_streammediumHired candidate drives onboarding-plan kickoff with role/location/manager context from ATS payload.

6.3 Inbound handoffs (events this scope reacts to)

target modulesource domainsource moduletrigger_eventpayloadintegrationfrictiondescription
ATS-CANDIDATE-CRMTALENT-MGMTTALENT-SUCCESSION-CAREERsuccessor.taggedcareer_aspirationsapi_calllowSuccessors identified in succession_plans surface in ATS as pre-qualified internal candidates for matched requisitions.
ATS-CANDIDATE-CRMLMSLMS-SKILLSskill_profile.updatedskill_profilesevent_streammediumInternal-candidate skill data flows into ATS for internal mobility sourcing.
ATS-CANDIDATE-CRMATSATS-REFERRALScandidate_referral.submittedcandidateslifecycle_progressionlow-

6.4 Master providers (modules / domains that own masters this scope embeds)

data_objectrole herenecessitycanonical owner(s)slice notes
skill_profilescontributorrequiredLMS-SKILLS (LMS)-
career_aspirationsconsumeroptionalTALENT-SUCCESSION-CAREER (TALENT-MGMT)-

7. Lifecycle states (per touched entity)

candidates (Candidate)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1prospect---Person known to the recruiting org with no active application.
2active----Candidate has at least one open application or is actively engaged.
3hired-ats-candidate-crm:hire_candidateCandidate accepted an offer and converted to employee.
4do_not_hire-ats-candidate-crm:flag_do_not_hireCandidate flagged as ineligible for future consideration; gated decision.
5archived---Candidate kept in the database but not active in any pipeline.

career_aspirations (Career Aspiration)

This scope holds career_aspirations as consumer; the canonical state machine is owned by TALENT-SUCCESSION-CAREER.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1declared---Employee records target roles, mobility preferences, time horizon.
2discussed----Reviewed in a 1-on-1 with the manager.
3in_pursuit----Active development plan in place.
4fulfilled---Aspiration achieved (role move, promotion, lateral).
5withdrawn---Employee withdraws the aspiration (priorities changed).

recruitment_agencies (Recruitment Agency)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1prospective---Agency under evaluation; contract not yet executed.
2active----Agency has executed agreement and is engaged on one or more requisitions.
3on_hold----Engagement paused (performance review, contractual dispute, hiring freeze).
4terminated---Relationship ended; no further requisitions are routed to this agency.

recruitment_events (Recruitment Event)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1planned---Event scoped and budgeted; date, venue, target audience set; registration not yet open.
2open_for_registration----Registration is accepting attendees; promotion campaigns active.
3held----Event has been executed; attendee lists captured, leads ingested into talent pool.
4closed---Post-event activities complete; cost accounting and source-attribution finalized.
5cancelled---Event called off before it happens; sunk costs recognized, attendees notified.

skill_profiles (Skill Profile)

This scope holds skill_profiles as contributor; the canonical state machine is owned by LMS-SKILLS.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1initialized---Profile seeded for the worker from role and prior signals.
2self_assessed----Worker has captured self-assessed proficiency levels.
3validated--lms-skills:validateManager or skills owner validated proficiency entries.
4inactive-lms-skills:deactivateProfile retired (worker exit or role-change reset).

8. Permissions and business rules (derived)

8.1 Permissions

permissiontierdescriptionincluded in :admin?
ats-candidate-crm:readbaseline-readRead access to every entity in the module
ats-candidate-crm:managebaseline-manageEdit operational records
ats-candidate-crm:adminbaseline-adminEdit reference data and inherit every workflow gate below-
ats-candidate-crm:hire_candidateworkflow-gate (lifecycle)Transition candidates into state hired
ats-candidate-crm:flag_do_not_hireworkflow-gate (lifecycle)Transition candidates into state do_not_hire
ats-candidate-crm:view_all_candidatesoverride (personal_content)View all candidates rows beyond row-scope
ats-candidate-crm:manage_all_candidatesoverride (personal_content)Manage all candidates rows beyond row-scope

8.2 Business rules

rule_namedata_objectsource flagintent
candidate_edit_scopecandidateshas_personal_contentRow-scope by default; override via ats-candidate-crm:view_all_candidates / ats-candidate-crm:manage_all_candidates