{
 "note": "The worksheet decision tree. Ask core_questions in order starting at first_question; the first answer whose action is \"settle\" gives a candidate classification, not a final recommendation. Compare the design with the requested automation, output quality, and human effort before choosing. Then ask every cross_question; a non-null caution is advice to pass on.",
 "levels": [
  {
   "order": 0,
   "title": "Conventional software",
   "who": "Your software applies rules, lookups, or established algorithms.",
   "description": "Use ordinary code, search, forms, or a task-specific statistical model when they solve the problem. No generative model is required; classical machine learning can belong here too."
  },
  {
   "order": 1,
   "title": "Direct prompting",
   "who": "You choose the request; the model generates a response.",
   "description": "Give the model instructions and receive a response. A conversation repeats this interaction, with a person directing each turn. Prompting, structured output, reasoning, and multimodal inputs can all fit this pattern."
  },
  {
   "order": 2,
   "title": "Added context",
   "who": "You or your software select the information supplied to the model.",
   "description": "Add relevant documents, retrieved passages, or stored information to the current request. This supplies context beyond the model’s training without retraining it. Missing, stale, or misleading material can still produce a poor answer."
  },
  {
   "order": 3,
   "title": "Workflows",
   "who": "Software defines the steps and allowed branches; model outputs can select among them.",
   "description": "Connect model calls through predefined steps, branches, checks, and retries. A model can classify an input or evaluate a result to route the workflow; software still defines the available paths."
  },
  {
   "order": 4,
   "title": "Tool use",
   "who": "The model requests an action; software checks and executes it.",
   "description": "The model can request a search, calculation, code execution, or an action in another application. Software enforces permissions, performs the action, and returns the result. Tool use alone does not create an ongoing agent loop."
  },
  {
   "order": 5,
   "title": "Agent loops",
   "who": "The model chooses the next step within limits enforced by software.",
   "description": "The model uses the goal and observed results to choose an action, revise its approach, or finish. Software executes tools and enforces permissions, approvals, and stopping limits. A run can stop because it is complete, blocked, or out of budget."
  },
  {
   "order": 6,
   "title": "Teams of Agents",
   "who": "Several agents coordinate, delegate, or review work; they can use the same underlying model.",
   "description": "Agents divide, coordinate, or review work across separate contexts. A coordinator can combine their findings, and the agents may use the same model or different models. Coordination adds overhead, and separate reviewers can still make correlated mistakes."
  },
  {
   "order": 7,
   "title": "Always-on agents",
   "who": "Software triggers and resumes runs; agents decide what to do within their standing instructions.",
   "description": "Saved state, schedules, and events let an agent start or resume work without a fresh chat message each time. The model need not run continuously, and a dedicated computer or agent team is optional. Permissions, human approvals, monitoring, and stop controls still apply."
  }
 ],
 "first_question": "rule",
 "core_questions": [
  {
   "id": "rule",
   "level_tested": 0,
   "prompt": "Can the job be done by a fixed rule, a search, or a plain form, with no model involved at all?",
   "help": "Consider fixed logic only if the complete workflow meets your automation and hands-on effort requirements. Technical feasibility alone does not establish the best fit.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. A rule, a lookup table, a search, or a plain form covers every case.",
     "action": "settle",
     "level": 0,
     "reason": "A fixed rule, a search, or a form does the job on its own. No model is involved, so there is nothing extra to build, test, or pay for."
    },
    {
     "id": "no",
     "label": "No. It needs to understand or produce language, or use judgment a rule cannot capture.",
     "action": "next",
     "next": "one-call",
     "reason": "The input is language you cannot write rules for, and a wrong answer is cheap to catch."
    }
   ]
  },
  {
   "id": "one-call",
   "level_tested": 1,
   "prompt": "Does one request, written well, with everything the model needs already in it, reliably get a good answer?",
   "help": "This covers rewriting, drafting, or answering a question when all the facts are already in your message.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. One clear message, sent once, does it.",
     "action": "settle",
     "level": 1,
     "reason": "One well-written request, sent once, reliably gets a good answer. There is no second step, and no outside information to gather first."
    },
    {
     "id": "no",
     "label": "No. It needs information the model was not given: documents, current data, or something specific to us.",
     "action": "next",
     "next": "context",
     "reason": "The right document or the right current fact has to be found and handed to the model before it can answer. Nobody can write it all into a single request ahead of time."
    }
   ]
  },
  {
   "id": "context",
   "level_tested": 2,
   "prompt": "Does finding the right information and putting it in front of the model answer this, where one search or one set of documents is enough?",
   "help": "This covers answering from a manual, a knowledge base, or a set of notes, where a single lookup finds what is needed.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. Hand it the right document or search result and it answers well.",
     "action": "settle",
     "level": 2,
     "reason": "Finding the right information and giving it to the model answers this. One search or one set of documents is enough; nothing has to happen in a fixed sequence of steps."
    },
    {
     "id": "no",
     "label": "No. It takes more than one step, or the steps have to happen in a set order.",
     "action": "next",
     "next": "workflow",
     "reason": "More than one retrieval is involved, or the steps have to happen in a fixed order, so something has to hold that order instead of leaving it to a single prompt."
    }
   ]
  },
  {
   "id": "workflow",
   "level_tested": 3,
   "prompt": "Can you define the steps and allowed branches in advance, including how model outputs choose among those branches?",
   "help": "This covers sorting inputs into categories, chaining prompts, and checking drafts. A model can select a predefined branch; software owns the available paths and stopping rules.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. Software defines the steps and branches, even if a model helps choose a branch.",
     "action": "settle",
     "level": 3,
     "reason": "Software defines the steps, routing rules, and stopping conditions. Model outputs can select among those predefined paths without creating an open-ended agent loop."
    },
    {
     "id": "no",
     "label": "No. It has to act on the world while it works: look something up live, run code, or operate something.",
     "action": "next",
     "next": "tools",
     "reason": "Writing the steps down in advance is not enough once the task has to reach outside itself while it runs: something has to be looked up live, run, or operated, not just described."
    }
   ]
  },
  {
   "id": "tools",
   "level_tested": 4,
   "prompt": "Can the model do this by picking one bounded action (calling a function, running a lookup, clicking one thing), with your code carrying out that action and stopping there?",
   "help": "The model chooses which action to take and with what details, but only one action, and your code performs it and hands back the result.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. One action; your code runs it and the task is done.",
     "action": "settle",
     "level": 4,
     "reason": "The model can do this by picking one bounded action: a lookup, a function call, a click. Your code carries out that action and returns the result; the model does not chain actions together on its own."
    },
    {
     "id": "no",
     "label": "No. What happens next depends on what the last action returned, and the model has to decide that for itself, more than once.",
     "action": "next",
     "next": "agent",
     "reason": "The next action depends on what the last one returned, so the model has to choose again and decide when to stop."
    }
   ]
  },
  {
   "id": "agent",
   "level_tested": 5,
   "prompt": "Can the steps NOT be known in advance, so the model has to plan, act, look at the result, and decide for itself what to do next and when it is finished?",
   "help": "This is the difference between following a plan you wrote and working one out as it goes, the way debugging or open-ended research does.",
   "answers": [
    {
     "id": "yes",
     "label": "Yes. It plans, acts, checks its own result, and decides for itself when it is done.",
     "action": "settle",
     "level": 5,
     "reason": "The steps cannot be known in advance. The model has to plan, act, look at what happened, and decide for itself what to do next and when it is finished."
    },
    {
     "id": "no",
     "label": "No. Even one model working alone in a loop is not enough for this.",
     "action": "next",
     "next": "team",
     "reason": "A single model, even one working alone in a loop, cannot cover this. The work needs a second, independent perspective, more than one agent's worth of room, or longer than one sitting."
    }
   ]
  },
  {
   "id": "team",
   "level_tested": 6,
   "prompt": "Does the work need to be split across more than one agent or checked independently, or does it have to start on its own or keep running for a long time?",
   "help": "Pick the closest answer. \"Independent\" means an agent with its own access, not a second pass by the same one.",
   "answers": [
    {
     "id": "split",
     "label": "It is too big for one agent to hold, or the subtasks cannot be known until the work is split among several agents.",
     "action": "settle",
     "level": 6,
     "reason": "The subtasks cannot be known until the task is read."
    },
    {
     "id": "review",
     "label": "It needs a second, independent agent to check the work, with its own access: one agent checking itself shares its own blind spots.",
     "action": "settle",
     "level": 6,
     "reason": "One reviewer shares the author's blind spots."
    },
    {
     "id": "long",
     "label": "It has to start without being asked, run on its own schedule, or keep going for days or longer.",
     "action": "settle",
     "level": 7,
     "reason": "The work outlives one context window or one sitting."
    }
   ]
  }
 ],
 "cross_questions": [
  {
   "id": "cost",
   "prompt": "If the model gets this wrong, what does that cost?",
   "answers": [
    {
     "id": "cheap",
     "label": "Not much. Someone notices quickly and it is easy to fix.",
     "caution": null
    },
    {
     "id": "moderate",
     "label": "Real rework, a bad customer moment, or a delay before someone catches it.",
     "caution": {
      "text": "A wrong answer here costs real time or trust. Check the work before it goes out, and keep a record of what was decided and why.",
      "relates_to": [
       "reviewing",
       "ops"
      ]
     }
    },
    {
     "id": "high",
     "label": "Money, legal exposure, safety, or something that cannot be undone.",
     "caution": {
      "text": "A wrong answer here is expensive or dangerous. Keep a person in the loop before anything ships, and be able to say why the model was trusted with it.",
      "relates_to": [
       "human-in-the-loop",
       "safety"
      ]
     }
    }
   ]
  },
  {
   "id": "checkable",
   "prompt": "How easily can someone check the result before it is used?",
   "answers": [
    {
     "id": "easy",
     "label": "Easily and fast: a glance, or a simple test, confirms it.",
     "caution": null
    },
    {
     "id": "effort",
     "label": "It takes real effort: reading closely, or running it, to know if it is right.",
     "caution": {
      "text": "Build the check into the process instead of relying on a read-through. A standing eval set catches drift a one-off spot check misses.",
      "relates_to": [
       "evals"
      ]
     }
    },
    {
     "id": "hard",
     "label": "It is hard or impossible to check: there is no ground truth, or checking takes as long as doing the job.",
     "caution": {
      "text": "When nobody can easily confirm the result, treat it as unverified until proven otherwise, and keep a person responsible for what happens with it.",
      "relates_to": [
       "reviewing",
       "human-in-the-loop"
      ]
     }
    }
   ]
  },
  {
   "id": "reversible",
   "prompt": "If the action turns out to be wrong, can it be undone?",
   "answers": [
    {
     "id": "yes",
     "label": "Yes, easily: nothing has shipped, been spent, or changed yet.",
     "caution": null
    },
    {
     "id": "some",
     "label": "With some effort: it can be corrected, but it takes real work.",
     "caution": {
      "text": "Log every action taken so a wrong one can be traced and reversed without guessing what happened.",
      "relates_to": [
       "ops"
      ]
     }
    },
    {
     "id": "no",
     "label": "No: money moved, a message went out, or something was deleted.",
     "caution": {
      "text": "An action that cannot be undone needs approval before it happens, not review after the fact.",
      "relates_to": [
       "human-in-the-loop",
       "safety"
      ]
     }
    }
   ]
  },
  {
   "id": "data",
   "prompt": "Does private or sensitive data leave your own machine to do this?",
   "answers": [
    {
     "id": "no",
     "label": "No: everything runs on infrastructure you control.",
     "caution": null
    },
    {
     "id": "yes",
     "label": "Yes: a cloud model or a third-party service sees it.",
     "caution": {
      "text": "Know what leaves the machine and who can see it. Check the provider's data-handling terms before sending anything sensitive.",
      "relates_to": [
       "safety"
      ]
     }
    }
   ]
  }
 ]
}