{
  "schemaVersion": "1",
  "template": {
    "id": "moving-company",
    "name": "Moving Cost Calculator",
    "category": "moving",
    "version": "1.0.0"
  },
  "estimator": {
    "id": "moving-company",
    "name": "Moving Cost Calculator",
    "description": "A clear starting point for your next move. Tell us about the route, your home and any extra care you need.",
    "locale": "en",
    "currency": {
      "code": "USD",
      "minorUnits": 2
    },
    "steps": [
      {
        "id": "route",
        "title": "Your move",
        "fields": [
          {
            "id": "origin",
            "label": "Origin",
            "type": "address",
            "required": true,
            "placeholder": "Street, city and postcode"
          },
          {
            "id": "destination",
            "label": "Destination",
            "type": "address",
            "required": true,
            "placeholder": "Street, city and postcode"
          },
          {
            "id": "distance",
            "label": "Distance (miles)",
            "type": "number",
            "required": true,
            "validation": {
              "min": 0,
              "max": 5000
            },
            "help": "Enter the route distance in miles. No address lookup is required."
          }
        ]
      },
      {
        "id": "home",
        "title": "Your home",
        "fields": [
          {
            "id": "bedrooms",
            "label": "Bedrooms",
            "type": "quantity",
            "required": true,
            "validation": {
              "min": 0,
              "max": 20,
              "integer": true
            }
          },
          {
            "id": "elevator",
            "label": "Elevator available",
            "type": "boolean",
            "required": true
          },
          {
            "id": "floors",
            "label": "Flights of stairs",
            "type": "quantity",
            "validation": {
              "min": 0,
              "max": 50,
              "integer": true
            },
            "visibleWhen": {
              "field": "elevator",
              "op": "equals",
              "value": false
            }
          }
        ]
      },
      {
        "id": "services",
        "title": "A little more detail",
        "fields": [
          {
            "id": "boxes",
            "label": "Boxes",
            "type": "quantity",
            "required": true,
            "validation": {
              "min": 0,
              "max": 500,
              "integer": true
            }
          },
          {
            "id": "piano",
            "label": "Piano handling",
            "type": "boolean",
            "required": true
          },
          {
            "id": "packing",
            "label": "Packing required",
            "type": "boolean",
            "required": true
          },
          {
            "id": "moving_date",
            "label": "Moving date",
            "type": "date",
            "required": true
          }
        ]
      }
    ],
    "constants": {},
    "rules": [
      {
        "id": "base",
        "label": "Base moving service",
        "type": "fixed",
        "amountMinor": 18000
      },
      {
        "id": "bedrooms",
        "label": "Bedroom handling",
        "type": "per_unit",
        "field": "bedrooms",
        "rateMinor": 8000
      },
      {
        "id": "distance",
        "label": "Travel distance",
        "type": "per_unit",
        "field": "distance",
        "rateMinor": 210
      },
      {
        "id": "stairs",
        "label": "Stairs",
        "type": "per_unit",
        "field": "floors",
        "rateMinor": 3500,
        "when": {
          "field": "elevator",
          "op": "equals",
          "value": false
        }
      },
      {
        "id": "boxes",
        "label": "Box handling",
        "type": "per_unit",
        "field": "boxes",
        "rateMinor": 350
      },
      {
        "id": "piano",
        "label": "Piano handling",
        "type": "fixed",
        "amountMinor": 15000,
        "when": {
          "field": "piano",
          "op": "equals",
          "value": true
        }
      },
      {
        "id": "packing",
        "label": "Packing service",
        "type": "fixed",
        "amountMinor": 10000,
        "when": {
          "field": "packing",
          "op": "equals",
          "value": true
        }
      },
      {
        "id": "weekend",
        "label": "Weekend surcharge",
        "type": "date_weekday",
        "field": "moving_date",
        "days": [0, 6],
        "percent": "15",
        "basis": "subtotal"
      }
    ],
    "output": {
      "minimumMinor": 35000,
      "range": {
        "belowPercent": "5",
        "abovePercent": "5"
      },
      "message": "An estimate for planning. Confirm access, inventory and service details with the mover.",
      "terms": "This is a planning estimate, not a binding offer. Final pricing follows confirmation of inventory, access and service availability.",
      "expiresAfterDays": 14
    },
    "leadCapture": {
      "mode": "after",
      "fields": ["name", "email", "phone", "notes"],
      "consentText": "Your details are shared with the moving company so they can follow up on your request."
    },
    "translations": {
      "pt-BR": {
        "name": "Calculadora de mudan\u00e7a",
        "description": "Planeje sua mudan\u00e7a com clareza. Conte sobre o trajeto, seu im\u00f3vel e os cuidados extras necess\u00e1rios.",
        "step:route": "Sua mudan\u00e7a",
        "step:home": "Seu im\u00f3vel",
        "step:services": "\u00daltimos detalhes",
        "field:origin": "Endere\u00e7o de origem",
        "field:destination": "Endere\u00e7o de destino",
        "field:distance": "Dist\u00e2ncia (milhas)",
        "help:distance": "Informe a dist\u00e2ncia do trajeto em milhas. N\u00e3o usamos busca de endere\u00e7os.",
        "field:bedrooms": "Quartos",
        "field:elevator": "Elevador dispon\u00edvel",
        "field:floors": "Lances de escada",
        "field:boxes": "Caixas",
        "field:piano": "Transporte de piano",
        "field:packing": "Servi\u00e7o de embalagem",
        "field:moving_date": "Data da mudan\u00e7a",
        "terms": "Estimativa para planejamento, sem car\u00e1ter de oferta vinculante. O valor final depende da confirma\u00e7\u00e3o de invent\u00e1rio, acesso e disponibilidade.",
        "consent": "Seus dados ser\u00e3o compartilhados com a empresa de mudan\u00e7as para atender sua solicita\u00e7\u00e3o.",
        "message": "Confirme os detalhes do servi\u00e7o com a empresa.",
        "rule:base": "Servi\u00e7o b\u00e1sico",
        "rule:bedrooms": "Quartos",
        "rule:distance": "Dist\u00e2ncia",
        "rule:stairs": "Escadas",
        "rule:boxes": "Caixas",
        "rule:piano": "Transporte de piano",
        "rule:packing": "Embalagem",
        "rule:weekend": "Adicional de fim de semana",
        "placeholder:origin": "Rua, cidade e CEP",
        "placeholder:destination": "Rua, cidade e CEP"
      }
    }
  }
}
