> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aps-store.com/llms.txt
> Use this file to discover all available pages before exploring further.

# jobcenter.lua

Job Center jobs and application questions, paychecks. More in the [Job Center](https://docs.aps-store.com/assets/aps_cityhall/guides/job-center.md) and [Paychecks](https://docs.aps-store.com/assets/aps_cityhall/guides/paychecks.md) guides.

> [!NOTE]
>
> Runs on: **shared**. This file stays editable when the resource is escrow-protected. Restart the resource after editing.

***

## Full View

Preview File Updated: 3.7.0 - 02.11.2026

```lua config/jobcenter.lua lines expandable theme={null}
Config = Config or {}

-- ═════════════════════════════════════════════
--  JOB CENTER  (Config.Features.jobCenter)
--  Players pick a job at City Hall, or apply for one. Applications are
--  reviewed by the job's bosses in the Job Center app on the PC.
-- ═════════════════════════════════════════════

-- ─────────────────────────────────────────────
--  Jobs (same format as vms_cityhall's Config.JobsList)
--    name            framework job name (must exist in your jobs)
--    grade           grade given when the player joins / is accepted
--    label, type     shown in the list; type groups the jobs
--    icon            lucide icon name: Shield, HeartPulse, Wrench, Car,
--                    Store, Truck, Briefcase, Leaf, Building2 (default Briefcase)
--    address         optional, shown under the job
--    requiredResume  true = players apply and a boss decides,
--                    false = players join straight away
-- ─────────────────────────────────────────────
Config.JobCenter = {
    jobs = {
        { name = 'unemployed', label = 'Unemployed',  type = 'General',         grade = 0, requiredResume = false, icon = 'Briefcase' },
        { name = 'taxi',       label = 'Taxi Driver', type = 'Transport',       grade = 0, requiredResume = false, icon = 'Car' },
        { name = 'police',     label = 'LSPD',        type = 'Law Enforcement', grade = 0, requiredResume = true,  icon = 'Shield',     address = 'Mission Row' },
        { name = 'ambulance',  label = 'EMS',         type = 'Medical',         grade = 0, requiredResume = true,  icon = 'HeartPulse', address = 'Pillbox Hill' },
        { name = 'mechanic',   label = 'Mechanic',    type = 'Services',        grade = 0, requiredResume = true,  icon = 'Wrench' },
    },

    -- Questions on the application form. 'default' is used for every job
    -- without its own list. maxLength = characters per answer.
    questions = {
        default = {
            { label = 'Why do you want this job?', maxLength = 600 },
            { label = 'Relevant experience',       maxLength = 600 },
            { label = 'When are you available?',   maxLength = 200 },
        },
        -- police = { { label = 'Do you have a clean record?', maxLength = 300 }, … },
    },

    -- Who reviews applications: the framework's boss grade, or from this grade
    -- up (vms_bossmenu's 'resumesAccess' permission when it runs).
    bossGrades = {
        -- police = 3,
    },

    cooldownHours = 24,   -- after a rejection, wait this long before applying again
    historyDays   = 30,   -- reviewed applications shown to bosses
}

-- ─────────────────────────────────────────────
--  Paychecks (Config.Features.paychecks)
--  Salaries wait at City Hall until the player collects them in
--  Finances → Paychecks. Needs a small edit in your framework's paycheck
--  code (docs → Paychecks).
--    account   where collected salary goes ('bank' | 'cash')
-- ─────────────────────────────────────────────
Config.Paychecks = {
    account = 'bank',
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.