{
  "version": 2,
  "combos": [
    {
      "id": "code-qa-panel",
      "name": "Code QA Panel (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "optional",
      "est_vram_mb": 3200,
      "desc": "3 specialists audit code: bugs, docs, security.",
      "steps": [
        {
          "id": "bugs",
          "model": "qwen2.5-coder:1.5b",
          "role": "Bug Hunter",
          "system": "List ONLY syntax errors, logic flaws, likely bugs as short bullets. No praise, no rewrite."
        },
        {
          "id": "docs",
          "model": "llama3.2:1b",
          "role": "Documenter",
          "system": "Output a concise Markdown README: what it does + how to use. No code changes."
        },
        {
          "id": "sec",
          "model": "qwen2.5-coder:1.5b",
          "role": "Security",
          "system": "Report ONLY security issues: missing validation, injection, plaintext secrets. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "code-generator-duel",
      "name": "Code Generator Duel (Ollama)",
      "pattern": "judge",
      "category": "coding",
      "use_rag": "optional",
      "est_vram_mb": 3400,
      "desc": "Two coders write the same thing; a judge picks the cleaner.",
      "steps": [
        {
          "id": "a",
          "model": "qwen2.5-coder:3b",
          "role": "Coder A",
          "system": "Write clean, correct code for the request. Code first, minimal prose."
        },
        {
          "id": "b",
          "model": "starcoder2:3b",
          "role": "Coder B",
          "system": "Write clean, correct code for the request. Code only."
        }
      ],
      "judge": {
        "model": "qwen2.5-coder:3b",
        "system": "Two code solutions (A, B) are given. Output the single best one, cleaned up. Code only."
      },
      "initial": true
    },
    {
      "id": "code-translator",
      "name": "Code Translator (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3200,
      "desc": "Port code between languages (PHP↔Pascal↔Bash): analyze → emit → lint.",
      "steps": [
        {
          "id": "analyze",
          "model": "qwen2.5-coder:3b",
          "role": "Analyzer",
          "system": "Extract the logic of the given code as terse pseudo-steps. State source + intended target language if named.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "emit",
          "model": "qwen2.5-coder:3b",
          "role": "Porter",
          "system": "Using the pseudo-steps, write the equivalent code in the requested target language. Code only.",
          "prompt": "Original request:\n{{PROMPT}}\n\nLogic:\n{{PREV}}"
        },
        {
          "id": "lint",
          "model": "qwen2.5-coder:1.5b",
          "role": "Linter",
          "system": "Check the code for obvious syntax/style problems. Output the corrected final code only.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "refactor-document",
      "name": "Refactor & Document (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Refactor for clarity → add comments → sanity check.",
      "steps": [
        {
          "id": "refactor",
          "model": "qwen2.5-coder:3b",
          "role": "Refactorer",
          "system": "Refactor the code for clarity and structure without changing behavior. Code only.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "comment",
          "model": "qwen2.5-coder:1.5b",
          "role": "Commenter",
          "system": "Add concise, useful comments/docstrings to the code. Output the commented code.",
          "prompt": "{{PREV}}"
        },
        {
          "id": "check",
          "model": "qwen2.5-coder:1.5b",
          "role": "Checker",
          "system": "List any remaining issues in 1-3 bullets, then output the final code.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "oneliner-forge",
      "name": "One-Liner Forge (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Need → regex + sed/awk + bash one-liners side by side.",
      "steps": [
        {
          "id": "regex",
          "model": "qwen2.5-coder:1.5b",
          "role": "Regex",
          "system": "Output ONLY a regex that satisfies the request, plus a one-line explanation."
        },
        {
          "id": "sedawk",
          "model": "qwen2.5-coder:1.5b",
          "role": "sed/awk",
          "system": "Output ONLY a sed or awk one-liner for the request, plus one line of explanation."
        },
        {
          "id": "bash",
          "model": "qwen2.5-coder:3b",
          "role": "Bash",
          "system": "Output ONLY a bash one-liner for the request, plus one line of explanation."
        }
      ],
      "initial": true
    },
    {
      "id": "sql-builder",
      "name": "SQL Builder (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Plain English → SQL for MySQL + SQLite + explanation.",
      "steps": [
        {
          "id": "mysql",
          "model": "qwen2.5-coder:3b",
          "role": "MySQL",
          "system": "Write the SQL query for MySQL. Query only."
        },
        {
          "id": "sqlite",
          "model": "qwen2.5-coder:1.5b",
          "role": "SQLite",
          "system": "Write the SQL query for SQLite. Query only."
        },
        {
          "id": "explain",
          "model": "llama3.2:1b",
          "role": "Explain",
          "system": "Explain in 2-3 bullets what the requested query does."
        }
      ],
      "initial": true
    },
    {
      "id": "bug-triage",
      "name": "Bug Triage (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "optional",
      "est_vram_mb": 3000,
      "desc": "Error/log → root-cause → fix → test idea.",
      "steps": [
        {
          "id": "cause",
          "model": "qwen2.5-coder:3b",
          "role": "Diagnosis",
          "system": "From the error/log, state the most likely root cause in 1-2 sentences.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "fix",
          "model": "qwen2.5-coder:3b",
          "role": "Fix",
          "system": "Propose a concrete fix (code or steps) for this root cause.",
          "prompt": "Issue:\n{{PROMPT}}\n\nLikely cause:\n{{PREV}}"
        },
        {
          "id": "test",
          "model": "qwen2.5-coder:1.5b",
          "role": "Test",
          "system": "Suggest one test that would catch this bug. Be specific.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "commit-writer",
      "name": "Commit / PR Writer (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Diff/notes → summary → Conventional Commit + body.",
      "steps": [
        {
          "id": "summary",
          "model": "qwen2.5-coder:1.5b",
          "role": "Summary",
          "system": "Summarize what this change does in one sentence.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "commit",
          "model": "qwen2.5-coder:1.5b",
          "role": "Commit",
          "system": "Write a Conventional Commits message: a <=50-char subject line, then a short body. Output the message only.",
          "prompt": "Change summary:\n{{PREV}}\n\nDetails:\n{{PROMPT}}"
        }
      ],
      "initial": true
    },
    {
      "id": "dev-pipeline",
      "name": "Dev Pipeline (RAG) (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "always",
      "est_vram_mb": 3200,
      "desc": "Librarian condenses RAG → coder writes the code.",
      "steps": [
        {
          "id": "librarian",
          "model": "qwen2.5:3b",
          "role": "Librarian",
          "num_ctx": 8192,
          "system": "From the context, extract ONLY the syntax rules, names, and signatures relevant to the task. Terse bullets. Do NOT write code.",
          "prompt": "Context:\n{{RAG}}\n\nTask:\n{{PROMPT}}"
        },
        {
          "id": "coder",
          "model": "qwen2.5-coder:3b",
          "role": "Coder",
          "system": "Write the code using only the rules below. Code only.",
          "prompt": "Rules:\n{{PREV}}\n\nTask:\n{{PROMPT}}"
        }
      ],
      "initial": true
    },
    {
      "id": "api-designer",
      "name": "API Designer (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Idea → endpoints → example request/response payloads.",
      "steps": [
        {
          "id": "routes",
          "model": "qwen2.5-coder:3b",
          "role": "Routes",
          "system": "Design a minimal REST API for the request: list endpoints (method + path + purpose).",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "payloads",
          "model": "qwen2.5-coder:1.5b",
          "role": "Payloads",
          "system": "For these endpoints, give one example JSON request and response each.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "test-writer",
      "name": "Test Writer (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Code → unit tests + edge cases + failure modes.",
      "steps": [
        {
          "id": "tests",
          "model": "qwen2.5-coder:3b",
          "role": "Unit Tests",
          "system": "Write unit tests for the given code. Tests only."
        },
        {
          "id": "edge",
          "model": "qwen2.5-coder:1.5b",
          "role": "Edge Cases",
          "system": "List tricky edge cases this code should handle. Bullets."
        },
        {
          "id": "fail",
          "model": "llama3.2:1b",
          "role": "Failure Modes",
          "system": "List ways this code could fail at runtime. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "code-explainer",
      "name": "Code Explainer (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Code → plain English + complexity + risks.",
      "steps": [
        {
          "id": "plain",
          "model": "qwen2.5-coder:1.5b",
          "role": "Plain English",
          "system": "Explain what this code does in plain English, step by step. Brief."
        },
        {
          "id": "complexity",
          "model": "llama3.2:1b",
          "role": "Complexity",
          "system": "State the time/space complexity and any performance concerns. Brief."
        },
        {
          "id": "risks",
          "model": "qwen2.5-coder:1.5b",
          "role": "Risks",
          "system": "List correctness/security risks in this code. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "dockerfile-builder",
      "name": "Dockerfile Builder (Ollama)",
      "pattern": "sequential",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "App description → Dockerfile → compose → run notes.",
      "steps": [
        {
          "id": "dockerfile",
          "model": "qwen2.5-coder:3b",
          "role": "Dockerfile",
          "system": "Write a Dockerfile for the described app. File only.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "compose",
          "model": "qwen2.5-coder:1.5b",
          "role": "Compose",
          "system": "Write a minimal docker-compose.yml for it, plus the run command.",
          "prompt": "App:\n{{PROMPT}}\n\nDockerfile:\n{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "cron-scheduler",
      "name": "Cron Scheduler (Ollama)",
      "pattern": "parallel",
      "category": "coding",
      "use_rag": "never",
      "est_vram_mb": 2400,
      "desc": "Schedule in words → cron + systemd timer + explanation.",
      "steps": [
        {
          "id": "cron",
          "model": "qwen2.5-coder:1.5b",
          "role": "Cron",
          "system": "Output ONLY the crontab expression for the described schedule, plus the command line."
        },
        {
          "id": "systemd",
          "model": "qwen2.5-coder:1.5b",
          "role": "systemd",
          "system": "Output a systemd OnCalendar= line equivalent to the described schedule."
        },
        {
          "id": "explain",
          "model": "qwen3:0.6b",
          "role": "Explain",
          "system": "Restate when this schedule fires, in plain words."
        }
      ],
      "initial": true
    },
    {
      "id": "doc-triage",
      "name": "Document Triage (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2000,
      "desc": "Messy text → 3-bullet summary + action items + tone.",
      "steps": [
        {
          "id": "summary",
          "model": "llama3.2:1b",
          "role": "Summary",
          "system": "Summarize the text in exactly 3 bullet points."
        },
        {
          "id": "actions",
          "model": "qwen3:0.6b",
          "role": "Actions",
          "system": "Extract action items / tasks / dates as a JSON checklist."
        },
        {
          "id": "tone",
          "model": "smollm2:360m",
          "role": "Sentiment",
          "system": "State the tone in 1-3 words (e.g. urgent, formal)."
        }
      ],
      "initial": true
    },
    {
      "id": "meeting-minutes",
      "name": "Meeting Minutes (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Transcript → summary + decisions + action items + attendees.",
      "steps": [
        {
          "id": "summary",
          "model": "llama3.2:3b",
          "role": "Summary",
          "system": "Summarize the meeting in 3-5 bullets."
        },
        {
          "id": "decisions",
          "model": "llama3.2:1b",
          "role": "Decisions",
          "system": "List decisions made. Bullets."
        },
        {
          "id": "actions",
          "model": "qwen2.5:1.5b",
          "role": "Action Items",
          "system": "List action items with owner + due if stated. JSON."
        },
        {
          "id": "people",
          "model": "qwen3:0.6b",
          "role": "Attendees",
          "system": "List the people/speakers mentioned."
        }
      ],
      "initial": true
    },
    {
      "id": "email-composer",
      "name": "Email Composer (Ollama)",
      "pattern": "sequential",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Intent → draft → tone polish → subject + TL;DR.",
      "steps": [
        {
          "id": "draft",
          "model": "llama3.2:3b",
          "role": "Draft",
          "system": "Write a clear email for the user's intent.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "polish",
          "model": "qwen2.5:1.5b",
          "role": "Polish",
          "system": "Polish the email for tone and concision. Output the email.",
          "prompt": "{{PREV}}"
        },
        {
          "id": "subject",
          "model": "qwen3:0.6b",
          "role": "Subject + TL;DR",
          "system": "Give a subject line and a one-line TL;DR for this email.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "spreadsheet-formula",
      "name": "Spreadsheet Formula (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Describe need → Excel + Google Sheets formula + explanation.",
      "steps": [
        {
          "id": "excel",
          "model": "qwen2.5-coder:1.5b",
          "role": "Excel",
          "system": "Output ONLY the Excel formula for the request."
        },
        {
          "id": "gsheets",
          "model": "qwen2.5-coder:1.5b",
          "role": "Google Sheets",
          "system": "Output ONLY the Google Sheets formula for the request."
        },
        {
          "id": "explain",
          "model": "llama3.2:1b",
          "role": "Explain",
          "system": "Explain in 1-2 lines what the formula computes."
        }
      ],
      "initial": true
    },
    {
      "id": "doc-qa",
      "name": "Document Q&A (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "optional",
      "est_vram_mb": 3000,
      "desc": "Long doc → TL;DR + outline + key terms + questions it answers.",
      "steps": [
        {
          "id": "tldr",
          "model": "llama3.2:3b",
          "role": "TL;DR",
          "system": "Give a 2-3 sentence TL;DR of the document."
        },
        {
          "id": "outline",
          "model": "llama3.2:1b",
          "role": "Outline",
          "system": "Give a bulleted outline of the document's structure."
        },
        {
          "id": "terms",
          "model": "qwen2.5:1.5b",
          "role": "Key Terms",
          "system": "List the key terms/definitions in the document."
        },
        {
          "id": "questions",
          "model": "qwen3:0.6b",
          "role": "Answers",
          "system": "List 5 questions this document answers."
        }
      ],
      "initial": true
    },
    {
      "id": "resume-polish",
      "name": "Resume / Bio Polish (Ollama)",
      "pattern": "sequential",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Rough bio → polish → ATS keywords.",
      "steps": [
        {
          "id": "polish",
          "model": "llama3.2:3b",
          "role": "Polish",
          "system": "Rewrite the bio/resume text to be crisp and professional.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "keywords",
          "model": "qwen2.5:1.5b",
          "role": "Keywords",
          "system": "List relevant ATS keywords/skills implied by this text.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "proposal-writer",
      "name": "Proposal Writer (Ollama)",
      "pattern": "sequential",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Idea → outline → draft → exec summary.",
      "steps": [
        {
          "id": "outline",
          "model": "qwen2.5:3b",
          "role": "Outline",
          "system": "Create a proposal outline for the idea.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "draft",
          "model": "llama3.2:3b",
          "role": "Draft",
          "system": "Expand the outline into a short proposal draft.",
          "prompt": "Idea:\n{{PROMPT}}\n\nOutline:\n{{PREV}}"
        },
        {
          "id": "summary",
          "model": "qwen2.5:1.5b",
          "role": "Exec Summary",
          "system": "Write a 3-sentence executive summary of this proposal.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "faq-generator",
      "name": "FAQ Generator (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Product/topic → FAQ + objections + support replies.",
      "steps": [
        {
          "id": "faq",
          "model": "llama3.2:3b",
          "role": "FAQ",
          "system": "Write 5 FAQ question/answer pairs for the topic."
        },
        {
          "id": "objections",
          "model": "qwen2.5:1.5b",
          "role": "Objections",
          "system": "List likely objections/concerns and a short rebuttal each."
        },
        {
          "id": "replies",
          "model": "llama3.2:1b",
          "role": "Support Replies",
          "system": "Write 3 friendly canned support replies for common issues."
        }
      ],
      "initial": true
    },
    {
      "id": "changelog-writer",
      "name": "Changelog Writer (Ollama)",
      "pattern": "sequential",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Commits/notes → changelog → release post.",
      "steps": [
        {
          "id": "changelog",
          "model": "qwen2.5-coder:1.5b",
          "role": "Changelog",
          "system": "Turn the notes into a grouped changelog (Added/Fixed/Changed). Markdown.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "post",
          "model": "llama3.2:3b",
          "role": "Release Post",
          "system": "Write a short, friendly release announcement from this changelog.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "invoice-extractor",
      "name": "Invoice / Receipt Extractor (Ollama)",
      "pattern": "parallel",
      "category": "office",
      "use_rag": "never",
      "est_vram_mb": 2400,
      "desc": "Messy text → line items + totals + dates.",
      "steps": [
        {
          "id": "items",
          "model": "qwen2.5-coder:1.5b",
          "role": "Line Items",
          "system": "Extract line items (description, qty, price) as a JSON array."
        },
        {
          "id": "totals",
          "model": "qwen3:0.6b",
          "role": "Totals",
          "system": "Extract subtotal, tax, and total amounts. JSON."
        },
        {
          "id": "meta",
          "model": "qwen3:0.6b",
          "role": "Dates/Parties",
          "system": "Extract dates, invoice number, and parties. JSON."
        }
      ],
      "initial": true
    },
    {
      "id": "localization-matrix",
      "name": "Localization Matrix (Ollama)",
      "pattern": "parallel",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3300,
      "desc": "UI text → Hebrew + Spanish + tooltips.",
      "steps": [
        {
          "id": "he",
          "model": "llama3.2:1b",
          "role": "Hebrew",
          "system": "Translate to natural Hebrew (RTL). Translation only."
        },
        {
          "id": "es",
          "model": "qwen2.5:1.5b",
          "role": "Spanish",
          "system": "Translate to natural Castilian Spanish. Translation only."
        },
        {
          "id": "tips",
          "model": "qwen3:0.6b",
          "role": "Tooltips",
          "system": "Write short English UI tooltips for the text. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "marketing-desk",
      "name": "Cross-Cultural Marketing (Ollama)",
      "pattern": "parallel",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3100,
      "desc": "Announcement → Spanish + Hebrew + hashtags.",
      "steps": [
        {
          "id": "es",
          "model": "qwen2.5:1.5b",
          "role": "Spanish",
          "system": "Localize to engaging Castilian Spanish. Text only."
        },
        {
          "id": "he",
          "model": "llama3.2:1b",
          "role": "Hebrew",
          "system": "Localize to natural Hebrew (RTL). Text only."
        },
        {
          "id": "tags",
          "model": "tinyllama:1.1b",
          "role": "Hashtags",
          "system": "Generate relevant social hashtags."
        }
      ],
      "initial": true
    },
    {
      "id": "polyglot",
      "name": "Polyglot (translate+validate) (Ollama)",
      "pattern": "sequential",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Translate to JSON, then validate the JSON.",
      "steps": [
        {
          "id": "translate",
          "model": "llama3.2:3b",
          "role": "Translator",
          "system": "Translate the text to Hebrew and Spanish. Output JSON {\"he\":\"...\",\"es\":\"...\"} only.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "validate",
          "model": "qwen2.5-coder:1.5b",
          "role": "Validator",
          "system": "Validate and fix the JSON so it is well-formed UTF-8. Output ONLY the corrected JSON.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "translator-pro",
      "name": "Translator Pro (verify loop) (Ollama)",
      "pattern": "sequential",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3200,
      "desc": "Translate → back-translate to verify → fix drift.",
      "steps": [
        {
          "id": "fwd",
          "model": "llama3.2:3b",
          "role": "Translate",
          "system": "Translate the text to the requested target language. Translation only.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "back",
          "model": "qwen2.5:3b",
          "role": "Back-translate",
          "system": "Translate the following back to English literally, to check fidelity.",
          "prompt": "{{PREV}}"
        },
        {
          "id": "final",
          "model": "llama3.2:3b",
          "role": "Final",
          "system": "Given the original request, the translation, and its back-translation, output the corrected final translation only.",
          "prompt": "Original:\n{{PROMPT}}\n\nBack-translation check:\n{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "multilingual-broadcast",
      "name": "Multilingual Broadcast (Ollama)",
      "pattern": "parallel",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3400,
      "desc": "One text → Hebrew + Spanish + Arabic + French at once.",
      "steps": [
        {
          "id": "he",
          "model": "llama3.2:1b",
          "role": "Hebrew",
          "system": "Translate to Hebrew (RTL). Translation only."
        },
        {
          "id": "es",
          "model": "qwen2.5:1.5b",
          "role": "Spanish",
          "system": "Translate to Spanish. Translation only."
        },
        {
          "id": "ar",
          "model": "llama3.2:3b",
          "role": "Arabic",
          "system": "Translate to Arabic (RTL). Translation only."
        },
        {
          "id": "fr",
          "model": "qwen2.5:1.5b",
          "role": "French",
          "system": "Translate to French. Translation only."
        }
      ],
      "initial": true
    },
    {
      "id": "tone-rewriter",
      "name": "Tone Rewriter (Ollama)",
      "pattern": "parallel",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Text → formal + casual + concise versions.",
      "steps": [
        {
          "id": "formal",
          "model": "qwen2.5:1.5b",
          "role": "Formal",
          "system": "Rewrite the text in a formal, professional tone."
        },
        {
          "id": "casual",
          "model": "llama3.2:1b",
          "role": "Casual",
          "system": "Rewrite the text in a friendly, casual tone."
        },
        {
          "id": "concise",
          "model": "qwen2.5:1.5b",
          "role": "Concise",
          "system": "Rewrite the text as concisely as possible without losing meaning."
        }
      ],
      "initial": true
    },
    {
      "id": "grammar-clarity",
      "name": "Grammar & Clarity (Ollama)",
      "pattern": "sequential",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Text → grammar fix → clarity → tighten.",
      "steps": [
        {
          "id": "grammar",
          "model": "qwen2.5:3b",
          "role": "Grammar",
          "system": "Fix grammar and spelling. Output corrected text only.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "tighten",
          "model": "llama3.2:3b",
          "role": "Tighten",
          "system": "Improve clarity and remove redundancy. Output the final text.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "subtitle-translator",
      "name": "Subtitle Translator (Ollama)",
      "pattern": "sequential",
      "category": "language",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Transcript lines → translate → keep timing/format.",
      "steps": [
        {
          "id": "translate",
          "model": "llama3.2:3b",
          "role": "Translate",
          "system": "Translate each subtitle line to the requested language, keeping line breaks and any timecodes intact.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "tidy",
          "model": "qwen2.5:1.5b",
          "role": "Tidy",
          "system": "Ensure line lengths are subtitle-friendly (short lines). Output the final lines.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "media-director",
      "name": "Media Director (Ollama)",
      "pattern": "sequential",
      "category": "image",
      "use_rag": "never",
      "est_vram_mb": 2200,
      "desc": "Idea → detailed image-generation prompt.",
      "steps": [
        {
          "id": "expand",
          "model": "llama3.2:3b",
          "role": "Prompt Expander",
          "system": "Expand the idea into a detailed, comma-separated image prompt: subject, lighting, lens, style tags. One line.",
          "prompt": "{{PROMPT}}"
        }
      ],
      "initial": true
    },
    {
      "id": "image-prompt-studio",
      "name": "Image Prompt Studio (Ollama)",
      "pattern": "parallel",
      "category": "image",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Idea → 3 style prompts: photoreal + illustration + cinematic.",
      "steps": [
        {
          "id": "photo",
          "model": "llama3.2:3b",
          "role": "Photoreal",
          "system": "Write a photorealistic image prompt for the idea: camera, lens, lighting, detail tags. One line."
        },
        {
          "id": "illus",
          "model": "qwen2.5:1.5b",
          "role": "Illustration",
          "system": "Write an illustration/art-style image prompt for the idea: medium, style, palette tags. One line."
        },
        {
          "id": "cine",
          "model": "llama3.2:1b",
          "role": "Cinematic",
          "system": "Write a cinematic image prompt for the idea: mood, composition, film tags. One line."
        }
      ],
      "initial": true
    },
    {
      "id": "prompt-negative-params",
      "name": "Prompt + Negative + Params (Ollama)",
      "pattern": "sequential",
      "category": "image",
      "use_rag": "never",
      "est_vram_mb": 2400,
      "desc": "Idea → detailed prompt → negative prompt → suggested params.",
      "steps": [
        {
          "id": "prompt",
          "model": "llama3.2:3b",
          "role": "Prompt",
          "system": "Write a detailed image prompt for the idea. One line.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "negative",
          "model": "qwen2.5:1.5b",
          "role": "Negative",
          "system": "Write a negative prompt (things to avoid) for this image. One line.",
          "prompt": "{{PREV}}"
        },
        {
          "id": "params",
          "model": "qwen3:0.6b",
          "role": "Params",
          "system": "Suggest CFG scale, steps, and size for this image. JSON.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "video-storyboard",
      "name": "Video Storyboard (Ollama)",
      "pattern": "sequential",
      "category": "image",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Concept → scenes → shot list → image prompts.",
      "steps": [
        {
          "id": "scenes",
          "model": "llama3.2:3b",
          "role": "Scenes",
          "system": "Break the concept into 4-6 scenes. One line each.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "shots",
          "model": "qwen2.5:1.5b",
          "role": "Shot List",
          "system": "For each scene, give a shot (angle + action).",
          "prompt": "{{PREV}}"
        },
        {
          "id": "prompts",
          "model": "llama3.2:1b",
          "role": "Prompts",
          "system": "For each shot, write a one-line image prompt.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "logo-concepts",
      "name": "Logo Concepts (Ollama)",
      "pattern": "parallel",
      "category": "image",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Brand → 3 distinct logo prompt directions.",
      "steps": [
        {
          "id": "mark",
          "model": "llama3.2:1b",
          "role": "Minimal Mark",
          "system": "Describe a minimalist logo concept + an image prompt for the brand. One line prompt."
        },
        {
          "id": "emblem",
          "model": "qwen2.5:1.5b",
          "role": "Emblem",
          "system": "Describe an emblem/badge logo concept + an image prompt. One line prompt."
        },
        {
          "id": "type",
          "model": "llama3.2:1b",
          "role": "Wordmark",
          "system": "Describe a typographic wordmark logo concept + an image prompt. One line prompt."
        }
      ],
      "initial": true
    },
    {
      "id": "debate-judge",
      "name": "Debate + Judge (Ollama)",
      "pattern": "judge",
      "category": "learning",
      "use_rag": "optional",
      "est_vram_mb": 3400,
      "desc": "3 agents propose; a judge synthesizes the best.",
      "steps": [
        {
          "id": "creative",
          "model": "llama3.2:1b",
          "role": "Creative",
          "system": "Give a creative, unorthodox solution. Brief."
        },
        {
          "id": "logical",
          "model": "qwen2.5:1.5b",
          "role": "Logical",
          "system": "Give the most logically sound solution. Brief."
        },
        {
          "id": "minimal",
          "model": "qwen3:0.6b",
          "role": "Minimalist",
          "system": "Give the simplest solution. Brief."
        }
      ],
      "judge": {
        "model": "qwen2.5:3b",
        "system": "You receive three candidate answers (Creative, Logical, Minimalist). Write ONE clean synthesized answer that takes the best of each. Respond directly to the user. Do NOT mention, label, quote, or list the candidates."
      },
      "initial": true
    },
    {
      "id": "explain-3-levels",
      "name": "Explain 3 Levels (Ollama)",
      "pattern": "parallel",
      "category": "learning",
      "use_rag": "optional",
      "est_vram_mb": 3000,
      "desc": "Concept → ELI5 + intermediate + expert at once.",
      "steps": [
        {
          "id": "eli5",
          "model": "llama3.2:1b",
          "role": "ELI5",
          "system": "Explain the concept simply, as if to a curious child. Short."
        },
        {
          "id": "mid",
          "model": "qwen2.5:1.5b",
          "role": "Intermediate",
          "system": "Explain the concept for a knowledgeable beginner. Short."
        },
        {
          "id": "expert",
          "model": "qwen2.5:3b",
          "role": "Expert",
          "system": "Explain the concept precisely for an expert, with the key nuance."
        }
      ],
      "initial": true
    },
    {
      "id": "flashcards",
      "name": "Flashcards (Ollama)",
      "pattern": "sequential",
      "category": "learning",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Text → key facts → Q/A flashcards (JSON).",
      "steps": [
        {
          "id": "facts",
          "model": "llama3.2:1b",
          "role": "Facts",
          "system": "Extract the key facts from the text. Bullets.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "cards",
          "model": "qwen2.5:1.5b",
          "role": "Cards",
          "system": "Turn the facts into Q/A flashcards. Output a JSON array of {\"q\":..,\"a\":..}.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "name-brainstorm",
      "name": "Name Brainstorm (Ollama)",
      "pattern": "judge",
      "category": "learning",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Idea → 3 brainstorms → judge shortlists.",
      "steps": [
        {
          "id": "playful",
          "model": "llama3.2:1b",
          "role": "Playful",
          "system": "Brainstorm 8 playful, catchy names for the idea."
        },
        {
          "id": "pro",
          "model": "qwen2.5:1.5b",
          "role": "Professional",
          "system": "Brainstorm 8 clean, professional names for the idea."
        },
        {
          "id": "quirky",
          "model": "tinyllama:1.1b",
          "role": "Quirky",
          "system": "Brainstorm 8 unusual, memorable names for the idea."
        }
      ],
      "judge": {
        "model": "qwen2.5:3b",
        "system": "You receive several brainstormed name lists. Pick the best 5 names overall and give a one-line reason for each. Output only the shortlist — do NOT repeat the full input lists."
      },
      "initial": true
    },
    {
      "id": "pros-cons-decision",
      "name": "Pros / Cons / Decision (Ollama)",
      "pattern": "judge",
      "category": "learning",
      "use_rag": "optional",
      "est_vram_mb": 3000,
      "desc": "Dilemma → pros + cons + risks → verdict.",
      "steps": [
        {
          "id": "pros",
          "model": "llama3.2:1b",
          "role": "Pros",
          "system": "List the strongest pros/arguments for the option. Bullets."
        },
        {
          "id": "cons",
          "model": "qwen2.5:1.5b",
          "role": "Cons",
          "system": "List the strongest cons/arguments against. Bullets."
        },
        {
          "id": "risks",
          "model": "qwen3:0.6b",
          "role": "Risks",
          "system": "List the key risks/unknowns. Bullets."
        }
      ],
      "judge": {
        "model": "qwen2.5:3b",
        "system": "You receive pros, cons, and risks. Give a clear recommendation in one short paragraph. Do NOT restate the pros/cons/risks lists — just decide and justify briefly."
      },
      "initial": true
    },
    {
      "id": "data-extraction",
      "name": "Data Extraction Team (Ollama)",
      "pattern": "parallel",
      "category": "data",
      "use_rag": "never",
      "est_vram_mb": 2600,
      "desc": "Messy text → tech tokens + human text + timestamps.",
      "steps": [
        {
          "id": "tech",
          "model": "qwen2.5-coder:1.5b",
          "role": "Tech Parser",
          "system": "Extract ONLY IPs, file paths, URLs, error codes. JSON array."
        },
        {
          "id": "human",
          "model": "llama3.2:1b",
          "role": "Linguist",
          "system": "Extract ONLY the human-readable messages/complaints. Bullets."
        },
        {
          "id": "time",
          "model": "qwen3:0.6b",
          "role": "Timekeeper",
          "system": "Extract ONLY timestamps/dates, chronological. JSON array."
        }
      ],
      "initial": true
    },
    {
      "id": "factcheck",
      "name": "Fact-Check Interrogator (Ollama)",
      "pattern": "parallel",
      "category": "data",
      "use_rag": "optional",
      "est_vram_mb": 3000,
      "desc": "Vet claims: skeptic + timeline + related concepts.",
      "steps": [
        {
          "id": "skeptic",
          "model": "llama3.2:1b",
          "role": "Skeptic",
          "system": "List claims that sound dubious or lack evidence. Bullets."
        },
        {
          "id": "timeline",
          "model": "qwen3:0.6b",
          "role": "Timeline",
          "system": "Extract every date/event, chronological. JSON."
        },
        {
          "id": "links",
          "model": "smollm2:1.7b",
          "role": "Concepts",
          "system": "Suggest 5 related topics or works based on the themes."
        }
      ],
      "initial": true
    },
    {
      "id": "csv-cleaner",
      "name": "CSV / Data Cleaner (Ollama)",
      "pattern": "parallel",
      "category": "data",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "Messy tabular text → schema + cleaned rows + anomalies.",
      "steps": [
        {
          "id": "schema",
          "model": "qwen2.5-coder:1.5b",
          "role": "Schema",
          "system": "Infer the columns and types from the data. JSON."
        },
        {
          "id": "clean",
          "model": "qwen2.5-coder:3b",
          "role": "Cleaned",
          "system": "Output the data as clean, normalized CSV (consistent delimiters, trimmed)."
        },
        {
          "id": "anomalies",
          "model": "qwen3:0.6b",
          "role": "Anomalies",
          "system": "List rows/values that look wrong or inconsistent. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "research-digest",
      "name": "Research Digest (Ollama)",
      "pattern": "parallel",
      "category": "data",
      "use_rag": "optional",
      "est_vram_mb": 3200,
      "desc": "Article → summary + claims + counterpoints + to-verify.",
      "steps": [
        {
          "id": "summary",
          "model": "llama3.2:3b",
          "role": "Summary",
          "system": "Summarize the article in 4 bullets."
        },
        {
          "id": "claims",
          "model": "qwen2.5:1.5b",
          "role": "Claims",
          "system": "List the main claims the article makes. Bullets."
        },
        {
          "id": "counter",
          "model": "llama3.2:1b",
          "role": "Counterpoints",
          "system": "List plausible counterpoints or limitations. Bullets."
        },
        {
          "id": "verify",
          "model": "qwen3:0.6b",
          "role": "To Verify",
          "system": "List specific facts worth verifying. Bullets."
        }
      ],
      "initial": true
    },
    {
      "id": "worldbuilder",
      "name": "Sci-Fi Worldbuilder (Ollama)",
      "pattern": "parallel",
      "category": "creative",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "One prompt → environment + factions + tech + NPCs.",
      "steps": [
        {
          "id": "env",
          "model": "llama3.2:1b",
          "role": "Architect",
          "system": "Describe the physical environment/infrastructure of the setting. 1 paragraph."
        },
        {
          "id": "society",
          "model": "tinyllama:1.1b",
          "role": "Sociologist",
          "system": "Describe factions, culture, conflicts. 1 paragraph."
        },
        {
          "id": "tech",
          "model": "smollm2:360m",
          "role": "Quartermaster",
          "system": "List available technology, weapons, vehicles. Bullets."
        },
        {
          "id": "npc",
          "model": "llama3.2:1b",
          "role": "NPCs",
          "system": "Create 3 short character profiles that fit the setting."
        }
      ],
      "seed": {
        "model": "qwen2.5:1.5b",
        "system": "In 2-3 sentences, establish a shared premise for this setting: its place, era, and tone. Others will build on it — be concrete and specific.",
        "prompt": "{{PROMPT}}"
      },
      "initial": true
    },
    {
      "id": "storyteller",
      "name": "Storyteller's Workshop (Ollama)",
      "pattern": "sequential",
      "category": "creative",
      "use_rag": "never",
      "est_vram_mb": 3200,
      "desc": "Draft → edit for consistency → wrap as clean HTML.",
      "steps": [
        {
          "id": "draft",
          "model": "qwen2.5:3b",
          "role": "Writer",
          "system": "Write a rich draft for the request. Avoid relying on color names for meaning.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "edit",
          "model": "llama3.2:3b",
          "role": "Editor",
          "system": "Edit the draft for consistency and flow. Output edited text.",
          "prompt": "{{PREV}}"
        },
        {
          "id": "format",
          "model": "qwen2.5-coder:3b",
          "role": "Formatter",
          "system": "Wrap the text in clean semantic HTML (headings, paragraphs). HTML only, no commentary.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "story-continuation",
      "name": "Story Continuation (Ollama)",
      "pattern": "sequential",
      "category": "creative",
      "use_rag": "never",
      "est_vram_mb": 3000,
      "desc": "Premise → outline → next chapter → cliffhanger.",
      "steps": [
        {
          "id": "outline",
          "model": "qwen2.5:3b",
          "role": "Outline",
          "system": "Outline the next chapter for the premise. Bullets.",
          "prompt": "{{PROMPT}}"
        },
        {
          "id": "chapter",
          "model": "llama3.2:3b",
          "role": "Chapter",
          "system": "Write the next chapter from the outline.",
          "prompt": "Premise:\n{{PROMPT}}\n\nOutline:\n{{PREV}}"
        },
        {
          "id": "hook",
          "model": "llama3.2:1b",
          "role": "Cliffhanger",
          "system": "Write a one-paragraph cliffhanger ending.",
          "prompt": "{{PREV}}"
        }
      ],
      "initial": true
    },
    {
      "id": "accessibility-pass",
      "name": "Accessibility Pass (Ollama)",
      "pattern": "parallel",
      "category": "accessibility",
      "use_rag": "never",
      "est_vram_mb": 2800,
      "desc": "HTML/UI text → contrast/label issues + non-color cues + alt-text.",
      "steps": [
        {
          "id": "issues",
          "model": "qwen2.5-coder:1.5b",
          "role": "A11y Issues",
          "system": "Review the HTML/UI for accessibility issues: missing labels, alt, roles, contrast risks. Bullets."
        },
        {
          "id": "noncolor",
          "model": "llama3.2:1b",
          "role": "Non-Color Cues",
          "system": "Suggest non-color ways to convey meaning (icons, text, patterns) for any color-only cues. Bullets."
        },
        {
          "id": "alt",
          "model": "qwen2.5:1.5b",
          "role": "Alt Text",
          "system": "Write concise alt text for any images/icons mentioned. Bullets."
        }
      ],
      "initial": true
    }
  ]
}