Semantius Logo

Background Checks

1. Overview

Pre-employment background-check orchestration with adverse-action workflow. Coordinates external vendor handoffs and gates offer-to-firm conversion on clearance. Requires an external send_email tool for FCRA adverse-action notices.

2. Entity summary

NameDescription
Background ChecksExternal verification result for a candidate (criminal, employment history, education, credit, identity). Status and findings typically returned by an external screening provider.
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.
OffersFormal employment offer extended to a candidate. Carries compensation components, start date, terms, approval chain, and status (draft / approved / sent / accepted / declined / rescinded).
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;
  background_checks["Background Checks"]
  candidates["Candidates"]
  job_offers["Offers"]
  users["Users"]
  job_offers -->|"is contingent on"| background_checks
  job_offers -->|"has approver"| users
  class background_checks master;
  class candidates embedded_master;
  class job_offers embedded_master;
  class users platform_builtin;

3. Entities catalog

#data_objectrolemastered innecessitypattern flagsnotes
1background_checks (Background Checks)master-requiredpersonal_content, submit_lock-
2candidates (Candidates)embedded_masterats-candidate-crmrequiredpersonal_content-
3job_offers (Offers)embedded_masterats-offersrequiredpersonal_content, single_approver-

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
job_offersis contingent onbackground_checksone_to_manyreferencerequiredsource-

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

fromverbtocardinalitynecessityowner_sidenotes
job_offershas approverusersmany_to_manyrequiredsource-

5.3 Cross-scope edges

fromverbtocardinalitynecessitynotes
skill_profilesfeedscandidatesone_to_manyoptional-
candidatessubmitsjob_applicationsone_to_manyrequired-
candidate_referralsintroducescandidatesone_to_manyrequired-
recruitment_sourcesattributescandidatesone_to_manyrequired-
recruitment_agenciessourcescandidatesone_to_manyrequired-
recruitment_eventsattractscandidatesone_to_manyrequired-
talent_poolsgroupscandidatesmany_to_manyrequired-
job_applicationsresults injob_offersone_to_manyrequired-
job_offersspawnsonboarding_journeysone_to_onerequired-
job_offerstriggersbenefit_enrollmentsone_to_onerequired-
job_offersseedscompensation_statementsone_to_onerequired-
candidatesbecomesemployeesone_to_onerequired-
job_offersspawns pre-employee recordpre_employeesone_to_onerequired-
candidatesbecomes pre-employeepre_employeesone_to_onerequired-

6. Cross-domain context

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

data_objectother module / domainrolenecessitynotes
background_checksHRSD-CASE-MGMT (HR Case Management) - HRSDconsumeroptional-
background_checksPAYROLL-RUN (Payroll Run Execution) - PAYROLLconsumerrequired-

6.2 Outbound handoffs (events this scope publishes)

source moduletarget domaintarget moduletrigger_eventpayloadintegrationfrictiondescription
ATS-BACKGROUND-CHECKSHRSDHRSD-CASE-MGMTbackground_check.flaggedbackground_checksmanual_handoffhighAdverse-action workflow requires HR-legal review; manual escalation common. Friction shape: alert/escalation without feedback loop.
ATS-BACKGROUND-CHECKSPAYROLLPAYROLL-RUNbackground_check.clearedbackground_checksapi_callmediumCleared background check unblocks final pay setup at start date; PAYROLL setup proceeds.
ATS-BACKGROUND-CHECKSATSATS-OFFERSbackground_check.flaggedjob_offerslifecycle_progressionmedium-

6.3 Inbound handoffs (events this scope reacts to)

target modulesource domainsource moduletrigger_eventpayloadintegrationfrictiondescription
ATS-BACKGROUND-CHECKSATSATS-OFFERSjob_offer.rescindedbackground_checkslifecycle_progressionmedium-
ATS-BACKGROUND-CHECKSATSATS-OFFERSjob_offer.acceptedbackground_checkslifecycle_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)-

7. Lifecycle states (per touched entity)

background_checks (Background Check)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1requested---Check ordered from the provider for a candidate.
2in_progress----Provider is running verification (criminal, employment, education, identity).
3completed_clear---Provider returned a clear result; no adverse findings.
4completed_consider-ats-background-checks:completed_consider_background_checkProvider returned adverse findings; gated review required before adjudication.
5cancelled---Check withdrawn before the provider returned a result.

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

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-offers: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-offers:rescind_offerOffer withdrawn by the employer after being sent; gated action.

8. Permissions and business rules (derived)

8.1 Permissions

permissiontierdescriptionincluded in :admin?
ats-background-checks:readbaseline-readRead access to every entity in the module
ats-background-checks:managebaseline-manageEdit operational records
ats-background-checks:adminbaseline-adminEdit reference data and inherit every workflow gate below-
ats-background-checks:completed_consider_background_checkworkflow-gate (lifecycle)Transition background_checks into state completed_consider
ats-background-checks:view_all_background_checksoverride (personal_content)View all background_checks rows beyond row-scope
ats-background-checks:manage_all_background_checksoverride (personal_content)Manage all background_checks rows beyond row-scope
ats-background-checks:submit_background_checkoverride (submit_lock)Submit and lock a background_checks row (post-submit edits gated)

8.2 Business rules

rule_namedata_objectsource flagintent
background_check_edit_scopebackground_checkshas_personal_contentRow-scope by default; override via ats-background-checks:view_all_background_checks / ats-background-checks:manage_all_background_checks
submit_restricted_to_background_check_ownerbackground_checkshas_submit_lockOnly the row’s authoring user can submit; post-submit the row is read-only except via ats-background-checks:manage_all_background_checks