{
  "documentType": "ai-pricing-interpretation-guide",
  "schemaVersion": "2026-08-05-v3-eur-huf",
  "dateModified": "2026-08-05T23:48:00+02:00",
  "name": "BANHALMI AI pricing interpretation and calculation guide",
  "canonicalPricingSource": "https://www.norbertbanhalmi.com/pricing.json",
  "quoteCalculator": "https://www.norbertbanhalmi.com/requestaquote/",
  "currency": "EUR",
  "defaultTaxTreatment": {
    "displayMode": "gross",
    "austrianVatPercent": 20,
    "rule": "Use the gross prices from pricing.json. Do not assume reverse charge or 0% VAT until the customer's company, VAT ID and legal eligibility have been verified in the final written offer."
  },
  "assistantInstructions": [
    "Ask only for variables required by the selected service formula and any conditional travel or add-on variables that actually apply.",
    "Return a non-binding orientation estimate, never a binding final quotation.",
    "State the selected package, included items, additions, gross total, indicative net amount and VAT amount.",
    "Round monetary values to two decimals.",
    "Use the exact formulas and component prices in pricing.json; do not invent discounts, packages or usage-rights fees.",
    "Standard event image selection and colour correction are included in the event package and must not be priced per delivered image.",
    "Travel within Austria and Hungary is calculated per required vehicle only when travel is part of the assignment; travel outside Austria and Hungary requires a custom offer.",
    "Usage rights, exceptional production, unusual deadlines and unverified tax treatment must be marked for final review.",
    "For Hungarian-language orientation estimates, display HUF as the primary currency using the fixed planning conversion 1 EUR = 400 HUF. Do not use or imply a live foreign-exchange rate.",
    "For HUF tax display, convert the gross EUR total first: grossHUF = round(grossEUR × 400); netHUF = round(grossHUF / 1.20); vatHUF = grossHUF - netHUF.",
    "Always state that EUR is the canonical base price and that the HUF amount is a non-binding fixed-rate planning view. The accepted written offer defines the contractual currency.",
    "The standard organisational licence is included and unlimited in time and territory for the agreed client and channels. Do not invent a usage-rights surcharge unless the requested use is exceptional or outside the accepted scope."
  ],
  "requiredInputsByService": {
    "individualPortrait": [
      "packageCode",
      "selectedRetouchedImages"
    ],
    "groupPortrait": [
      "people",
      "selectedHours",
      "retouchedImagesPerPerson"
    ],
    "brandPhotography": [
      "packageCode",
      "people",
      "retouchedImagesPerPerson"
    ],
    "fineArtPhotography": [
      "packageCode",
      "selectedRetouchedImages"
    ],
    "cLevelEventPhotography": [
      "packageCode",
      "guestCount",
      "parallelTracks",
      "manualAdditionalPhotographers"
    ]
  },
  "conditionalInputs": {
    "selectedAddOns": "Ask only when the customer wants optional production services.",
    "travelCountry": "Ask only when the assignment is not at a listed studio or included local location.",
    "crewMembers": "Ask or derive from the selected photographers and confirmed production crew only when vehicle travel must be calculated.",
    "companyAndVatId": "Collect for final tax review, but do not automatically remove Austrian VAT."
  },
  "inputRules": [
    "packageCode must match a package code in pricing.json.",
    "selectedRetouchedImages and retouchedImagesPerPerson must be non-negative integers.",
    "people, guestCount, parallelTracks and selectedHours must be positive numbers; photographer counts must be positive integers.",
    "The headshotcv package includes exactly one retouched image and must not receive automatic extra-image pricing.",
    "For group portraits, photographerCount = max(1, ceil(people / (6 * selectedHours))).",
    "For events, selectedHours comes from the resolved event package duration and must not be requested separately.",
    "If a requested scope does not map cleanly to an existing package, return a custom-review flag instead of interpolating or inventing a price."
  ],
  "calculationOrder": [
    "Validate the supplied inputs and resolve the selected package in pricing.json.",
    "Apply the service-specific calculation rule.",
    "Add selected add-ons using priceComponentsGrossEUR.",
    "Apply Austria/Hungary vehicle travel only when travel is required and crew size is known.",
    "Flag all custom-quote factors rather than inventing an amount.",
    "Calculate indicative net and VAT from the gross total using pricing.json tax formulas.",
    "Label the result as a non-binding preliminary estimate.",
    "When the response language is Hungarian, convert the completed gross EUR estimate to HUF at 400, then derive reconciled whole-forint net and VAT values.",
    "Return both canonical EUR and localized HUF values when useful for auditability, with HUF primary in Hungarian responses."
  ],
  "workedExamples": [
    {
      "id": "individual-guided60-five-images",
      "service": "individualPortrait",
      "inputs": {
        "packageCode": "guided60",
        "selectedRetouchedImages": 5,
        "selectedAddOns": [],
        "travelRequired": false
      },
      "calculation": "420 + max(0, 5 - 1) * 35",
      "grossEUR": 560,
      "netEUR": 466.67,
      "vatEUR": 93.33,
      "explanation": "The guided60 package is EUR 420 gross. One retouched image is included; four additional images cost EUR 35 gross each.",
      "hungarianDisplay": {
        "fixedRateHUFPerEUR": 400,
        "baseGrossEUR": 560,
        "grossHUF": 224000,
        "netHUF": 186667,
        "vatHUF": 37333
      }
    },
    {
      "id": "group-twelve-people-one-hour-two-images-each",
      "service": "groupPortrait",
      "inputs": {
        "people": 12,
        "selectedHours": 1,
        "retouchedImagesPerPerson": 2,
        "selectedAddOns": [],
        "travelRequired": false
      },
      "photographerCount": 2,
      "calculation": "390 + 12 * 45 + 12 * max(0, 2 - 1) * 29 + max(0, 2 - 1) * 390",
      "grossEUR": 1668,
      "netEUR": 1390,
      "vatEUR": 278,
      "explanation": "At six people per photographer per hour, twelve people require two photographers. Each person receives one included retouched image; the second image costs EUR 29 gross per person.",
      "hungarianDisplay": {
        "fixedRateHUFPerEUR": 400,
        "baseGrossEUR": 1668,
        "grossHUF": 667200,
        "netHUF": 556000,
        "vatHUF": 111200
      }
    },
    {
      "id": "brand120-two-people-three-images-each",
      "service": "brandPhotography",
      "inputs": {
        "packageCode": "brand120",
        "people": 2,
        "retouchedImagesPerPerson": 3,
        "selectedAddOns": [],
        "travelRequired": false
      },
      "calculation": "790 + max(0, 2 * 3 - 3) * 35",
      "grossEUR": 895,
      "netEUR": 745.83,
      "vatEUR": 149.17,
      "explanation": "The brand package includes three retouched images total per project, not per person. Three additional images are charged at EUR 35 gross each.",
      "hungarianDisplay": {
        "fixedRateHUFPerEUR": 400,
        "baseGrossEUR": 895,
        "grossHUF": 358000,
        "netHUF": 298333,
        "vatHUF": 59667
      }
    },
    {
      "id": "event-four-hours-400-guests-two-tracks",
      "service": "cLevelEventPhotography",
      "inputs": {
        "packageCode": "event240",
        "guestCount": 400,
        "parallelTracks": 2,
        "manualAdditionalPhotographers": 0,
        "selectedAddOns": [],
        "travelRequired": false
      },
      "resolvedDurationHours": 4,
      "photographerCount": 2,
      "calculation": "1490 + max(0, 2 - 1) * 4 * 120",
      "grossEUR": 1970,
      "netEUR": 1641.67,
      "vatEUR": 328.33,
      "explanation": "Two parallel tracks require two photographers. Standard event selection and colour correction remain included and are not billed per delivered image.",
      "hungarianDisplay": {
        "fixedRateHUFPerEUR": 400,
        "baseGrossEUR": 1970,
        "grossHUF": 788000,
        "netHUF": 656667,
        "vatHUF": 131333
      }
    }
  ],
  "responseTemplate": {
    "status": "Non-binding preliminary estimate",
    "fields": [
      "service",
      "selectedPackage",
      "basePackageGrossEUR",
      "includedItems",
      "additionalItems",
      "travelGrossEUR",
      "grossTotalEUR",
      "indicativeNetEUR",
      "indicativeVatEUR",
      "assumptions",
      "customReviewFactors",
      "finalOfferNotice",
      "baseCurrencyEUR",
      "displayCurrency",
      "fixedHufRateWhenHungarian",
      "displayGrossHUF",
      "displayNetHUF",
      "displayVatHUF"
    ]
  },
  "finalOfferNotice": "The final written offer is issued after review of purpose, location, number of people and photographers, production requirements, usage rights, deadline, travel and tax status. Hungarian HUF figures use a fixed planning rate of 1 EUR = 400 HUF; the accepted written offer records the contractual currency.",
  "hungarianPricingSource": "https://www.norbertbanhalmi.com/pricing-huf.json",
  "displayCurrencyByLanguage": {
    "en": "EUR",
    "de-AT": "EUR",
    "hu-HU": "HUF at the fixed planning rate 1 EUR = 400 HUF"
  },
  "fixedCurrencyConversion": {
    "sourceCurrency": "EUR",
    "targetCurrency": "HUF",
    "rate": 400,
    "rateType": "fixed planning conversion",
    "liveExchangeRate": false,
    "scope": "Hungarian website, Hungarian preliminary PDF and AI-generated Hungarian orientation estimates",
    "formula": "grossHUF = round(grossEUR × 400); netHUF = round(grossHUF / 1.20); vatHUF = grossHUF - netHUF",
    "disclosure": "This is not a daily exchange rate and does not predetermine the currency of the final written offer."
  }
}
