{
  "name": "Daily Situation Report",
  "nodes": [
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "prompt",
              "value": "# DEEP RESEARCH PROMPT — IRAN WAR SITUATION REPORT\n\n**Last used:** March 8, 2026 (Day 9 of Operation Epic Fury)\n**Next use:** TBD — rerun as needed for updated SITREP\n\n---\n\n## Task\n\nProduce a comprehensive, real-time situation report (SITREP) on the current state of the war involving Iran. This is a living conflict analysis — prioritize the most recent information available, working backward chronologically. Do not rely on stale summaries.\n\n## Source Hierarchy (strictly enforce this order)\n\n1. **Arabic, Farsi, and Hebrew-language outlets** — translate key passages directly (Al Mayadeen, Al Jazeera Arabic, Iran International Farsi edition, Mehr News Agency Farsi, IRNA Farsi, Tasnim News Farsi, Ynet Hebrew, Walla Hebrew, Channel 12/13 Hebrew feeds)\n2. **Independent investigative journalists and conflict monitors** (Bellingcat, OSINT community on X/formerly Twitter — track accounts like @Nrg_OSINTeam, @YLandes, @Conflicts, @IntelCrab, @GeoConfirmed)\n3. **Regional English-language outlets** (Al Jazeera English, Middle East Eye, The Cradle, Arab News, Times of Israel, Haaretz English)\n4. **International wire services** (Reuters, AP, AFP) — use for corroboration only\n5. **Western government and US DoD statements** — treat as last resort, cross-verify everything, assume strategic messaging and information warfare framing\n\n## Core Research Questions to Answer\n\n### 1. FORCE MOVEMENTS & DISPOSITION\n\n- What military forces (ground, air, naval, proxy) are currently moving in the region and in what direction?\n- Identify specific units, brigades, or named groups where possible\n- Where are Iranian IRGC forces and affiliated militias (Hezbollah, Houthis/Ansar Allah, Hashd al-Shaabi, PIJ) currently positioned vs. 30/60/90 days ago — what has shifted?\n- Are there any confirmed or strongly rumored Israeli, US, or Gulf state force repositioning events?\n- What does satellite/OSINT imagery show about base activity, vehicle convoys, or naval movements?\n\n### 2. DEGRADED & WEAKENED DEFENSES\n\n- Which Iranian air defense systems have been struck, degraded, or confirmed destroyed? Map this geographically if possible (S-300 batteries, Bavar-373, Raad systems — what is operational vs. destroyed?)\n- Which command and control nodes, radar installations, or early warning systems are confirmed offline?\n- What has the cumulative effect of Israeli strikes been on Iran's layered air defense — what corridors are now open?\n- Which Hezbollah military infrastructure in Lebanon/Syria remains vs. what was destroyed?\n- What is the current status of Iranian-linked supply corridors (the \"land bridge\" through Iraq/Syria)?\n\n### 3. STRATEGIC INTENT — INFERRED REASONING\n\n- Based on force movements and targeting patterns, what offensive or defensive operation appears to be in preparation?\n- Are there indicators of an imminent major strike (Israel → Iran, Iran → Israel, US → Iran, or proxy escalation)?\n- What do Iranian state media and IRGC-affiliated channels signal about their posture — defiant/deterrent, or indicating vulnerability/repositioning?\n- What is the Houthi strategic calculus right now — are Red Sea operations intensifying, de-escalating, or shifting target sets?\n- What back-channel diplomatic signals (if any) are being reported by regional outlets that Western media is downplaying?\n\n### 4. NUCLEAR DIMENSION\n\n- What is the latest on Iranian nuclear site status — any confirmed activity changes at Fordow, Natanz, Isfahan?\n- Are there any reports of hardening, evacuation, or dispersal of nuclear-related assets?\n- What do IAEA reports or leaks say vs. what Iranian state media claims?\n\n### 5. HUMANITARIAN & CIVILIAN SITUATION\n\n- What is the civilian displacement picture inside Iran, Lebanon, Gaza, and Yemen right now?\n- Are there reports of internal Iranian unrest, protests, or dissent related to the war?\n\n## Output Format\n\nStructure the report as a professional SITREP with these sections:\n\n1. **EXECUTIVE SUMMARY** (3–5 sentences: the single most important thing happening right now)\n2. **FORCE DISPOSITION MAP** (narrative description of where forces are and direction of movement)\n3. **DEGRADED CAPABILITIES ASSESSMENT** (what's been broken, where the holes are)\n4. **INFERRED OPERATIONAL INTENT** (your best analytical read on what comes next and why)\n5. **NUCLEAR WATCH** (brief)\n6. **WILDCARDS & UNKNOWNS** (what you couldn't confirm, what feels like it's being suppressed)\n7. **SOURCE LOG** (every claim attributed to a specific outlet with date/time where possible)\n\n## Critical Instructions\n\n- Flag any claim made only by US government or Israeli government sources without independent corroboration as **[UNVERIFIED — SINGLE OFFICIAL SOURCE]**\n- When translating from Arabic/Farsi/Hebrew, provide the original outlet name and note it was translated\n- Do not sanitize or hedge findings to appear neutral — give your sharpest analytical read\n- If something significant happened in the last 24–72 hours, lead with it regardless of source\n- Note any information blackouts or gaps that themselves may be analytically significant\n\n## User Preferences (from March 8 session)\n\n- **Time horizon:** Last 24–72 hours (breaking developments), with 30–90 day context as needed\n- **Output format:** Conversational response in chat\n- **Trigger:** No specific trigger — want full picture"
            }
          ]
        }
      },
      "name": "Set Prompt",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        250,
        100
      ]
    },
    {
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "jsonParameters": true,
        "options": {
          "bodyContent": {
            "model": "openrouter/nvidia/nemotron-3-super-120b-a12b:free",
            "messages": [
              {
                "role": "system",
                "content": "You are a deep‑research assistant. Produce a thorough, well‑situated report on the user's requested topic for today, preserving all sources and citations."
              },
              {
                "role": "user",
                "content": "{{ $json[\"prompt\"] }}"
              }
            ],
            "temperature": 0.2,
            "max_tokens": 2000
          }
        }
      },
      "name": "Deep Research Prompt",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        500,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "jsonParameters": true,
        "options": {
          "bodyContent": {
            "model": "deepseek/deepseek-r1:free",
            "messages": [
              {
                "role": "system",
                "content": "You are a wartime intelligence fact-checker. Your job is to catch a specific class of error: CONDITIONAL COLLAPSE — where a threat, prediction, or stated intention has been written up as though it already happened.\n\nYou will receive a RESEARCH REPORT and SOURCE SNIPPETS collected during the research phase.\n\nFor EVERY factual claim in the report, classify it as one of:\n\n1. CONFIRMED EVENT — The source snippets contain direct evidence this thing happened (a strike occurred, a person was killed, a statement was made, a ship transited). Leave unchanged.\n\n2. CONDITIONAL COLLAPSE — The report states something happened, but the source snippets only show it was threatened, planned, expected, or assessed as likely. This is the critical error. Prepend: **[⚠ CONDITIONAL COLLAPSE — sources show threat/plan only, not confirmed event]**\n\n3. FABRICATED ATTRIBUTION — The report cites a specific outlet (e.g., 'ISW-CTP threads, March 17') but the source snippets from that outlet do not contain the claimed information. Prepend: **[⚠ FABRICATED ATTRIBUTION — cited source does not contain this claim]**\n\n4. NO SOURCE — The claim is not supported by ANY of the supplied source snippets. Prepend: **[⚠ UNVERIFIED — NO SOURCE IN COLLECTED DATA]**\n\n5. SINGLE OFFICIAL SOURCE — The claim relies exclusively on a US government or Israeli government statement with no independent corroboration in the source snippets. Prepend: **[⚠ UNVERIFIED — SINGLE OFFICIAL SOURCE]**\n\nPay EXTREME attention to:\n- Claims about Houthi/Ansar Allah ACTIONS vs. THREATS. If sources say 'threatened to resume' or 'vowed to attack,' that is NOT the same as 'conducted attacks' or 'continued operations.'\n- Claims about diplomatic channels being 'active' vs. 'collapsed' or 'rejected.'\n- Claims about military systems being 'degraded' vs. 'destroyed' — the degree matters.\n- Casualty figures — flag if the report uses a number not found in any source snippet.\n- Any claim where the report converts future tense or conditional language from a source into past tense or present tense.\n\nReturn the COMPLETE report with tags inserted. Do not remove, reword, or summarize any content. Only add tags where warranted.",
              },
              {
                "role": "user",
                "content": "RESEARCH REPORT:\n{{ $node['Deep Research Prompt'].json.choices[0].message.content }}\n\nSOURCE SNIPPETS:\n{{ $node['Deep Research Prompt'].json.sources }}\n"
              }
            ],
            "temperature": 0.0,
            "max_tokens": 16000
          }
        }
      },
      "name": "Verify Report — Stage 1: Binary Event Check",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        750,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "jsonParameters": true,
        "options": {
          "bodyContent": {
            "model": "deepseek/deepseek-r1:free",
            "messages": [
              {
                "role": "system",
                "content": "You are an intelligence report completeness auditor.\n\nYou will receive a research report about the Iran war. Your job is to identify SIGNIFICANT DEVELOPMENTS that are MISSING from the report.\n\nCheck whether the report covers each of the following categories. For each category, state whether it is COVERED, PARTIALLY COVERED, or MISSING:\n\n1. Latest decapitation strikes / senior officials killed (last 48 hours)\n2. Lebanon ground invasion status and scope\n3. Houthi activation status — CRITICAL: confirm whether report accurately states they have or have NOT attacked. If the report claims Houthi kinetic action occurred, flag this for immediate review.\n4. Strait of Hormuz status — open, closed, contested? Allied response to reopening requests?\n5. Interceptor / missile defense supply status for Israel and coalition\n6. Nuclear dimension — enriched uranium stockpile, facility status, IAEA access\n7. Diplomatic channels — active or collapsed? Who is mediating?\n8. Domestic US political developments related to the war (resignations, congressional action, public opinion)\n9. Humanitarian situation — casualty figures, displacement, civilian infrastructure damage\n10. Information environment — internet blackout status, OSINT gaps, disinformation\n11. Oil prices and economic impact\n12. Russia/China posture\n\nFor any category marked MISSING, write a 1-2 sentence summary of what should be included based on your knowledge, and flag it as: **[GAP — MISSING FROM REPORT: {category}]**\n\nReturn your audit as a structured checklist, then append any gap flags at the end.",
              },
              {
                "role": "user",
                "content": "RESEARCH REPORT TO AUDIT:\n{{ $node['Verify Report — Stage 1: Binary Event Check'].json.choices[0].message.content }}\n"
              }
            ],
            "temperature": 0.0,
            "max_tokens": 4000
          }
        }
      },
      "name": "Verify Report — Stage 2: Absence Check",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        1000,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "jsonParameters": true,
        "options": {
          "bodyContent": {
            "model": "openrouter/nvidia/nemotron-3-super-120b-a12b:free",
            "messages": [
              {
                "role": "system",
                "content": "You are an expert editor. Take the following deep‑research report and distill it down to its essence while preserving all source citations and key facts. Output a concise but comprehensive brief suitable for a daily situation report."
              },
              {
                "role": "user",
                "content": "Deep‑Research Report:\n{{ $json[\"choices\"][0][\"message\"][\"content\"] }}"
              }
            ],
            "temperature": 0.1,
            "max_tokens": 800
          }
        }
      },
      "name": "Distill Report",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        1250,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://files.residentliberal.com/index2.html",
        "method": "GET",
        "responseFormat": "text",
        "name": "Fetch Current HTML",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 2,
        "position": [
          1500,
          200
        ]
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "html_prompt",
              "value": "You are an expert at updating static HTML daily logs. You will be given:\n1. A new daily summary entry (1-2 lines with source citations)\n2. The current HTML content of a webpage that contains a list of daily entries (newest at top)\n\nYour task:\n- Insert the new summary as the FIRST entry in the daily log section\n- Shift all existing entries down by one position\n- Preserve ALL existing HTML structure, formatting, CSS classes, IDs, and other content\n- Do not add, remove, or modify any HTML outside of inserting the new entry in the correct location\n- Output ONLY the complete, valid HTML document (no explanations, no extra text)\n\nThe new entry should follow the exact same format as existing entries in the HTML.\n\n---\nNEW ENTRY:\n{{ $json[\"distilled_summary\"] }}\n\n---\nCURRENT HTML:\n{{ $json[\"current_html\"] }}\n"
            }
          ]
        }
      },
      "name": "Set for HTML Prompt",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        1750,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://openrouter.ai/api/v1/chat/completions",
        "method": "POST",
        "jsonParameters": true,
        "options": {
          "bodyContent": {
            "model": "openrouter/nvidia/nemotron-3-super-120b-a12b:free",
            "messages": [
              {
                "role": "system",
                "content": "You are an expert at updating static HTML daily logs. You will be given:\n1. A new daily summary entry (1-2 lines with source citations)\n2. The current HTML content of a webpage that contains a list of daily entries (newest at top)\n\nYour task:\n- Insert the new summary as the FIRST entry in the daily log section\n- Shift all existing entries down by one position\n- Preserve ALL existing HTML structure, formatting, CSS classes, IDs, and other content\n- Do not add, remove, or modify any HTML outside of inserting the new entry in the correct location\n- Output ONLY the complete, valid HTML document (no explanations, no extra text)\n\nThe new entry should follow the exact same format as existing entries in the HTML.",
                "role": "user"
                ,
                "content": "{{ $json[\"html_prompt\"] }}"
              }
            ],
            "temperature": 0.1,
            "max_tokens": 4000
          }
        }
      },
      "name": "LLM HTML Insertion",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        2000,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://files.residentliberal.com/index2.html",
        "method": "PUT",
        "responseFormat": "text",
        "options": {
          "bodyContent": "{{ $json[\"choices\"][0][\"message\"][\"content\"] }}",
          "headers": {
            "Content-Type": "text/html"
          }
        },
        "name": "Upload Updated HTML",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 2,
        "position": [
          2250,
          200
        ]
      }
    }
  ],
  "connections": {
    "Set Prompt": {
      "main": [
        [
          {
            "node": "Deep Research Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Deep Research Prompt": {
      "main": [
        [
          {
            "node": "Verify Report — Stage 1: Binary Event Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Report — Stage 1: Binary Event Check": {
      "main": [
        [
          {
            "node": "Verify Report — Stage 2: Absence Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Report — Stage 2: Absence Check": {
      "main": [
        [
          {
            "node": "Distill Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Distill Report": {
      "main": [
        [
          {
            "node": "Fetch Current HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Current HTML": {
      "main": [
        [
          {
            "node": "Set for HTML Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set for HTML Prompt": {
      "main": [
        [
          {
            "node": "LLM HTML Insertion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LLM HTML Insertion": {
      "main": [
        [
          {
            "node": "Upload Updated HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron Trigger": {
      "main": [
        [
          {
            "node": "Set Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "id": "1"
}