# Data Dictionary

All monetary values are in **Danish kroner (DKK)** unless otherwise stated. All timestamps are ISO 8601 in UTC (`+00:00`).

---

## `hunts.csv` — session-level records

| Column                     | Type      | Description |
|----------------------------|-----------|-------------|
| `hunt_number`              | integer   | Unique sequential identifier for the bonus hunt session. Primary key. Join key for `bonus_openings.csv`. |
| `hunt_name`                | text      | Human-readable session title (as displayed on stream, may include event branding). |
| `casino_name`              | text      | Casino operator on which the hunt was performed. Normalised on ingest. |
| `hunt_status`              | text      | `completed` = fully opened and settled; `active` = still in progress at export time. |
| `total_slots`              | integer   | Number of slots queued for the session. |
| `opened_slots`             | integer   | Number of slots for which bonus opening data was recorded. |
| `start_balance`            | numeric   | Bankroll allocated to the hunt (DKK). |
| `end_balance`              | numeric   | Bankroll after all bonuses opened (DKK). |
| `average_x`                | numeric   | Session mean multiplier (win ÷ bet), computed by the source system. |
| `currency`                 | text      | Bankroll currency (typically `DKK`). |
| `completed_at`             | timestamp | Session completion timestamp (UTC). |
| `youtube_video_id`         | text      | YouTube ID of the archival VOD (when a full recording exists). |
| `youtube_video_title`      | text      | Title of the linked YouTube VOD. |
| `youtube_uploaded_at`      | timestamp | Upload timestamp of the YouTube VOD (UTC). |
| `youtube_duration_seconds` | integer   | Duration of the linked VOD in seconds. |
| `twitch_vod_id`            | text      | Twitch VOD identifier for the live broadcast (when preserved). |
| `vod_date`                 | text      | Date of the original live broadcast (as recorded upstream). |
| `created_at`               | timestamp | Row creation timestamp in source database (UTC). |

---

## `bonus_openings.csv` — observation-level records

Each row is one **bonus feature opening** during a session. Only rows with a positive stake and recorded payout are included.

| Column                | Type      | Description |
|-----------------------|-----------|-------------|
| `hunt_number`         | integer   | Foreign key → `hunts.csv:hunt_number`. |
| `casino_name`         | text      | Casino operator (denormalised for standalone use). |
| `slot_name`           | text      | Slot title as reported by the operator. |
| `provider`            | text      | Game provider / studio (e.g. `Pragmatic Play`, `Hacksaw Gaming`, `Nolimit City`). |
| `provider_slot_id`    | text      | Provider-side game identifier when available. |
| `bet_dkk`             | numeric   | Stake per bonus (DKK). |
| `win_dkk`             | numeric   | Payout returned by the bonus round (DKK). |
| `multiplier_x`        | numeric   | `win_dkk ÷ bet_dkk`, rounded to 4 decimal places. This is the primary outcome variable. |
| `presenter_note`      | text      | Free-text annotation entered by the on-stream presenter (may include short codes such as `P`, `K`; not standardised). |
| `hunt_status`         | text      | Status of the parent session (see `hunts.csv`). |
| `youtube_video_id`    | text      | Convenience copy of the parent session's YouTube VOD ID. |
| `youtube_uploaded_at` | timestamp | Convenience copy of parent session's VOD upload time. |
| `completed_at`        | timestamp | Convenience copy of parent session's completion time. |

## Notes

- Bonus openings with `bet_dkk = 0` or missing win data are excluded from `bonus_openings.csv` to keep the multiplier well-defined.
- Slot and provider labels are as originally captured; minor spelling variants may exist (e.g. `"pray for six"` vs. `"Pray For Six"`). No aggressive normalisation has been applied to preserve source fidelity.
- Sessions marked `active` (`hunt_status`) are ongoing at export time and their aggregate statistics may change if re-exported later.
