{
    "ok": true,
    "data": {
        "project": {
            "id": "2",
            "uuid": "58465828-1d79-4ec8-9bad-031932820270",
            "release_month": "2026-06",
            "working_title": "Codex QA Workflow Test 20260608",
            "final_title": null,
            "slug": "2026-06-codex-qa-workflow-test-20260608",
            "status": "",
            "level_min": "2",
            "level_max": "4",
            "party_min": "3",
            "party_max": "5",
            "tone": "QA test, whimsical fantasy mystery",
            "theme_notes": "Created by Codex during live end-to-end workflow QA. Can be deleted after testing.",
            "banned_concepts": null,
            "difficulty_target": "Default / Moderate",
            "selected_style": null,
            "selected_quest": null,
            "selected_antagonist": null,
            "tagline": null,
            "created_by_admin_id": null,
            "created_at": "2026-06-08 03:44:43",
            "updated_at": "2026-06-08 03:49:21",
            "archived_at": null
        },
        "layout": {
            "key": "table_ready_classic",
            "name": "Premium Raster Packet",
            "target_pages": 8
        },
        "layout_key": "table_ready_classic",
        "template_pages": [
            {
                "page_number": 1,
                "key": "setting_opening",
                "label": "Setting and Read-Aloud",
                "role": "dm_packet_text",
                "plate_status": "ready",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-01-setting_opening-20260609-042054.png",
                "generated_at": "2026-06-09T04:24:33+00:00",
                "reference_count": 10,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-1-hero_art",
                        "slot_key": "hero_art",
                        "label": "Setting Art",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "title": "Cover",
                        "fit": "cover",
                        "x": 65,
                        "y": 8,
                        "w": 29,
                        "h": 26,
                        "source": "vision"
                    },
                    {
                        "id": "page-1-hero_art",
                        "slot_key": "hero_art",
                        "label": "Setting Art",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "title": "Cover",
                        "fit": "cover",
                        "x": 6,
                        "y": 78,
                        "w": 17,
                        "h": 18,
                        "source": "vision"
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": {
                    "version": "wo92-vision-layout-v1",
                    "generated_at": "2026-06-10T07:41:53+00:00",
                    "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-01-setting_opening-20260609-042054.png",
                    "model": "gpt-5.4-mini",
                    "usage": {
                        "input_tokens": 3484,
                        "input_tokens_details": {
                            "cached_tokens": 0
                        },
                        "output_tokens": 3073,
                        "output_tokens_details": {
                            "reasoning_tokens": 0
                        },
                        "total_tokens": 6557
                    },
                    "regions": [
                        {
                            "id": "r5",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "THE LEDGER THAT LIES",
                            "x": 25,
                            "y": 31.818,
                            "w": 9.342,
                            "h": 2.163,
                            "font_size": 0.72,
                            "font_weight": "900",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r6",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "ADVENTURE OVERVIEW",
                            "x": 4,
                            "y": 24.675,
                            "w": 8.506,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r8",
                            "source": "ocr",
                            "kind": "label",
                            "text": "TITLE RECOMMENDATION",
                            "x": 15,
                            "y": 38.961,
                            "w": 9.342,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r9",
                            "source": "ocr",
                            "kind": "body",
                            "text": "The Ledger That Lies",
                            "x": 15,
                            "y": 41.558,
                            "w": 9.76,
                            "h": 1.469,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r10",
                            "source": "ocr",
                            "kind": "label",
                            "text": "ONE-SENTENCE PITCH",
                            "x": 15,
                            "y": 44.156,
                            "w": 8.506,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r12",
                            "source": "ocr",
                            "kind": "label",
                            "text": "RECOMMENDED LEVEL & PARTY SIZE",
                            "x": 15,
                            "y": 54.545,
                            "w": 13.104,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r13",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Levels 2\u20134; 3\u20135 adventurers",
                            "x": 15,
                            "y": 57.143,
                            "w": 12.686,
                            "h": 1.469,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r14",
                            "source": "ocr",
                            "kind": "label",
                            "text": "EXPECTED RUNTIME",
                            "x": 15,
                            "y": 59.74,
                            "w": 7.67,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r15",
                            "source": "ocr",
                            "kind": "body",
                            "text": "3\u20134 hours",
                            "x": 15,
                            "y": 62.338,
                            "w": 5.162,
                            "h": 1.469,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r16",
                            "source": "ocr",
                            "kind": "label",
                            "text": "CORE FANTASY",
                            "x": 15,
                            "y": 64.935,
                            "w": 6.416,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r17",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Cozy village mystery, whimsical magical mishap, ticking-clock finale",
                            "x": 15,
                            "y": 67.532,
                            "w": 19.374,
                            "h": 2.389,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r18",
                            "source": "ocr",
                            "kind": "label",
                            "text": "SAFETY / TONE NOTE",
                            "x": 15,
                            "y": 70.779,
                            "w": 8.506,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r20",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "STARTING HOOK",
                            "x": 21,
                            "y": 77.922,
                            "w": 6.416,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r24",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "READ-ALOUD OPENING",
                            "x": 58,
                            "y": 24.026,
                            "w": 8.506,
                            "h": 2.163,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r25",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and panic.",
                            "x": 57,
                            "y": 29.221,
                            "w": 21.882,
                            "h": 2.389,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r27",
                            "source": "ocr",
                            "kind": "body",
                            "text": "At the center of the confusion stands the town clerk, holding three books at once like they might explode.",
                            "x": 57,
                            "y": 48.052,
                            "w": 23.972,
                            "h": 2.389,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r28",
                            "source": "ocr",
                            "kind": "body",
                            "text": "\u201cI need sensible heroes,\u201d she says, voice tight, \u201cor at leas\u2026\u201d",
                            "x": 57,
                            "y": 53.247,
                            "w": 18.538,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        },
                        {
                            "id": "r29",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "AT A GLANCE",
                            "x": 60,
                            "y": 57.792,
                            "w": 5.998,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r30",
                            "source": "ocr",
                            "kind": "label",
                            "text": "LEVELS 2\u20134",
                            "x": 65,
                            "y": 64.286,
                            "w": 5.58,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r31",
                            "source": "ocr",
                            "kind": "label",
                            "text": "PLAYERS 3\u20135",
                            "x": 65,
                            "y": 66.883,
                            "w": 5.998,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r32",
                            "source": "ocr",
                            "kind": "label",
                            "text": "PREMIUM",
                            "x": 65,
                            "y": 72.078,
                            "w": 4.326,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r33",
                            "source": "ocr",
                            "kind": "label",
                            "text": "RASTER PACKET",
                            "x": 65,
                            "y": 74.675,
                            "w": 6.416,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r34",
                            "source": "ocr",
                            "kind": "label",
                            "text": "UNDER 10-PAGE",
                            "x": 65,
                            "y": 79.87,
                            "w": 6.416,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r35",
                            "source": "ocr",
                            "kind": "label",
                            "text": "CORE PACKET",
                            "x": 65,
                            "y": 82.468,
                            "w": 5.998,
                            "h": 1.356,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r36",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "WHY IT MATTERS",
                            "x": 58,
                            "y": 86.364,
                            "w": 6.834,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "800",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r37",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Cozy village mystery, whimsical magical mishap, ticking-clock finale.",
                            "x": 60,
                            "y": 89.61,
                            "w": 19.792,
                            "h": 2.597,
                            "font_size": 0.72,
                            "font_weight": "400",
                            "font_style": "italic",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.14
                        }
                    ]
                },
                "ocr_error": "",
                "asset_key": "packet-page-01-setting_opening",
                "queue_status": "",
                "queue_error": "",
                "queue_updated_at": ""
            },
            {
                "page_number": 2,
                "key": "key_cast_conflict",
                "label": "Main NPC and Main Villain",
                "role": "dm_packet_text",
                "plate_status": "ready",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                "generated_at": "2026-06-09T04:51:22+00:00",
                "reference_count": 10,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-2-banner",
                        "slot_key": "banner",
                        "label": "Related Setting Art",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "title": "Primary Location",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 15.455
                    },
                    {
                        "id": "page-2-entities-1",
                        "slot_key": "entities",
                        "label": "Elsbeth Vane",
                        "public_path": "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "title": "Elsbeth Vane",
                        "fit": "cover",
                        "x": 5.8,
                        "y": 41.7,
                        "w": 26.8,
                        "h": 27.9
                    },
                    {
                        "id": "page-2-entities-2",
                        "slot_key": "entities",
                        "label": "Animated Paper Scrap",
                        "public_path": "/assets/generated-art/project_2/monster_images/20260608-083554-animated-paper-scrap-e8ecd0.png",
                        "title": "Animated Paper Scrap",
                        "fit": "cover",
                        "x": 52.7,
                        "y": 41.7,
                        "w": 25.1,
                        "h": 27.9
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": {
                    "version": "wo81-ocr-small-text-v2",
                    "generated_at": "2026-06-10T03:06:19+00:00",
                    "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                    "model": "gpt-5.4-mini",
                    "usage": {
                        "input_tokens": 3047,
                        "input_tokens_details": {
                            "cached_tokens": 0
                        },
                        "output_tokens": 4523,
                        "output_tokens_details": {
                            "reasoning_tokens": 0
                        },
                        "total_tokens": 7570
                    },
                    "regions": [],
                    "invalid_reason": "Suppressed suspicious OCR layer because text regions were clustered at the page bottom."
                },
                "ocr_error": "",
                "asset_key": "packet-page-02-key_cast_conflict",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 04:51:22"
            },
            {
                "page_number": 3,
                "key": "scene_flow_one",
                "label": "Adventure Flow I",
                "role": "flow",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                "generated_at": "2026-06-09T06:29:06+00:00",
                "reference_count": 10,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-3-banner",
                        "slot_key": "banner",
                        "label": "Top Art Banner",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "title": "Primary Location",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 12.909
                    },
                    {
                        "id": "page-3-cards",
                        "slot_key": "cards",
                        "label": "Scenes 1-3",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "title": "Cover",
                        "fit": "cover",
                        "x": 8.235,
                        "y": 25.818,
                        "w": 57.412,
                        "h": 47.455
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": {
                    "version": "wo81-ocr-small-text-v2",
                    "generated_at": "2026-06-10T05:35:22+00:00",
                    "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                    "model": "gpt-5.4-mini",
                    "usage": {
                        "input_tokens": 3047,
                        "input_tokens_details": {
                            "cached_tokens": 0
                        },
                        "output_tokens": 3738,
                        "output_tokens_details": {
                            "reasoning_tokens": 0
                        },
                        "total_tokens": 6785
                    },
                    "regions": [],
                    "invalid_reason": "Suppressed suspicious OCR layer because text regions were clustered at the page bottom."
                },
                "ocr_error": "",
                "asset_key": "packet-page-03-scene_flow_one",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 06:29:06"
            },
            {
                "page_number": 4,
                "key": "scene_flow_two",
                "label": "Adventure Flow II",
                "role": "flow",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-04-scene_flow_two-20260609-094135.png",
                "generated_at": "2026-06-09T09:46:16+00:00",
                "reference_count": 6,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-4-banner",
                        "slot_key": "banner",
                        "label": "Top Art Banner",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082123-key-scene-02b527.png",
                        "title": "Key Scene",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 12.909
                    },
                    {
                        "id": "page-4-cards",
                        "slot_key": "cards",
                        "label": "Scenes 4-6",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082418-secondary-location-9794a9.png",
                        "title": "Secondary Location",
                        "fit": "cover",
                        "x": 8.235,
                        "y": 25.818,
                        "w": 57.412,
                        "h": 47.455
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": [],
                "ocr_error": "",
                "asset_key": "packet-page-04-scene_flow_two",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 09:46:16"
            },
            {
                "page_number": 5,
                "key": "locations",
                "label": "Locations",
                "role": "locations",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-05-locations-20260609-094645.png",
                "generated_at": "2026-06-09T09:51:23+00:00",
                "reference_count": 6,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-5-banner",
                        "slot_key": "banner",
                        "label": "Top Art Banner",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "title": "Primary Location",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 12.909
                    },
                    {
                        "id": "page-5-cards",
                        "slot_key": "cards",
                        "label": "Location Cards",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "title": "Cover",
                        "fit": "cover",
                        "x": 8.235,
                        "y": 25.636,
                        "w": 57.412,
                        "h": 48.364
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": [],
                "ocr_error": "",
                "asset_key": "packet-page-05-locations",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 09:51:23"
            },
            {
                "page_number": 6,
                "key": "clues",
                "label": "Clues and Secrets",
                "role": "clues",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-06-clues-20260609-095415.png",
                "generated_at": "2026-06-09T09:58:34+00:00",
                "reference_count": 6,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-6-banner",
                        "slot_key": "banner",
                        "label": "Top Art Banner",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082418-secondary-location-9794a9.png",
                        "title": "Secondary Location",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 12.909
                    },
                    {
                        "id": "page-6-image",
                        "slot_key": "image",
                        "label": "Clue Art",
                        "public_path": "/assets/generated-art/project_2/setting_images/20260608-082418-secondary-location-9794a9.png",
                        "title": "Secondary Location",
                        "fit": "cover",
                        "x": 38.588,
                        "y": 25.818,
                        "w": 25.412,
                        "h": 19.455
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": [],
                "ocr_error": "",
                "asset_key": "packet-page-06-clues",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 09:58:34"
            },
            {
                "page_number": 7,
                "key": "encounters",
                "label": "Encounters",
                "role": "encounters",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                "generated_at": "2026-06-09T10:14:23+00:00",
                "reference_count": 8,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-7-banner",
                        "slot_key": "banner",
                        "label": "Top Art Banner",
                        "public_path": "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "title": "Elsbeth Vane",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 12.909
                    },
                    {
                        "id": "page-7-cards",
                        "slot_key": "cards",
                        "label": "Encounter Cards",
                        "public_path": "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "title": "Elsbeth Vane",
                        "fit": "cover",
                        "x": 8.235,
                        "y": 25.636,
                        "w": 83.529,
                        "h": 44.909
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": {
                    "version": "wo79-ocr-text-layer-v1",
                    "generated_at": "2026-06-10T01:50:48+00:00",
                    "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                    "model": "gpt-5.4-mini",
                    "usage": {
                        "input_tokens": 3003,
                        "input_tokens_details": {
                            "cached_tokens": 0
                        },
                        "output_tokens": 4392,
                        "output_tokens_details": {
                            "reasoning_tokens": 0
                        },
                        "total_tokens": 7395
                    },
                    "regions": [
                        {
                            "id": "r7",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Medium humanoid (human), lawful neutral",
                            "x": 66,
                            "y": 19,
                            "w": 18.536,
                            "h": 3,
                            "font_size": 0.82,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r8",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Armor Class 12",
                            "x": 42,
                            "y": 22,
                            "w": 7.432,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r9",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Hit Points 18",
                            "x": 60,
                            "y": 22,
                            "w": 6.968,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r10",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Speed 30 ft.",
                            "x": 79,
                            "y": 22,
                            "w": 6.968,
                            "h": 1.446,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r11",
                            "source": "ocr",
                            "kind": "table",
                            "text": "STR 8 (-1)",
                            "x": 42,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r12",
                            "source": "ocr",
                            "kind": "table",
                            "text": "DEX 12 (+1)",
                            "x": 50,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r13",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CON 12 (+1)",
                            "x": 58,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r14",
                            "source": "ocr",
                            "kind": "table",
                            "text": "INT 14 (+2)",
                            "x": 67,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r15",
                            "source": "ocr",
                            "kind": "table",
                            "text": "WIS 13 (+1)",
                            "x": 76,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r16",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CHA 11 (+0)",
                            "x": 85,
                            "y": 25,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r17",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Skills Insight +4, Investigation +4, Persuasion +2, History +4",
                            "x": 41,
                            "y": 30,
                            "w": 19.932,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r18",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Senses passive Perception 11",
                            "x": 41,
                            "y": 32,
                            "w": 14.056,
                            "h": 1.424,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r19",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Languages Common, one regional tongue",
                            "x": 41,
                            "y": 34,
                            "w": 15.864,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r20",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Challenge / Proficiency Bonus CR 1/2; PB +2",
                            "x": 41,
                            "y": 36,
                            "w": 17.22,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r21",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "TRAITS",
                            "x": 44,
                            "y": 40,
                            "w": 4.88,
                            "h": 1.67,
                            "font_size": 1,
                            "font_weight": "700",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r24",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Medium humanoid, lawful neutral",
                            "x": 67,
                            "y": 43,
                            "w": 15.204,
                            "h": 3,
                            "font_size": 0.82,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r25",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Armor Class 14",
                            "x": 42,
                            "y": 46,
                            "w": 7.432,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r26",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Hit Points 22",
                            "x": 60,
                            "y": 46,
                            "w": 6.968,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r27",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Speed 30 ft.",
                            "x": 79,
                            "y": 46,
                            "w": 6.968,
                            "h": 1.446,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r28",
                            "source": "ocr",
                            "kind": "table",
                            "text": "STR 9 (-1)",
                            "x": 42,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r29",
                            "source": "ocr",
                            "kind": "table",
                            "text": "DEX 14 (+2)",
                            "x": 50,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r30",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CON 12 (+1)",
                            "x": 58,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r31",
                            "source": "ocr",
                            "kind": "table",
                            "text": "INT 15 (+2)",
                            "x": 67,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r32",
                            "source": "ocr",
                            "kind": "table",
                            "text": "WIS 14 (+2)",
                            "x": 76,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r33",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CHA 10 (+0)",
                            "x": 85,
                            "y": 49,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r34",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Saving Throws Int +4, Wis +4",
                            "x": 41,
                            "y": 54,
                            "w": 14.056,
                            "h": 1.424,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r35",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Skills Investigation +4, Perception +4, Insight +4, Arcana +4",
                            "x": 41,
                            "y": 56,
                            "w": 19.932,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r36",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Senses passive Perception 14",
                            "x": 41,
                            "y": 58,
                            "w": 14.056,
                            "h": 1.424,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r37",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Languages Common, one scholarly language",
                            "x": 41,
                            "y": 60,
                            "w": 16.316,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r38",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Challenge / Proficiency Bonus CR 1; PB +2",
                            "x": 41,
                            "y": 62,
                            "w": 16.768,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r39",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "TRAITS",
                            "x": 44,
                            "y": 66,
                            "w": 4.88,
                            "h": 1.67,
                            "font_size": 1,
                            "font_weight": "700",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r40",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Eager Guardian. Tovin adds +2 to his AC while in the library or within 30 feet of its central stacks.",
                            "x": 44,
                            "y": 69,
                            "w": 24.773,
                            "h": 2.508,
                            "font_size": 0.76,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1.15
                        },
                        {
                            "id": "r42",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Tiny fey, unaligned",
                            "x": 67,
                            "y": 69,
                            "w": 9.752,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r43",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Armor Class 15",
                            "x": 42,
                            "y": 72,
                            "w": 7.432,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r44",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Hit Points 26",
                            "x": 60,
                            "y": 72,
                            "w": 6.968,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r45",
                            "source": "ocr",
                            "kind": "label",
                            "text": "Speed 20 ft., fly 30 ft. (hover)",
                            "x": 79,
                            "y": 72,
                            "w": 15.32,
                            "h": 2.342,
                            "font_size": 0.8,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r46",
                            "source": "ocr",
                            "kind": "table",
                            "text": "STR 4 (-3)",
                            "x": 42,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r47",
                            "source": "ocr",
                            "kind": "table",
                            "text": "DEX 18 (+4)",
                            "x": 50,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r48",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CON 12 (+1)",
                            "x": 58,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r49",
                            "source": "ocr",
                            "kind": "table",
                            "text": "INT 14 (+2)",
                            "x": 67,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r50",
                            "source": "ocr",
                            "kind": "table",
                            "text": "WIS 12 (+1)",
                            "x": 76,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r51",
                            "source": "ocr",
                            "kind": "table",
                            "text": "CHA 10 (+0)",
                            "x": 85,
                            "y": 75,
                            "w": 7,
                            "h": 1.468,
                            "font_size": 0.82,
                            "font_weight": "600",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r52",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Saving Throws Dex +6, Int +4",
                            "x": 41,
                            "y": 80,
                            "w": 14.056,
                            "h": 1.424,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r53",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Skills Arcana +4, Investigation +4, Perception +4, Sleight of Hand +6",
                            "x": 41,
                            "y": 82,
                            "w": 21.288,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r54",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Senses darkvision 60 ft., passive Perception 14",
                            "x": 41,
                            "y": 84,
                            "w": 17.672,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r55",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Languages Common, Sylvan; can read any written text",
                            "x": 41,
                            "y": 86,
                            "w": 18.576,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r56",
                            "source": "ocr",
                            "kind": "body",
                            "text": "Challenge / Proficiency Bonus CR 1; PB +2",
                            "x": 41,
                            "y": 88,
                            "w": 16.768,
                            "h": 2.297,
                            "font_size": 0.78,
                            "font_weight": "400",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "none",
                            "line_height": 1
                        },
                        {
                            "id": "r57",
                            "source": "ocr",
                            "kind": "heading",
                            "text": "TRAITS",
                            "x": 44,
                            "y": 91,
                            "w": 4.88,
                            "h": 1.67,
                            "font_size": 1,
                            "font_weight": "700",
                            "font_style": "normal",
                            "text_align": "left",
                            "text_transform": "uppercase",
                            "line_height": 1
                        },
                        {
                            "id": "r61",
                            "source": "ocr",
                            "kind": "badge",
                            "text": "7",
                            "x": 48,
                            "y": 98,
                            "w": 2.026,
                            "h": 2,
                            "font_size": 1.08,
                            "font_weight": "700",
                            "font_style": "normal",
                            "text_align": "center",
                            "text_transform": "none",
                            "line_height": 1
                        }
                    ]
                },
                "ocr_error": "",
                "asset_key": "packet-page-07-encounters",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 10:14:23"
            },
            {
                "page_number": 8,
                "key": "finale",
                "label": "Finale",
                "role": "finale",
                "plate_status": "placeholder_frame",
                "generated": true,
                "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-08-finale-20260609-101706.png",
                "generated_at": "2026-06-09T10:21:13+00:00",
                "reference_count": 8,
                "text_overlays": [],
                "image_replacements": [],
                "logo_masks": [],
                "graphic_regions": [
                    {
                        "id": "page-8-banner",
                        "slot_key": "banner",
                        "label": "Finale Map or Art",
                        "public_path": "/assets/generated-art/project_2/battlemaps/20260608-084217-primary-encounter-map-cebf5f.png",
                        "title": "Primary Encounter Map",
                        "fit": "cover",
                        "x": 6.824,
                        "y": 3.818,
                        "w": 86.353,
                        "h": 14.727
                    }
                ],
                "edit_history_count": 0,
                "ocr_text_layer": [],
                "ocr_error": "",
                "asset_key": "packet-page-08-finale",
                "queue_status": "completed",
                "queue_error": "",
                "queue_updated_at": "2026-06-09 10:21:13"
            }
        ],
        "queue": {
            "total": 10,
            "queued": 0,
            "processing": 0,
            "completed": 7,
            "failed": 2,
            "canceled": 1,
            "items": [
                {
                    "id": "42",
                    "asset_key": "packet-page-02-key_cast_conflict",
                    "asset_title": "Packet Page 2: Main NPC and Main Villain",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 04:51:22"
                },
                {
                    "id": "43",
                    "asset_key": "packet-page-03-scene_flow_one",
                    "asset_title": "Packet Page 3: Adventure Flow I",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 06:29:06"
                },
                {
                    "id": "44",
                    "asset_key": "packet-page-04-scene_flow_two",
                    "asset_title": "Packet Page 4: Adventure Flow II",
                    "status": "canceled",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": null,
                    "output_disk_path": null,
                    "error_message": "Canceled because the page generation was restarted by the user.",
                    "updated_at": "2026-06-09 03:45:28"
                },
                {
                    "id": "45",
                    "asset_key": "packet-page-04-scene_flow_two",
                    "asset_title": "Packet Page 4: Adventure Flow II",
                    "status": "failed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": null,
                    "output_disk_path": null,
                    "error_message": "OpenAI image request failed: Operation timed out after 300000 milliseconds with 0 bytes received",
                    "updated_at": "2026-06-09 07:50:28"
                },
                {
                    "id": "46",
                    "asset_key": "packet-page-04-scene_flow_two",
                    "asset_title": "Packet Page 4: Adventure Flow II",
                    "status": "failed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": null,
                    "output_disk_path": null,
                    "error_message": "OpenAI image request failed: Operation timed out after 300001 milliseconds with 0 bytes received",
                    "updated_at": "2026-06-09 08:31:57"
                },
                {
                    "id": "47",
                    "asset_key": "packet-page-04-scene_flow_two",
                    "asset_title": "Packet Page 4: Adventure Flow II",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-04-scene_flow_two-20260609-094135.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-04-scene_flow_two-20260609-094135.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 09:46:16"
                },
                {
                    "id": "48",
                    "asset_key": "packet-page-05-locations",
                    "asset_title": "Packet Page 5: Locations",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-05-locations-20260609-094645.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-05-locations-20260609-094645.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 09:51:23"
                },
                {
                    "id": "49",
                    "asset_key": "packet-page-06-clues",
                    "asset_title": "Packet Page 6: Clues and Secrets",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-06-clues-20260609-095415.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-06-clues-20260609-095415.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 09:58:34"
                },
                {
                    "id": "50",
                    "asset_key": "packet-page-07-encounters",
                    "asset_title": "Packet Page 7: Encounters",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 10:14:23"
                },
                {
                    "id": "51",
                    "asset_key": "packet-page-08-finale",
                    "asset_title": "Packet Page 8: Finale",
                    "status": "completed",
                    "attempts": "0",
                    "max_attempts": "3",
                    "output_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-08-finale-20260609-101706.png",
                    "output_disk_path": "/home/thedyaos/odos-studio-app/public/assets/generated-art/project_2/packet_pages/ai-final-page-08-finale-20260609-101706.png",
                    "error_message": "",
                    "updated_at": "2026-06-09 10:21:13"
                }
            ]
        },
        "manifest": {
            "version": "wo92-ai-final-pass-vision-layout-v1",
            "project_id": 2,
            "pages": {
                "1": {
                    "page_number": 1,
                    "page_key": "setting_opening",
                    "label": "Setting and Read-Aloud",
                    "generated_at": "2026-06-09T04:24:33+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-01-setting_opening-20260609-042054.png",
                    "file_name": "ai-final-page-01-setting_opening-20260609-042054.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 9772960,
                    "reference_count": 10,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/odos-packet-raster/v1/brand/cointoad-scrounger-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-plates/setting-readaloud-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083129-tovin-quill-0e4300.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 1: Setting and Read-Aloud (setting_opening)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Page 1 overview sheet. Use a large illustrated setting banner, ornate title plaque, big Adventure Overview panel, Read-Aloud Opening panel, At a Glance icon list, Starting Hook panel, Why It Matters note, Innkeeper tip callout, and footer coin/d20/page medallions.\n\nSource content for this page:\nTitle Plaque: The Ledger That Lies Setting Description: Adventure Overview - Title recommendation: The Ledger That Lies - One-sentence pitch: When a village\u2019s records begin rewriting themselves overnight, the party must trace the source of the magical clerical chaos and restore the true ledger before the annual market opens and the town\u2019s lives, debts, and vows are quietly erased. - Recommended level and party size: Levels 2\u20134; 3\u20135 adventurers - Expected runtime: 3\u20134 hours - Core fantasy: Cozy village mystery, whimsical magical mishap, ticking-clock finale - Safety/tone note: Light mystery with social pressure and mild combat; keep the mood curious and funny, not bleak. The adventure can be deleted after testing. Read-Aloud Opening: Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and panic. At the market board, villagers crowd around notices that do not agree with one another. A baker insists she has been married for twelve years, but the marriage registry now says she is unmarried. A miller\u2019s debt vanished from the ledger, then reappeared under another name. A child points at a page and says, \u201cThat\u2019s my aunt,\u201d only for the page to insist there has never been such a person. At the center of the confusion stands the town clerk, holding three books at once like they might explode. \u201cI need sensible heroes,\u201d she says, voice tight, \u201cor at leas... Adventure Overview: When a village\u2019s records begin rewriting themselves overnight, the party must trace the source of the magical clerical chaos and restore the true ledger before the annual market opens and the town\u2019s lives, debts, and vows are quietly erased. Starting Hook: Elsbeth Vane, the town clerk, hires the party at dawn in the market square. The annual market begins at sundown, and the town\u2019s records have started rewriting themselves overnight. Names, debts, property lines, and marriages are being erased or reassigned. If the wrong version of the ledger is used at the market opening, the town council will finalize contracts against false records, creating legal chaos for months. What the party i... At a Glance: Levels 2-4 Players 3-5; Premium Raster Packet; Under 10-page core packet Why It Matters: Cozy village mystery, whimsical magical mishap, ticking-clock finale Tavern Keeper Tip: Give the table one obvious lead, one hidden detail, and one cost for waiting.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art.",
                    "ocr_text_layer": {
                        "version": "wo92-vision-layout-v1",
                        "generated_at": "2026-06-10T07:41:53+00:00",
                        "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-01-setting_opening-20260609-042054.png",
                        "model": "gpt-5.4-mini",
                        "usage": {
                            "input_tokens": 3484,
                            "input_tokens_details": {
                                "cached_tokens": 0
                            },
                            "output_tokens": 3073,
                            "output_tokens_details": {
                                "reasoning_tokens": 0
                            },
                            "total_tokens": 6557
                        },
                        "regions": [
                            {
                                "id": "r5",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "THE LEDGER THAT LIES",
                                "x": 25,
                                "y": 31.818,
                                "w": 9.342,
                                "h": 2.163,
                                "font_size": 0.72,
                                "font_weight": "900",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r6",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ADVENTURE OVERVIEW",
                                "x": 4,
                                "y": 24.675,
                                "w": 8.506,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r8",
                                "source": "ocr",
                                "kind": "label",
                                "text": "TITLE RECOMMENDATION",
                                "x": 15,
                                "y": 38.961,
                                "w": 9.342,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r9",
                                "source": "ocr",
                                "kind": "body",
                                "text": "The Ledger That Lies",
                                "x": 15,
                                "y": 41.558,
                                "w": 9.76,
                                "h": 1.469,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r10",
                                "source": "ocr",
                                "kind": "label",
                                "text": "ONE-SENTENCE PITCH",
                                "x": 15,
                                "y": 44.156,
                                "w": 8.506,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r12",
                                "source": "ocr",
                                "kind": "label",
                                "text": "RECOMMENDED LEVEL & PARTY SIZE",
                                "x": 15,
                                "y": 54.545,
                                "w": 13.104,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r13",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Levels 2\u20134; 3\u20135 adventurers",
                                "x": 15,
                                "y": 57.143,
                                "w": 12.686,
                                "h": 1.469,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r14",
                                "source": "ocr",
                                "kind": "label",
                                "text": "EXPECTED RUNTIME",
                                "x": 15,
                                "y": 59.74,
                                "w": 7.67,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r15",
                                "source": "ocr",
                                "kind": "body",
                                "text": "3\u20134 hours",
                                "x": 15,
                                "y": 62.338,
                                "w": 5.162,
                                "h": 1.469,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r16",
                                "source": "ocr",
                                "kind": "label",
                                "text": "CORE FANTASY",
                                "x": 15,
                                "y": 64.935,
                                "w": 6.416,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r17",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Cozy village mystery, whimsical magical mishap, ticking-clock finale",
                                "x": 15,
                                "y": 67.532,
                                "w": 19.374,
                                "h": 2.389,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r18",
                                "source": "ocr",
                                "kind": "label",
                                "text": "SAFETY / TONE NOTE",
                                "x": 15,
                                "y": 70.779,
                                "w": 8.506,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r20",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "STARTING HOOK",
                                "x": 21,
                                "y": 77.922,
                                "w": 6.416,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r24",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "READ-ALOUD OPENING",
                                "x": 58,
                                "y": 24.026,
                                "w": 8.506,
                                "h": 2.163,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r25",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and panic.",
                                "x": 57,
                                "y": 29.221,
                                "w": 21.882,
                                "h": 2.389,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r27",
                                "source": "ocr",
                                "kind": "body",
                                "text": "At the center of the confusion stands the town clerk, holding three books at once like they might explode.",
                                "x": 57,
                                "y": 48.052,
                                "w": 23.972,
                                "h": 2.389,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r28",
                                "source": "ocr",
                                "kind": "body",
                                "text": "\u201cI need sensible heroes,\u201d she says, voice tight, \u201cor at leas\u2026\u201d",
                                "x": 57,
                                "y": 53.247,
                                "w": 18.538,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r29",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "AT A GLANCE",
                                "x": 60,
                                "y": 57.792,
                                "w": 5.998,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r30",
                                "source": "ocr",
                                "kind": "label",
                                "text": "LEVELS 2\u20134",
                                "x": 65,
                                "y": 64.286,
                                "w": 5.58,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r31",
                                "source": "ocr",
                                "kind": "label",
                                "text": "PLAYERS 3\u20135",
                                "x": 65,
                                "y": 66.883,
                                "w": 5.998,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r32",
                                "source": "ocr",
                                "kind": "label",
                                "text": "PREMIUM",
                                "x": 65,
                                "y": 72.078,
                                "w": 4.326,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r33",
                                "source": "ocr",
                                "kind": "label",
                                "text": "RASTER PACKET",
                                "x": 65,
                                "y": 74.675,
                                "w": 6.416,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r34",
                                "source": "ocr",
                                "kind": "label",
                                "text": "UNDER 10-PAGE",
                                "x": 65,
                                "y": 79.87,
                                "w": 6.416,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r35",
                                "source": "ocr",
                                "kind": "label",
                                "text": "CORE PACKET",
                                "x": 65,
                                "y": 82.468,
                                "w": 5.998,
                                "h": 1.356,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r36",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "WHY IT MATTERS",
                                "x": 58,
                                "y": 86.364,
                                "w": 6.834,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r37",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Cozy village mystery, whimsical magical mishap, ticking-clock finale.",
                                "x": 60,
                                "y": 89.61,
                                "w": 19.792,
                                "h": 2.597,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            }
                        ]
                    },
                    "graphic_regions_layer": {
                        "version": "wo92-vision-graphic-regions-v1",
                        "generated_at": "2026-06-10T07:41:53+00:00",
                        "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-01-setting_opening-20260609-042054.png",
                        "model": "gpt-5.4-mini",
                        "regions": [
                            {
                                "id": "page-1-hero_art",
                                "slot_key": "hero_art",
                                "label": "Setting Art",
                                "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                                "title": "Cover",
                                "fit": "cover",
                                "x": 65,
                                "y": 8,
                                "w": 29,
                                "h": 26,
                                "source": "vision"
                            },
                            {
                                "id": "page-1-hero_art",
                                "slot_key": "hero_art",
                                "label": "Setting Art",
                                "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                                "title": "Cover",
                                "fit": "cover",
                                "x": 6,
                                "y": 78,
                                "w": 17,
                                "h": 18,
                                "source": "vision"
                            }
                        ]
                    }
                },
                "2": {
                    "page_number": 2,
                    "page_key": "key_cast_conflict",
                    "label": "Main NPC and Main Villain",
                    "generated_at": "2026-06-09T04:51:22+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                    "file_name": "ai-final-page-02-key_cast_conflict-20260609-044724.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 10365727,
                    "reference_count": 10,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/odos-packet-raster/v1/brand/cointoad-scrounger-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-plates/key-cast-and-conflict-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "/assets/generated-art/project_2/monster_images/20260608-083554-animated-paper-scrap-e8ecd0.png",
                        "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 2: Main NPC and Main Villain (key_cast_conflict)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Page 2 story engine. Use a top setting banner, large Conflict Context prose panel, two strong portrait frames for the main NPC and main villain, matched text panels for each entity, and two lower DM-facing support panels. Keep it text-forward, not a many-character grid.\n\nSource content for this page:\nSection Title: Setting, Main NPC, and Main Villain Conflict Context: Adventure Overview - Title recommendation: The Ledger That Lies - One-sentence pitch: When a village\u2019s records begin rewriting themselves overnight, the party must trace the source of the magical clerical chaos and restore the true ledger before the annual market opens and the town\u2019s lives, debts, and vows are quietly erased. - Recommended level and party size: Levels 2\u20134; 3\u20135 adventurers - Expected runtime: 3\u20134 hours - Core fantasy: Cozy village mystery, whimsical magical mishap, ticking-clock finale - Safety/tone note: Light mystery with social pressure and mild combat; keep the mood curious and funny, not bleak. The adventure can be deleted after testing. Main NPC and Main Villain: Elsbeth Vane: Medium humanoid (human), lawful neutral - AC 12 - HP 18 - Speed 30 ft. - Ability Scores: STR 8 DEX 12 CON 12 INT 14 WIS 13 CHA 11 - Skills Insight +4, Investigation +4, Persuasion +2, History +4 - Senses passive Perception 11 - Languages Common, one regional tongue - Challenge / Proficiency Bonus CR 1/2; PB +2 - Traits: - Prepared Clerk. Elsbeth has advantage on checks to identify... | Animated Paper Scrap: Tiny construct, unaligned - - - ., fly 20 ft. (hover) - -2) 15 (+2) 10 (+0) 2 (-4) 10 (+0) 1 (-5) - - ; bludgeoning from nonmagical attacks - - - ., passive Perception 10 - - How to Use These Faces: Use Elsbeth Vane, Animated Paper Scrap as distinct table tools: hook, gate, clue, pressure, and relief. Give each one a visible want, one useful truth, and one reason they cannot solve the problem alone. Read-Aloud Support: Read-Aloud Opening Morning in Briarwick arrives with the smell of fresh bread, wet...; Read-Aloud Opening Morning in Briarwick arrives with the smell of fresh bread, wet...; At the market board, villagers crowd around notices that do not agree with one another.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art.",
                    "ocr_text_layer": {
                        "version": "wo81-ocr-small-text-v2",
                        "generated_at": "2026-06-10T03:06:19+00:00",
                        "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-02-key_cast_conflict-20260609-044724.png",
                        "model": "gpt-5.4-mini",
                        "usage": {
                            "input_tokens": 3047,
                            "input_tokens_details": {
                                "cached_tokens": 0
                            },
                            "output_tokens": 4523,
                            "output_tokens_details": {
                                "reasoning_tokens": 0
                            },
                            "total_tokens": 7570
                        },
                        "regions": [
                            {
                                "id": "r1",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "SETTING, MAIN NPC, AND MAIN VILLAIN",
                                "x": 32.3,
                                "y": 4.1,
                                "w": 49.2,
                                "h": 3.5,
                                "font_size": 0.88,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1.1
                            },
                            {
                                "id": "r5",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "20",
                                "x": 13.2,
                                "y": 17,
                                "w": 4.3,
                                "h": 4.7,
                                "font_size": 1,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r6",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Adventure Overview \u2014 Title recommendation: The Ledger That Lies",
                                "x": 5,
                                "y": 20.2,
                                "w": 58.8,
                                "h": 2.5,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.15
                            },
                            {
                                "id": "r8",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Recommended level and party size: Levels 2\u20134; 3\u20135 adventurers",
                                "x": 5,
                                "y": 27.4,
                                "w": 54.2,
                                "h": 2.2,
                                "font_size": 0.76,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r9",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Expected runtime: 3\u20134 hours",
                                "x": 5.1,
                                "y": 30.1,
                                "w": 24,
                                "h": 2,
                                "font_size": 0.77,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r10",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Core fantasy: Cozy village mystery, whimsical magical mishap, ticking-clock finale",
                                "x": 5.1,
                                "y": 32.7,
                                "w": 54.8,
                                "h": 2.1,
                                "font_size": 0.76,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r11",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Safety/tone note: Light mystery with social pressure and mild combat; keep the mood curious and funny, not bleak.",
                                "x": 5.1,
                                "y": 35.3,
                                "w": 58.4,
                                "h": 4,
                                "font_size": 0.72,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.16
                            },
                            {
                                "id": "r12",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "MAIN NPC: ELSBETH VANE",
                                "x": 14.2,
                                "y": 39,
                                "w": 30.5,
                                "h": 3,
                                "font_size": 0.92,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r13",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "Elsbeth Vane",
                                "x": 30.2,
                                "y": 42.4,
                                "w": 10,
                                "h": 2,
                                "font_size": 0.8,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r14",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Medium humanoid (human), lawful neutral",
                                "x": 30.3,
                                "y": 44.2,
                                "w": 12.8,
                                "h": 3.3,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r15",
                                "source": "ocr",
                                "kind": "label",
                                "text": "AC 12",
                                "x": 30.3,
                                "y": 48,
                                "w": 5.5,
                                "h": 1.8,
                                "font_size": 0.66,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r16",
                                "source": "ocr",
                                "kind": "label",
                                "text": "HP 18",
                                "x": 30.3,
                                "y": 49.9,
                                "w": 5.5,
                                "h": 1.8,
                                "font_size": 0.66,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r17",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Speed 30 ft.",
                                "x": 30.3,
                                "y": 51.7,
                                "w": 8.8,
                                "h": 1.8,
                                "font_size": 0.66,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r18",
                                "source": "ocr",
                                "kind": "table",
                                "text": "STR DEX CON INT WIS CHA",
                                "x": 30.3,
                                "y": 54.2,
                                "w": 17.8,
                                "h": 1.7,
                                "font_size": 0.52,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r19",
                                "source": "ocr",
                                "kind": "table",
                                "text": "8 12 12 14 13 11",
                                "x": 30.3,
                                "y": 55.8,
                                "w": 17.7,
                                "h": 1.6,
                                "font_size": 0.55,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r20",
                                "source": "ocr",
                                "kind": "table",
                                "text": "(-1) (+1) (+1) (+2) (+1) (+0)",
                                "x": 30.3,
                                "y": 57,
                                "w": 17.9,
                                "h": 1.6,
                                "font_size": 0.5,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r21",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Skills",
                                "x": 30.3,
                                "y": 58.8,
                                "w": 5,
                                "h": 1.6,
                                "font_size": 0.64,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r22",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Insight +4, Investigation +4, Persuasion +2, History +4",
                                "x": 30.3,
                                "y": 60.2,
                                "w": 17.2,
                                "h": 3,
                                "font_size": 0.56,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.08
                            },
                            {
                                "id": "r23",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Senses passive Perception 11",
                                "x": 30.3,
                                "y": 64,
                                "w": 14.9,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r24",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Languages Common, one regional tongue",
                                "x": 30.3,
                                "y": 65.7,
                                "w": 15.9,
                                "h": 3,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.08
                            },
                            {
                                "id": "r25",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Challenge / Proficiency Bonus",
                                "x": 30.3,
                                "y": 69.1,
                                "w": 15.5,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r26",
                                "source": "ocr",
                                "kind": "label",
                                "text": "CR 1/2; PB +2",
                                "x": 30.3,
                                "y": 70.8,
                                "w": 9.3,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r28",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "MAIN VILLAIN: ANIMATED PAPER SCRAP",
                                "x": 52.8,
                                "y": 39,
                                "w": 40,
                                "h": 3,
                                "font_size": 0.88,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r29",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "Animated Paper Scrap",
                                "x": 77,
                                "y": 42.4,
                                "w": 14.9,
                                "h": 2,
                                "font_size": 0.8,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r30",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Tiny construct, unaligned",
                                "x": 77,
                                "y": 44.2,
                                "w": 12.1,
                                "h": 1.9,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r31",
                                "source": "ocr",
                                "kind": "label",
                                "text": "AC 12 (natural armor)",
                                "x": 77,
                                "y": 47.9,
                                "w": 12.8,
                                "h": 1.8,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r32",
                                "source": "ocr",
                                "kind": "label",
                                "text": "HP 10 (3d4 + 3)",
                                "x": 77,
                                "y": 49.8,
                                "w": 9.9,
                                "h": 1.8,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r33",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Speed 0 ft., fly 20 ft. (hover)",
                                "x": 77,
                                "y": 51.7,
                                "w": 17.1,
                                "h": 1.8,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r34",
                                "source": "ocr",
                                "kind": "table",
                                "text": "STR DEX CON INT WIS CHA",
                                "x": 77,
                                "y": 54.2,
                                "w": 17.9,
                                "h": 1.7,
                                "font_size": 0.52,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r35",
                                "source": "ocr",
                                "kind": "table",
                                "text": "2 (-4) 15 (+2) 10 (+0) 2 (-4) 10 (+0) 1 (-5)",
                                "x": 77,
                                "y": 55.8,
                                "w": 18.8,
                                "h": 1.7,
                                "font_size": 0.5,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r36",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Damage Resistances",
                                "x": 77,
                                "y": 58,
                                "w": 10.5,
                                "h": 1.7,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r37",
                                "source": "ocr",
                                "kind": "body",
                                "text": "bludgeoning, piercing, and slashing from nonmagical attacks",
                                "x": 77,
                                "y": 59.4,
                                "w": 15.6,
                                "h": 3,
                                "font_size": 0.54,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.08
                            },
                            {
                                "id": "r38",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Condition Immunities",
                                "x": 77,
                                "y": 62.9,
                                "w": 10.8,
                                "h": 1.7,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r39",
                                "source": "ocr",
                                "kind": "body",
                                "text": "charmed, exhaustion, frightened, paralyzed, petrified, poisoned",
                                "x": 77,
                                "y": 64.3,
                                "w": 15.7,
                                "h": 3,
                                "font_size": 0.54,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.08
                            },
                            {
                                "id": "r40",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Senses passive Perception 10",
                                "x": 77,
                                "y": 67.9,
                                "w": 15.1,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r41",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Languages \u2014",
                                "x": 77,
                                "y": 69.7,
                                "w": 7.1,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r42",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Challenge / Proficiency Bonus",
                                "x": 77,
                                "y": 71.4,
                                "w": 15.4,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r43",
                                "source": "ocr",
                                "kind": "label",
                                "text": "CR 1/4; PB +2",
                                "x": 77,
                                "y": 73,
                                "w": 8.8,
                                "h": 1.7,
                                "font_size": 0.58,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r45",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "HOW TO USE THESE FACES",
                                "x": 15.8,
                                "y": 78.6,
                                "w": 30,
                                "h": 3.1,
                                "font_size": 0.92,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r46",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "READ-ALOUD SUPPORT",
                                "x": 61,
                                "y": 78.6,
                                "w": 26,
                                "h": 3.1,
                                "font_size": 0.92,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r47",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Use Elsbeth Vane and the Animated Paper Scrap as distinct table tools: hook, gate, clue, pressure, and relief.",
                                "x": 13.8,
                                "y": 82.2,
                                "w": 33.4,
                                "h": 4.8,
                                "font_size": 0.63,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r48",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Give each one a visible want, one useful truth, and one reason they cannot solve the problem alone.",
                                "x": 18.3,
                                "y": 87.5,
                                "w": 31,
                                "h": 4,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r49",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Let their interaction drive the mystery forward and create opportunities for clever solutions.",
                                "x": 18.6,
                                "y": 92.3,
                                "w": 29.8,
                                "h": 4,
                                "font_size": 0.62,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r50",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Read-Aloud Opening",
                                "x": 62.6,
                                "y": 83,
                                "w": 14.5,
                                "h": 1.8,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r51",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and the cheerful clatter of the market setting up. Today should be a festival of trade and news...",
                                "x": 61.2,
                                "y": 84.4,
                                "w": 31.4,
                                "h": 5.6,
                                "font_size": 0.56,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r52",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Read-Aloud Opening",
                                "x": 62.6,
                                "y": 90.9,
                                "w": 14.5,
                                "h": 1.8,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r53",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and the cheerful clatter of the market setting up. Today should be a festival of trade and news...",
                                "x": 61.2,
                                "y": 92.3,
                                "w": 31.4,
                                "h": 5.6,
                                "font_size": 0.56,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r54",
                                "source": "ocr",
                                "kind": "body",
                                "text": "At the market board, villagers crowd around notices that do not agree with he another.",
                                "x": 61.2,
                                "y": 98,
                                "w": 30.8,
                                "h": 1.2,
                                "font_size": 0.56,
                                "font_weight": "400",
                                "font_style": "italic",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            }
                        ]
                    }
                },
                "3": {
                    "page_number": 3,
                    "page_key": "scene_flow_one",
                    "label": "Adventure Flow I",
                    "generated_at": "2026-06-09T06:29:06+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                    "file_name": "ai-final-page-03-scene_flow_one-20260609-062448.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 9924162,
                    "reference_count": 10,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/odos-packet-raster/v1/brand/cointoad-scrounger-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                        "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082123-key-scene-02b527.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 3: Adventure Flow I (scene_flow_one)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Adventure flow page. Use a top art banner, three large scene panels with readable GM text, a clue/escalation sidebar, and a small tavern keeper tip. Keep scene order obvious.\n\nSource content for this page:\nSection Title: Scenes 1-3 Scenes 1-3: DM details:: - Great place for quick interviews and rumor gathering. - Any public argument here can escalate into a small crowd scene. - Use the board to show how records are changing in real time. Great place for quick interviews and rumor gathering. - Any public argument here can...; - Great place for quick interviews and rumor gathering.; - Any public argument here can escalate into a small crowd scene. | DM details:: - A good final map location: small, readable, and full of paper-moving hazards. - The sprite\u2019s magic is strongest here. - Place the true ledger, the anchor object, and a ritual repair point in the center. A good final map location: small, readable, and full of paper-moving hazards. - The...; - A good final map location: small, readable, and full of paper-moving hazards.; - The sprite\u2019s magic is strongest here. | Scaling notes:: - Level 2: Use 3\u20134 weak animated paper hazards with low damage and one paper swarm effect. - Level 3: Add one sturdier animated seal or book-spine guardian. - Level 4: Add a second wave if the party is moving quickly or make the swarm act on initiative as a lair-style complication. Level 2: Use 3\u20134 weak animated paper hazards with low damage and one paper swarm e...; - Level 2: Use 3\u20134 weak animated paper hazards with low damage and one paper swarm effect.; - Level 3: Add one sturdier animated seal or book-spine guardian. Clue Trail: Clue Roster Table Clue Found At / From Reveals Points To If Missed --- --- --- --- --- Altered ledgers disagree in the same...; Clue Roster Table Clue Found At / From Reveals Points To If Missed --- --- --- --- --- Altered ledgers disagree in the same... Tavern Keeper Tip: Keep every scene pointed at a choice: follow a clue, protect someone, or accept a cost.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art.",
                    "ocr_text_layer": {
                        "version": "wo81-ocr-small-text-v2",
                        "generated_at": "2026-06-10T05:35:22+00:00",
                        "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-03-scene_flow_one-20260609-062448.png",
                        "model": "gpt-5.4-mini",
                        "usage": {
                            "input_tokens": 3047,
                            "input_tokens_details": {
                                "cached_tokens": 0
                            },
                            "output_tokens": 3738,
                            "output_tokens_details": {
                                "reasoning_tokens": 0
                            },
                            "total_tokens": 6785
                        },
                        "regions": [
                            {
                                "id": "r3",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "Codex QA Workflow Test 20260608",
                                "x": 5.2,
                                "y": 23.3,
                                "w": 15.871,
                                "h": 2.476,
                                "font_size": 0.86,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r4",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "SCENES 1\u20133",
                                "x": 23.5,
                                "y": 30.8,
                                "w": 5.92,
                                "h": 1.424,
                                "font_size": 0.78,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r5",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "1",
                                "x": 4.2,
                                "y": 35.3,
                                "w": 1.922,
                                "h": 1.558,
                                "font_size": 0.9,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r6",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "THE INFORMATION BOARD",
                                "x": 28.4,
                                "y": 36,
                                "w": 9.98,
                                "h": 2.208,
                                "font_size": 0.74,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r7",
                                "source": "ocr",
                                "kind": "label",
                                "text": "DM DETAILS",
                                "x": 28.8,
                                "y": 41.7,
                                "w": 4.65,
                                "h": 1.177,
                                "font_size": 0.56,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r8",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Great place for quick interviews and rumor gathering.",
                                "x": 31,
                                "y": 45,
                                "w": 10.862,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r9",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Any public argument here can escalate into a small crowd scene.",
                                "x": 31,
                                "y": 52,
                                "w": 11.858,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r10",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Use the board to show how records are changing in real time.",
                                "x": 31,
                                "y": 59.6,
                                "w": 11.609,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r11",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "2",
                                "x": 4.2,
                                "y": 58.2,
                                "w": 1.922,
                                "h": 1.558,
                                "font_size": 0.9,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r12",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "THE SCRIBAL\u2019S ROOM",
                                "x": 28.1,
                                "y": 59.1,
                                "w": 8.693,
                                "h": 2.208,
                                "font_size": 0.74,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r13",
                                "source": "ocr",
                                "kind": "label",
                                "text": "DM DETAILS",
                                "x": 28.8,
                                "y": 64.8,
                                "w": 4.65,
                                "h": 1.177,
                                "font_size": 0.56,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r14",
                                "source": "ocr",
                                "kind": "body",
                                "text": "A good final map location: small, readable, and full of paper-moving hazards.",
                                "x": 31,
                                "y": 68.2,
                                "w": 12.854,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r15",
                                "source": "ocr",
                                "kind": "body",
                                "text": "The sprite\u2019s magic is strongest here.",
                                "x": 31,
                                "y": 76.6,
                                "w": 9.368,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r16",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Place the true ledger, the anchor object, and a ritual repair point in the center.",
                                "x": 31,
                                "y": 80,
                                "w": 13.352,
                                "h": 1.648,
                                "font_size": 0.43,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r17",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "3",
                                "x": 4.2,
                                "y": 82.9,
                                "w": 1.922,
                                "h": 1.558,
                                "font_size": 0.9,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r18",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "THE LIVING ARCHIVE",
                                "x": 28,
                                "y": 82.8,
                                "w": 8.693,
                                "h": 2.208,
                                "font_size": 0.74,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r19",
                                "source": "ocr",
                                "kind": "label",
                                "text": "SCALING NOTES",
                                "x": 28.8,
                                "y": 88.5,
                                "w": 5.3,
                                "h": 1.804,
                                "font_size": 0.56,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r20",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Level 2: Use 3\u20134 weak animated paper hazards with low damage and one paper swarm effect.",
                                "x": 31,
                                "y": 91.8,
                                "w": 13.356,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r21",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Level 3: Add one sturdier animated seal or book-spine guardian.",
                                "x": 31,
                                "y": 98,
                                "w": 11.648,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r22",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Level 4: Add a second wave if the party is moving quickly or make the swarm act on initiative as a lair-style complication.",
                                "x": 31,
                                "y": 98,
                                "w": 15.552,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r23",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "CLUE TRAIL",
                                "x": 66.3,
                                "y": 30.9,
                                "w": 5.92,
                                "h": 1.424,
                                "font_size": 0.78,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r24",
                                "source": "ocr",
                                "kind": "label",
                                "text": "CLUE ROSTER TABLE",
                                "x": 70,
                                "y": 37.8,
                                "w": 6.504,
                                "h": 1.782,
                                "font_size": 0.55,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r25",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CLUE FOUND AT / FROM",
                                "x": 67.5,
                                "y": 42.1,
                                "w": 6.036,
                                "h": 1.491,
                                "font_size": 0.42,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r26",
                                "source": "ocr",
                                "kind": "table",
                                "text": "REVEALS",
                                "x": 73.7,
                                "y": 42.2,
                                "w": 3.108,
                                "h": 1.02,
                                "font_size": 0.42,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r27",
                                "source": "ocr",
                                "kind": "table",
                                "text": "POINTS TO",
                                "x": 80.3,
                                "y": 42.2,
                                "w": 3.596,
                                "h": 1.02,
                                "font_size": 0.42,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r28",
                                "source": "ocr",
                                "kind": "table",
                                "text": "IF MISSED",
                                "x": 88.5,
                                "y": 42.2,
                                "w": 3.596,
                                "h": 1.02,
                                "font_size": 0.42,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r29",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Altered ledgers disagree in the same entries.",
                                "x": 69.2,
                                "y": 46,
                                "w": 8.476,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r30",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Public confusion spreads.",
                                "x": 88.9,
                                "y": 46,
                                "w": 6.524,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r31",
                                "source": "ocr",
                                "kind": "table",
                                "text": "A page bears the same stamp as the board\u2019s missing notice.",
                                "x": 69.5,
                                "y": 55.6,
                                "w": 10.8,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r32",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Leads are slower to gain trust.",
                                "x": 89,
                                "y": 55.7,
                                "w": 8.5,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r33",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Ink bleeds wrong when exposed to sprite magic.",
                                "x": 69.7,
                                "y": 66.1,
                                "w": 8.476,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r34",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Magical hazards surprise the party.",
                                "x": 89.2,
                                "y": 66.1,
                                "w": 8.5,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r35",
                                "source": "ocr",
                                "kind": "table",
                                "text": "A seal never seen in town protects the real record.",
                                "x": 69.5,
                                "y": 76.4,
                                "w": 8.72,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r36",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Fewer resources before the final room.",
                                "x": 89.1,
                                "y": 76.4,
                                "w": 8.6,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r37",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Whispering paper points to a central anchor object.",
                                "x": 69.7,
                                "y": 86.7,
                                "w": 8.72,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r38",
                                "source": "ocr",
                                "kind": "table",
                                "text": "Harder to restore the ledger.",
                                "x": 89.1,
                                "y": 86.7,
                                "w": 7.012,
                                "h": 1.623,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r39",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ESCALATION GUIDE",
                                "x": 68.6,
                                "y": 98,
                                "w": 7.49,
                                "h": 1.8,
                                "font_size": 0.7,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r40",
                                "source": "ocr",
                                "kind": "label",
                                "text": "SOCIAL",
                                "x": 72.4,
                                "y": 98,
                                "w": 3.14,
                                "h": 0.8,
                                "font_size": 0.5,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r41",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Arguments draw a crowd. Tension raises the stakes.",
                                "x": 82,
                                "y": 98,
                                "w": 10.428,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r42",
                                "source": "ocr",
                                "kind": "label",
                                "text": "MAGICAL",
                                "x": 72.4,
                                "y": 98,
                                "w": 3.43,
                                "h": 0.8,
                                "font_size": 0.5,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r43",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Paper hazards grow stronger as the sprite defends the truth.",
                                "x": 82,
                                "y": 98,
                                "w": 11.404,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r44",
                                "source": "ocr",
                                "kind": "label",
                                "text": "ENVIRONMENT",
                                "x": 72.3,
                                "y": 98,
                                "w": 4.59,
                                "h": 0.8,
                                "font_size": 0.5,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r45",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Records shift, shelves topple, ink and paper turn against intruders.",
                                "x": 82,
                                "y": 98,
                                "w": 11.892,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.14
                            },
                            {
                                "id": "r46",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "TAVERN KEEPER TIP",
                                "x": 75.1,
                                "y": 98,
                                "w": 7.16,
                                "h": 0.8,
                                "font_size": 0.62,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r47",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Keep every scene pointed at a choice: follow a clue, protect someone, or accept a cost.",
                                "x": 77.6,
                                "y": 98,
                                "w": 15.8,
                                "h": 0.8,
                                "font_size": 0.42,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1.14
                            }
                        ]
                    }
                },
                "4": {
                    "page_number": 4,
                    "page_key": "scene_flow_two",
                    "label": "Adventure Flow II",
                    "generated_at": "2026-06-09T09:46:16+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-04-scene_flow_two-20260609-094135.png",
                    "file_name": "ai-final-page-04-scene_flow_two-20260609-094135.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 10002460,
                    "reference_count": 6,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082123-key-scene-02b527.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 4: Adventure Flow II (scene_flow_two)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Adventure flow page. Use a top art banner, three large scene panels with readable GM text, a clue/escalation sidebar, and a small tavern keeper tip. Keep scene order obvious.\n\nSource content for this page:\nSection Title: Scenes 4-6 and Escalation Scenes 4-6: Battlefield or Social Stakes: This can be run as a combat scene, a ritual negotiation, or a hybrid of both. The stakes are immediate: if the market begins with the false ledger, the town legally accepts the rewritten records. The chamber is crowded with shelves, hanging labels, the true ledger anchor, and drifting paper hazards that can shift cover and obscure lines of sight. This can be run as a combat scene, a ritual negotiation, or a hybrid of both. The...; This can be run as a combat scene, a ritual negotiation, or a hybrid of both.; The stakes are immediate: if the market begins with the false ledger, the town legally... | Scene 5: ly for the page to insist there has never been such a person. At the center of the confusion stands the town clerk, holding three books at once like they might explode. DM Packet Draft; Adventure Overview; Title recommendation: The Ledger That Lies | Scene 6: the town clerk, hires the party at dawn in the market square. The annual market begins at sundown, and the town\u2019s records have started rewriting themselves overnight. DM Packet Draft; Adventure Overview; Title recommendation: The Ledger That Lies Escalation: Scene 7: The Clock Tightens; Scene 7: The Clock Tightens Tavern Keeper Tip: When time matters, remind the table what happens if the heroes wait.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art."
                },
                "5": {
                    "page_number": 5,
                    "page_key": "locations",
                    "label": "Locations",
                    "generated_at": "2026-06-09T09:51:23+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-05-locations-20260609-094645.png",
                    "file_name": "ai-final-page-05-locations-20260609-094645.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 9192357,
                    "reference_count": 6,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 5: Locations (locations)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Locations page. Use three substantial location panels with project setting art, clues, sensory details, and a running-the-location sidebar.\n\nSource content for this page:\nSection Title: Places Where the Truth Went Missing Location Cards: Adventure Overview: - Title recommendation: The Ledger That Lies - One-sentence pitch: When a village\u2019s records begin rewriting themselves overnight, the party must trace the source of the magical clerical chaos and restore the true ledger before the annual market opens and the town\u2019s lives, debts, and vows are quietly erased. - Recommended level and party size: Levels 2\u20134; 3\u20135 adventurers - Expected runtime: 3\u20134 hours - Core fantasy: Cozy village mystery, whimsical magica... Title recommendation: The Ledger That Lies - One-sentence pitch: When a village\u2019s r...; - Title recommendation: The Ledger That Lies - One-sentence pitch: When a village\u2019s r...; - Recommended level and party size: Levels 2\u20134; 3\u20135 adventurers - Expected runtime: 3\u20134... | Read-Aloud Opening: Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and panic. At the market board, villagers crowd around notices that do not agree with one another. A baker insists she has been married for twelve years, but the marriage registry now says she is unmarried. Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and...; Morning in Briarwick arrives with the smell of fresh bread, wet cobblestones, and panic.; At the market board, villagers crowd around notices that do not agree with one another. | Starting Hook: Elsbeth Vane, the town clerk, hires the party at dawn in the market square. The annual market begins at sundown, and the town\u2019s records have started rewriting themselves overnight. Names, debts, property lines, and marriages are being erased or reassigned. Elsbeth Vane, the town clerk, hires the party at dawn in the market square. The annual...; Elsbeth Vane, the town clerk, hires the party at dawn in the market square.; The annual market begins at sundown, and the town\u2019s records have started rewriting t... Running the Location: Clue Web Tavern Keeper Tip: Give every location one obvious clue, one hidden detail, and one thing players can touch or question.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art."
                },
                "6": {
                    "page_number": 6,
                    "page_key": "clues",
                    "label": "Clues and Secrets",
                    "generated_at": "2026-06-09T09:58:34+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-06-clues-20260609-095415.png",
                    "file_name": "ai-final-page-06-clues-20260609-095415.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 10356516,
                    "reference_count": 6,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/cointoad-scrounger-v1.png",
                        "/assets/generated-art/project_2/setting_images/20260608-082418-secondary-location-9794a9.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 6: Clues and Secrets (clues)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Clues and secrets page. Use structured parchment lists for required clues, optional clues, fail-forward clues, and what each clue reveals. Include one contextual art well and a monster mischief tip.\n\nSource content for this page:\nSection Title: What the Records Reveal Required Clues: Clue Roster Table Clue Found At / From Reveals Points To If Missed --- --- --- --- --- Altered ledgers...; Clue Roster Table Clue Found At / From Reveals Points To If Missed --- --- --- --- --- Altered ledgers... Optional Clues: Clue Web What Each Clue Reveals: Truth Map - Core truth: A miscopied civic preservation rite empowered a forgetful archive sprite to...; Truth Map - Core truth: A miscopied civic preservation rite empowered a forgetful archive sprite to...; - Surface belief / false assumption: Someone in town is intentionally forging, stealing, or erasing...; - Hidden complication: The magic targets contradictions first, so personal names vanish before...; - Antagonist's lie or pressure: Pell believes it is helping the town by \u201ccorrecting\u201d inconsistency and... Fail-Forward Clues: Clue Web Monster Mischief: Never hide progress behind one roll. If players miss a clue, let consequences reveal another way.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art."
                },
                "7": {
                    "page_number": 7,
                    "page_key": "encounters",
                    "label": "Encounters",
                    "generated_at": "2026-06-09T10:14:23+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                    "file_name": "ai-final-page-07-encounters-20260609-101006.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 9834984,
                    "reference_count": 8,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/cointoad-scrounger-v1.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083129-tovin-quill-0e4300.png",
                        "/assets/generated-art/project_2/npc_images/20260608-083210-archive-sprite-pell-53cd30.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 7: Encounters (encounters)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Encounter reference page. Use large creature/hazard panels with tactics and readable GM notes. Include monster art only when matched to the correct entity.\n\nSource content for this page:\nSection Title: Challenges, Hazards, and Tactics Encounter Cards: Elsbeth Vane: Medium humanoid (human), lawful neutral - AC 12 - HP 18 - Speed 30 ft. - Ability Scores: STR 8 DEX 12 CON 12 INT 14 WIS 13 CHA 11 - Skills Insight +4, Investigation +4, Persuasion +2, History +4 - Senses passive Perception 11 - Languages Common, one regional tongue - Challenge / Proficiency Bonus CR 1/2; PB +2 - Traits: - Prepared Clerk. Elsbeth has... Medium humanoid (human), lawful neutral - AC 12 - HP 18 - Speed 30 ft. - Ability...; Medium humanoid (human), lawful neutral - AC 12 - HP 18 - Speed 30 ft.; - Ability Scores: STR 8 DEX 12 CON 12 INT 14 WIS 13 CHA 11 - Skills Insight +4... | Tovin Quill: Medium humanoid, lawful neutral - Armor Class 14 - Hit Points 22 - Speed 30 ft. - STR DEX CON INT WIS CHA 9 (-1) 14 (+2) 12 (+1) 15 (+2) 14 (+2) 10 (+0) - Saving Throws Int +4, Wis +4 - Skills Investigation +4, Perception +4, Insight +4, Arcana +4 - Senses passive Perception 14 - Languages Common, one scholarly language - Challenge / Proficiency Bonus CR... Medium humanoid, lawful neutral - Armor Class 14 - Hit Points 22 - Speed 30 ft. - STR...; Medium humanoid, lawful neutral - Armor Class 14 - Hit Points 22 - Speed 30 ft.; - STR DEX CON INT WIS CHA 9 (-1) 14 (+2) 12 (+1) 15 (+2) 14 (+2) 10 (+0) - Saving... | Archive Sprite \u201cPell\u201d: Tiny fey, unaligned - Armor Class 15 - Hit Points 26 - Speed 20 ft., fly 30 ft. (hover) - STR DEX CON INT WIS CHA 4 (-3) 18 (+4) 12 (+1) 14 (+2) 12 (+1) 10 (+0) - Saving Throws Dex +6, Int +4 - Skills Arcana +4, Investigation +4, Perception +4, Sleight of Hand +6 - Senses darkvision 60 ft., passive Perception 14 - Languages Common, Sylvan; can read any... Tiny fey, unaligned - Armor Class 15 - Hit Points 26 - Speed 20 ft., fly 30 ft...; Tiny fey, unaligned - Armor Class 15 - Hit Points 26 - Speed 20 ft., fly 30 ft.; (hover) - STR DEX CON INT WIS CHA 4 (-3) 18 (+4) 12 (+1) 14 (+2) 12 (+1) 10 (+0) -... Monster Mischief: Keep low-level fights quick. Use hazards to create movement and laughter, not a slog.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art.",
                    "ocr_text_layer": {
                        "version": "wo79-ocr-text-layer-v1",
                        "generated_at": "2026-06-10T01:50:48+00:00",
                        "source_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-07-encounters-20260609-101006.png",
                        "model": "gpt-5.4-mini",
                        "usage": {
                            "input_tokens": 3003,
                            "input_tokens_details": {
                                "cached_tokens": 0
                            },
                            "output_tokens": 4392,
                            "output_tokens_details": {
                                "reasoning_tokens": 0
                            },
                            "total_tokens": 7395
                        },
                        "regions": [
                            {
                                "id": "r1",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ONE DOLLAR ONE SHOTS",
                                "x": 7,
                                "y": 5,
                                "w": 28,
                                "h": 15,
                                "font_size": 2.1,
                                "font_weight": "800",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r2",
                                "source": "ocr",
                                "kind": "caption",
                                "text": "FANTASY ADVENTURES FOR 5E.",
                                "x": 12,
                                "y": 15,
                                "w": 18,
                                "h": 3,
                                "font_size": 0.72,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r3",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ENCOUNTERS",
                                "x": 33,
                                "y": 5,
                                "w": 32,
                                "h": 6,
                                "font_size": 2.2,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r4",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Use these quick-reference cards to run the denizens of the Great Library of Margreve Keep and the hazards within. Tactics and GM notes help you keep the action swift, playful, and memorable.",
                                "x": 33,
                                "y": 10,
                                "w": 42,
                                "h": 10,
                                "font_size": 0.95,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.2
                            },
                            {
                                "id": "r5",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "1$",
                                "x": 79,
                                "y": 5,
                                "w": 13,
                                "h": 11,
                                "font_size": 2.2,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r6",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ELSBETH VANE",
                                "x": 39,
                                "y": 18,
                                "w": 25,
                                "h": 4,
                                "font_size": 1.9,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r7",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Medium humanoid (human), lawful neutral",
                                "x": 66,
                                "y": 19,
                                "w": 28,
                                "h": 3,
                                "font_size": 0.82,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r8",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Armor Class 12",
                                "x": 42,
                                "y": 22,
                                "w": 15,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r9",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Hit Points 18",
                                "x": 60,
                                "y": 22,
                                "w": 15,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r10",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Speed 30 ft.",
                                "x": 79,
                                "y": 22,
                                "w": 13,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r11",
                                "source": "ocr",
                                "kind": "table",
                                "text": "STR 8 (-1)",
                                "x": 42,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r12",
                                "source": "ocr",
                                "kind": "table",
                                "text": "DEX 12 (+1)",
                                "x": 50,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r13",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CON 12 (+1)",
                                "x": 58,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r14",
                                "source": "ocr",
                                "kind": "table",
                                "text": "INT 14 (+2)",
                                "x": 67,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r15",
                                "source": "ocr",
                                "kind": "table",
                                "text": "WIS 13 (+1)",
                                "x": 76,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r16",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CHA 11 (+0)",
                                "x": 85,
                                "y": 25,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r17",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Skills Insight +4, Investigation +4, Persuasion +2, History +4",
                                "x": 41,
                                "y": 30,
                                "w": 49,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r18",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Senses passive Perception 11",
                                "x": 41,
                                "y": 32,
                                "w": 28,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r19",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Languages Common, one regional tongue",
                                "x": 41,
                                "y": 34,
                                "w": 36,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r20",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Challenge / Proficiency Bonus CR 1/2; PB +2",
                                "x": 41,
                                "y": 36,
                                "w": 43,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r21",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "TRAITS",
                                "x": 44,
                                "y": 40,
                                "w": 11,
                                "h": 3,
                                "font_size": 1,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r22",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Prepared Clerk. Elsbeth has advantage on ability checks made to recall information about a book, record, or event documented in the library's holdings.",
                                "x": 44,
                                "y": 43,
                                "w": 48,
                                "h": 7,
                                "font_size": 0.76,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.15
                            },
                            {
                                "id": "r23",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "TOVIN QUILL",
                                "x": 40,
                                "y": 43,
                                "w": 24,
                                "h": 4,
                                "font_size": 1.85,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r24",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Medium humanoid, lawful neutral",
                                "x": 67,
                                "y": 43,
                                "w": 26,
                                "h": 3,
                                "font_size": 0.82,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r25",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Armor Class 14",
                                "x": 42,
                                "y": 46,
                                "w": 15,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r26",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Hit Points 22",
                                "x": 60,
                                "y": 46,
                                "w": 14,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r27",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Speed 30 ft.",
                                "x": 79,
                                "y": 46,
                                "w": 13,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r28",
                                "source": "ocr",
                                "kind": "table",
                                "text": "STR 9 (-1)",
                                "x": 42,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r29",
                                "source": "ocr",
                                "kind": "table",
                                "text": "DEX 14 (+2)",
                                "x": 50,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r30",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CON 12 (+1)",
                                "x": 58,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r31",
                                "source": "ocr",
                                "kind": "table",
                                "text": "INT 15 (+2)",
                                "x": 67,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r32",
                                "source": "ocr",
                                "kind": "table",
                                "text": "WIS 14 (+2)",
                                "x": 76,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r33",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CHA 10 (+0)",
                                "x": 85,
                                "y": 49,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r34",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Saving Throws Int +4, Wis +4",
                                "x": 41,
                                "y": 54,
                                "w": 33,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r35",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Skills Investigation +4, Perception +4, Insight +4, Arcana +4",
                                "x": 41,
                                "y": 56,
                                "w": 49,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r36",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Senses passive Perception 14",
                                "x": 41,
                                "y": 58,
                                "w": 29,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r37",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Languages Common, one scholarly language",
                                "x": 41,
                                "y": 60,
                                "w": 40,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r38",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Challenge / Proficiency Bonus CR 1; PB +2",
                                "x": 41,
                                "y": 62,
                                "w": 42,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r39",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "TRAITS",
                                "x": 44,
                                "y": 66,
                                "w": 11,
                                "h": 3,
                                "font_size": 1,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r40",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Eager Guardian. Tovin adds +2 to his AC while in the library or within 30 feet of its central stacks.",
                                "x": 44,
                                "y": 69,
                                "w": 48,
                                "h": 6,
                                "font_size": 0.76,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.15
                            },
                            {
                                "id": "r41",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "ARCHIVE SPRITE \u201cPELL\u201d",
                                "x": 40,
                                "y": 69,
                                "w": 30,
                                "h": 4,
                                "font_size": 1.55,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r42",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Tiny fey, unaligned",
                                "x": 67,
                                "y": 69,
                                "w": 17,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r43",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Armor Class 15",
                                "x": 42,
                                "y": 72,
                                "w": 15,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r44",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Hit Points 26",
                                "x": 60,
                                "y": 72,
                                "w": 14,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r45",
                                "source": "ocr",
                                "kind": "label",
                                "text": "Speed 20 ft., fly 30 ft. (hover)",
                                "x": 79,
                                "y": 72,
                                "w": 20,
                                "h": 3,
                                "font_size": 0.8,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r46",
                                "source": "ocr",
                                "kind": "table",
                                "text": "STR 4 (-3)",
                                "x": 42,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r47",
                                "source": "ocr",
                                "kind": "table",
                                "text": "DEX 18 (+4)",
                                "x": 50,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r48",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CON 12 (+1)",
                                "x": 58,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r49",
                                "source": "ocr",
                                "kind": "table",
                                "text": "INT 14 (+2)",
                                "x": 67,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r50",
                                "source": "ocr",
                                "kind": "table",
                                "text": "WIS 12 (+1)",
                                "x": 76,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r51",
                                "source": "ocr",
                                "kind": "table",
                                "text": "CHA 10 (+0)",
                                "x": 85,
                                "y": 75,
                                "w": 7,
                                "h": 5,
                                "font_size": 0.82,
                                "font_weight": "600",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r52",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Saving Throws Dex +6, Int +4",
                                "x": 41,
                                "y": 80,
                                "w": 33,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r53",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Skills Arcana +4, Investigation +4, Perception +4, Sleight of Hand +6",
                                "x": 41,
                                "y": 82,
                                "w": 54,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r54",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Senses darkvision 60 ft., passive Perception 14",
                                "x": 41,
                                "y": 84,
                                "w": 45,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r55",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Languages Common, Sylvan; can read any written text",
                                "x": 41,
                                "y": 86,
                                "w": 47,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r56",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Challenge / Proficiency Bonus CR 1; PB +2",
                                "x": 41,
                                "y": 88,
                                "w": 42,
                                "h": 3,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1
                            },
                            {
                                "id": "r57",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "TRAITS",
                                "x": 44,
                                "y": 91,
                                "w": 11,
                                "h": 3,
                                "font_size": 1,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r58",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Incorporeal. Pell can move through other creatures and objects as if they were difficult terrain. Pell takes force damage if it ends its turn inside an object. Prankster. Pell can take the Disengage or Hide action as a bonus action on its turn.",
                                "x": 44,
                                "y": 94,
                                "w": 49,
                                "h": 6,
                                "font_size": 0.74,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.12
                            },
                            {
                                "id": "r59",
                                "source": "ocr",
                                "kind": "heading",
                                "text": "MONSTER MISCHIEF",
                                "x": 31,
                                "y": 91,
                                "w": 21,
                                "h": 3,
                                "font_size": 1.6,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "uppercase",
                                "line_height": 1
                            },
                            {
                                "id": "r60",
                                "source": "ocr",
                                "kind": "body",
                                "text": "Keep low-level fights quick. Use hazards to create movement and laughter, not a slog. Mix NPCs and sprites with hazards for dynamic scenes. Reward clever ideas and curiosity. Foreshadow bigger threats\u2014then let the heroes shine.",
                                "x": 35,
                                "y": 94,
                                "w": 46,
                                "h": 6,
                                "font_size": 0.78,
                                "font_weight": "400",
                                "font_style": "normal",
                                "text_align": "left",
                                "text_transform": "none",
                                "line_height": 1.15
                            },
                            {
                                "id": "r61",
                                "source": "ocr",
                                "kind": "badge",
                                "text": "7",
                                "x": 48,
                                "y": 98,
                                "w": 4,
                                "h": 2,
                                "font_size": 1.2,
                                "font_weight": "700",
                                "font_style": "normal",
                                "text_align": "center",
                                "text_transform": "none",
                                "line_height": 1
                            }
                        ]
                    }
                },
                "8": {
                    "page_number": 8,
                    "page_key": "finale",
                    "label": "Finale",
                    "generated_at": "2026-06-09T10:21:13+00:00",
                    "public_path": "/assets/generated-art/project_2/packet_pages/ai-final-page-08-finale-20260609-101706.png",
                    "file_name": "ai-final-page-08-finale-20260609-101706.png",
                    "model": "gpt-image-2",
                    "size": "2048x2640",
                    "quality": "high",
                    "bytes": 9792723,
                    "reference_count": 8,
                    "reference_public_paths": [
                        "/assets/odos-packet-raster/v1/brand/odos-full-logo-v1.png",
                        "/assets/odos-packet-raster/v1/layout/page-frame-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-coin-v1.png",
                        "/assets/odos-packet-raster/v1/brand/odos-d20-v1.png",
                        "/assets/odos-packet-raster/v1/brand/tavern-keeper-tip-medallion-v1.png",
                        "/assets/generated-art/project_2/battlemaps/20260608-084217-primary-encounter-map-cebf5f.png",
                        "/assets/generated-art/project_2/battlemaps/20260608-084323-finale-battlemap-27dec6.png",
                        "/assets/generated-art/project_2/monster_images/20260608-083554-animated-paper-scrap-e8ecd0.png"
                    ],
                    "prompt": "Create the FINAL AI-finished raster page image for a premium One Dollar One Shots 5e-compatible adventure packet.\n\nCanvas: US Letter portrait page, 8.5x11 inch ratio, straight-on flat page, full page visible, no browser chrome, no PDF toolbar, no screenshot frame.\n\nOutput style: professional high-end fantasy tabletop RPG product page, ornate parchment, gold filigree, purple gemstones, crimson and teal enamel ribbons, painterly fantasy art, crisp print layout, polished and readable.\n\nBrand consistency: use the supplied ODOS logo, one-dollar coin, purple d20, tavern keeper, cointoad, page plates, and project art as visual references. Keep the same fantasy-product identity across pages.\n\nCharacter and asset consistency: when project NPC, monster, setting, or battlemap reference images are supplied, use them as the visual truth. Do not replace a matched character with a different design.\n\nText fidelity: typeset the provided headings exactly when possible. Use the provided prose as the source of truth. If body copy is too long to render perfectly as image text, preserve the correct section structure and use clean readable paragraph-like text blocks without inventing unrelated names or facts.\n\nPage 8: Finale (finale)\n\nAdventure title: Codex QA Workflow Test 20260608\n\nPage layout direction: Finale page. Use battlemap or finale art as the top anchor, then clear panels for setup, objective, stakes, win conditions, rewards, and final tip.\n\nSource content for this page:\nSection Title: Finale, Win Conditions, and Rewards Finale Setup: Finale Antagonist Objective: Villain/Antagonist Objective The archive sprite wants to make the records \u201cmake sense.\u201d It is compelled to align entries, remove contradictions, and preserve the town\u2019s civic order\u2014by overwriting inconvenient truths with neat, mistaken ones. Stakes: Battlefield or Social Stakes This can be run as a combat scene, a ritual negotiation, or a hybrid of...; Battlefield or Social Stakes This can be run as a combat scene, a ritual negotiation, or a hybrid of...; The stakes are immediate: if the market begins with the false ledger, the town legally accepts the...; The chamber is crowded with shelves, hanging labels, the true ledger anchor, and drifting paper... Win Conditions: Win Conditions The party succeeds if they accomplish any of the following: - Restore the true ledger using...; Win Conditions The party succeeds if they accomplish any of the following: - Restore the true ledger using...; - Calm or convince the sprite to stop \u201ccorrecting\u201d the town.; - Break the ritual\u2019s false anchor and stabilize the archive.; - Use the Treasure and Rewards: Treasure and Rewards - Civic payment: A modest purse of coin suitable for low-level heroes - Community...; Treasure and Rewards - Civic payment: A modest purse of coin suitable for low-level heroes - Community...; - Seal of Recall: Once per day, reveal erased or magically altered ink on a page for a few moments.; - Clerk\u2019s Token: Advantage on one Persuasion check with local officials or gatekeepers in the same region.; - Story rewards: Restored names, repaired marriages/debts, a public commendation, and a standing... Tavern Keeper Tip: End on a high note. Celebrate success and leave one small mystery for later.\n\nAvoid: modern web UI, gray placeholders, visible crop marks, overlapping panels, illegible clutter, dense NPC grids, random extra logos, watermarks, distorted faces, or mismatched entity art."
                }
            },
            "layout_key": "table_ready_classic",
            "updated_at": "2026-06-10T07:41:53+00:00",
            "print_spec": {
                "paper": "US Letter",
                "width": "8.5in",
                "height": "11in",
                "page_image_size": "2048x2640",
                "workflow": "AI-finished raster page images generated by queued packet_pages jobs and packaged into a print/save PDF preview."
            }
        },
        "manifest_public_path": "/assets/generated-art/project_2/packet_pages/ai-final-manifest.json",
        "output_public_dir": "/assets/generated-art/project_2/packet_pages",
        "project_assets": [
            {
                "public_path": "/assets/generated-art/project_2/setting_images/20260608-081906-cover-9a90d6.png",
                "title": "Cover",
                "stage_key": "setting_images",
                "stage_label": "Setting Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/setting_images/20260608-082012-primary-location-07ecb2.png",
                "title": "Primary Location",
                "stage_key": "setting_images",
                "stage_label": "Setting Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/setting_images/20260608-082123-key-scene-02b527.png",
                "title": "Key Scene",
                "stage_key": "setting_images",
                "stage_label": "Setting Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/setting_images/20260608-082418-secondary-location-9794a9.png",
                "title": "Secondary Location",
                "stage_key": "setting_images",
                "stage_label": "Setting Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/npc_images/20260608-083044-elsbeth-vane-873ac7.png",
                "title": "Elsbeth Vane",
                "stage_key": "npc_images",
                "stage_label": "Npc Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/npc_images/20260608-083129-tovin-quill-0e4300.png",
                "title": "Tovin Quill",
                "stage_key": "npc_images",
                "stage_label": "Npc Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/npc_images/20260608-083210-archive-sprite-pell-53cd30.png",
                "title": "Archive Sprite Pell",
                "stage_key": "npc_images",
                "stage_label": "Npc Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/npc_images/20260608-083324-sheriff-brin-hollow-f3812d.png",
                "title": "Sheriff Brin Hollow",
                "stage_key": "npc_images",
                "stage_label": "Npc Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/monster_images/20260608-083554-animated-paper-scrap-e8ecd0.png",
                "title": "Animated Paper Scrap",
                "stage_key": "monster_images",
                "stage_label": "Monster Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/monster_images/20260608-083643-living-seal-e8d8da.png",
                "title": "Living Seal",
                "stage_key": "monster_images",
                "stage_label": "Monster Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/monster_images/20260608-083740-ink-bite-swarm-59dd3d.png",
                "title": "Ink Bite Swarm",
                "stage_key": "monster_images",
                "stage_label": "Monster Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/monster_images/20260608-083832-copy-rite-ward-b5f1ae.png",
                "title": "Copy Rite Ward",
                "stage_key": "monster_images",
                "stage_label": "Monster Images"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/animated-paper-scrap-token-48294f6d.png",
                "title": "Animated Paper Scrap Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/archive-sprite-pell-token-92c9220d.png",
                "title": "Archive Sprite Pell Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/copy-rite-ward-token-8a7e9075.png",
                "title": "Copy Rite Ward Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/elsbeth-vane-token-045038d5.png",
                "title": "Elsbeth Vane Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/ink-bite-swarm-token-750cea8a.png",
                "title": "Ink Bite Swarm Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/living-seal-token-28df5ebc.png",
                "title": "Living Seal Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/sheriff-brin-hollow-token-090d4c5f.png",
                "title": "Sheriff Brin Hollow Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/token_pack/tovin-quill-token-420b22c8.png",
                "title": "Tovin Quill Token",
                "stage_key": "token_pack",
                "stage_label": "Token Pack"
            },
            {
                "public_path": "/assets/generated-art/project_2/battlemaps/20260608-084217-primary-encounter-map-cebf5f.png",
                "title": "Primary Encounter Map",
                "stage_key": "battlemaps",
                "stage_label": "Battlemaps"
            },
            {
                "public_path": "/assets/generated-art/project_2/battlemaps/20260608-084323-finale-battlemap-27dec6.png",
                "title": "Finale Battlemap",
                "stage_key": "battlemaps",
                "stage_label": "Battlemaps"
            }
        ]
    }
}