Recruitment & Applications

Finals Management includes an enterprise recruitment portal supporting two operational workflows: In-Game Questionnaire Kiosk or Google Forms Cloud API Synchronization.


🔄 Dual Application System Overview

Configure the active recruitment mode globally or per-job in config.lua:

Lua
Config.Application = {
    enabled = true,
    mode = 'google_forms', -- 'in_game' | 'google_forms'
    filingRetentionDays = 7, -- Applications older than 7 days are automatically purged
    filingRetentionCheckMinutes = 60,
}
FeatureIn-Game Kiosk Mode (in_game)Google Forms Mode (google_forms)
Application LocationPhysical kiosk ped at department HQOnline Google Form in player's web browser
Applicant InterfaceCustom paginated NUI questionnaire dialogOfficial responsive Google Forms web UI
Question EditingIn-Game tablet builder (Add/edit questions, locations)Standard Google Forms drag-and-drop editor
Candidate SyncInstant local MySQL insertionReal-time automated Google Forms API OAuth2 sync
Candidate DossiersFull review, schedule interview, accept/declineFull review, schedule interview, accept/decline
Setup GuideWorks instantly out of the boxRequires service_account.json (Full Setup Guide)

🌐 Google Forms Cloud Integration

For high-volume public servers, whitelist communities, or complex multi-page application forms, Google Forms Mode synchronizes civilian form submissions directly into in-game candidate dossiers via the Google Forms API.

[!TIP] 👉 Ready to configure Google Forms? Read our step-by-step walkthrough in the Google Forms Setup Guide to generate your service_account.json and link your department forms in under 5 minutes.


🏢 In-Game Kiosk System (in_game)

In in_game mode, applicants interact directly with a physical recruitment ped located at the department headquarters:

Lua
Config.Application.jobs = {
    police = {
        label = 'Los Santos Police Department',
        defaultInterviewLocation = 'Mission Row PD — Interview Room 2',
        defaultQuestions = {
            { id = 'exp', label = 'Do you have prior law enforcement experience?', type = 'text', required = true },
            { id = 'prev_rank', label = 'Previous agency and highest rank held:', type = 'text', required = false },
            { id = 'reason', label = 'Why do you wish to join the LSPD?', type = 'text', required = true },
            { id = 'availability', label = 'Weekly availability (hours/days):', type = 'text', required = true },
        },
        ped = {
            model = 's_f_y_cop_01',
            coords = { x = 440.6752, y = -978.9439, z = 30.6896, w = 176.7222 },
            scenario = 'WORLD_HUMAN_GUARD_STAND',
        },
    },
}

In-Game Question Builder:

Supervisors with boss permissions can manage the recruitment process directly inside the /management tablet:

  1. Open the Recruitment tab.
  2. Toggle recruitment Open or Closed (desk NPC updates prompt in real-time).
  3. Add, edit, or remove custom questions.
  4. Set required vs. optional fields.
  5. Update the default interview room location.
  6. Inspect incoming candidate submissions, schedule in-game interviews with automatic GPS waypoints, or decline filings.