Applicant Tracking Module (ATM)#

Overview#

The Applicant Tracking Module (ATM) is Tafkar’s built-in applicant tracking system. It allows projects to manage vacancies and applications directly inside the CMS, without requiring an external ATS integration.

ATM is useful when a project does not use a third-party ATS (such as Carerix, Bullhorn or Greenhouse) and wants to handle the full recruitment workflow — vacancy creation, application intake, status tracking and confirmation e-mails — within Tafkar itself.

Enabling the Module#

ATM is controlled by a feature flag in project settings:

{
  "atm-module-enabled": true
}

Backend reference: src/FloHam/Cms/Settings/FeatureFlags.hs — the atmModuleEnabled lens (defaults to False).

ATS Type#

Every vacancy carries an Ats type that indicates where it is managed. When ATM is active and a vacancy is created through the CMS, its ATS type is set to HamiltonCMS:

& ats .~ Ats.HamiltonCMS

The HamiltonCMS variant is defined in src/FloHam/Cms/Types/Ats.hs alongside the external ATS variants (Carerix, Bullhorn, Greenhouse, etc.).

A vacancy with ats == HamiltonCMS is considered internally managed — it was created in the CMS and its applications are handled by ATM rather than forwarded to an external system.

Key Features#

  • Vacancy creation in CMS — CMS users can create and edit vacancies without an external ATS. New vacancies are automatically tagged with ats = HamiltonCMS.

  • Application management — Incoming applications are stored locally. CMS users can view, filter and update application statuses.

  • Activity tracking — Every status change, comment and assignment is logged as an activity event, visible on the vacancy Activity tab.

  • Confirmation e-mails — The system can send confirmation and invite mails to applicants and assignees (see sendInviteMail, sendNewApplicationMail and sendNewAssigneeMail in CmsApplication).

  • User / group permissions — Access to applications is governed by the CmsApplicationAdmin permission. The ATM menu items and permission options are only shown when atmModuleEnabled is True.

CMS User Interface#

When atmModuleEnabled is enabled and a vacancy has ats == HamiltonCMS, the CMS vacancy page (cms/src/Page/Vacancy.elm) shows additional tabs:

  • Activity — Displays a chronological log of events (status changes, comments, assignment changes) with filtering support.

  • Applications — Lists all applications for the vacancy with status management, search and bulk operations.

The vacancy overview page (cms/src/Page/VacancyOverview.elm) also adapts its UI based on ATM status.

The CMS sidebar menu (cms/src/Component/Menu.elm) conditionally shows ATM- related menu items and adjusts user/group management routes depending on the atmModuleEnabled flag.

ATM Migration#

The Migration.Atm module (src/Migration/Atm.hs) provides helpers to enable ATM for an existing project:

  • enable — Activates the feature flag for a project.

  • migrate — Performs data migration (e.g. setting existing vacancies to HamiltonCMS, updating master-data origins).

Architecture Overview#

Area

Source file

ATS type definition

src/FloHam/Cms/Types/Ats.hs (HamiltonCMS variant)

Feature flag

src/FloHam/Cms/Settings/FeatureFlags.hs (atmModuleEnabled)

Application handling

src/FloHam/Cms/Model/Extra/CmsApplication.hs

Vacancy creation

src/Handler/Api/VacancyCollection.hs

Vacancy management

src/Handler/Api/Vacancy.hs, src/Handler/Api/VacancyStatus.hs

ATM migrations

src/Migration/Atm.hs

CMS vacancy page

cms/src/Page/Vacancy.elm (Activity + Applications tabs)

CMS vacancy overview

cms/src/Page/VacancyOverview.elm

CMS menu

cms/src/Component/Menu.elm