{
  "version": 1,
  "origin": "guided",
  "createdAt": "2026-10-21T00:00:00.000Z",
  "input": {
    "title": "Restaurant ordering system",
    "idea": "I want an ordering system for five restaurants with online payments and kitchen screens. Each restaurant needs to manage its own menu and orders, while I need an overview of the whole business.",
    "audience": "Customers, kitchen staff, restaurant managers and the group operator",
    "outcome": "A customer places an order and the correct kitchen receives it without manual re-entry.",
    "requirements": "Browse the menu for a selected restaurant\nPlace and pay for an order\nShow incoming orders on a kitchen screen\nManage menus per restaurant\nView order history across five locations",
    "workflow": "Customer chooses a restaurant\nCustomer adds items and pays\nKitchen receives the order\nStaff update the order status",
    "platform": "web",
    "capabilities": [
      "accounts",
      "payments",
      "locations"
    ],
    "extras": [
      "website",
      "seo",
      "data"
    ],
    "answers": {},
    "timeline": "",
    "budget": "",
    "hourlyRate": null,
    "weeklyCapacity": null,
    "exclusions": "Delivery-driver routing and loyalty rewards"
  },
  "document": {
    "title": "Restaurant ordering system",
    "summary": "I want an ordering system for five restaurants with online payments and kitchen screens. Each restaurant needs to manage its own menu and orders, while I need an overview of the whole business.",
    "audience": "Customers, kitchen staff, restaurant managers and the group operator",
    "success": "A customer places an order and the correct kitchen receives it without manual re-entry.",
    "exclusions": [
      "Delivery-driver routing and loyalty rewards"
    ],
    "assumptions": [
      "This is a first-release planning draft; proposed requirements and tests need owner review.",
      "No implementation stack, external pricing or delivery commitment has been independently verified."
    ],
    "journeys": [
      {
        "actor": "Customers, kitchen staff, restaurant managers and the group operator",
        "steps": [
          "Customer chooses a restaurant",
          "Customer adds items and pays",
          "Kitchen receives the order",
          "Staff update the order status"
        ]
      }
    ],
    "requirements": [
      {
        "id": "R01",
        "title": "Browse the menu for a selected restaurant",
        "description": "Deliver this visitor-specified capability: Browse the menu for a selected restaurant",
        "priority": "must",
        "acceptance": [
          "Given a user permitted to perform this task, when they complete “Browse the menu for a selected restaurant”, then the intended result is visible and can be checked against an agreed worked example.",
          "When required information is missing or invalid, the system explains the problem and preserves any valid work already entered."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R02",
        "title": "Place and pay for an order",
        "description": "Deliver this visitor-specified capability: Place and pay for an order",
        "priority": "must",
        "acceptance": [
          "Given a user permitted to perform this task, when they complete “Place and pay for an order”, then the intended result is visible and can be checked against an agreed worked example.",
          "When required information is missing or invalid, the system explains the problem and preserves any valid work already entered."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R03",
        "title": "Show incoming orders on a kitchen screen",
        "description": "Deliver this visitor-specified capability: Show incoming orders on a kitchen screen",
        "priority": "must",
        "acceptance": [
          "Given a user permitted to perform this task, when they complete “Show incoming orders on a kitchen screen”, then the intended result is visible and can be checked against an agreed worked example.",
          "When required information is missing or invalid, the system explains the problem and preserves any valid work already entered."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R04",
        "title": "Manage menus per restaurant",
        "description": "Deliver this visitor-specified capability: Manage menus per restaurant",
        "priority": "must",
        "acceptance": [
          "Given a user permitted to perform this task, when they complete “Manage menus per restaurant”, then the intended result is visible and can be checked against an agreed worked example.",
          "When required information is missing or invalid, the system explains the problem and preserves any valid work already entered."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R05",
        "title": "View order history across five locations",
        "description": "Deliver this visitor-specified capability: View order history across five locations",
        "priority": "must",
        "acceptance": [
          "Given a user permitted to perform this task, when they complete “View order history across five locations”, then the intended result is visible and can be checked against an agreed worked example.",
          "When required information is missing or invalid, the system explains the problem and preserves any valid work already entered."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R06",
        "title": "Recover from an interrupted workflow",
        "description": "Define and implement safe failure handling for the primary workflow, including duplicate submission and connection loss.",
        "priority": "must",
        "acceptance": [
          "An interrupted operation reports its state and offers a recovery action.",
          "Repeating a completed action does not accidentally create a second completed operation."
        ],
        "dependsOn": [
          "R01"
        ],
        "reviewed": false,
        "effortHours": null
      },
      {
        "id": "R07",
        "title": "Support accessible use",
        "description": "Make the primary workflow operable by keyboard, label its controls and communicate errors in text.",
        "priority": "must",
        "acceptance": [
          "A user can complete the primary workflow with a keyboard and visible focus.",
          "Inputs have programmatic labels, and errors identify both the problem and the affected input."
        ],
        "dependsOn": [],
        "reviewed": false,
        "effortHours": null
      }
    ],
    "architecture": [
      {
        "area": "Interface",
        "proposal": "A responsive browser interface for the primary workflow and its recovery states.",
        "rationale": "A first-release proposal. Confirm supported devices, connectivity and accessibility needs before choosing an implementation."
      },
      {
        "area": "Application boundary",
        "proposal": "Server-side operations validate requests and enforce permissions before applying changes.",
        "rationale": "Business rules should remain consistent across interfaces and integrations."
      },
      {
        "area": "Data",
        "proposal": "A transactional data store for the core records, with explicit ownership, retention and backup decisions.",
        "rationale": "The final schema depends on the confirmed workflow. The entities below are starting proposals."
      },
      {
        "area": "Payments",
        "proposal": "A payment-provider boundary with persisted payment states, idempotent requests and verified event handling.",
        "rationale": "Avoid duplicate financial operations and reconcile outcomes when a request is interrupted. Provider selection remains open."
      }
    ],
    "entities": [
      {
        "name": "WorkItem",
        "fields": [
          "id",
          "status",
          "createdAt",
          "updatedAt"
        ],
        "purpose": "Proposed representation of the core workflow record. Rename and expand it to match the confirmed domain."
      },
      {
        "name": "User",
        "fields": [
          "id",
          "role",
          "createdAt"
        ],
        "purpose": "Proposed identity and role reference; authentication and access rules still need review."
      },
      {
        "name": "Payment",
        "fields": [
          "id",
          "workItemId",
          "providerReference",
          "amountMinor",
          "currency",
          "status",
          "idempotencyKey"
        ],
        "purpose": "Proposed payment state and reconciliation record; payment-card details stay with the provider."
      },
      {
        "name": "Location",
        "fields": [
          "id",
          "name",
          "status"
        ],
        "purpose": "Proposed location boundary. Which records belong to a location must be confirmed."
      }
    ],
    "milestones": [
      {
        "title": "01 · Resolve the blocking decisions",
        "outcome": "The project owner confirms scope, data boundaries and failure behaviour. An engineer reviews the proposed requirements and tests.",
        "requirementIds": []
      },
      {
        "title": "02 · Deliver a complete vertical slice",
        "outcome": "Demonstrate the primary workflow in a test environment, including validation and recovery states.",
        "requirementIds": [
          "R01",
          "R06"
        ]
      },
      {
        "title": "03 · Complete the agreed release scope",
        "outcome": "Deliver the remaining first-release requirements and run their acceptance criteria.",
        "requirementIds": [
          "R02",
          "R03",
          "R04",
          "R05"
        ]
      },
      {
        "title": "04 · Verify and hand over",
        "outcome": "Review accessibility, permission boundaries and operational recovery. Record test evidence before release approval.",
        "requirementIds": [
          "R07"
        ]
      }
    ],
    "decisions": [
      {
        "id": "data",
        "question": "What data is stored, and how long should it be kept?",
        "reason": "Include personal or sensitive information, deletion rules and who controls access.",
        "answer": "",
        "blocking": true
      },
      {
        "id": "failure",
        "question": "What must happen when the main workflow fails?",
        "reason": "Consider lost connections, duplicate submissions and recovery without losing work.",
        "answer": "",
        "blocking": true
      },
      {
        "id": "accounts",
        "question": "Who can access or change what?",
        "reason": "Roles and permissions affect the data model, tests and every protected workflow.",
        "answer": "",
        "blocking": true
      },
      {
        "id": "payments",
        "question": "How should payments, refunds and failed attempts work?",
        "reason": "Payment states, retries and reconciliation must be defined before implementation.",
        "answer": "",
        "blocking": true
      },
      {
        "id": "locations",
        "question": "Which data is shared, and which belongs to one location?",
        "reason": "Location boundaries affect authorisation, reporting and operations.",
        "answer": "",
        "blocking": true
      },
      {
        "id": "integrations",
        "question": "Which existing tools or systems must it connect to?",
        "reason": "Name required integrations and whether access is already available. “None” is a useful answer.",
        "answer": "",
        "blocking": false
      },
      {
        "id": "launch",
        "question": "Who signs off the first release, and how will they test it?",
        "reason": "A named owner and a realistic test setting make the handoff easier to execute.",
        "answer": "",
        "blocking": true
      }
    ],
    "complexity": {
      "level": "undetermined",
      "rationale": "Complexity needs engineering review of the proposed requirements, integrations and open decisions. Add effort estimates per requirement to calculate a planning total.",
      "costDrivers": [
        "Number of workflows and user roles",
        "User accounts",
        "Payments",
        "Multiple locations",
        "Data migration, testing and launch operations"
      ]
    }
  }
}