# curated.pos_jobs

## Purpose

`curated.pos_jobs` is the shared job (workforce role) dimension in the warehouse.

It should answer the question: `what workforce roles exist in the restaurant, what are their characteristics, and how are they classified?`

## Why this table matters

- gives one row per job snapshot
- provides workforce role classification with boolean flags: `is_bartender`, `is_delivery_driver`, `is_delivery_dispatcher`, `is_hostess`
- keeps job identity context such as `name`, `job_unique_id`, and `export_code`
- joins to `curated.labor_shifts` via `job_id` for workforce role attribution
- creates a stable contract for future cross-source workforce role analyses

## Grain

One row per job snapshot.

## Column groups

- Business properties describe the job: identity, name, role classification flags, and location type.
- Technical and ETL properties describe warehouse lineage, surrogate keys, source reconciliation, tenant scoping, and ingestion metadata.

## Business properties

| Column | Type | Nullable | Business Meaning | Notes |
|---|---|---|---|---|
| `job_id` | `BIGINT` | No | Source-native job identifier. | Preferred identifier for downstream joins. |
| `name` | `VARCHAR(1024)` | Yes | Human-readable job name. | |
| `job_unique_id` | `VARCHAR(256)` | Yes | Source-system unique job identifier. | |
| `export_code` | `VARCHAR(256)` | Yes | External payroll or reporting export code. | |
| `is_bartender` | `BOOLEAN` | Yes | Whether the job represents a bartender role. | |
| `is_delivery_driver` | `BOOLEAN` | Yes | Whether the job represents a delivery driver role. | |
| `is_delivery_dispatcher` | `BOOLEAN` | Yes | Whether the job represents a delivery dispatcher role. | |
| `is_hostess` | `BOOLEAN` | Yes | Whether the job represents a hostess role. | |
| `training` | `BOOLEAN` | Yes | Whether the job is designated as a training role. | |
| `location_type` | `VARCHAR(128)` | Yes | Location type classification for the job. | |
| `snapshot_date` | `DATE` | Yes | Date of the job snapshot used for ETL partitioning. | |
| `is_active` | `BOOLEAN` | Yes | Whether the job is currently active. | Currently deferred to NULL in the Brink mapping. |
| `currency_code` | `VARCHAR(10)` | Yes | Currency of monetary values. | Required when curated data spans multiple currency contexts. |

## Technical and ETL properties

| Column | Type | Nullable | Technical Meaning | Notes |
|---|---|---|---|---|
| `source_system` | `VARCHAR(100)` | Yes | Canonical integration name used for lineage across source platforms. | Identifies which operational platform produced the record. |
| `source_job_id` | `VARCHAR(199)` | Yes | Original source identifier kept for reconciliation and drill-through. | Preserves the native source key. |
| `job_key` | `BIGINT` | Yes | Warehouse-generated stable surrogate key for the job entity. | Surrogate warehouse key for dimensional joins. |
| `tenant_key` | `BIGINT` | Yes | Warehouse surrogate key for tenant or brand scope. | |
| `tenant_name` | `VARCHAR(255)` | Yes | Tenant or brand identifier injected by the ETL context. | Human-readable tenant or brand lineage value. |
| `effective_from_utc` | `TIMESTAMP` | Yes | SCD2 effective-from timestamp. | Currently deferred to NULL. |
| `effective_to_utc` | `TIMESTAMP` | Yes | SCD2 effective-to timestamp. | Currently deferred to NULL. |
| `is_current` | `BOOLEAN` | Yes | SCD2 current-row flag. | Currently deferred to NULL. |
| `_etl_batch_id` | `VARCHAR(256)` | Yes | ETL batch lineage identifier. | |
| `_etl_source_type` | `VARCHAR(100)` | Yes | Source adapter type used by ETL. | |
| `_etl_ingested_at` | `TIMESTAMP` | No | Warehouse ingestion timestamp for the curated row. | Required ingestion audit timestamp. |
