Semantius Logo

Pre-Employee Record

1. Overview

The bridge between offer-accepted and start-date: ATS owns the pre-employee lifecycle stage (paperwork in flight, pre-boarding tasks open, background check pending). Realizes the hired state on job_applications. Publishes the pre_employee.activated event that hands the canonical reconciliation to HCM-mastered employees. Formerly NEW-HIRE-HANDOFF, renamed per §7.1 because HCM canonically masters employees.

2. Entity summary

Namedata_objectDescription
Pre-Employeespre_employeesPre-employment records covering the window between offer acceptance and start date, tracking paperwork, background checks, and pre-boarding tasks.
CandidatescandidatesPeople known to the recruiting organization, with or without an active application, carrying contact details, resume, tags, consent, and source.
Offersjob_offersFormal employment offers extended to candidates, with compensation, start date, terms, approval chain, and status.
Right to Work Verificationsright_to_work_verificationsPre-hire right-to-work verification events, such as the I-9 or E-Verify check, recording method, status, verifier, and outcome under employment-eligibility law.
flowchart TD
  classDef master fill:#d4f4dd,stroke:#27ae60,color:#0b3d20;
  classDef embedded_master fill:#fff4cc,stroke:#c79100,color:#5b4500;
  classDef platform_builtin fill:#e0e0e0,stroke:#424242,color:#1a1a1a;
  pre_employees["Pre-Employees"]
  candidates["Candidates"]
  job_offers["Offers"]
  right_to_work_verifications["Right to Work Verifications"]
  users["Users"]
  candidates -->|"verified_via"| right_to_work_verifications
  job_offers -->|"spawns pre-employee record"| pre_employees
  candidates -->|"becomes pre-employee"| pre_employees
  candidates -->|"has owning recruiter"| users
  job_offers -->|"has approver"| users
  pre_employees -->|"has owning hr_coordinator"| users
  right_to_work_verifications -->|"has verifier"| users
  class pre_employees master;
  class candidates embedded_master;
  class job_offers embedded_master;
  class right_to_work_verifications embedded_master;
  class users platform_builtin;
  style right_to_work_verifications stroke-dasharray:5 5;

3. Entities catalog

#data_objectcanonical codesingularpluralrolemastered inmastered labelnecessitypersonal_contententity_typewrite tiernotes
1pre_employeespre_employeesPre-EmployeePre-Employeesmaster--requiredyesoperational_workflow:manage-
2candidatescandidatesCandidateCandidatesembedded_masterats-candidate-crmCandidate CRMrequiredyesoperational_workflow:manage-
3job_offersjob_offersOfferOffersembedded_masterats-offersJob Offersrequiredyesoperational_workflow:manage-
4right_to_work_verificationsright_to_work_verificationsRight to Work VerificationRight to Work Verificationsembedded_masterbgv-continuous-identityContinuous and Identityoptionalyesoperational_workflow:manage-

4. Aliases and industry synonyms

(none: no industry-scoped aliases for this scope)

5. Relationships

5.1 Intra-scope edges

fromverbtocardinalitykindnecessityowner_sidedelete_modefk_formatnotes
candidatesverified_viaright_to_work_verificationsone_to_manyreferenceoptionalsourceclearreference-
job_offersspawns pre-employee recordpre_employeesone_to_onereferencerequiredsourcerestrictreference-
candidatesbecomes pre-employeepre_employeesone_to_onereferencerequiredsourcerestrictreference-

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

fromverbtocardinalitynecessityowner_sidedelete_modefk_formatnotes
candidateshas owning recruiterusersmany_to_manyoptionalsourceclearreference-
job_offershas approverusersmany_to_manyrequiredsourcerestrictreference-
pre_employeeshas owning hr_coordinatorusersone_to_manyrequiredsourcerestrictreference-
right_to_work_verificationshas verifierusersmany_to_manyoptionalsourceclearreference-

5.3 Cross-scope edges

5.3a Outbound from this scope’s masters and contributors

Edges this scope drives: the in-scope endpoint has role of master or contributor.

fromverbtocardinalitynecessitydelete_modefk_formatnotes
pre_employeespromotes toemployeesone_to_onerequirednone (required-if-present)n/a-

5.3b Context edges on embedded shells and consumed entities

Edges the canonical owner drives, shown for context: the in-scope endpoint has role of embedded_master, consumer, or derived.

fromverbtocardinalitynecessitydelete_modefk_formatnotes
candidatesengaged_viacandidate_engagementsone_to_manyoptionalnonen/a-
candidatesattends_viarecruiting_event_attendancesone_to_manyrequirednone (required-if-present)n/a-
candidatesnoted_viarecruiter_interactionsone_to_manyoptionalnonen/a-
candidatesconsents_viacandidate_consentsone_to_manyrequired⚠ audit: required composed child out of scopen/a-
candidatesmember_of_viatalent_pool_membershipsone_to_manyrequirednone (required-if-present)n/a-
candidatesdiscloses_viafcra_disclosuresone_to_manyrequired⚠ audit: required composed child out of scopen/a-
candidatesself_identifies_viaeeo_responsesone_to_manyoptionalnonen/a-
job_offersevolves_throughoffer_versionsone_to_manyrequired⚠ audit: required composed child out of scopen/a-
job_offersgated_byoffer_approvalsone_to_manyoptionalnonen/a-
candidatessubmits_viadata_subject_requestsone_to_manyoptionalnonen/a-
candidatesself_ids_viavoluntary_self_identificationsone_to_manyoptionalnonen/a-
candidatesacknowledges_viafcra_summary_of_rights_acknowledgementsone_to_manyoptionalnonen/a-
candidatesdocumented_viacandidate_documentsone_to_manyoptionalnonen/a-
candidatesannotated_viacandidate_notesone_to_manyoptionalnonen/a-
candidatestagged_viacandidate_tag_assignmentsone_to_manyoptionalnonen/a-
skill_profilesfeedscandidatesone_to_manyoptionalnonen/a-
candidatessubmitsjob_applicationsone_to_manyrequirednone (required-if-present)n/a-
candidate_referralsintroducescandidatesone_to_manyrequirednone (required-if-present)n/a-
recruitment_sourcesattributescandidatesone_to_manyrequirednone (required-if-present)n/a-
recruitment_agenciessourcescandidatesone_to_manyrequirednone (required-if-present)n/a-
recruitment_eventsattractscandidatesone_to_manyrequirednone (required-if-present)n/a-
talent_poolsgroupscandidatesmany_to_manyrequirednone (required-if-present)n/a-
job_applicationsresults injob_offersone_to_manyrequirednone (required-if-present)n/a-
job_offersis contingent onbackground_checksone_to_manyrequirednone (required-if-present)n/a-
job_offersspawnsonboarding_journeysone_to_onerequirednone (required-if-present)n/a-
job_offerstriggersbenefit_enrollmentsone_to_onerequirednone (required-if-present)n/a-
job_offersseedscompensation_statementsone_to_onerequirednone (required-if-present)n/a-
candidatesbecomesemployeesone_to_onerequirednone (required-if-present)n/a-
employeesapplies_ascandidatesone_to_manyoptionalnonen/a-
candidatescorresponds_viacandidate_emailsone_to_manyoptionalnonen/a-
candidatesscreened_viadrug_health_screeningsone_to_manyoptionalnonen/a-
candidatessubmitted_viaagency_submissionsone_to_manyoptionalnonen/a-

6. Cross-domain context

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

data_objectother module / domainrolenecessitynotes
pre_employeesHCM-LIFECYCLE-WORKFLOWS (Employee Lifecycle Workflows) - HCMembedded_masterrequired-

6.2 Outbound handoffs (events this scope publishes)

source moduletarget domaintarget moduletrigger_eventtransitionpayloadintegrationfrictiondescription
ATS-CANDIDATE-CRMHCMHCM-LIFECYCLE-WORKFLOWScandidate.hiredhired (lifecycle)candidatesevent_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-OFFERSHCMHCM-LIFECYCLE-WORKFLOWSjob_offer.acceptedaccepted (state_change)job_offersevent_streammediumOffer acceptance signals firm hiring intent; HCM creates pending-employee record.
ATS-PRE-EMPLOYEE-RECORDHCMHCM-LIFECYCLE-WORKFLOWSpre_employee.activatedin_progressactivated (state_change)pre_employeesevent_streammediumPre-employee activation hands the canonical reconciliation to HCM-mastered employees. ATS owns the pre-employee lifecycle stage (paperwork, background check, pre-boarding); at start-date the pre_employee row is reconciled into the HCM employee record. Identifier mapping (pre_employee_id → employee_id) is the canonical reconciliation gap. Replaces / complements the older candidate.hired and job_offer.accepted handoffs by carrying the proper post-acceptance reconciliation milestone.
ATS-OFFERSCOMP-MGMTCOMP-STATEMENTSjob_offer.signedsigned (lifecycle)job_offersevent_streamlowSigned offer establishes the comp baseline; COMP-MGMT incorporates into cycle history.
ATS-CANDIDATE-CRMBEN-ADMINBEN-ENROLLMENTcandidate.hiredhired (lifecycle)candidatesevent_streamlowHired candidate triggers eligibility window in BEN-ADMIN.
ATS-CANDIDATE-CRMONBOARDINGONB-JOURNEY-MGMTcandidate.hiredhired (lifecycle)candidatesevent_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_eventtransitionpayloadintegrationfrictiondescription
ATS-CANDIDATE-CRMHCMHCM-CORE-WORKERemployee.applied_internallyactiveactive (signal)candidatesapi_callmediumWhen an employee applies internally, HCM hands the worker context to the applicant tracker, which materializes an internal candidate record from the worker profile. Friction: reconciling the worker identity against the candidate identity space.
ATS-CANDIDATE-CRMATSATS-REFERRALScandidate_referral.submitted(lifecycle)candidateslifecycle_progressionlow-
ATS-OFFERSATSATS-RECRUITMENT-PIPELINEjob_application.advanced(state_change)job_offerslifecycle_progressionlow-
ATS-PRE-EMPLOYEE-RECORDATSATS-OFFERSjob_offer.acceptedaccepted (state_change)pre_employeeslifecycle_progressionlow-
ATS-PRE-EMPLOYEE-RECORDATSATS-OFFERSjob_offer.rescinded(state_change)pre_employeeslifecycle_progressionhigh-
ATS-OFFERSATSATS-BACKGROUND-CHECKSbackground_check.flagged(lifecycle)job_offerslifecycle_progressionmedium-
ATS-PRE-EMPLOYEE-RECORDATSATS-BACKGROUND-CHECKSbackground_check.cleared(lifecycle)pre_employeeslifecycle_progressionlow-

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

data_objectrole herenecessitycanonical owner(s)slice notes
candidatesembedded_masterrequiredATS-CANDIDATE-CRM (ATS)-
job_offersembedded_masterrequiredATS-OFFERS (ATS)-
right_to_work_verificationsembedded_masteroptionalBGV-CONTINUOUS-IDENTITY (BGV)-

7. Lifecycle states

candidates (Candidate)

This scope holds candidates as embedded_master; the canonical state machine is owned by ATS-CANDIDATE-CRM.

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-pre-employee-record:hire_candidateCandidate accepted an offer and converted to employee.
4do_not_hire-ats-pre-employee-record:flag_do_not_hireCandidate flagged as ineligible for future consideration; gated decision.
5archived---Candidate kept in the database but not active in any pipeline.

job_offers (Offer)

This scope holds job_offers as embedded_master; the canonical state machine is owned by ATS-OFFERS.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1draft---Recruiter is composing offer terms and compensation components.
2pending_approval----Offer routed to the designated approver for sign-off.
3approved--ats-pre-employee-record:approve_offerApprover signed off; offer is ready to send.
4sent----Offer delivered to the candidate.
5accepted---Candidate accepted the offer.
6declined---Candidate declined the offer.
7rescinded-ats-pre-employee-record:rescind_offerOffer withdrawn by the employer after being sent; gated action.

pre_employees (Pre-Employee)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1created---Record created when an offer is accepted. Paperwork packet not yet generated.
2paperwork_in_flight----I-9 / W-4 / direct-deposit / banking forms issued; awaiting candidate completion. Background check may run in parallel.
3cleared----All paperwork received and background check completed clear. Ready for HCM activation.
4activated-ats-pre-employee-record:activate_pre_employeeReconciliation handoff fired to HCM (pre_employee.activated event). Canonical employees row created downstream; ATS record becomes read-only.
5canceled---Offer rescinded or candidate withdrew before activation. Record retained for audit.

right_to_work_verifications (Right to Work Verification)

This scope holds right_to_work_verifications as embedded_master; the canonical state machine is owned by BGV-CONTINUOUS-IDENTITY.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1pending----
2in_progress-----
3verified-ats-pre-employee-record:verify_right_to_work-
4tentative_nonconfirmation-----
5final_nonconfirmation----
6closed----

8. Permissions and business rules (derived)

8.1 Permissions

permissiontierdescriptionincluded in :admin?
ats-pre-employee-record:readbaseline-readRead access to every entity in the module
ats-pre-employee-record:managebaseline-manageEdit operational records
ats-pre-employee-record:adminbaseline-adminEdit reference data and inherit every workflow gate below-
ats-pre-employee-record:hire_candidateworkflow-gate (lifecycle)Transition candidates into state hired
ats-pre-employee-record:flag_do_not_hireworkflow-gate (lifecycle)Transition candidates into state do_not_hire
ats-pre-employee-record:approve_offerworkflow-gate (lifecycle)Transition job_offers into state approved
ats-pre-employee-record:rescind_offerworkflow-gate (lifecycle)Transition job_offers into state rescinded
ats-pre-employee-record:activate_pre_employeeworkflow-gate (lifecycle)Transition pre_employees into state activated
ats-pre-employee-record:verify_right_to_workworkflow-gate (lifecycle)Transition right_to_work_verifications into state verified
ats-pre-employee-record:view_all_pre-employeesoverride (personal_content)View all pre_employees rows beyond row-scope
ats-pre-employee-record:manage_all_pre-employeesoverride (personal_content)Manage all pre_employees rows beyond row-scope
ats-pre-employee-record:view_all_candidatesoverride (personal_content)View all candidates rows beyond row-scope
ats-pre-employee-record:manage_all_candidatesoverride (personal_content)Manage all candidates rows beyond row-scope
ats-pre-employee-record:view_all_offersoverride (personal_content)View all job_offers rows beyond row-scope
ats-pre-employee-record:manage_all_offersoverride (personal_content)Manage all job_offers rows beyond row-scope
ats-pre-employee-record:view_all_right_to_work_verificationsoverride (personal_content)View all right_to_work_verifications rows beyond row-scope
ats-pre-employee-record:manage_all_right_to_work_verificationsoverride (personal_content)Manage all right_to_work_verifications rows beyond row-scope

8.2 Business rules

rule_namedata_objectsource flagintent
pre-employee_edit_scopepre_employeeshas_personal_contentRow-scope by default; override via ats-pre-employee-record:view_all_pre-employees / ats-pre-employee-record:manage_all_pre-employees
candidate_edit_scopecandidateshas_personal_contentRow-scope by default; override via ats-pre-employee-record:view_all_candidates / ats-pre-employee-record:manage_all_candidates
offer_edit_scopejob_offershas_personal_contentRow-scope by default; override via ats-pre-employee-record:view_all_offers / ats-pre-employee-record:manage_all_offers
right_to_work_verification_edit_scoperight_to_work_verificationshas_personal_contentRow-scope by default; override via ats-pre-employee-record:view_all_right_to_work_verifications / ats-pre-employee-record:manage_all_right_to_work_verifications

9. Roles, RACI, and responsibilities (derived)

Baseline roles, the permission hierarchy, and RACI realization are DERIVED from this scope’s entity-type write tiers + process_raci; none of it is stored in the catalog (the deployer provisions it from this blueprint).

9.1 ATS-PRE-EMPLOYEE-RECORD

Baseline roles:

rolebaseline grant
ats-pre-employee-record_viewerats-pre-employee-record:read
ats-pre-employee-record_managerats-pre-employee-record:manage

Permission hierarchy:

permissionincludes
ats-pre-employee-record:adminats-pre-employee-record:manage
ats-pre-employee-record:manageats-pre-employee-record:read
ats-pre-employee-record:adminats-pre-employee-record:hire_candidate
ats-pre-employee-record:adminats-pre-employee-record:flag_do_not_hire
ats-pre-employee-record:adminats-pre-employee-record:approve_offer
ats-pre-employee-record:adminats-pre-employee-record:rescind_offer
ats-pre-employee-record:adminats-pre-employee-record:activate_pre_employee
ats-pre-employee-record:adminats-pre-employee-record:verify_right_to_work
ats-pre-employee-record:adminats-pre-employee-record:view_all_pre-employees
ats-pre-employee-record:adminats-pre-employee-record:manage_all_pre-employees
ats-pre-employee-record:adminats-pre-employee-record:view_all_candidates
ats-pre-employee-record:adminats-pre-employee-record:manage_all_candidates
ats-pre-employee-record:adminats-pre-employee-record:view_all_offers
ats-pre-employee-record:adminats-pre-employee-record:manage_all_offers
ats-pre-employee-record:adminats-pre-employee-record:view_all_right_to_work_verifications
ats-pre-employee-record:adminats-pre-employee-record:manage_all_right_to_work_verifications

Processes wired:

process_keyprocess_namePCF codePCF IDleveldescription
hire_candidateHire candidate7.2.4.3104654Wrapping up the process for hiring candidates. Agree to all hiring terms and conditions. Have the candidate accept and sign the job offer.
draw_up_make_offerDraw up and make offer7.2.4.1104634Compiling job-related information for the selected candidates in order to make up a job. Include information about the job description, reporting relationship, salary, bonus potential, benefits, and vacation allotment.

RACI realization:

actorkindraciprocess_keyrealization
RECRUITING-RECRUITERpersonaresponsiblehire_candidategrant gates [ats-pre-employee-record:hire_candidate] + the gated entities’ write tier
HIRING-MANAGERpersonaaccountablehire_candidateapproval gate
LEGAL-COMPLIANCE-SPECIALISTpersonainformedhire_candidatenotification side effect (trigger_event / webhook_receiver)
RECRUITING-RECRUITERpersonaresponsibledraw_up_make_offergrant gates [ats-pre-employee-record:approve_offer] + the gated entities’ write tier
HIRING-MANAGERpersonaaccountabledraw_up_make_offerapproval gate
RECRUITING-MANAGERpersonaconsulteddraw_up_make_offeradvisory read grant

9.2 Functional ownership and default grants

responsibilitybusiness functiondefault roledefault tier
ownerRecruitingadmin:admin
contributorHuman Resourcesmanage:manage
contributorLegalmanage:manage
consumerFinanceread:read