{
  "name": "Black Box Site Design agentic intake template",
  "version": 1,
  "derivedFrom": [
    "Black Box Personalization: Next.js on Vercel, Neon Postgres, consent-gated analytics, labs, SEO, llms.txt, JSON-LD, admin.",
    "Black Box Site Design: marketing pages, quote wizard, dark theme, command palette, GA4 and conversion events, custom domain on Vercel."
  ],
  "note": "Blank template. It does not submit. Fill it in the conversation at /start, or read the checklist at /start/template.",
  "sections": [
    {
      "id": "business",
      "label": "Business"
    },
    {
      "id": "brand",
      "label": "Brand"
    },
    {
      "id": "pages",
      "label": "Pages"
    },
    {
      "id": "content",
      "label": "Content"
    },
    {
      "id": "features",
      "label": "Features"
    },
    {
      "id": "integrations",
      "label": "Integrations"
    },
    {
      "id": "measurement",
      "label": "Measurement"
    },
    {
      "id": "seo",
      "label": "SEO"
    },
    {
      "id": "domain",
      "label": "Domain and hosting"
    },
    {
      "id": "control",
      "label": "Agentic control"
    },
    {
      "id": "accessibility",
      "label": "Accessibility"
    },
    {
      "id": "plan",
      "label": "Timeline and budget"
    },
    {
      "id": "contact",
      "label": "Contact"
    }
  ],
  "fields": [
    {
      "id": "businessName",
      "section": "business",
      "question": "What is the business called?",
      "why": "The name becomes the title, the logo lockup, and the browser tab.",
      "examples": [
        "North Pier Cafe",
        "Ada Electrical"
      ],
      "mapsTo": [
        "Homepage title",
        "Header wordmark",
        "JSON-LD name"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "industry",
      "section": "business",
      "question": "What kind of business is it?",
      "why": "The next questions change with the work. A cafe is not a plumbing company.",
      "examples": [
        "Restaurant",
        "Trades"
      ],
      "mapsTo": [
        "Page map",
        "Feature set",
        "Which events are even possible"
      ],
      "input": "single",
      "options": [
        "Restaurant",
        "Trades",
        "Shop",
        "Professional service",
        "Nonprofit",
        "Creator",
        "Something else"
      ],
      "askWhen": "always"
    },
    {
      "id": "location",
      "section": "business",
      "question": "Where are you, and where do customers come from?",
      "why": "A city we invent would be a lie on the page and in search.",
      "examples": [
        "One shop in town",
        "Three counties, no storefront"
      ],
      "mapsTo": [
        "Visit page",
        "Service-area pages",
        "Local SEO only where you said"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "audience",
      "section": "business",
      "question": "Who is the site for?",
      "why": "The homepage talks to that person, and ignores everyone else.",
      "examples": [
        "Neighbors booking dinner",
        "Homeowners with a broken panel"
      ],
      "mapsTo": [
        "Headline",
        "Calls to action",
        "What we leave off the page"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "goals",
      "section": "business",
      "question": "What should a visitor be able to do?",
      "why": "Each goal becomes a button and, later, an event we can count.",
      "examples": [
        "Call the shop",
        "Ask for a quote"
      ],
      "mapsTo": [
        "Primary call to action",
        "Form or phone link",
        "Conversion events"
      ],
      "input": "multi",
      "options": [
        "Call",
        "Book",
        "Buy online",
        "Ask for a quote",
        "Read and understand",
        "Visit in person"
      ],
      "askWhen": "always"
    },
    {
      "id": "competitors",
      "section": "business",
      "question": "Who do customers compare you with?",
      "why": "We use this to see what the page must make obvious. We do not name them on your site.",
      "examples": [
        "The other cafe on the block",
        "Two regional contractors"
      ],
      "mapsTo": [
        "Homepage contrast",
        "What not to claim"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "tone",
      "section": "brand",
      "question": "How should the site sound?",
      "why": "Tone decides the headline before any color is chosen.",
      "examples": [
        "Warm",
        "Direct"
      ],
      "mapsTo": [
        "Homepage headline",
        "Button labels",
        "Empty and error text"
      ],
      "input": "single",
      "options": [
        "Warm",
        "Direct",
        "Formal",
        "Playful"
      ],
      "askWhen": "always"
    },
    {
      "id": "colors",
      "section": "brand",
      "question": "Do you already have colors?",
      "why": "Color is a token set, not a mood board we invent later.",
      "examples": [
        "Warm neutrals",
        "Deep and calm"
      ],
      "mapsTo": [
        "Design tokens",
        "Light and dark theme",
        "Contrast check"
      ],
      "input": "single",
      "options": [
        "Keep what we have",
        "Warm neutrals",
        "Deep and calm",
        "Bright and clear"
      ],
      "askWhen": "always"
    },
    {
      "id": "logo",
      "section": "brand",
      "question": "What should sit in the header?",
      "why": "A missing logo should not block the rest of the site.",
      "examples": [
        "We have a logo",
        "A wordmark is enough"
      ],
      "mapsTo": [
        "Header",
        "Social preview",
        "Favicon"
      ],
      "input": "single",
      "options": [
        "We have a logo",
        "We need a logo",
        "A wordmark is enough"
      ],
      "askWhen": "always"
    },
    {
      "id": "fonts",
      "section": "brand",
      "question": "Any preference for type?",
      "why": "Type is loaded on purpose. One pair, with fallbacks, so the page stays fast.",
      "examples": [
        "Clean sans",
        "Classic serif"
      ],
      "mapsTo": [
        "Font files",
        "Fallback stack",
        "Heading and body styles"
      ],
      "input": "single",
      "options": [
        "Clean sans",
        "Classic serif",
        "You pick"
      ],
      "askWhen": "always"
    },
    {
      "id": "pages",
      "section": "pages",
      "question": "Which pages do you need?",
      "why": "The sitemap is the build. A page that is not listed does not get designed.",
      "examples": [
        "Home, Menu, Visit",
        "Home, Services, Request a quote"
      ],
      "mapsTo": [
        "Routes",
        "Navigation",
        "XML sitemap"
      ],
      "input": "multi",
      "options": [
        "Home",
        "Menu",
        "Hours and visit",
        "Reservations",
        "Catering",
        "Services",
        "Service areas",
        "Request a quote",
        "Products",
        "Mission",
        "Get involved",
        "Events",
        "Work",
        "About",
        "Contact",
        "Notes"
      ],
      "askWhen": "always"
    },
    {
      "id": "hours",
      "section": "pages",
      "question": "What are the hours, even roughly?",
      "why": "Hours are a fact. If you are unsure, we leave a placeholder you approve.",
      "examples": [
        "Tue to Sun, 8 to 2",
        "Closed Mondays"
      ],
      "mapsTo": [
        "Hours block",
        "Visit page",
        "Holiday banner later"
      ],
      "input": "text",
      "options": [],
      "askWhen": "Restaurant"
    },
    {
      "id": "serviceAreas",
      "section": "pages",
      "question": "Which towns or neighborhoods do you serve?",
      "why": "A trades site ranks and routes by place. We only list places you named.",
      "examples": [
        "The city and two suburbs",
        "Anywhere within 40 minutes"
      ],
      "mapsTo": [
        "Service-area pages",
        "Quote form place field",
        "Local titles"
      ],
      "input": "text",
      "options": [],
      "askWhen": "Trades"
    },
    {
      "id": "content",
      "section": "content",
      "question": "What content do you already have?",
      "why": "We do not pretend photos or paragraphs exist when they do not.",
      "examples": [
        "Photos only",
        "Starting from scratch"
      ],
      "mapsTo": [
        "Content inventory",
        "What the studio writes",
        "What you supply"
      ],
      "input": "single",
      "options": [
        "Copy and photos",
        "Photos only",
        "Notes only",
        "Starting from scratch"
      ],
      "askWhen": "always"
    },
    {
      "id": "features",
      "section": "features",
      "question": "What does the site need to do?",
      "why": "A feature we do not list is out of scope until you add it.",
      "examples": [
        "Menu and reservations",
        "Quote request and service areas"
      ],
      "mapsTo": [
        "Components",
        "Forms",
        "What we refuse to bolt on"
      ],
      "input": "multi",
      "options": [
        "Menu",
        "Hours",
        "Reservations",
        "Catering",
        "Service areas",
        "Quote request",
        "Contact form",
        "Photo gallery",
        "Blog",
        "Booking",
        "Online shop",
        "Personalization",
        "More than one language"
      ],
      "askWhen": "always"
    },
    {
      "id": "integrations",
      "section": "integrations",
      "question": "What should the site connect to?",
      "why": "Each connection is a line in the scope. None is a fine answer.",
      "examples": [
        "Email on the form",
        "A calendar for bookings"
      ],
      "mapsTo": [
        "Form delivery",
        "Payment or calendar scope",
        "What stays manual"
      ],
      "input": "multi",
      "options": [
        "Card payments",
        "A calendar",
        "A CRM",
        "An email list",
        "None yet"
      ],
      "askWhen": "always"
    },
    {
      "id": "analytics",
      "section": "measurement",
      "question": "How do you want visits measured?",
      "why": "Measurement is designed with the page, the way this site ships GA4.",
      "examples": [
        "GA4",
        "Not sure"
      ],
      "mapsTo": [
        "GA4 tag",
        "Consent gate",
        "No tag you did not ask for"
      ],
      "input": "single",
      "options": [
        "GA4",
        "Not sure",
        "No analytics yet"
      ],
      "askWhen": "always"
    },
    {
      "id": "conversions",
      "section": "measurement",
      "question": "What should count as a win?",
      "why": "We name the event before launch, and we do not count an action the site cannot do.",
      "examples": [
        "A form sent",
        "A phone call"
      ],
      "mapsTo": [
        "Conversion events",
        "GA4 lead event",
        "What we will not invent"
      ],
      "input": "multi",
      "options": [
        "Phone calls",
        "Form submissions",
        "Booking requests",
        "Purchases"
      ],
      "askWhen": "always"
    },
    {
      "id": "consent",
      "section": "measurement",
      "question": "When may analytics run?",
      "why": "Black Box Personalization and this site treat consent as a product decision.",
      "examples": [
        "Ask before any analytics"
      ],
      "mapsTo": [
        "Consent banner",
        "Tag fires only after a yes"
      ],
      "input": "single",
      "options": [
        "Ask before any analytics",
        "Analytics can run without a prompt"
      ],
      "askWhen": "always"
    },
    {
      "id": "keywords",
      "section": "seo",
      "question": "What do people type when they look for you?",
      "why": "Titles and headings use those words. We do not invent rankings.",
      "examples": [
        "breakfast near the pier",
        "emergency electrician"
      ],
      "mapsTo": [
        "Title tags",
        "H1",
        "No fake rank claims"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "seoLocations",
      "section": "seo",
      "question": "Which places should search titles mention?",
      "why": "A place in the title is a promise you serve it.",
      "examples": [
        "One city",
        "The towns from the service area"
      ],
      "mapsTo": [
        "Title tags",
        "Local landing pages",
        "JSON-LD areaServed"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "domain",
      "section": "domain",
      "question": "Do you have a domain name?",
      "why": "Launch connects the name on Vercel. You do not need to know DNS.",
      "examples": [
        "Yes, at the registrar",
        "Not yet"
      ],
      "mapsTo": [
        "Vercel domain",
        "Redirects",
        "Studio connects it"
      ],
      "input": "single",
      "options": [
        "Yes, and I know where it lives",
        "Yes, but I am not sure where",
        "No domain yet"
      ],
      "askWhen": "always"
    },
    {
      "id": "emailDomain",
      "section": "domain",
      "question": "Is email already on that domain?",
      "why": "The form can mail you either way. We will not assume an inbox exists.",
      "examples": [
        "Yes",
        "Not yet"
      ],
      "mapsTo": [
        "Form recipient",
        "DNS left alone if mail already works"
      ],
      "input": "single",
      "options": [
        "Yes",
        "Not yet",
        "Not sure"
      ],
      "askWhen": "always"
    },
    {
      "id": "approver",
      "section": "control",
      "question": "Who may approve a change before it goes live?",
      "why": "Nothing publishes on the bot’s word. Someone you name is the gate.",
      "examples": [
        "Only me",
        "Me and one teammate"
      ],
      "mapsTo": [
        "Approval step",
        "Who the studio calls",
        "Rollback owner"
      ],
      "input": "single",
      "options": [
        "Only me",
        "Me and one teammate",
        "The studio may approve small copy fixes"
      ],
      "askWhen": "always"
    },
    {
      "id": "botMay",
      "section": "control",
      "question": "What may the bot draft?",
      "why": "Guardrails are a list, not a vibe. Prices stay put unless you allow them.",
      "examples": [
        "Copy and photos",
        "New pages"
      ],
      "mapsTo": [
        "Agent permissions",
        "What still needs a person"
      ],
      "input": "multi",
      "options": [
        "Copy",
        "Photos",
        "Prices",
        "New pages",
        "Menus or services"
      ],
      "askWhen": "always"
    },
    {
      "id": "channels",
      "section": "control",
      "question": "Where do you want to talk to the bot?",
      "why": "The day-to-day interface is a channel you already use.",
      "examples": [
        "Chat on the site",
        "Email"
      ],
      "mapsTo": [
        "Chat widget",
        "Email or SMS handoff",
        "Studio backup"
      ],
      "input": "multi",
      "options": [
        "Chat on the site",
        "Email",
        "SMS"
      ],
      "askWhen": "always"
    },
    {
      "id": "accessibility",
      "section": "accessibility",
      "question": "What accessibility bar should we build to?",
      "why": "Both Black Box sites are built toward WCAG 2.2 AA. That is the default.",
      "examples": [
        "WCAG 2.2 AA"
      ],
      "mapsTo": [
        "Semantic HTML",
        "Keyboard access",
        "Contrast",
        "Focus states"
      ],
      "input": "single",
      "options": [
        "WCAG 2.2 AA",
        "WCAG 2.2 AA, plus a plain-language pass"
      ],
      "askWhen": "always"
    },
    {
      "id": "timeline",
      "section": "plan",
      "question": "When do you want to start?",
      "why": "A date changes the sequence. It is not a promise until the scope is signed.",
      "examples": [
        "This quarter",
        "No fixed date"
      ],
      "mapsTo": [
        "Schedule in the written scope"
      ],
      "input": "single",
      "options": [
        "As soon as the scope is agreed",
        "About a month",
        "This quarter",
        "No fixed date"
      ],
      "askWhen": "always"
    },
    {
      "id": "budget",
      "section": "plan",
      "question": "What budget are you bringing?",
      "why": "These are your bands, not our prices. A written price comes after a working session.",
      "examples": [
        "I do not have a number yet"
      ],
      "mapsTo": [
        "Whether the scope can fit",
        "What gets cut first"
      ],
      "input": "single",
      "options": [
        "Under $8,000",
        "$8,000 to $20,000",
        "$20,000 to $50,000",
        "Over $50,000",
        "I do not have a number yet"
      ],
      "askWhen": "always"
    },
    {
      "id": "contactName",
      "section": "contact",
      "question": "What is your name?",
      "why": "We need a person to reply to. The blueprint is not a project until you send it.",
      "examples": [
        "Ada Cole"
      ],
      "mapsTo": [
        "Reply",
        "Approval contact"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    },
    {
      "id": "contactEmail",
      "section": "contact",
      "question": "What email should we use?",
      "why": "The blueprint stays in this browser until you send it to that address.",
      "examples": [
        "ada@example.com"
      ],
      "mapsTo": [
        "Reply-to",
        "Form recipient later"
      ],
      "input": "text",
      "options": [],
      "askWhen": "always"
    }
  ],
  "launchChecklist": [
    "Page map approved by the owner",
    "Content marked as have or need",
    "Domain connected on Vercel, or a plan to buy one",
    "Consent decision recorded before any analytics tag",
    "Conversion events named only for actions the site can do",
    "JSON-LD, sitemap, and llms.txt",
    "Accessibility pass toward the chosen bar",
    "Human approval before the first public launch",
    "Owner keeps the site and the content"
  ]
}