Semantius Logo

Employee Referrals

1. Overview

Employee-driven candidate sourcing with referral-bonus tracking (candidate_referrals). Embedded-masters candidates. Cross-domain handoffs to PAYROLL (bonus payout) and EMP-EXP (engagement signal).

2. Entity summary

Namedata_objectDescription
Referral Campaignsreferral_campaignsTime-bounded promotions offering bonus referral rewards, scoping an override to the standard referral payout rules.
Referral Payoutsreferral_payoutsIndividual referral payouts triggered when a referred candidate is hired and meets tenure conditions, moving from pending to approved to paid.
Referral Rewardsreferral_rewardsBounty rules defining the payout amount and conditions for a successful referral, such as a fixed sum paid after the new hire’s start.
Referralscandidate_referralsEmployee-submitted candidate suggestions linked to a requisition, tracking the referring employee, candidate, status, and any payable bonus.
CandidatescandidatesPeople known to the recruiting organization, with or without an active application, carrying contact details, resume, tags, consent, and source.
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;
  candidate_referrals["Referrals"]
  candidates["Candidates"]
  referral_rewards["Referral Rewards"]
  referral_payouts["Referral Payouts"]
  referral_campaigns["Referral Campaigns"]
  users["Users"]
  candidate_referrals -->|"earns"| referral_payouts
  referral_rewards -->|"governs"| referral_payouts
  referral_campaigns -->|"overrides"| referral_rewards
  candidate_referrals -->|"introduces"| candidates
  candidates -->|"has owning recruiter"| users
  referral_payouts -->|"has approver"| users
  referral_campaigns -->|"has owner"| users
  candidate_referrals -->|"has referring employee"| users
  class candidate_referrals master;
  class candidates embedded_master;
  class referral_rewards master;
  class referral_payouts master;
  class referral_campaigns master;
  class users platform_builtin;
  style referral_campaigns stroke-dasharray:5 5;

3. Entities catalog

#data_objectcanonical codesingularpluralrolemastered inmastered labelnecessitypersonal_contententity_typewrite tiernotes
1referral_campaignsreferral_campaignsReferral CampaignReferral Campaignsmaster--optional-operational_workflow:manage-
2referral_payoutsreferral_payoutsReferral PayoutReferral Payoutsmaster--required-operational_workflow:manage-
3referral_rewardsreferral_rewardsReferral RewardReferral Rewardsmaster--required-catalog:admin-
4candidate_referralscandidate_referralsReferralReferralsmaster--required-operational_workflow:manage-
5candidatescandidatesCandidateCandidatesembedded_masterats-candidate-crmCandidate CRMrequiredyesoperational_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
candidate_referralsearnsreferral_payoutsone_to_onereferenceoptionalsourceclearreference-
referral_rewardsgovernsreferral_payoutsone_to_manyreferencerequiredsourcerestrictreference-
referral_campaignsoverridesreferral_rewardsone_to_manyreferenceoptionalsourceclearreference-
candidate_referralsintroducescandidatesone_to_manyreferencerequiredtargetrestrictreference-

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

fromverbtocardinalitynecessityowner_sidedelete_modefk_formatnotes
candidateshas owning recruiterusersmany_to_manyoptionalsourceclearreference-
referral_payoutshas approverusersmany_to_manyoptionalsourceclearreference-
referral_campaignshas ownerusersmany_to_manyoptionalsourceclearreference-
candidate_referralshas referring employeeusersmany_to_manyrequiredsourcerestrictreference-

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.

(none: no outbound cross-scope edges from this scope’s masters or contributors)

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
candidatesverified_viaright_to_work_verificationsone_to_manyoptionalnonen/a-
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-
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-
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-
candidatesbecomesemployeesone_to_onerequirednone (required-if-present)n/a-
candidatesbecomes pre-employeepre_employeesone_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
candidate_referralsPAYROLL-EARNINGS-DEDUCTIONS (Earnings, Deductions and Garnishments) - PAYROLLconsumerrequired-

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-REFERRALSPAYROLLPAYROLL-EARNINGS-DEDUCTIONScandidate_referral.bonus_earned(state_change)candidate_referralsapi_callmediumReferral-bonus eligibility milestone reached; PAYROLL pays bonus via off-cycle or next regular run.
ATS-REFERRALSATSATS-CANDIDATE-CRMcandidate_referral.submitted(lifecycle)candidateslifecycle_progressionlow-
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.

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

data_objectrole herenecessitycanonical owner(s)slice notes
candidatesembedded_masterrequiredATS-CANDIDATE-CRM (ATS)-

7. Lifecycle states

candidate_referrals (Referral)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1submitted---Employee submitted a referral candidate against a requisition.
2under_review----Recruiter is evaluating the referred candidate.
3converted---Referral became a job application in the ATS pipeline.
4bonus_payable--ats-referrals:pay_referral_bonusHire confirmed; gated step to approve the referral bonus payout.
5bonus_paid---Referral bonus has been issued to the referring employee.
6rejected---Referral not pursued.

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

referral_campaigns (Referral Campaign)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1draft---Campaign being scoped.
2active----Campaign live; referrals submitted during window qualify for override reward.
3ended---Campaign window closed.

referral_payouts (Referral Payout)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1pending---Referral hire confirmed; tenure clock running.
2approved--ats-referrals:approve_referral_payoutTenure condition met; payout approved by HR/Finance.
3paid---Payout disbursed to referrer.
4clawed_back-ats-referrals:clawback_referral_payoutReferred employee left before tenure clause expired; payout reversed.
5forfeited---Conditions never met (referred candidate not hired, did not start, voided).

8. Permissions and business rules (derived)

8.1 Permissions

permissiontierdescriptionincluded in :admin?
ats-referrals:readbaseline-readRead access to every entity in the module
ats-referrals:managebaseline-manageEdit operational records
ats-referrals:adminbaseline-adminEdit reference data and inherit every workflow gate below-
ats-referrals:hire_candidateworkflow-gate (lifecycle)Transition candidates into state hired
ats-referrals:flag_do_not_hireworkflow-gate (lifecycle)Transition candidates into state do_not_hire
ats-referrals:pay_referral_bonusworkflow-gate (lifecycle)Transition candidate_referrals into state bonus_payable
ats-referrals:approve_referral_payoutworkflow-gate (lifecycle)Transition referral_payouts into state approved
ats-referrals:clawback_referral_payoutworkflow-gate (lifecycle)Transition referral_payouts into state clawed_back
ats-referrals:view_all_candidatesoverride (personal_content)View all candidates rows beyond row-scope
ats-referrals: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-referrals:view_all_candidates / ats-referrals:manage_all_candidates

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-REFERRALS

Baseline roles:

rolebaseline grant
ats-referrals_viewerats-referrals:read
ats-referrals_managerats-referrals:manage
ats-referrals_adminats-referrals:admin

Permission hierarchy:

permissionincludes
ats-referrals:adminats-referrals:manage
ats-referrals:manageats-referrals:read
ats-referrals:adminats-referrals:hire_candidate
ats-referrals:adminats-referrals:flag_do_not_hire
ats-referrals:adminats-referrals:pay_referral_bonus
ats-referrals:adminats-referrals:approve_referral_payout
ats-referrals:adminats-referrals:clawback_referral_payout
ats-referrals:adminats-referrals:view_all_candidates
ats-referrals:adminats-referrals:manage_all_candidates

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.
manage_employee_referralManage employee referral programs7.2.2.5170474Creating and managing a recruiting strategy where current employees are rewarded for referring qualified candidates for employment.

RACI realization:

actorkindraciprocess_keyrealization
RECRUITING-RECRUITERpersonaresponsiblehire_candidategrant gates [ats-referrals:hire_candidate] + the gated entities’ write tier
HIRING-MANAGERpersonaaccountablehire_candidateapproval gate
LEGAL-COMPLIANCE-SPECIALISTpersonainformedhire_candidatenotification side effect (trigger_event / webhook_receiver)
RECRUITING-RECRUITERpersonaresponsiblemanage_employee_referralgrant gates [ats-referrals:pay_referral_bonus] + the gated entities’ write tier
RECRUITING-MANAGERpersonaaccountablemanage_employee_referralapproval gate

9.2 Functional ownership and default grants

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