{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://purefunc.io/brief.schema.json",
  "title": "Pure Func project brief",
  "description": "The fields a person fills in at /contact. Prepare them for the person to review; they send it. `answers` holds the optional follow-ups for the chosen service (`input`).",
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "title": "What are you bringing?",
      "description": "sites = a brand, build = an idea, modernize = a codebase, lead = a team",
      "enum": [
        "sites",
        "build",
        "modernize",
        "lead"
      ]
    },
    "project": {
      "type": "string",
      "title": "What are you building?",
      "description": "A few sentences is plenty."
    },
    "timeline": {
      "type": "string",
      "title": "When do you want to start?",
      "enum": [
        "As soon as possible",
        "In the next 1–3 months",
        "Later this year",
        "Just exploring"
      ]
    },
    "budget": {
      "type": "string",
      "title": "Budget range",
      "description": "A range helps us propose the right scope.",
      "enum": [
        "Under $10k",
        "$10k–25k",
        "$25k–50k",
        "$50k+",
        "Not sure yet"
      ]
    },
    "links": {
      "type": "string",
      "title": "Links",
      "description": "Deck, repo, site or sketches. Optional."
    },
    "name": {
      "type": "string",
      "title": "Your name"
    },
    "email": {
      "type": "string",
      "title": "Email",
      "description": "Where we send next steps.",
      "format": "email"
    },
    "answers": {
      "type": "object",
      "title": "Follow-ups for the chosen service",
      "properties": {
        "pages": {
          "type": "string",
          "title": "How many pages?",
          "description": "For input \"sites\".",
          "enum": [
            "1–5",
            "6–15",
            "16+",
            "Not sure yet"
          ]
        },
        "content": {
          "type": "string",
          "title": "Is the content ready?",
          "description": "For input \"sites\".",
          "enum": [
            "Yes",
            "Partly",
            "Not yet"
          ]
        },
        "features": {
          "type": "array",
          "title": "What does it need?",
          "description": "For input \"sites\". Pick any.",
          "items": {
            "enum": [
              "Blog or news",
              "Shop",
              "Booking",
              "Forms",
              "More than one language",
              "Our team edits it"
            ]
          }
        },
        "platform": {
          "type": "string",
          "title": "Where will people use it?",
          "description": "For input \"build\".",
          "enum": [
            "In a browser",
            "On their phones (web)",
            "As a phone app",
            "Not sure yet"
          ]
        },
        "roles": {
          "type": "string",
          "title": "Who uses it?",
          "description": "For input \"build\".",
          "enum": [
            "One kind of user",
            "Several roles (like admin and customer)",
            "Not sure yet"
          ]
        },
        "needs": {
          "type": "array",
          "title": "What does it need?",
          "description": "For input \"build\". Pick any.",
          "items": {
            "enum": [
              "Accounts and login",
              "Payments",
              "An admin area",
              "Connections to other tools",
              "AI features"
            ]
          }
        },
        "stack": {
          "type": "string",
          "title": "What is it built with?",
          "description": "For input \"modernize\".",
          "enum": [
            "React",
            "Vue",
            "Angular",
            "Something else",
            "Not sure yet"
          ]
        },
        "pains": {
          "type": "array",
          "title": "What hurts?",
          "description": "For input \"modernize\". Pick any.",
          "items": {
            "enum": [
              "It is slow",
              "It is hard to change",
              "Accessibility",
              "No tests",
              "We want AI workflows"
            ]
          }
        },
        "team": {
          "type": "string",
          "title": "How many people?",
          "description": "For input \"lead\".",
          "enum": [
            "Just me",
            "2–4",
            "5–10",
            "More than 10"
          ]
        },
        "help": {
          "type": "array",
          "title": "Where do you need help?",
          "description": "For input \"lead\". Pick any.",
          "items": {
            "enum": [
              "An AI 101 session",
              "AI working sessions",
              "Architecture",
              "Code review",
              "Hiring",
              "Mentoring",
              "Setting up AI workflows"
            ]
          }
        }
      }
    }
  },
  "required": [
    "input",
    "project",
    "timeline",
    "budget",
    "name",
    "email"
  ]
}
