{
  "currency": "R",
  "vat_rate": 0,
  "validity_days": 14,
  "notes": [
    "Prices are once-off in South African rand unless marked per month.",
    "This is an estimate. A formal quotation follows by email within one working day."
  ],
  "groups": [
    {
      "id": "package",
      "label": "The cut",
      "title": "Choose the website.",
      "descriptor": "Every site is conversion-first: one clear next step, fast on a phone, written to be found.",
      "type": "radio",
      "required": true,
      "items": [
        {
          "id": "single",
          "label": "Single-page website",
          "price": 7500,
          "summary": "One page, seven sections, scoped with you.",
          "includes": [
            "Seven sections: hero, what you do, proof, process, pricing or offer, about, contact",
            "Scope session with you before design starts",
            "Mobile-first, fast, accessible",
            "Contact form delivered to your inbox",
            "Basic on-page SEO: titles, descriptions, sitemap"
          ]
        },
        {
          "id": "multi",
          "label": "Multi-page website",
          "price": 12500,
          "summary": "Seven-section home, five inner pages, a blog with five articles.",
          "includes": [
            "Seven-section home page",
            "Five inner pages with four sections each",
            "Blog page with five articles written for you",
            "Scope session with you before design starts",
            "Mobile-first, fast, accessible",
            "Contact form delivered to your inbox",
            "Basic on-page SEO: titles, descriptions, sitemap"
          ]
        }
      ]
    },
    {
      "id": "content",
      "label": "Words",
      "title": "Who writes it.",
      "descriptor": "Blog articles are researched and written for your audience, or laid out from text you supply.",
      "type": "options",
      "items": [
        { "id": "blog_written", "label": "Blog articles, written for you", "price": 2500, "per": "per 5 articles", "type": "qty", "step": 5, "min": 0, "max": 50, "unit": "articles", "note": "Research, writing, images and publishing. Sold in batches of five." },
        { "id": "blog_supplied", "label": "Blog articles, you supply the text", "price": 250, "per": "per article", "type": "qty", "step": 1, "min": 0, "max": 50, "unit": "articles", "note": "We format, add images, publish and link them." },
        { "id": "copywriting", "label": "Website copy, written for you", "price": 3500, "type": "check", "note": "Every page's words from a one-hour interview with you. Two rounds of changes.", "suggested": true }
      ]
    },
    {
      "id": "reach",
      "label": "Reach",
      "title": "Being found.",
      "descriptor": "Search, maps and measurement, set up properly once.",
      "type": "options",
      "items": [
        { "id": "seo", "label": "SEO optimisation", "price": 1500, "type": "check", "note": "Keyword research, page titles and descriptions, structured data, image alt text, speed pass." },
        { "id": "analytics", "label": "Analytics and conversion tracking", "price": 950, "type": "check", "note": "Google Analytics 4, Search Console, and events on every form, call and WhatsApp tap.", "suggested": true },
        { "id": "gbp", "label": "Google Business Profile and Maps", "price": 850, "type": "check", "note": "Profile set up or cleaned up, map embedded, reviews linked.", "suggested": true },
        { "id": "legal", "label": "Privacy policy, terms and POPIA notice", "price": 1200, "type": "check", "note": "Plain-language policy pages and a cookie notice that fits the design.", "suggested": true },
        { "id": "social_kit", "label": "Social media page kit", "price": 1500, "type": "check", "note": "Profile images, covers and an About blurb for three networks, matched to the site.", "suggested": true }
      ]
    },
    {
      "id": "integrations",
      "label": "Fittings",
      "title": "What it connects to.",
      "descriptor": "Each integration wires one outside service into the site.",
      "type": "options",
      "items": [
        { "id": "integration", "label": "Custom integration", "price": 500, "per": "each", "type": "qty", "step": 1, "min": 0, "max": 20, "unit": "integrations", "note": "WhatsApp chat, newsletter sign-up, Google Maps, Calendly, Instagram feed, CRM lead push, review widgets, live chat." },
        { "id": "booking", "label": "Online booking", "price": 2500, "type": "check", "note": "Clients pick a slot, you get it in your calendar, both get reminders.", "suggested": true },
        { "id": "payments", "label": "Online payments", "price": 3500, "type": "check", "note": "Paystack or PayFast checkout for a deposit, a product or a service.", "suggested": true },
        { "id": "shop", "label": "Online shop, up to 20 products", "price": 6500, "type": "check", "note": "Catalogue, cart, checkout, order emails and stock. More products below.", "suggested": true },
        { "id": "shop_products", "label": "Extra shop products", "price": 900, "per": "per 10 products", "type": "qty", "step": 10, "min": 0, "max": 500, "unit": "products", "requires": "shop", "suggested": true },
        { "id": "calculator", "label": "Live quote or price calculator", "price": 4500, "type": "check", "note": "A builder like this one, priced from your own list, emailed to you on submit.", "suggested": true },
        { "id": "ai_assistant", "label": "AI assistant trained on your site", "price": 4500, "monthly": 450, "type": "check", "note": "Answers visitor questions from your own content and hands over to a human. Includes hosting and model usage.", "suggested": true }
      ]
    },
    {
      "id": "finish",
      "label": "Finish",
      "title": "The finishing.",
      "descriptor": "More room, more imagery, more languages.",
      "type": "options",
      "items": [
        { "id": "extra_page", "label": "Extra page", "price": 1500, "per": "each", "type": "qty", "step": 1, "min": 0, "max": 20, "unit": "pages", "note": "Four sections, same design system.", "suggested": true },
        { "id": "extra_section", "label": "Extra section on any page", "price": 450, "per": "each", "type": "qty", "step": 1, "min": 0, "max": 40, "unit": "sections", "suggested": true },
        { "id": "hero_video", "label": "Hero or ambient video", "price": 2500, "type": "check", "note": "A short generated or edited loop for the opening of the site, compressed for mobile.", "suggested": true },
        { "id": "imagery", "label": "Bespoke imagery pack", "price": 1200, "type": "check", "note": "Ten images made for your pages, so nothing looks like stock.", "suggested": true },
        { "id": "logo", "label": "Logo and mini brand kit", "price": 3500, "type": "check", "note": "Mark, wordmark, colour and type rules, files for print and screen.", "suggested": true },
        { "id": "language", "label": "Additional language", "price": 2000, "per": "per language", "type": "qty", "step": 1, "min": 0, "max": 5, "unit": "languages", "note": "Afrikaans, isiZulu, or any other: translated pages with a language switch.", "suggested": true },
        { "id": "priority", "label": "Priority delivery", "percent": 20, "type": "check", "note": "Live within ten working days of sign-off on content. Adds 20% to the once-off total.", "suggested": true }
      ]
    },
    {
      "id": "care",
      "label": "Care",
      "title": "After it goes live.",
      "descriptor": "Monthly. Cancel with a month's notice.",
      "type": "radio",
      "required": false,
      "monthly": true,
      "items": [
        { "id": "care_none", "label": "No monthly plan", "price": 0, "summary": "You host it. We hand over the files." },
        { "id": "care_host", "label": "Hosting only", "price": 350, "summary": "Hosting, SSL, daily backups, uptime watch.", "suggested": true },
        { "id": "care_standard", "label": "Hosting and care", "price": 650, "summary": "Hosting, updates, and one hour of changes a month.", "suggested": true },
        { "id": "care_plus", "label": "Hosting, care and growth", "price": 1250, "summary": "Three hours of changes a month and a monthly traffic report.", "suggested": true }
      ]
    },
    {
      "id": "retainers",
      "label": "Growth",
      "title": "Keep being found.",
      "descriptor": "Monthly. Cancel with a month's notice.",
      "type": "options",
      "monthly": true,
      "items": [
        { "id": "seo_retainer", "label": "SEO retainer", "monthly": 2500, "type": "check", "note": "Keyword tracking, two optimised articles a month, technical fixes, monthly report.", "suggested": true },
        { "id": "content_retainer", "label": "Content retainer", "monthly": 1800, "type": "check", "note": "Four blog articles or social posts a month, written and published.", "suggested": true }
      ]
    }
  ]
}
