{
  "name": "Encelade \u2014 Generate a deck from a prompt",
  "nodes": [
    {
      "id": "4f801fda-d51a-49dd-9fd7-a54e643bb1b0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        48
      ],
      "parameters": {
        "width": 480,
        "height": 880,
        "content": "## Encelade \u2014 Generate a deck from a prompt\n\n### How it works\n\nThis workflow manually starts an Encelade deck generation job from a prompt, then polls Encelade until the deck is ready or the generation fails. It waits 20 seconds between status checks, returns the deck link and project PID on success, and stops with an error if Encelade reports a failed generation.\n\n### Setup steps\n\n- Configure the Encelade credentials/API key used by the Encelade nodes.\n- Set the prompt and any deck generation options in the \u201cGenerate Presentation Deck\u201d node.\n- Ensure the \u201cCheck Deck Status\u201d node uses the session ID returned by \u201cGenerate Presentation Deck\u201d.\n- Verify the IF conditions in \u201cIf Deck Ready\u201d and \u201cIf Generation Failed\u201d match the phase values returned by Encelade.\n\n### Customization\n\nAdjust the wait interval, retry behavior, prompt content, and returned fields such as deckLink or projectPid to fit your deck generation process."
      },
      "typeVersion": 1
    },
    {
      "id": "b4bfdf46-244a-48aa-8f5c-97cab56c3944",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 320,
        "content": "## Start deck generation\n\nManual execution begins the workflow and sends the initial prompt to Encelade to create a deck generation job."
      },
      "typeVersion": 1
    },
    {
      "id": "c5f2b86b-ca66-4604-a62d-81de1c08e72b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 320,
        "content": "## Poll generation status\n\nThis central polling cluster waits before checking Encelade for the current status of the deck generation job."
      },
      "typeVersion": 1
    },
    {
      "id": "b787f6da-6f4f-43fb-9df5-d8ee3a95bbaf",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        48
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 432,
        "content": "## Handle ready deck\n\nThis branch evaluates whether the deck is complete and, when ready, formats the successful output with the deck link and project PID."
      },
      "typeVersion": 1
    },
    {
      "id": "3d5dc5e2-7e62-423b-a283-59fa57d2eaa8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        512
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 416,
        "content": "## Handle failure or retry\n\nThis lower-right branch checks whether generation failed; failed jobs stop with an error, while unfinished jobs loop back to the wait step for another status check."
      },
      "typeVersion": 1
    },
    {
      "id": "a1111111-1111-4111-8111-111111111111",
      "name": "Manual Execution Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -120,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b2222222-2222-4222-8222-222222222222",
      "name": "Generate Presentation Deck",
      "type": "n8n-nodes-encelade.encelade",
      "position": [
        100,
        320
      ],
      "parameters": {
        "topic": "Q3 product strategy review",
        "resource": "presentation",
        "operation": "generate",
        "pageCount": "6",
        "outlineHints": [
          "Market landscape and where we win",
          "Our three bets for Q3",
          "Targets, milestones, and resourcing"
        ],
        "additionalFields": {
          "tone": "Confident and concise",
          "theme": "default",
          "audience": "Executive team",
          "themeMode": "light",
          "mediaProvider": "unsplash"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c3333333-3333-4333-8333-333333333333",
      "name": "Wait 20 Seconds",
      "type": "n8n-nodes-base.wait",
      "position": [
        352,
        320
      ],
      "parameters": {
        "unit": "seconds",
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "d4444444-4444-4444-8444-444444444444",
      "name": "Check Deck Status",
      "type": "n8n-nodes-encelade.encelade",
      "position": [
        576,
        320
      ],
      "parameters": {
        "resource": "session",
        "operation": "getStatus",
        "sessionId": "={{ $('Generate Presentation Deck').item.json.sessionId }}"
      },
      "typeVersion": 1
    },
    {
      "id": "e5555555-5555-4555-8555-555555555555",
      "name": "If Deck Ready",
      "type": "n8n-nodes-base.if",
      "position": [
        800,
        320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-done",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.phase }}",
              "rightValue": "done"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f6666666-6666-4666-8666-666666666666",
      "name": "Set Deck Details",
      "type": "n8n-nodes-base.set",
      "position": [
        1008,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "as-link",
              "name": "deckLink",
              "type": "string",
              "value": "={{ $json.link }}"
            },
            {
              "id": "as-pid",
              "name": "projectPid",
              "type": "string",
              "value": "={{ $json.projectPid }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a7777777-7777-4777-8777-777777777777",
      "name": "If Generation Failed",
      "type": "n8n-nodes-base.if",
      "position": [
        976,
        688
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-failed",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.phase }}",
              "rightValue": "failed"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a8888888-8888-4888-8888-888888888888",
      "name": "Stop on Generation Failure",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        1200,
        768
      ],
      "parameters": {
        "errorMessage": "={{ 'Encelade generation failed (phase: ' + $json.phase + ', status: ' + ($json.status || 'unknown') + ')' }}"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "If Deck Ready": {
      "main": [
        [
          {
            "node": "Set Deck Details",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "If Generation Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 20 Seconds": {
      "main": [
        [
          {
            "node": "Check Deck Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Deck Status": {
      "main": [
        [
          {
            "node": "If Deck Ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Generation Failed": {
      "main": [
        [
          {
            "node": "Stop on Generation Failure",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 20 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Execution Trigger": {
      "main": [
        [
          {
            "node": "Generate Presentation Deck",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Presentation Deck": {
      "main": [
        [
          {
            "node": "Wait 20 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}