PageSourceSearch

https://unless.com/_astro/controller.B7IHbEQo.js

js unless.com collected 2026-09-24 08:34:49 UTC 84,368 bytes, 3 lines download raw bytes

1function xe(n=window.location.search){const t=new URLSearchParams(n),e={};for(const[s,i]of t.entries())e[s]=i.length>2048?i.slice(0,2048):i;const a=t.get("tool"),o=t.get("variant");return{raw:e,tool:a?a.trim().toLowerCase():null,variant:o?o.trim().toLowerCase():null}}function ee(n,t){const e=new URL(n,window.location.origin);for(const[o,s]of Object.entries(t.raw))o==="tool"||o==="variant"||e.searchParams.set(o,s);t.tool&&e.searchParams.set("source_tool",t.tool),t.variant&&e.searchParams.set("source_variant",t.variant);const a=e.searchParams.toString();return e.pathname+(a?`?${a}`:"")}const ke="Benchmark your AI approach",Ae="See where you stand against other organizations, and what each route to AI would actually get you. Tell us something about yourself first, before getting benchmarked.",we="Tell us about your approach",Ie="Please answer some questions, so we can calculate where you stand.",Ee="What does this mean?",Ce={route:"DIY means built in-house on raw LLM APIs. CRM-based means the AI built into your helpdesk or CRM (for example Zendesk, Salesforce, Intercom). Specialist means a dedicated provider like Unless.",deflection:"The share of tickets your AI resolves on its own today, before any handoff to a person.",csat:'Your customer satisfaction score, if you measure one. Choose "Not measured" if you do not track it.',ambition:"Where you want AI to take you in the next 12 months, from deflecting more tickets up to running AI-first across the whole customer journey.",residency:"Whether your provider guarantees, in writing, that customer data stays within the EU.",audit:"Whether you can retrieve a per-decision record of what the AI did and why for a given interaction.",dpo:"Whether your Data Protection Officer has formally signed off the AI system for use."},Se={hasAI:"Do you have AI assistance in production today?",yes:"Yes",no:"No",route:"Which route are you on?",routeOptions:{diy:"Built in-house on LLM APIs",crm:"Built into our CRM or helpdesk",specialist:"A specialist AI provider"},crmVendor:"Which platform?",specialistVendor:"Which provider?",other:"Other",otherPlaceholder:"Name it",selectPlaceholder:"Select one"},Ne={tickets:"Support tickets per month",ticketsRemaining:"Remaining support tickets per month",handleTime:"Handling time per ticket (minutes)",handleTimeNote:"The time a team member spends resolving one ticket, on average.",docHours:"Monthly effort to maintain documentation (hours)",docHoursNote:"The time your team spends writing and publishing documentation, on average.",hourlyRate:"Hourly rate per team member (€)",hourlyRateNote:"Average, fully-loaded cost of a support hour, salary plus overhead.",deflection:"Your current AI deflection rate (%)",csat:"Current CSAT",ambition:"Ambition for the next 12 months",complianceLegend:"Compliance checks",compliance:{residency:"EU data residency",audit:"Audit trail",dpo:"DPO sign-off"}},Te={heading:"Your benchmark",opportunityLabel:"Your modeled annual opportunity",deflectionPart:"{amount} a year from lifting deflection toward the 78% organizations running Unless reach.",contentOpsPart:"{amount} a year from automating 64% of content operations.",beatsUnlessNote:"Your AI already deflects at or above the 78% rate Unless publishes, so deflection is not where your gain sits. The content-ops automation above still is.",layerOneHeading:"You vs organizations running Unless",layerTwoHeading:"What each route gets you",statusQuoNote:"You have no AI in production yet. Here is what each route would get you.",inProductionNote:"You already run AI in production. Here is where you stand, and what each route would get you.",yourRouteBadge:"Your route",scenarios:{diy:"DIY, self-built",crm:"CRM-based AI",specialist:"With Unless"},metricGroups:{cost:"Cost",gain:"Gain",csat:"CSAT",compliance:"Compliance",maturity:"AI maturity ceiling"},rows:{costInitial:"Initial cost",costRecurring:"Recurring cost",gainAvoided:"Avoided cost",gainRevenue:"Revenue",csat:"CSAT",compliance:"Compliance",maturity:"Maturity ceiling"},sourceLabels:{published:"Sourced",reasoned:"Reasoned"},sourcePrefix:"Source: ",asOfLabel:"as of {date}",gapHeading:"Your two biggest opportunities",editLabel:"Adjust my answers",cells:{costInitial:{diy:{text:"High: months of engineering before the first answer, plus evaluation and safety work.",source:"Category logic"},crm:{text:"Low if you are already on the platform; the AI is bundled or toggled on.",source:"Know-how: specialist AI vs built-in CRM AI"}
1,specialist:{text:"Transparent entry, often higher than a bundled toggle, with customization usually included. Unless publishes a EUR 1,999 per month Fixed plan (free pilot included) or EUR 0.99 per outcome Flex.",source:"Unless pricing; Know-how: specialist AI vs built-in CRM AI"}},costRecurring:{diy:{text:"LLM API usage plus permanent engineering and content maintenance; content ops stay manual.",source:"Category logic"},crm:{text:"Scales with seats and resolutions, so cost rises as performance improves; customization drives consultant spend.",source:"Know-how: specialist AI vs built-in CRM AI"},specialist:{text:"Subscription or per-outcome; heavy users land at EUR 0.16 to 0.45 per resolved interaction.",source:"Unless customer data"}},gainAvoided:{diy:{text:"Capped by what you build; there is no baseline to expect, and every deflection point is engineering effort.",source:"Category logic"},crm:{text:"Proven for support deflection; content ops remain manual due to limited source integrations outside the ecosystem.",source:"Know-how: specialist AI vs built-in CRM AI"},specialist:{text:"78% deflection, 71% efficiency gain, and 64% of content ops automated.",source:"Unless production aggregates"}},gainRevenue:{diy:{text:"Technically possible but rarely built: acquisition and expansion logic is effectively a second product.",source:"Category logic"},crm:{text:"Mostly roadmap; usage is overwhelmingly support-first, with no acquisition or expansion engine in production.",source:"Know-how: specialist AI vs built-in CRM AI"},specialist:{text:"Full journey: a modeled EUR 200K revenue impact within the EUR 330K full-lifecycle example, versus EUR 70K support-only.",source:"Unless modeled example"}},csat:{diy:{text:"Unmeasured by default: you build the measurement too.",source:"Category logic"},crm:{text:"Platform-dependent; a support-only scope limits journey-wide lift.",source:"Category logic, article-adjacent"},specialist:{text:"Modeled CSAT of 83 rising to 91 across the full journey.",source:"Unless modeled example"}},compliance:{diy:{text:"Entirely your burden: residency, audit trail, the DPA chain with model providers, and EU AI Act documentation are all self-built.",source:"Category logic; article compliance notes"},crm:{text:"Ecosystem-bound; US-headquartered platforms complicate EU postures, and EU AI Act audit trails are generally unaddressed.",source:"Know-how: specialist AI vs built-in CRM AI"},specialist:{text:"Built for regulated EU use: data residency, a Privacy Vault, a per-decision audit trail, and EU AI Act readiness.",source:"Unless trust page"}},maturity:{diy:{text:"Theoretically unlimited, practically capped by engineering budget: every step up the curve is a new project.",source:"Category logic"},crm:{text:"Caps at automated support; AI-first across the four moments is not reachable inside one ecosystem.",source:"Know-how: specialist AI vs built-in CRM AI"},specialist:{text:"Full curve reachable: AI-first across Acquisition, Retention, Expansion, and Support.",source:"Unless product maturity matrix"}}},finCells:{costInitial:{text:"Low to start if you already run Intercom: Fin is toggled on inside the platform.",source:"Intercom pricing"},costRecurring:{text:"Fin bills USD 0.99 per resolution on top of Intercom seat fees, so spend grows with resolution volume.",source:"Intercom/Fin pricing"},gainAvoided:{text:"Fin reports strong support-question resolution; content ops outside Intercom stay manual.",source:"Intercom Fin materials"},gainRevenue:{text:"Support-first: no acquisition or expansion engine in production today.",source:"Intercom product docs"},csat:{text:"Support-scoped, so journey-wide CSAT lift is out of scope.",source:"Category logic"},compliance:{text:"US-headquartered: EU data residency requires migration, and per-decision EU AI Act audit trails are not addressed by default. Salesforce agreed to acquire Intercom, expected to close early 2027, which adds data-governance questions worth asking.",source:"Intercom trust docs; acquisition announcement"},maturity:{text:"Caps at automated support within the Intercom ecosystem.",source:"Know-how: specialist AI vs built-in CRM AI"}}},Re={cost:{you:"You spend about {costPerTicket} on every ticket a person handles.",unless:"Organizations running Unless operate at EUR 0.16 to 0.45 per resolved 
1interaction."},gain:{youNoAI:"You have no AI deflection in place today.",youHasAI:"Your AI deflects about {deflectionRate} of your tickets today.",unless:"Organizations running Unless reach 78% deflection and automate 64% of content ops."},csat:{youMeasured:"Your CSAT sits in the {csat} band.",youNotMeasured:"You do not measure CSAT today.",unless:"The Unless modeled example moves CSAT from 83 to 91 across the journey."},compliance:{you:"You have {complianceCount} of three compliance safeguards in place (EU data residency, an audit trail, and DPO sign-off).",unless:"Unless ships EU residency, a per-decision audit trail, and EU AI Act readiness."},maturity:{you:'Over the next 12 months you want to reach "{ambition}".',unless:"Only a full-journey route can reach AI-first everywhere."}},Le={cost:"Bring your cost per resolved interaction toward the EUR 0.16 to 0.45 range Unless customers see.",gain:"Lift deflection toward the 78% organizations running Unless reach.",csat:"Start measuring CSAT so the journey-wide lift from 83 to 91 is visible.",compliance:"Close the EU residency, audit-trail, and DPO gaps before they block a rollout.",maturity:"Move beyond support-only automation toward the full customer journey."},Pe={csat:{na:"Not measured",lt70:"Under 70","70_85":"70 to 85",gt85:"Over 85"},ambition:{deflect:"Deflect more tickets",contentops:"Automate content ops",journey:"AI across the whole journey",aifirst:"AI-first operation"}},qe={heading:ke,intro:Ae,questionsHeading:we,questionsIntro:Ie,infoLabel:Ee,hints:Ce,intake:Se,questions:Ne,report:Te,layerOne:Re,gaps:Le,bands:Pe},_e="Close",je={firstName:{label:"First name"},lastName:{label:"Last name"},email:{label:"Work email"},company:{label:"Company"},submit:"See my results",submitting:"Working on it"},Ue={microcopyBefore:"We'll use your details to send your result and a single demo invitation, on the basis of our legitimate interest. Read our ",privacyLinkLabel:"privacy statement",privacyHref:"/en/legal/visitors/privacy-statement/",microcopyAfter:".",optInLabel:"Keep me posted with occasional product updates and insights."},Me={required:"Please fill in this field.",email:"Please enter a valid email address.",freemail:"Please use your work email address so we can reach the right person.",number:"Please enter a number."},Oe={label:"Take a tour",base:"/en/tour/",secondaryLabel:"Book a live demo",
1secondaryBase:"/en/contact-us/"},Fe={contact:"About you",questions:"Your setup",result:"Your result",continue:"Continue",back:"Back",progress:"Step {current} of {total}"},He={close:_e,form:je,consent:Ue,errors:Me,cta:Oe,steps:Fe},De="Calculate your AI support savings",Be="Three numbers, one honest projection. No sales call required.",ze={tickets:{label:"Support tickets per month"},handleTime:{label:"Average handling time per ticket (minutes)",source:"The time a team member spends resolving one ticket."},hourlyRate:{label:"Average hourly rate per team member (€)",source:"Fully-loaded cost of a support hour, salary plus overhead."}},$e={heading:"Your projected first-year impact",savingsLabel:"Yearly savings",roiLabel:"Return on investment",paybackLabel:"Payback time",paybackValue:"{months} months",costBasis:"That works out to {cost} per ticket, from {minutes} minutes of handling at {rate} per hour.",deflectionNote:"Based on a 78% ticket deflection rate, the figure Unless publishes from production data.",exclusionLine:"That is only deflection. Efficiency gains and content-ops savings come on top.",recompute:"Adjust my inputs"},Ve={heading:"Let us find the right fit",body:"At your current volume, the Fixed plan does not pay back on deflection alone. Our Flex plan bills at €0.99 per resolved outcome, so you only pay for the value delivered.",note:"Your figures: {savings} projected yearly savings against a €23,988 Fixed plan."},Ke={heading:De,intro:Be,questions:ze,result:$e,lowFit:Ve},Ye="Comparez votre approche de l'IA",Ge="Découvrez où vous vous situez par rapport aux autres organisations, et ce que chaque voie vers l'IA vous apporterait réellement. Dites-nous d'abord quelques mots sur vous, avant d'obtenir votre comparatif.",We="Parlez-nous de votre approche",Je="Répondez à quelques questions afin que nous puissions calculer où vous vous situez.",Qe="Qu'est-ce que cela signifie ?",Ze={route:"DIY signifie une solution construite en interne sur des API LLM brutes. Basé sur le CRM signifie l'IA intégrée à votre outil de support client ou à votre CRM (par exemple Zendesk, Salesforce, Intercom). Spécialiste signifie un fournisseur dédié comme Unless.",deflection:"La part de tickets que votre IA résout seule aujourd'hui, avant toute passation à une personne.",csat:"Votre score de satisfaction client, si vous en mesurez un. Choisissez « Non mesuré » si vous ne le suivez pas.",ambition:"Où vous voulez que l'IA vous mène dans les 12 prochains mois, du détournement d'un plus grand nombre de tickets jusqu'à une approche AI-first sur tout le parcours client.",residency:"Si votre fournisseur garantit, par écrit, que les données clients restent dans l'UE.",audit:"Si vous pouvez récupérer, pour une interaction donnée, un enregistrement décision par décision de ce que l'IA a fait et pourquoi.",dpo:"Si votre délégué à la protection des données a formellement validé l'usage du système d'IA."},Xe={hasAI:"Disposez-vous aujourd'hui d'une assistance IA en production ?",yes:"Oui",no:"Non",route:"Quelle voie suivez-vous ?",routeOptions:{diy:"Construit en interne sur des API LLM",crm:"Intégré à notre CRM ou à notre outil de support client",specialist:"Un fournisseur IA spécialisé"},crmVendor:"Quelle plateforme ?",specialistVendor:"Quel fournisseur ?",other:"Autre",otherPlaceholder:"Précisez",selectPlaceholder:"Sélectionnez"},et={tickets:"Tickets de support par mois",ticketsRemaining:"Tickets de support restants par mois",handleTime:"Temps de traitement par ticket (minutes)",handleTimeNote:"Le temps qu'un membre de l'équipe consacre en moyenne à la résolution d'un ticket.",docHours:"Effort mensuel consacré à la documentation (heures)",docHoursNote:"Le temps que votre équipe consacre en moyenne à la rédaction et à la publication de documentation.",hourlyRate:"Taux horaire par membre de l'équipe (€)",hourlyRateNote:"Coût complet moyen d'une heure de support, salaire et charges compris.",deflection:"Votre taux actuel de tickets détournés par l'IA (%)",csat:"CSAT actuel",ambition:"Ambition pour les 12 prochains mois",complianceLegend:"Vérifications de conformité",compliance:{residency:"Résidence des données dans l'UE",audit:"Traçabilité d'audit",dpo:"Validation du DPO"}},tt={heading:"Votre comparatif",opportunityLabel:"Votre opportunité annuelle modélisée",deflectionPart:"{amount} par an en portant votre taux de détournement vers les 78 % atteints par les organisations qui utilisent Unless.",contentOpsPart:"{amount} par an en automatisant 64 % des opérations de contenu.",beatsUnlessNote:"Votre IA atteint déjà le taux de détournement de 78 % publié par Unless, voire le dépasse ; votre gain ne se situe donc pas là. L'automatisation des opérations de contenu ci-dessus, en revanche, reste pertinente.",layerOneHeading:"Vous face aux organisations qui utilisent Unless",layerTwoHeading:"Ce que chaque voie vous apporte",statusQuoNote:"Vous n'avez pas encore d'IA en production. Voici ce que chaque voie vous apporterait.",inProductionNote:"Vous utilisez déjà l'IA en production. Voici où vous vous situez, et ce que chaque voie vous apporterait.",yourRouteBadge:"Votre voie",scenarios:{diy:"DIY, construit en interne",crm:"IA basée sur le CRM",specialist:"Avec Unless"},metricGroups:{cost:"Coût",gain:"Gain",csat:"CSAT",compliance:"Conformité",maturity:"Plafond de maturité IA"},rows:{costInitial:"Coût initial",costRecurring:"Coût récurrent",gainAvoided:"Coût évité",gainRevenue:"Chiffre d'affaires",csat:"CSAT",compliance:"Conformité",maturity:"Plafond de maturité"},sourceLabels:{published:"Sourcé",reasoned:"Raisonné"},sourcePrefix:"Source : ",asOfLabel:"au {date}",gapHeading:"Vos deux plus grandes opportunités",editLabel:"Ajuster mes réponses",cells:{costInitial:{diy:{text:"Élevé : des mois d'ingénierie avant la première réponse, plus le travail d'évaluation et de sécurité.",source:"Logique de catégorie"},crm:{text:"Faible si vous êtes déjà sur la plateforme ; l'IA est incluse ou activable en un clic.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"Ticket d'entrée transparent, souvent plus élevé qu'une simple option incluse, avec la personnalisation généralement comprise. Unless publie une formule Fixed à 1 999 EUR HT par mois (pilote gratuit inclus) ou une formule Flex à 0,99 EUR HT par dénouement.",source:"Tarifs Unless ; Savoir-faire : IA spécialisée vs IA intégrée au CRM"}},costRecurring:{diy:{text:"Usage des API LLM, plus ingénierie permanente et maintenance de contenu ; les opérations de contenu restent manuelles.",source:"Logique de catégorie"},crm:{text:"Évolue avec le nombre de licences et de résolutions, si bien que le coût augmente à mesure que la performance s'améliore ; la personnalisation génère des dépenses de conseil.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"Abonnement ou facturation au dénouement ; les gros utilisateurs se situent entre 0,16 et 0,45 EUR par interaction résolue.",source:"Données clients Unless"}},gainAvoided:{diy:{text:"Plafonné par ce que vous construisez ; il n'existe aucune base de référence à attendre, et chaque point de détournement représente un effort d'ingénierie.",source:"Logique de catégorie"},crm:{text:"Éprouvé pour le détournement en support ; les opérations de contenu restent manuelles en raison d'intégrations de sources limitées hors de l'écosystème.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"78 % de tickets détournés, 71 % de gain d'efficacité et 64 % des opérations de contenu automatisées.",source:"Agrégats de production Unless"}},gainRevenue:{diy:{text:"Techniquement possible mais rarement construit : la logique d'acquisition et d'expansion représente en réalité un second produit.",source:"Logique de catégorie"},crm:{text:"Surtout au stade de la feuille de route ; l'usage est majoritairement centré sur le support, sans moteur d'acquisition ou d'expansion en production.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"Tout le parcours : un impact modélisé de 200 000 EUR sur le chiffre d'affaires, au sein de l'exemple à 330 000 EUR sur tout le cycle de vie, contre 70 000 EUR pour le support seul.",source:"Exemple modélisé Unless"}},csat:{diy:{text:"Non mesuré par défaut : vous devez aussi construire la mesure.",source:"Logique de catégorie"}
1,crm:{text:"Dépend de la plateforme ; un périmètre limité au support restreint le gain sur l'ensemble du parcours.",source:"Logique de catégorie, source connexe"},specialist:{text:"CSAT modélisé de 83 progressant à 91 sur l'ensemble du parcours.",source:"Exemple modélisé Unless"}},compliance:{diy:{text:"Entièrement à votre charge : résidence des données, traçabilité d'audit, chaîne d'accords de traitement des données avec les fournisseurs de modèles et documentation de l'AI Act européen sont toutes à construire vous-même.",source:"Logique de catégorie ; notes de conformité de l'article"},crm:{text:"Lié à l'écosystème ; les plateformes dont le siège est aux États-Unis compliquent la mise en conformité en Europe, et la traçabilité d'audit exigée par l'AI Act européen n'est généralement pas prise en charge.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"Conçu pour un usage réglementé dans l'UE : la résidence des données, un Coffre-fort de confidentialité, une traçabilité d'audit par décision et la préparation à l'AI Act européen.",source:"Page de confiance Unless"}},maturity:{diy:{text:"Théoriquement illimité, mais plafonné en pratique par le budget d'ingénierie : chaque étape de la courbe est un nouveau projet.",source:"Logique de catégorie"},crm:{text:"Plafonne au support automatisé ; une approche AI-first sur les quatre étapes n'est pas atteignable au sein d'un seul écosystème.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"},specialist:{text:"Toute la courbe est atteignable : AI-first sur l'Acquisition, la Rétention, l'Expansion et le Support.",source:"Matrice de maturité produit Unless"}}},finCells:{costInitial:{text:"Faible au démarrage si vous utilisez déjà Intercom : Fin s'active directement dans la plateforme.",source:"Tarifs Intercom"},costRecurring:{text:"Fin facture 0,99 USD par résolution, en plus des frais de licence Intercom, si bien que la dépense augmente avec le volume de résolutions.",source:"Tarifs Intercom/Fin"},gainAvoided:{text:"Fin annonce une bonne résolution des questions de support ; les opérations de contenu hors Intercom restent manuelles.",source:"Documentation Intercom Fin"},gainRevenue:{text:"Centré sur le support : aucun moteur d'acquisition ou d'expansion en production aujourd'hui.",source:"Documentation produit Intercom"},csat:{text:"Limité au support, si bien qu'un gain de CSAT sur tout le parcours est hors de portée.",source:"Logique de catégorie"},compliance:{text:"Siège aux États-Unis : la résidence des données dans l'UE exige une migration, et la traçabilité d'audit par décision requise par l'AI Act européen n'est pas traitée par défaut. Salesforce a conclu un accord pour acquérir Intercom, dont la clôture est prévue début 2027, ce qui soulève des questions de gouvernance des données qui méritent d'être posées.",source:"Documentation de confiance Intercom ; annonce de l'acquisition"},maturity:{text:"Plafonne au support automatisé au sein de l'écosystème Intercom.",source:"Savoir-faire : IA spécialisée vs IA intégrée au CRM"}}},nt={cost:{you:"Vous dépensez environ {costPerTicket} pour chaque ticket traité par une personne.",unless:"Les organisations qui utilisent Unless dépensent entre 0,16 et 0,45 EUR par interaction résolue."},gain:{youNoAI:"Vous ne détournez aujourd'hui aucun ticket avec l'IA.",youHasAI:"Votre IA détourne aujourd'hui environ {deflectionRate} de vos tickets.",unless:"Les organisations qui utilisent Unless atteignent 78 % de tickets détournés et automatisent 64 % des opérations de contenu."},csat:{youMeasured:"Votre CSAT se situe dans la tranche {csat}.",youNotMeasured:"Vous ne mesurez pas le CSAT aujourd'hui.",unless:"L'exemple modélisé d'Unless fait progresser le CSAT de 83 à 91 sur l'ensemble du parcours."},compliance:{you:"Vous avez {complianceCount} des trois garanties de conformité en place (résidence des données dans l'UE, traçabilité d'audit et validation du DPO).",unless:"Unless fournit la résidence des données dans l'UE, une traçabilité d'audit par décision et la préparation à l'AI Act européen."}
1,maturity:{you:"Au cours des 12 prochains mois, vous souhaitez atteindre « {ambition} ».",unless:"Seule une approche sur tout le parcours peut atteindre l'AI-first partout."}},ot={cost:"Rapprochez votre coût par interaction résolue de la fourchette de 0,16 à 0,45 EUR observée chez les clients Unless.",gain:"Faites progresser votre taux de détournement vers les 78 % atteints par les organisations qui utilisent Unless.",csat:"Commencez à mesurer le CSAT afin que le gain de 83 à 91 sur l'ensemble du parcours devienne visible.",compliance:"Comblez les lacunes de résidence des données dans l'UE, de traçabilité d'audit et de validation du DPO avant qu'elles ne bloquent un déploiement.",maturity:"Dépassez l'automatisation limitée au support pour couvrir tout le parcours client."},st={csat:{na:"Non mesuré",lt70:"Moins de 70","70_85":"70 à 85",gt85:"Plus de 85"},ambition:{deflect:"Détourner plus de tickets",contentops:"Automatiser les opérations de contenu",journey:"IA sur tout le parcours",aifirst:"Fonctionnement AI-first"}},at={heading:Ye,intro:Ge,questionsHeading:We,questionsIntro:Je,infoLabel:Qe,hints:Ze,intake:Xe,questions:et,report:tt,layerOne:nt,gaps:ot,bands:st},it="Fermer",rt={firstName:{label:"Prénom"},lastName:{label:"Nom"},email:{label:"E-mail professionnel"},company:{label:"Entreprise"},submit:"Voir mes résultats",submitting:"En cours"},lt={microcopyBefore:"Nous utiliserons vos informations pour vous envoyer votre résultat et une seule invitation à une démo, sur la base de notre intérêt légitime. Consultez notre ",privacyLinkLabel:"déclaration de confidentialité",privacyHref:"/en/legal/visitors/privacy-statement/",microcopyAfter:".",optInLabel:"Je souhaite recevoir de temps en temps des actualités et des nouveautés produit."},ct={required:"Merci de remplir ce champ.",email:"Merci de saisir une adresse e-mail valide.",freemail:"Merci d'utiliser votre adresse e-mail professionnelle afin que nous puissions contacter la bonne personne.",number:"Merci de saisir un nombre."},ut={label:"Faire une visite guidée",base:"/en/tour/",secondaryLabel:"Réserver une démo en direct",secondaryBase:"/en/contact-us/"},dt={contact:"À propos de vous",questions:"Votre configuration",result:"Votre résultat",continue:"Continuer",back:"Retour",progress:"Étape {current} sur {total}"},mt={close:it,form:rt,consent:lt,errors:ct,cta:ut,steps:dt},pt="Calculez vos économies sur le support avec l'IA",ht="Trois chiffres, une projection honnête. Aucun appel commercial requis.",gt={tickets:{label:"Tickets de support par mois"},handleTime:{label:"Temps de traitement moyen par ticket (minutes)",source:"Le temps qu'un membre de l'équipe consacre à la résolution d'un ticket."},hourlyRate:{label:"Taux horaire moyen par membre de l'équipe (€)",source:"Coût complet d'une heure de support, salaire et charges compris."}},ft={heading:"Votre impact projeté sur la première année",savingsLabel:"Économies annuelles",roiLabel:"Retour sur investissement",paybackLabel:"Délai de rentabilité",paybackValue:"{months} mois",costBasis:"Cela représente {cost} par ticket, pour {minutes} minutes de traitement à {rate} de l'heure.",deflectionNote:"Sur la base d'un taux de 78 % de tickets détournés, le chiffre publié par Unless à partir de ses données de production.",exclusionLine:"Cela ne concerne que les tickets détournés. Les gains d'efficacité et les économies sur les opérations de contenu viennent en plus.",recompute:"Ajuster mes données"},vt={heading:"Trouvons ensemble la formule adaptée",body:"À votre volume actuel, la formule Fixed ne s'amortit pas sur le seul détournement. Notre formule Flex facture 0,99 € HT par dénouement résolu, afin que vous ne payiez que pour la valeur apportée.",note:"Vos chiffres : {savings} d'économies annuelles projetées, à comparer à une formule Fixed à 23 988 € HT par an."}
1,bt={heading:pt,intro:ht,questions:gt,result:ft,lowFit:vt},yt="Zet je AI-aanpak naast die van anderen",xt="Zie waar je staat ten opzichte van andere organisaties, en wat elke route naar AI je echt zou opleveren. Vertel eerst iets over jezelf, dan volgt de vergelijking.",kt="Vertel ons over je aanpak",At="Beantwoord een paar vragen, dan berekenen we waar je staat.",wt="Wat betekent dit?",It={route:"Zelfbouw betekent dat je zelf bouwt op ruwe LLM-API's. Via CRM betekent dat je de AI gebruikt die al in je helpdesk of CRM zit (bijvoorbeeld Zendesk, Salesforce, Intercom). Specialist betekent een gespecialiseerde aanbieder als Unless.",deflection:"Het aandeel tickets dat je AI vandaag zelf oplost, voordat er iemand aan te pas komt.",csat:'Je klanttevredenheidsscore, als je die meet. Houd je die niet bij, kies dan "Niet gemeten".',ambition:"Waar je met AI naartoe wilt in de komende 12 maanden, van meer tickets afvangen tot AI-first voor de hele klantreis.",residency:"Of je aanbieder schriftelijk garandeert dat klantdata binnen de EU blijft.",audit:"Of je per beslissing kunt terughalen wat de AI heeft gedaan en waarom, voor een bepaalde interactie.",dpo:"Of je DPO het AI-systeem formeel heeft goedgekeurd voor gebruik."},Et={hasAI:"Heb je vandaag AI-hulp in productie draaien?",yes:"Ja",no:"Nee",route:"Welke route volg je?",routeOptions:{diy:"Zelf gebouwd op LLM-API's",crm:"Ingebouwd in ons CRM of onze helpdesk",specialist:"Een gespecialiseerde AI-aanbieder"},crmVendor:"Welk platform?",specialistVendor:"Welke aanbieder?",other:"Anders",otherPlaceholder:"Vul de naam in",selectPlaceholder:"Maak een keuze"},Ct={tickets:"Support tickets per maand",ticketsRemaining:"Resterende support tickets per maand",handleTime:"Afhandeltijd per ticket (minuten)",handleTimeNote:"De tijd die een teamlid gemiddeld kwijt is aan het oplossen van één ticket.",docHours:"Onderhoud van documentatie per maand (uren)",docHoursNote:"De tijd die je team gemiddeld besteedt aan het schrijven en publiceren van documentatie.",hourlyRate:"Uurtarief per teamlid (€)",hourlyRateNote:"De gemiddelde volledige kosten van een supportuur, salaris plus overhead.",deflection:"Tickets die je AI vandaag afvangt (%)",csat:"Huidige CSAT",ambition:"Ambitie voor de komende 12 maanden",complianceLegend:"Compliance checks",compliance:{residency:"EU-dataresidentie",audit:"Audittrail",dpo:"Akkoord van de DPO"}},St={heading:"Jouw vergelijking",opportunityLabel:"Wat er per jaar te halen valt",deflectionPart:"{amount} per jaar als je net zo veel tickets afvangt als organisaties met Unless: 78%.",contentOpsPart:"{amount} per jaar door 64% van het contentwerk te automatiseren.",beatsUnlessNote:"Je AI vangt al 78% of meer af, het cijfer dat Unless publiceert. Daar zit je winst dus niet. In het automatiseren van contentwerk hierboven wel.",layerOneHeading:"Jij tegenover organisaties met Unless",layerTwoHeading:"Wat elke route je oplevert",statusQuoNote:"Je hebt nog geen AI in productie. Dit is wat elke route je zou opleveren.",inProductionNote:"Je draait al AI in productie. Dit is waar je staat, en wat elke route je zou opleveren.",yourRouteBadge:"Jouw route",scenarios:{diy:"Zelfbouw",crm:"AI via het CRM",specialist:"Met Unless"},metricGroups:{cost:"Kosten",gain:"Opbrengst",csat:"CSAT",compliance:"Compliance",maturity:"Hoogst haalbare AI maturity"},rows:{costInitial:"Kosten bij de start",costRecurring:"Terugkerende kosten",gainAvoided:"Vermeden kosten",gainRevenue:"Omzet",csat:"CSAT",compliance:"Compliance",maturity:"Hoogst haalbaar"},sourceLabels:{published:"Met bron",reasoned:"Beredeneerd"},sourcePrefix:"Bron: ",asOfLabel:"per {date}",gapHeading:"Je twee grootste kansen",editLabel:"Pas mijn antwoorden aan",cells:{costInitial:{diy:{text:"Hoog: maanden engineering voordat het eerste antwoord er is, plus evaluatie- en veiligheidswerk.",source:"Categorielogica"},crm:{text:"Laag als je al op het platform zit; de AI is gebundeld of met één schakelaar aan te zetten.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"Transparante instap, vaak hoger dan een gebundelde schakelaar, met maatwerk er meestal bij. Unless publiceert een Fixed-plan van €1.999 per maand (met gratis pilot) of Flex voor €0,99 per outcome.",source:"Prijzen van Unless; Know-how: specialist-AI vs ingebouwde CRM-AI"}}
1,costRecurring:{diy:{text:"LLM-API-verbruik plus permanente engineering en onderhoud van content; contentwerk blijft handwerk.",source:"Categorielogica"},crm:{text:"Schaalt met seats en opgeloste interacties, dus de kosten stijgen als de prestaties verbeteren; maatwerk drijft de uitgaven aan consultants op.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"Abonnement of per outcome; grootverbruikers komen uit op €0,16 tot €0,45 per opgeloste interactie.",source:"Data van Unless-klanten"}},gainAvoided:{diy:{text:"Begrensd door wat je zelf bouwt; er is geen basislijn om van uit te gaan, en elk procentpunt afgevangen tickets is engineeringwerk.",source:"Categorielogica"},crm:{text:"Bewezen voor het afvangen van support tickets; contentwerk blijft handwerk door beperkte bronintegraties buiten het eigen ecosysteem.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"78% afgevangen tickets, 71% efficiencywinst en 64% van het contentwerk geautomatiseerd.",source:"Unless-productiecijfers"}},gainRevenue:{diy:{text:"Technisch mogelijk, maar zelden gebouwd: logica voor acquisitie en upsells is in de praktijk een tweede product.",source:"Categorielogica"},crm:{text:"Vooral roadmap; het gebruik is overwegend support-first, zonder motor voor acquisitie of upsells in productie.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"De hele klantreis: een gemodelleerde omzetimpact van €200K binnen het rekenvoorbeeld van €330K voor de volledige klantreis, tegenover €70K voor support alleen.",source:"Rekenvoorbeeld van Unless"}},csat:{diy:{text:"Standaard ongemeten: de meting bouw je er ook zelf bij.",source:"Categorielogica"},crm:{text:"Afhankelijk van het platform; een scope die alleen support dekt, beperkt de winst voor de hele klantreis.",source:"Categorielogica, in lijn met het kennisartikel"},specialist:{text:"Gemodelleerde CSAT die van 83 naar 91 stijgt voor de hele klantreis.",source:"Rekenvoorbeeld van Unless"}},compliance:{diy:{text:"Volledig je eigen verantwoordelijkheid: dataresidentie, audittrail, de DPA-keten met modelleveranciers en documentatie voor de EU AI Act bouw je allemaal zelf.",source:"Categorielogica; compliance-notities uit het kennisartikel"},crm:{text:"Gebonden aan het ecosysteem; platforms met hoofdkantoor in de VS maken je compliancepositie in de EU ingewikkelder, en audittrails voor de EU AI Act zijn doorgaans niet geregeld.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"Gebouwd voor gereguleerd gebruik in de EU: dataresidentie, een Privacy Vault, een audittrail per beslissing en gereedheid voor de EU AI Act.",source:"Trustpagina van Unless"}},maturity:{diy:{text:"Theoretisch onbegrensd, in de praktijk begrensd door het engineeringbudget: elke stap hoger op de curve is een nieuw project.",source:"Categorielogica"},crm:{text:"Stopt bij geautomatiseerde support; AI-first over alle vier de momenten is binnen één ecosysteem niet haalbaar.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"},specialist:{text:"De hele curve is haalbaar: AI-first over Acquisitie, Retentie, Upsells en Support.",source:"Maturity-matrix van Unless"}}},finCells:{costInitial:{text:"Laag om te beginnen als je al Intercom draait: Fin zet je met één schakelaar aan binnen het platform.",source:"Prijzen van Intercom"},costRecurring:{text:"Fin rekent USD 0,99 per resolution, boven op de kosten per seat van Intercom, dus de uitgaven groeien met het aantal resolutions.",source:"Prijzen van Intercom/Fin"},gainAvoided:{text:"Fin rapporteert sterke resultaten in het oplossen van supportvragen; contentwerk buiten Intercom blijft handwerk.",source:"Documentatie van Intercom Fin"},gainRevenue:{text:"Support-first: vandaag geen motor voor acquisitie of upsells in productie.",source:"Productdocumentatie van Intercom"},csat:{text:"Beperkt tot support, dus CSAT-winst voor de hele klantreis valt buiten bereik.",source:"Categorielogica"},compliance:{text:"Hoofdkantoor in de VS: EU-dataresidentie vraagt om migratie, en audittrails per beslissing voor de EU AI Act zijn standaard niet geregeld. Salesforce heeft een overeenkomst gesloten om Intercom over te nemen; de overname wordt naar verwachting begin 2027 afgerond, wat vragen over datagovernance oproept die het waard zijn om te stellen.",source:"Trust-documentatie van Intercom; aankondiging van de overname"},maturity:{text:"Stopt bij geautomatiseerde support binnen het ecosysteem van Intercom.",source:"Know-how: specialist-AI vs ingebouwde CRM-AI"}}},Nt={cost:{you:"Je besteedt ongeveer {costPerTicket} aan elk ticket dat een mens afhandelt.",unless:"Organisaties met Unless zitten op €0,16 tot €0,45 per opgeloste interactie."},gain:{youNoAI:"Je vangt vandaag nog geen tickets af met AI.",youHasAI:"Je AI vangt vandaag ongeveer {deflectionRate} van je tickets af.",unless:"Organisaties met Unless vangen 78% van de tickets af en automatiseren 64% van het contentwerk."},csat:{youMeasured:"Je CSAT zit in de bandbreedte {csat}.",youNotMeasured:"Je meet vandaag geen CSAT.",unless:"In het rekenvoorbeeld van Unless gaat de CSAT voor de hele klantreis van 83 naar 91."},compliance:{you:"Je hebt {complianceCount} van de drie waarborgen op orde (EU-dataresidentie, een audittrail en akkoord van de DPO).",unless:"Unless levert EU-residentie, een audittrail per beslissing en gereedheid voor de EU AI Act."},maturity:{you:'In de komende 12 maanden wil je "{ambition}" bereiken.',unless:"Alleen een route voor de hele klantreis brengt je overal op AI-first."}},Tt={cost:"Breng je kosten per opgeloste interactie richting de €0,16 tot €0,45 die klanten van Unless halen.",gain:"Werk toe naar de 78% afgevangen tickets die organisaties met Unless halen.",csat:"Begin met het meten van CSAT, zodat de winst van 83 naar 91 voor de hele klantreis zichtbaar wordt.",compliance:"Dicht de gaten in EU-residentie, audittrail en akkoord van de DPO voordat ze een uitrol blokkeren.",maturity:"Ga verder dan support alleen en pak de hele klantreis."},Rt={csat:{na:"Niet gemeten",lt70:"Onder 70","70_85":"70 tot 85",gt85:"Boven 85"},ambition:{deflect:"Meer tickets afvangen",contentops:"Contentwerk automatiseren",journey:"AI voor de hele klantreis",aifirst:"AI-first organisatie"}}
1,Lt={heading:yt,intro:xt,questionsHeading:kt,questionsIntro:At,infoLabel:wt,hints:It,intake:Et,questions:Ct,report:St,layerOne:Nt,gaps:Tt,bands:Rt},Pt="Sluiten",qt={firstName:{label:"Voornaam"},lastName:{label:"Achternaam"},email:{label:"Zakelijk e-mailadres"},company:{label:"Bedrijf"},submit:"Toon mijn resultaat",submitting:"Even geduld"},_t={microcopyBefore:"We gebruiken je gegevens om je resultaat en één uitnodiging voor een demo te sturen, op grond van ons gerechtvaardigd belang. Lees onze ",privacyLinkLabel:"privacyverklaring",privacyHref:"/en/legal/visitors/privacy-statement/",microcopyAfter:".",optInLabel:"Houd me af en toe op de hoogte van productnieuws en inzichten."},jt={required:"Vul dit veld in.",email:"Vul een geldig e-mailadres in.",freemail:"Gebruik je zakelijke e-mailadres, zodat we de juiste persoon kunnen bereiken.",number:"Vul een getal in."},Ut={label:"Doe de tour",base:"/en/tour/",secondaryLabel:"Plan een live demo",secondaryBase:"/en/contact-us/"},Mt={contact:"Over jou",questions:"Jouw situatie",result:"Jouw resultaat",continue:"Verder",back:"Terug",progress:"Stap {current} van {total}"},Ot={close:Pt,form:qt,consent:_t,errors:jt,cta:Ut,steps:Mt},Ft="Bereken wat AI je op support bespaart",Ht="Drie getallen, één eerlijke schatting. Zonder verkoopgesprek.",Dt={tickets:{label:"Support tickets per maand"},handleTime:{label:"Gemiddelde afhandeltijd per ticket (minuten)",source:"De tijd die een teamlid kwijt is aan het oplossen van één ticket."},hourlyRate:{label:"Gemiddelde kosten per supportuur (€)",source:"De volledige kosten van een supportuur, salaris plus overhead."}},Bt={heading:"Je verwachte impact in het eerste jaar",savingsLabel:"Besparing per jaar",roiLabel:"Rendement op de investering",paybackLabel:"Terugverdientijd",paybackValue:"{months} maanden",costBasis:"Dat komt neer op {cost} per ticket, bij {minutes} minuten afhandeling tegen {rate} per uur.",deflectionNote:"Gebaseerd op 78% afgevangen tickets, het cijfer dat Unless uit de praktijk publiceert.",exclusionLine:"En dan gaat dit alleen nog over afvangen. Efficiëntiewinst en besparing op contentwerk komen daar bovenop.",recompute:"Pas mijn invoer aan"},zt={heading:"Laten we het juiste plan zoeken",body:"Bij jouw huidige volume verdient het Fixed-plan zich niet terug met alleen afvangen. Ons Flex-plan kost €0,99 per outcome, dus je betaalt alleen voor wat de agent oplevert.",note:"Jouw cijfers: {savings} verwachte besparing per jaar tegenover een Fixed-plan van €23.988."},$t={heading:Ft,intro:Ht,questions:Dt,result:Bt,lowFit:zt},ue="en",te=Object.assign({"/src/i18n/pages/en/tools/benchmark.json":qe,"/src/i18n/pages/en/tools/overlay.json":He,"/src/i18n/pages/en/tools/roi.json":Ke,"/src/i18n/pages/fr/tools/benchmark.json":at,"/src/i18n/pages/fr/tools/overlay.json":mt,"/src/i18n/pages/fr/tools/roi.json":bt,"/src/i18n/pages/nl/tools/benchmark.json":Lt,"/src/i18n/pages/nl/tools/overlay.json":Ot,"/src/i18n/pages/nl/tools/roi.json":$t});function Vt(n=window.location.pathname){return n.match(/^\/([a-z]{2})\//)?.[1]??ue}function ne(n,t){const e=te[`/src/i18n/pages/${n}/tools/${t}.json`];if(e)return e;const a=te[`/src/i18n/pages/${ue}/tools/${t}.json`];if(a)return a;throw new Error(`Tool copy not found: ${t} (locale ${n})`)}function R(n,t){let e=n;for(const[a,o]of Object.entries(t))e=e.replaceAll(`{${a}}`,String(o));return e}const Kt=new Set(["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com","yahoo.com","ymail.com","yahoo.co.uk","yahoo.fr","yahoo.de","icloud.com","me.com","mac.com","aol.com","gmx.com","gmx.net","gmx.de","proton.me","protonmail.com","pm.me","zoho.com","mail.com","yandex.com","yandex.ru","web.de","free.fr","orange.fr"]),Yt=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function Gt(n){return Yt.test(n.trim())}function Wt(n){const t=n.trim().toLowerCase().split("@")[1];return t?Kt.has(t):!1}const Jt="block w-full rounded-[var(--radius-md)] bg-[var(--bg-paper)] px-3 py-2 text-[15px] text-[var(--fg-primary)] outline outline-1 -outline-offset-1 outline-[var(--border-default)] placeholder:text-[var(--fg-tertiary)] focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--border-focus)]",de="block text-sm font-medium text-[var(--fg-primary)]",Qt="mt-1 text-sm text-[var(--color-danger-500)]";function $(n){const t=document.createElement("div");n.colSpan&&(t.className=n.colSpan);const e=document.createElement("label");e.className=de,e.htmlFor=n.id,e.textContent=n.label;const a=document.createElement("div");a.className="mt-2";const o=document.createElement("input");o.id=n.id,o.name=n.id,o.type=n.type??"text",n.autocomplete&&(o.autocomplete=n.autocomplete),o.className=Jt,a.appendChild(o);const s=document.createElement("p");s.className=Qt,s.hidden=!0,s.setAttribute("aria-live","polite");const i=`${n.id}-error`;s.id=i,t.append(e,a,s);function r(u){s.textContent=u,s.hidden=!1,o.setAttribute("aria-invalid","true"),o.setAttribute("aria-describedby",i),o.classList.add("outline-[var(--color-danger-500)]")}function l(){s.hidden=!0,o.removeAttribute("aria-invalid"),o.removeAttribute("aria-describedby"),o.classList.remove("outline-[var(--color-danger-500)]")}return o.addEventListener("input",l),{wrapper:t,input:o,showError:r,clearError:l}}function j(n){const t=document.createElement("div"),e=document.createElement("div");e.className="flex items-baseline justify-between gap-3";const a=document.createElement("label");a.className=de,a.htmlFor=n.id,a.textContent=n.label;const o=document.createElement("input");o.id=n.id,o.name=n.id,o.type="number",o.min=String(n.min),o.max=String(n.max),o.step=String(n.step),o.value=String(n.value),o.inputMode="numeric",o.className="w-28 rounded-[var(--radius-md)] bg-[var(--bg-paper)] px-3 py-1.5 text-right text-[15px] text-[var(--fg-primary)] outline outline-1 -outline-offset-1 outline-[var(--border-default)] focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--border-focus)]",e.append(a,o);const s=n.scale==="log"&&n.min>0&&n.max>n.min,i=1e3,r=d=>Number.isNaN(d)?n.min:Math.min(n.max,Math.max(n.min,d)),l=d=>{if(d<=0)return n.min;const p=Math.pow(10,Math.floor(Math.log10(d))-1),k=Math.max(n.step,p);return r(Math.round(d/k)*k)},u=d=>{if(!s)return r(d);const p=Math.log(r(d)/n.min)/Math.log(n.max/n.min);return Math.round(Math.min(1,Math.max(0,p))*i)},m=d=>{if(!s)return r(d);const p=d/i;return l(n.min*Math.pow(n.max/n.min,p))},c=document.createElement("input");if(c.type="range",c.min=s?"0":String(n.min),c.max=String(s?i:n.max),c.step=s?"1":String(n.step),c.value=String(u(n.value)),c.setAttribute("aria-label",n.label),c.className="mt-3 w-full accent-[var(--brand-blue)]",t.append(e,c),n.sourceNote){const d=document.createElement("p");d.className="mt-2 text-xs text-[var(--fg-tertiary)]",d.textContent=n.sourceNote,t.appendChild(d)}return c.addEventListener("input",()=>{o.value=String(m(Number(c.value)))}),o.addEventListener("input",()=>{c.value=String(u(Number(o.value)))}),o.addEventListener("blur",()=>{const d=r(Number(o.value));o.value=String(d),c.value=String(u(d))}),{wrapper:t,numberInput:o,labelEl:a,getValue:()=>r(Number(o.value))}}function Zt(n){const t=document.createElement("div");t.className="mt-6 space-y-4";const e=document.createElement("p");e.className="text-xs text-[var(--fg-tertiary)]",e.append(document.createTextNode(n.consent.microcopyBefore));const a=document.createElement("a");a.href=n.consent.privacyHref,a.textContent=n.consent.privacyLinkLabel,a.className="underline hover:text-[var(--fg-secondary)]",a.target="_blank",a.rel="noopener",e.appendChild(a),e.append(document.createTextNode(n.consent.microcopyAfter));const o=document.createElement("div");o.className="flex gap-3";const s=document.createElement("div");s.className="flex h-5 shrink-0 items-center";const i=document.createElement("input");i.type="checkbox",i.id="tool-optin",i.name="marketingOptIn",i.className="size-4 rounded border-[var(--border-default)] text-[var(--brand-blue)] focu
1s:ring-[var(--brand-blue)]",s.appendChild(i);const r=document.createElement("label");return r.htmlFor="tool-optin",r.className="text-sm text-[var(--fg-secondary)]",r.textContent=n.consent.optInLabel,o.append(s,r),t.append(e,o),{block:t,optIn:i}}function Xt(n,t,e={}){const a=document.createElement("div");a.className="grid grid-cols-1 gap-x-4 gap-y-5 sm:grid-cols-2";const o=$({id:"tool-firstName",label:t.form.firstName.label,autocomplete:"given-name"}),s=$({id:"tool-lastName",label:t.form.lastName.label,autocomplete:"family-name"}),i=$({id:"tool-email",label:t.form.email.label,type:"email",autocomplete:"email",colSpan:"sm:col-span-2"}),r=$({id:"tool-company",label:t.form.company.label,autocomplete:"organization",colSpan:"sm:col-span-2"});a.append(o.wrapper,s.wrapper,i.wrapper,r.wrapper);const l=document.createElement("input");l.type="text",l.name="company_website",l.tabIndex=-1,l.autocomplete="off",l.setAttribute("aria-hidden","true"),l.className="absolute left-[-9999px] top-0 h-px w-px opacity-0";const u=document.createElement("div");u.className="mt-6 space-y-6";const{block:m,optIn:c}=Zt(t),d="mt-6 inline-flex w-full items-center justify-center gap-2 whitespace-nowrap rounded-md bg-[var(--brand-navy)] text-white hover:bg-[#1A2548] active:scale-[0.98] transition-[background-color,transform] duration-150 ease-out h-12 px-7 text-[15px] font-semibold font-body",p=document.createElement("button");if(p.type="submit",p.className=d,p.textContent=t.form.submit,e.split){const f=document.createElement("button");f.type="button",f.className=d,f.textContent=t.steps?.continue??"Continue";const b=document.createElement("div");b.dataset.phase="contact",b.append(a,l,m,f);const g=document.createElement("button");g.type="button",g.className="mt-3 inline-flex w-full items-center justify-center h-10 text-sm font-medium text-[var(--fg-tertiary)] hover:text-[var(--fg-primary)]",g.textContent=t.steps?.back??"Back";const A=document.createElement("div");return A.dataset.phase="questions",A.hidden=!0,A.append(u,p,g),n.append(b,A),{questionsSlot:u,submitButton:p,read:k,honeypotFilled:()=>l.value.trim().length>0,contactPhase:b,questionsPhase:A,continueButton:f,backButton:g}}n.append(a,l,u,m,p);function k(){let f=!0,b=!1,g=null;const A=w=>{const T=w.input.value.trim();return T?(w.clearError(),T):(w.showError(t.errors.required),f=!1,g=g??w.input,"")},L=A(o),P=A(s),S=i.input.value.trim(),N=A(r);return S?Gt(S)?Wt(S)?(i.showError(t.errors.freemail),f=!1,b=!0,g=g??i.input):i.clearError():(i.showError(t.errors.email),f=!1,g=g??i.input):(i.showError(t.errors.required),f=!1,g=g??i.input),f?{valid:!0,contact:{firstName:L,lastName:P,email:S,company:N},marketingOptIn:c.checked,blockedFreemail:!1}:(g?.focus(),{valid:!1,marketingOptIn:c.checked,blockedFreemail:b})}return{questionsSlot:u,submitButton:p,read:k,honeypotFilled:()=>l.value.trim().length>0}}const me="inline-flex w-full items-center justify-center gap-2 whitespace-nowrap rounded-md active:scale-[0.98] transition-[background-color,transform] duration-150 ease-out h-12 px-7 text-[15px] font-semibold font-body",en=`${me} bg-[var(--brand-navy)] text-white hover:bg-[#1A2548]`,tn=`${me} bg-[var(--bg-paper)] text-[var(--brand-navy)] outline outline-1 -outline-offset-1 outline-[var(--border-default)] hover:bg-[var(--bg-subtle)]`,nn="text-[15px] font-semibold text-[var(--brand-blue-text)] hover:text-[var(--brand-blue-hover)]";function G(n,t,e){const a=document.createElement("div");a.className="mt-8 flex flex-col items-center gap-3";const o=document.createElement("div");o.className="grid w-full grid-cols-1 gap-3 sm:grid-cols-2";const s=document.createElement("a");s.href=e.demoHref(),s.textContent=n.label,s.className=en,s.addEventListener("click",()=>e.onDemoClick("tour"));const i=document.createElement("a");if(i.href=e.secondaryHref(),i.textContent=n.secondaryLabel,i.className=tn,i.addEventListener("click",()=>e.onDemoClick("contact")),o.append(s,i),a.append(o),t){const r=document.createElement("button");r.type="button",r.textContent=t,r.className=nn,r.addEventListener("click",()=>e.editInputs()),a.append(r)}return a}const I={deflectionRate:.78,planPriceAnnual:23988,tickets:{min:50,max:1e5,step:50,default:2e3},handleTimeMinutes:{min:1,max:120,step:1,default:15},hourlyRate:{min:10,max:200,step:1,default:40}};function U(n,t,e){return Number.isNaN(n)?t:Math.min(e,Math.max(t,n))}function on(n,t=I){const e=U(n.ticketsPerMonth,t.tickets.min,t.tickets.max),a=U(n.handleTimeMinutes,t.handleTimeMinutes.min,t.handleTimeMinutes.max),o=U(n.hourlyRate,t.hourlyRate.min,t.hourlyRate.max),s=a/60*o,i=e*t.deflectionRate*s*12,r=Math.round((i-t.planPriceAnnual)/t.planPriceAnnual*100),l=i/12,u=l>0?t.planPriceAnnual/l:1/0;return{costPerTicket:Math.round(s*100)/100,yearlySavings:Math.round(i),roiPercent:r,paybackMonths:u,lowFit:r<100}}function V(n,t,e=0){return new Intl.NumberFormat(n,{style:"currency",currency:"EUR",maximumFractionDigits:e}).format(t)}function W(n,t){const e=document.createElement("div");e.className="rounded-[var(--radius-lg)] bg-[var(--bg-subtle)] px-5 py-4";const a=document.createElement("div");a.className="text-sm text-[var(--fg-tertiary)]",a.textContent=n;const o=document.createElement("div");return o.className="mt-1 text-3xl font-semibold tracking-tight text-[var(--brand-navy)]",o.textContent=t,e.append(a,o),e}const oe={name:"roi",copyName:"roi",mountQuestions(n,t){const e=t.toolCopy,a=j({id:"roi-tickets",label:e.questions.tickets.label,min:I.tickets.min,max:I.tickets.max,step:I.tickets.step,value:
1I.tickets.default,scale:"log"}),o=j({id:"roi-handle-time",label:e.questions.handleTime.label,min:I.handleTimeMinutes.min,max:I.handleTimeMinutes.max,step:I.handleTimeMinutes.step,value:I.handleTimeMinutes.default,sourceNote:e.questions.handleTime.source}),s=j({id:"roi-hourly-rate",label:e.questions.hourlyRate.label,min:I.hourlyRate.min,max:I.hourlyRate.max,step:I.hourlyRate.step,value:I.hourlyRate.default,sourceNote:e.questions.hourlyRate.source});return n.append(a.wrapper,o.wrapper,s.wrapper),{read(){return{ticketsPerMonth:a.getValue(),handleTimeMinutes:o.getValue(),hourlyRate:s.getValue()}}}},compute(n){return on({ticketsPerMonth:Number(n.ticketsPerMonth),handleTimeMinutes:Number(n.handleTimeMinutes),hourlyRate:Number(n.hourlyRate)})},renderResult(n,t,e,a){const o=e.toolCopy,s=t.results,i=t.answers,r=e.locale;if(s.lowFit){const k=document.createElement("h2");k.className="text-2xl font-semibold tracking-tight text-[var(--fg-primary)]",k.textContent=o.lowFit.heading;const f=document.createElement("p");f.className="mt-3 text-[var(--fg-secondary)]",f.textContent=o.lowFit.body;const b=document.createElement("p");b.className="mt-3 text-sm text-[var(--fg-tertiary)]",b.textContent=R(o.lowFit.note,{savings:V(r,s.yearlySavings)}),n.append(k,f,b,G(e.overlayCopy.cta,o.result.recompute,a));return}const l=document.createElement("h2");l.className="text-2xl font-semibold tracking-tight text-[var(--fg-primary)]",l.textContent=o.result.heading;const u=document.createElement("div");u.className="mt-6 grid grid-cols-1 gap-4 sm:grid-cols-3";const m=Math.round(s.paybackMonths*10)/10;u.append(W(o.result.savingsLabel,V(r,s.yearlySavings)),W(o.result.roiLabel,`${new Intl.NumberFormat(r).format(s.roiPercent)}%`),W(o.result.paybackLabel,R(o.result.paybackValue,{months:new Intl.NumberFormat(r).format(m)})));const c=document.createElement("p");c.className="mt-6 text-[var(--fg-secondary)]",c.textContent=o.result.exclusionLine;const d=document.createElement("p");d.className="mt-3 text-xs text-[var(--fg-tertiary)]",d.textContent=R(o.result.costBasis,{cost:V(r,s.costPerTicket,2),minutes:new Intl.NumberFormat(r).format(i.handleTimeMinutes),rate:V(r,i.hourlyRate)});const p=document.createElement("p");p.className="mt-3 text-xs text-[var(--fg-tertiary)]",p.textContent=o.result.deflectionNote,n.append(l,u,c,d,p,G(e.overlayCopy.cta,o.result.recompute,a))}},sn=["diy","crm","specialist"],an=["costInitial","costRecurring","gainAvoided","gainRevenue","csat","compliance","maturity"],Q={deflection:{value:.78},contentOpsAutomated:{value:.64},costPerResolutionHigh:{value:.45}},pe={tickets:{min:50,max:1e5,step:50,default:2e3},handleTimeMinutes:{min:1,max:120,step:1,default:15},docHours:{min:0,max:400,step:1,default:48},hourlyRate:{min:10,max:200,step:1,default:40},deflectionPct:{min:0,max:99.9,step:.1,default:30}},rn={costInitial:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}},costRecurring:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}},gainAvoided:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}},gainRevenue:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}},csat:{diy:{sourceType:"reasoned"},crm:{sourceType:"reasoned"},specialist:{sourceType:"published"}},compliance:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}},maturity:{diy:{sourceType:"reasoned"},crm:{sourceType:"published"},specialist:{sourceType:"published"}}},ln={costInitial:{sourceType:"published"},costRecurring:{sourceType:"published"},gainAvoided:{sourceType:"published"},gainRevenue:{sourceType:"published"},csat:{sourceType:"reasoned"},compliance:{sourceType:"published",asOf:"2026-07-04"},maturity:{sourceType:"published"}},J={csat:["na","lt70","70_85","gt85"],ambition:["deflect","contentops","journey","aifirst"]},se={crm:["Zendesk","Salesforce","HubSpot","Intercom/Fin","Freshworks"],specialist:["Ada","Sierra","Yellow.ai","Kore.ai","Open.cx","Wonderful"]};function cn(n){const t=pe,e=U(n.ticketsPerMonth,t.tickets.min,t.tickets.max),a=U(n.handleTimeMinutes,t.handleTimeMinutes.min,t.handleTimeMinutes.max),o=U(n.hourlyRate,t.hourlyRate.min,t.hourlyRate.max),s=U(n.docHours,t.doc
1Hours.min,t.docHours.max),i=Q.deflection.value,r=Q.contentOpsAutomated.value,l=a/60*o,u=s*o*12*r;let m,c=!1;if(!n.hasAI)m=e*i*l*12;else{const p=U(n.currentDeflectionPct,t.deflectionPct.min,t.deflectionPct.max)/100,f=e/(1-p)*(1-i),b=e-f;c=b<=0,m=Math.max(0,b)*l*12}const d=m+u;return{costPerTicket:Math.round(l*100)/100,deflectionSavings:Math.round(m),contentOpsSavings:Math.round(u),totalOpportunity:Math.round(d),beatsUnless:c}}const he="block text-sm font-medium text-[var(--fg-primary)]",ge="mt-2 block w-full rounded-[var(--radius-md)] bg-[var(--bg-paper)] px-3 py-2 text-[15px] text-[var(--fg-primary)] outline outline-1 -outline-offset-1 outline-[var(--border-default)] focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--border-focus)]",fe="mt-1 text-sm text-[var(--color-danger-500)]";let Z="What does this mean?",un=0;function ve(n){const t=document.createElement("span");t.className="tool-hint";const e=document.createElement("button");e.type="button",e.className="tool-hint__btn",e.setAttribute("aria-label",Z);const a=`bm-hint-${++un}`;e.setAttribute("aria-describedby",a),e.innerHTML='<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" aria-hidden="true"><circle cx="12" cy="12" r="9.25"/><line x1="12" y1="11" x2="12" y2="16.5" stroke-linecap="round"/><line x1="12" y1="7.75" x2="12" y2="7.75" stroke-linecap="round" stroke-width="2.25"/></svg>';const o=document.createElement("span");return o.className="tool-hint__bubble",o.id=a,o.setAttribute("role","tooltip"),o.textContent=n,t.append(e,o),t}function z(n){const t=document.createElement("div"),e=document.createElement("div");e.className="flex items-center gap-1.5";const a=document.createElement("label");a.className=he,a.htmlFor=n.id,a.textContent=n.label,e.append(a),n.hint&&e.append(ve(n.hint));const o=document.createElement("select");o.id=n.id,o.name=n.id,o.className=ge;const s=document.createElement("option");s.value="",s.textContent=n.placeholder,s.disabled=!0,s.selected=!0,o.appendChild(s);for(const r of n.options){const l=document.createElement("option");l.value=r.id,l.textContent=r.label,o.appendChild(l)}const i=document.createElement("p");return i.className=fe,i.hidden=!0,t.append(e,o,i),o.addEventListener("change",()=>{i.hidden=!0,o.classList.remove("outline-[var(--color-danger-500)]")}),{wrapper:t,select:o,value:()=>o.value,showError:r=>{i.textContent=r,i.hidden=!1,o.classList.add("outline-[var(--color-danger-500)]")},clearError:()=>{i.hidden=!0},focus:()=>o.focus()}}function K(n){const t=document.createElement("div"),e=document.createElement("div");e.className="flex items-center gap-1.5";const a=document.createElement("span");a.className=he,a.id=`${n.id}-label`,a.textContent=n.label,e.append(a),n.hint&&e.append(ve(n.hint));const o=document.createElement("p");o.className=fe,o.hidden=!0;const s=()=>{o.hidden=!0},i=document.createElement("div");i.className="mt-2 flex flex-wrap gap-x-5 gap-y-2",i.setAttribute("role","radiogroup"),i.setAttribute("aria-labelledby",a.id);const r=[],l=[];for(const u of n.options){const m=document.createElement("label");m.className="inline-flex items-center gap-2 text-[15px] text-[var(--fg-primary)] cursor-pointer";const c=document.createElement("input");c.type="radio",c.name=n.id,c.value=u.id,c.className="size-4 accent-[var(--brand-blue)]";const d=document.createElement("span");d.textContent=u.label,m.append(c,d),i.append(m),l.push(c),c.addEventListener("change",()=>{s(),r.forEach(p=>p())})}return t.append(e,i,o),{wrapper:t,value:()=>l.find(u=>u.checked)?.value??"",setValue:u=>{const m=l.find(c=>c.value===u);m&&(m.checked=!0)},showError:u=>{o.textContent=u,o.hidden=!1},clearError:s,focus:()=>l[0]?.focus(),onChange:u=>r.push(u)}}const ae=(n,t)=>n.map(e=>({id:e,label:t[e]??e})),ie=(n,t)=>n[t]??t,dn={published:"bg-[var(--brand-blue-soft)] text-[var(--brand-blue-text)]",reasoned:"bg-[var(--bg-inset)] text-[var(--fg-tertiary)]"};function mn(n,t,e,a,o,s,i){const r=document.createElement("div");r.dataset.scenario=a,s&&(r.dataset.highlighted="true"),r.className="flex flex-col h-full rounded-[var(--radius-md)] p-3 text-sm "+(s?"bg-[var(--brand-blue-soft)] outline outline-1 outline-[var(--brand-blue)]":"bg-[var(--bg-subtle)]");const l=document.createElement("div");l.className="text-xs font-semibold uppercase tracking-wide text-[var(--fg-tertiary)]",l.textContent=o;const u=document.createElement("span");u.className=`self-start mt-1.5 text-[10px] font-semibold uppercase tracking-wide rounded-full px-2 py-0.5 ${dn[n.sourceType]}`,u.textContent=i.sourceLabels[n.sourceType];
1const m=document.createElement("p");m.className="mt-2 text-[var(--fg-secondary)]",m.textContent=t;const c=document.createElement("p");return c.className="mt-auto pt-2 text-[11px] text-[var(--fg-tertiary)]",c.textContent=i.sourcePrefix+e+(n.asOf?` ${R(i.asOfLabel,{date:n.asOf})}`:""),r.append(l,u,m,c),r}function Y(n,t,e=0){return new Intl.NumberFormat(n,{style:"currency",currency:"EUR",maximumFractionDigits:e}).format(t)}const re={name:"benchmark",copyName:"benchmark",variants:["evaluate","fin"],flow:"split",mountQuestions(n,t){const e=t.toolCopy,a=t.variant==="fin",o=e.hints??{},s=pe;Z=e.infoLabel??Z;const i=[{id:"yes",label:e.intake.yes},{id:"no",label:e.intake.no}],r=K({id:"bm-hasai",label:e.intake.hasAI,options:i}),l=z({id:"bm-route",label:e.intake.route,placeholder:e.intake.selectPlaceholder,hint:o.route,options:[{id:"diy",label:e.intake.routeOptions.diy},{id:"crm",label:e.intake.routeOptions.crm},{id:"specialist",label:e.intake.routeOptions.specialist}]}),u=z({id:"bm-crm",label:e.intake.crmVendor,placeholder:e.intake.selectPlaceholder,options:[...se.crm.map(v=>({id:v,label:v})),{id:"Other",label:e.intake.other}]}),m=z({id:"bm-spec",label:e.intake.specialistVendor,placeholder:e.intake.selectPlaceholder,options:[...se.specialist.map(v=>({id:v,label:v})),{id:"Other",label:e.intake.other}]}),c=document.createElement("input");c.type="text",c.id="bm-other",c.placeholder=e.intake.otherPlaceholder,c.className=ge;const d=j({id:"bm-deflection",label:e.questions.deflection,min:s.deflectionPct.min,max:s.deflectionPct.max,step:s.deflectionPct.step,value:s.deflectionPct.default,sourceNote:o.deflection}),p=j({id:"bm-tickets",label:e.questions.tickets,min:s.tickets.min,max:s.tickets.max,step:s.tickets.step,value:s.tickets.default,scale:"log"}),k=j({id:"bm-handle-time",label:e.questions.handleTime,min:s.handleTimeMinutes.min,max:s.handleTimeMinutes.max,step:s.handleTimeMinutes.step,value:s.handleTimeMinutes.default,sourceNote:e.questions.handleTimeNote}),f=j({id:"bm-doc-hours",label:e.questions.docHours,min:s.docHours.min,max:s.docHours.max,step:s.docHours.step,value:s.docHours.default,sourceNote:e.questions.docHoursNote}),b=j({id:"bm-hourly-rate",label:e.questions.hourlyRate,min:s.hourlyRate.min,max:s.hourlyRate.max,step:s.hourlyRate.step,value:s.hourlyRate.default,sourceNote:e.questions.hourlyRateNote}),g=z({id:"bm-csat",label:e.questions.csat,placeholder:e.intake.selectPlaceholder,hint:o.csat,options:ae(J.csat,e.bands.csat)}),A=z({id:"bm-amb",label:e.questions.ambition,placeholder:e.intake.selectPlaceholder,hint:o.ambition,options:ae(J.ambition,e.bands.ambition)}),L=K({id:"bm-res",label:e.questions.compliance.residency,hint:o.residency,options:i}),P=K({id:"bm-aud",label:e.questions.compliance.audit,hint:o.audit,options:i}),S=K({id:"bm-dpo",label:e.questions.compliance.dpo,hint:o.dpo,options:i}),N=document.createElement("div");N.className="space-y-5";const w=document.createElement("div");N.append(l.wrapper,w,d.wrapper);const T=document.createElement("div");T.className="space-y-6",T.append(p.wrapper,k.wrapper,f.wrapper,b.wrapper);const H=document.createElement("div");H.className="grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-5",H.append(g.wrapper,A.wrapper);const M=document.createElement("div"),O=document.createElement("p");O.className="text-sm font-medium text-[var(--fg-primary)]",O.textContent=e.questions.complianceLegend;const F=document.createElement("div");F.className="mt-3 grid grid-cols-1 sm:grid-cols-3 gap-x-4 gap-y-4",F.append(L.wrapper,P.wrapper,S.wrapper),M.append(O,F),n.append(r.wrapper,N,T,H,M);function D(){w.replaceChildren(),l.value()==="crm"?w.append(u.wrapper):l.value()==="specialist"&&w.append(m.wrapper),h()}function h(){const y=(l.value()==="crm"?u:l.value()==="specialist"?m:null)?.value()==="Other";y&&!w.contains(c)?w.append(c):!y&&w.contains(c)&&w.removeChild(c)}function x(){const v=r.value()==="yes";N.hidden=!v,M.hidden=!v,p.labelEl.textContent=v?e.questions.ticketsRemaining:e.questions.tickets}return r.onChange(x),l.select.addEventListener("change",D),u.select.addEventListener("change",h),m.select.addEventListener("change",h),g.select.value="na",A.select.value=J.ambition[0],a?(r.setValue("yes"),l.select.value="crm",x(),D(),u.select.value="Intercom/Fin",h()):(r.setValue("no"),x()),{read(){let v=!0,y=null;const q=C=>C.value()?(C.clearError(),!0):(C.showError(e.intake.selectPlaceholder),v=!1,y=y??C,!1);q(r);const _=r.value()==="yes";let E="";if(_){q(l);const C=l.value();if(C==="crm"||C==="specialist"){const B=C==="crm"?u:m;
1q(B)&&(B.value()==="Other"?c.value.trim()?E=c.value.trim():(c.classList.add("outline-[var(--color-danger-500)]"),v=!1,y=y??c,E=""):E=B.value())}}return[g,A].forEach(q),_&&[L,P,S].forEach(q),v?{hasAI:r.value(),route:_?l.value():null,vendor:E||null,currentDeflectionPct:_?d.getValue():null,ticketsPerMonth:p.getValue(),handleTimeMinutes:k.getValue(),hourlyRate:b.getValue(),docHours:f.getValue(),csat:g.value(),ambition:A.value(),compliance:_?{residency:L.value(),audit:P.value(),dpo:S.value()}:null}:(y?.focus(),null)}}},compute(n,t){const e=n,a=t.toolCopy,o=e.hasAI==="yes",s=o?e.route:null,i=cn({ticketsPerMonth:Number(e.ticketsPerMonth),handleTimeMinutes:Number(e.handleTimeMinutes),hourlyRate:Number(e.hourlyRate),docHours:Number(e.docHours),currentDeflectionPct:o?Number(e.currentDeflectionPct):0,hasAI:o}),r=p=>p==="yes"?a.intake.yes:a.intake.no,l={csat:ie(a.bands.csat,e.csat),ambition:ie(a.bands.ambition,e.ambition)};e.compliance&&(l.residency=r(e.compliance.residency),l.audit=r(e.compliance.audit),l.dpo=r(e.compliance.dpo));const u=[],m=e.compliance;m&&(m.residency!=="yes"||m.audit!=="yes"||m.dpo!=="yes")&&u.push("compliance"),e.csat==="na"&&u.push("csat"),(!o||i.deflectionSavings>0)&&u.push("gain"),s!=="specialist"&&(e.ambition==="journey"||e.ambition==="aifirst")&&u.push("maturity"),i.costPerTicket>Q.costPerResolutionHigh.value&&u.push("cost");const c=m?["gain","maturity","compliance","cost","csat"]:["gain","maturity","cost","csat"];for(const p of c)u.includes(p)||u.push(p);const d=u.slice(0,2);return{scenario:s,variant:t.variant,hasAI:o,vendor:e.vendor??null,...i,gapKeys:d,readable:l}},renderResult(n,t,e,a){const o=e.toolCopy,s=o.report,i=t.results,r=t.answers,l=e.locale,u=i.scenario,m=e.variant==="fin",c=r.hasAI==="yes",d=document.createElement("h2");d.className="text-2xl font-semibold tracking-tight text-[var(--fg-primary)]",d.textContent=s.heading,n.append(d);const p=document.createElement("p");p.className="mt-2 text-sm text-[var(--fg-tertiary)]",p.textContent=u===null?s.statusQuoNote:s.inProductionNote,n.append(p);const k=document.createElement("div");k.className="mt-6 rounded-[var(--radius-lg)] bg-[var(--brand-navy)] px-6 py-5 text-white shadow-[0_24px_48px_rgba(5,11,28,0.35),0_8px_16px_rgba(5,11,28,0.20)]";const f=document.createElement("div");f.className="text-xs font-semibold uppercase tracking-[0.12em] text-[#93B4F5]",f.textContent=s.opportunityLabel;const b=document.createElement("div");b.className="mt-1 text-4xl sm:text-5xl font-semibold tracking-tight tabular-nums",b.textContent=Y(l,i.totalOpportunity);const g=document.createElement("ul");if(g.className="mt-3 space-y-0.5 list-none pl-0 text-[11px] leading-snug text-[rgba(255,255,255,0.72)]",i.beatsUnless){const h=document.createElement("li");h.textContent=s.beatsUnlessNote,g.append(h)}else if(i.deflectionSavings>0){const h=document.createElement("li");h.textContent=R(s.deflectionPart,{amount:Y(l,i.deflectionSavings)}),g.append(h)}const A=document.createElement("li");A.textContent=R(s.contentOpsPart,{amount:Y(l,i.contentOpsSavings)}),g.append(A),k.append(f,b,g),n.append(k);const L=document.createElement("h3");L.className="mt-8 text-lg font-semibold text-[var(--fg-primary)]",L.textContent=s.gapHeading;const P=document.createElement("ul");P.className="mt-3 space-y-2 list-disc pl-5 text-sm text-[var(--fg-secondary)]";for(const h of i.gapKeys){const x=document.createElement("li");x.textContent=o.gaps[h],P.append(x)}n.append(L,P),n.append(G(e.overlayCopy.cta,void 0,a));const S=r.compliance?["residency","audit","dpo"].filter(h=>r.compliance[h]==="yes").length:0,N={...i.readable,costPerTicket:Y(l,i.costPerTicket,2),deflectionRate:c?`${new Intl.NumberFormat(l).format(r.currentDeflectionPct)}%`:"",complianceCount:String(S)},w=h=>h==="gain"?c?R(o.layerOne.gain.youHasAI,N):o.layerOne.gain.youNoAI:h==="csat"?r.csat==="na"?o.layerOne.csat.youNotMeasured:R(o.layerOne.csat.youMeasured,N):R(o.layerOne[h].you,N),T=document.createElement("h3");T.className="mt-8 text-lg font-semibold text-[var(--fg-primary)]",T.textContent=s.layerOneHeading,n.append(T);const H=["cost","gain","csat",...c?["compliance"]:[],"maturity"],M=document.createElement("div");M.className="mt-3 grid grid-cols-1 sm:grid-cols-2 gap-3";for(const h of H.slice(0,2)){const x=document.createElement("div");
1x.className="rounded-[var(--radius-md)] bg-[var(--bg-inset)] p-4";const v=document.createElement("p");v.className="text-sm font-semibold text-[var(--fg-primary)]",v.textContent=w(h);const y=document.createElement("p");y.className="mt-1 text-sm text-[var(--fg-secondary)]",y.textContent=o.layerOne[h].unless,x.append(v,y),M.append(x)}n.append(M);const O=document.createElement("ul");O.className="mt-4 space-y-3 list-none pl-0";for(const h of H.slice(2)){const x=document.createElement("li");x.className="u-bullet u-bullet--square text-sm";const v=document.createElement("strong");v.textContent=w(h);const y=document.createElement("span");y.className="block mt-0.5",y.textContent=o.layerOne[h].unless,x.append(v,y),O.append(x)}n.append(O);const F=document.createElement("h3");F.className="mt-8 text-lg font-semibold text-[var(--fg-primary)]",F.textContent=s.layerTwoHeading;const D=document.createElement("div");D.className="mt-3";for(const h of an){const x=document.createElement("details");x.className="tool-accordion",x.dataset.metricRow=h;const v=document.createElement("summary"),y=document.createElement("span");y.className="text-sm font-medium text-[var(--fg-primary)]",y.textContent=s.rows[h];const q=document.createElement("span");q.className="tool-accordion__icon flex-none text-[var(--fg-tertiary)]",q.innerHTML='<svg class="tool-accordion__icon-closed" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M12 6v12m6-6H6" stroke-linecap="round" stroke-linejoin="round"/></svg><svg class="tool-accordion__icon-open" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M18 12H6" stroke-linecap="round" stroke-linejoin="round"/></svg>',v.append(y,q);const _=document.createElement("div");_.className="grid grid-cols-1 sm:grid-cols-3 gap-3 pb-4";for(const E of sn){const C=E==="crm"&&m,B=C?ln[h]:rn[h][E],X=C?s.finCells[h]:s.cells[h][E];_.append(mn(B,X.text,X.source,E,s.scenarios[E],u===E,s))}x.append(v,_),D.append(x)}n.append(F,D),n.append(G(e.overlayCopy.cta,s.editLabel,a))}},pn={[oe.name]:oe,[re.name]:re};function hn(n){return n?pn[n]??null:null}function gn(n,t){return!n.variants||n.variants.length===0?null:t&&n.variants.includes(t)?t:n.variants[0]}const fn=1;function vn(n){return{schemaVersion:fn,submissionId:bn(),timestamp:new Date().toISOString(),tool:n.tool,variant:n.variant,contact:n.contact,marketingOptIn:n.marketingOptIn,answers:n.answers,results:n.results,querystring:n.querystring}}function bn(){const n=globalThis.crypto;return n&&typeof n.randomUUID=="function"?n.randomUUID():`sub-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function yn(n,t,e){try{window.umami?.track?.(n,{tool:t.tool,variant:t.variant,...e??{}})}catch{}}class le{async deliver(t){console.log("[unless-tool] lead payload",JSON.stringify(t,null,2))}}const xn="unless_tool_details",kn="https://api.hsforms.com/submissions/v3/integration/submit";function An(n){const t=[`Tool: ${n.tool}${n.variant?` (${n.variant})`:""}`,`Marketing opt-in: ${n.marketingOptIn?"yes":"no"}`],e=(a,o)=>{const s=Object.entries(o??{});if(s.length!==0){t.push("",`${a}:`);for(const[i,r]of s){const l=r!==null&&typeof r=="object"?JSON.stringify(r):String(r);t.push(`  ${i}: ${l}`)}}};return e("Answers",n.answers),e("Results",n.results),e("Campaign / source",n.querystring),t.push("",`Submission ${n.submissionId} at ${n.timestamp}`),t.join(`
2`)}class wn{constructor(t){this.config=t}config;async deliver(t){const e=this.config.formGuidFor(t.tool,t.variant);if(!e)throw console.error("[unless-tool] no HubSpot form GUID for",t.tool,t.variant),new Error("No HubSpot form GUID configured for this tool");const o={fields:this.buildFields(t),context:{pageUri:window.location.href,pageName:document.title},legalConsentOptions:this.buildConsent(t)},s=await fetch(`${kn}/${this.config.portalId}/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),credentials:"omit"});if(!s.ok){let i=null;try{i=(await s.json())?.errors??null}catch{}throw console.error("[unless-tool] HubSpot submission failed",s.status,i),new Error(`HubSpot submission failed with status ${s.status}`)}}buildFields(t){return[{name:"firstname",value:String(t.contact.firstName)},{name:"lastname",value:String(t.contact.lastName)},{name:"email",value:String(t.contact.email)},{name:"company",value:String(t.contact.company)},{name:xn,value:An(t)}]}buildConsent(t){const e={consentToProcess:!0,text:"Unless may store and process this information to provide the requested result and one demo invitation."};return this.config.subscriptionTypeId!==null&&(e.communications=[{value:t.marketingOptIn,subscriptionTypeId:this.config.subscriptionTypeId,text:"Occasional product updates and insights."}]),{consent:e}}}const In={PUBLIC_HUBSPOT_FORM_BENCHMARK_EVALUATE:"e23ff94f-7e7b-428f-9c6e-49dcceafe5c0",PUBLIC_HUBSPOT_FORM_BENCHMARK_FIN:`4c54a587-2823-4a5a-84b4-44d4bf986491
3`,PUBLIC_HUBSPOT_FORM_ROI:"d8b5ef44-e137-4d41-bb68-872103b3f649",PUBLIC_HUBSPOT_PORTAL_ID:"2801808",PUBLIC_HUBSPOT_SUBSCRIPTION_ID:"3097196685"};function be(){const n=In,t=n.PUBLIC_HUBSPOT_PORTAL_ID,e={roi:n.PUBLIC_HUBSPOT_FORM_ROI,"benchmark:evaluate":n.PUBLIC_HUBSPOT_FORM_BENCHMARK_EVALUATE,"benchmark:fin":n.PUBLIC_HUBSPOT_FORM_BENCHMARK_FIN};for(const[o,s]of Object.entries(e))if(!s)throw new Error(`PUBLIC_LEAD_DELIVERY=hubspot but the form GUID for "${o}" is not set`);const a=n.PUBLIC_HUBSPOT_SUBSCRIPTION_ID;return{portalId:t,subscriptionTypeId:Number(a),formGuidFor(o,s){const i=o==="benchmark"?`benchmark:${s??"evaluate"}`:o;return e[i]??null}}}const En="nosubmit";function ye(){return typeof window>"u"?!1:new URLSearchParams(window.location.search).has(En)}function Cn(){if(ye())return new le;const n=be();return n?new wn(n):new le}function ce(){return!ye()&&be()!==null}const Sn='a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not
3([tabindex="-1"])';function Tn(){const n=xe(),t=hn(n.tool);t&&new Nn(t,n).open()}class Nn{tool;captured;variant;ctx;overlayCopy;root;panel;formStep;resultStep;form;leadForm;questions;previouslyFocused=null;firedEvents=new Set;closed=!1;submitting=!1;gatePassed=!1;sessionSubmissionId=null;openedAt=0;interacted=!1;split=!1;progressSegments=[];progressLabel;headingEl;introEl;contactDelivered=!1;constructor(t,e){this.tool=t,this.captured=e,this.variant=gn(t,e.variant);const a=Vt();this.overlayCopy=ne(a,"overlay");const o=ne(a,t.copyName);this.ctx={locale:a,variant:this.variant,overlayCopy:this.overlayCopy,toolCopy:o,captured:e}}track(t,e=!0,a){if(e){if(this.firedEvents.has(t))return;this.firedEvents.add(t)}yn(t,{tool:this.tool.name,variant:this.variant},a)}open(){this.openedAt=Date.now(),this.previouslyFocused=document.activeElement,this.build(),document.body.appendChild(this.root),document.documentElement.classList.add("tool-overlay-open"),document.body.classList.add("tool-overlay-open"),requestAnimationFrame(()=>{this.root.dataset.state="open"}),this.wireEvents(),this.split&&this.updateProgress(1),this.track("tool_overlay_opened"),this.form.querySelector("input, button, [tabindex]")?.focus()}build(){const t=this.ctx.toolCopy;this.split=this.tool.flow==="split",this.root=document.createElement("div"),this.root.className="tool-overlay",this.root.setAttribute("role","dialog"),this.root.setAttribute("aria-modal","true"),this.root.setAttribute("aria-labelledby","tool-overlay-title"),this.root.dataset.state="closed",this.panel=document.createElement("div"),this.panel.className="tool-overlay__panel";const e=document.createElement("button");e.type="button",e.className="absolute top-4 right-4 z-10 grid place-items-center size-9 rounded-full text-[var(--fg-tertiary)] hover:text-[var(--fg-primary)] hover:bg-[var(--bg-subtle)] focus:outline-2 focus:outline-offset-2 focus:outline-[var(--border-focus)]",e.setAttribute("aria-label",this.overlayCopy.close),e.innerHTML='<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M6 18 18 6M6 6l12 12" stroke-linecap="round" stroke-linejoin="round"/></svg>',e.addEventListener("click",()=>this.close());const a=document.createElement("div");a.className="tool-overlay__body",this.formStep=document.createElement("div"),this.formStep.dataset.step="form";const o=document.createElement("h1");o.id="tool-overlay-title",o.className="text-2xl sm:text-[28px] font-semibold tracking-tight text-[var(--fg-primary)] leading-tight pr-8",o.textContent=t.heading;const s=document.createElement("p");s.className="mt-2 text-[var(--fg-secondary)]",s.textContent=t.intro,this.headingEl=o,this.introEl=s,this.form=document.createElement("form"),this.form.className="mt-6",this.form.noValidate=!0,this.leadForm=Xt(this.form,this.overlayCopy,{split:this.split}),this.questions=this.tool.mountQuestions(this.leadForm.questionsSlot,this.ctx),this.formStep.append(o,s,this.form),this.split&&(this.leadForm.continueButton?.addEventListener("click",()=>this.onStep1Submit()),this.leadForm.backButton?.addEventListener("click",()=>this.showContactPhase())),this.resultStep=document.createElement("div"),this.resultStep.dataset.step="result",this.resultStep.tabIndex=-1,this.resultStep.className="outline-none",this.resultStep.hidden=!0,a.append(this.formStep,this.resultStep),this.split&&a.append(this.buildProgress()),this.panel.append(e,a);const i=document.createElement("div");i.className="tool-overlay__scroll",i.append(this.panel),this.root.append(i)}buildProgress(){const t=document.createElement("div");t.className="mt-8";const e=document.createElement("div");e.className="flex items-center gap-1.5",this.progressSegments=[];for(let a=0;a<3;a++){const o=document.createElement("div");o.className="h-1 flex-1 rounded-full bg-[var(--bg-inset)] transition-colors",e.append(o),this.progressSegments.push(o)}return this.progressLabel=document.createElement("p"),this.progressLabel.className="mt-2 text-xs font-medium text-[var(--fg-tertiary)]",t.append(e,this.progressLabel),t}applyStepCopy(t){if(!this.split)return;const e=this.ctx.toolCopy;
3this.headingEl.textContent=t==="questions"?e.questionsHeading??e.heading:e.heading,this.introEl.textContent=t==="questions"?e.questionsIntro??e.intro:e.intro}updateProgress(t){const e=this.overlayCopy.steps;if(!e)return;this.progressSegments.forEach((o,s)=>{o.classList.toggle("bg-[var(--brand-blue)]",s<t),o.classList.toggle("bg-[var(--bg-inset)]",s>=t)});const a=[e.contact,e.questions,e.result];this.progressLabel.textContent=`${R(e.progress,{current:t,total:3})} · ${a[t-1]??""}`}onStep1Submit(){const t=this.leadForm.read();if(!t.valid){t.blockedFreemail&&this.track("form_blocked_freemail");return}if(!this.contactDelivered){const e=ce()?this.detectSpam():null;e?this.track("form_blocked_spam",!1,{trigger:e}):(this.deliverLead(t.contact,t.marketingOptIn,{},{}),this.contactDelivered=!0)}this.leadForm.contactPhase.hidden=!0,this.leadForm.questionsPhase.hidden=!1,this.applyStepCopy("questions"),this.updateProgress(2),this.root.scrollTop=0,this.track("tool_questions_viewed"),this.leadForm.questionsPhase.querySelector("input, select, button, [tabindex]")?.focus({preventScroll:!0})}deliverLead(t,e,a,o){const s=vn({tool:this.tool.name,variant:this.variant,contact:t,marketingOptIn:e,answers:a,results:o,querystring:this.captured.raw});this.sessionSubmissionId?s.submissionId=this.sessionSubmissionId:this.sessionSubmissionId=s.submissionId,Cn().deliver(s).catch(()=>this.track("submit_delivery_failed"))}showContactPhase(){this.leadForm.questionsPhase.hidden=!0,this.leadForm.contactPhase.hidden=!1,this.applyStepCopy("contact"),this.updateProgress(1),this.root.scrollTop=0,this.leadForm.contactPhase.querySelector("input")?.focus({preventScroll:!0})}wireEvents(){this.root.addEventListener("mousedown",e=>{this.panel.contains(e.target)||this.close()}),this.root.addEventListener("keydown",e=>{e.key==="Escape"?(e.preventDefault(),this.close()):e.key==="Tab"&&this.trapFocus(e)}),this.form.addEventListener("input",()=>this.track("tool_form_started"),{once:!0});const t=()=>{this.interacted=!0};for(const e of["keydown","pointerdown","pointermove","focusin"])this.root.addEventListener(e,t,{once:!0});this.form.addEventListener("submit",e=>this.onSubmit(e))}detectSpam(){return this.leadForm.honeypotFilled()?"honeypot":Date.now()-this.openedAt<3e3?"timegate":this.interacted?null:"interaction"}trapFocus(t){const e=Array.from(this.panel.querySelectorAll(Sn)).filter(i=>i.offsetParent!==null||i===document.activeElement);if(e.length===0)return;const a=e[0],o=e[e.length-1],s=document.activeElement;t.shiftKey&&s===a?(t.preventDefault(),o.focus()):!t.shiftKey&&s===o&&(t.preventDefault(),a.focus())}onSubmit(t){if(t.preventDefault(),this.submitting)return;if(this.split&&this.leadForm.contactPhase&&!this.leadForm.contactPhase.hidden){this.onStep1Submit();return}const e=this.leadForm.read();if(!e.valid){e.blockedFreemail&&this.track("form_blocked_freemail");return}const a=this.questions.read();if(a===null)return;if(ce()){const s=this.detectSpam();if(s){this.track("form_blocked_spam",!1,{trigger:s}),this.submitting=!0;const i=this.tool.compute(a,this.ctx);this.showResult(a,i),this.submitting=!1;return}}this.submitting=!0,this.track("tool_form_submitted");const o=this.tool.compute(a,this.ctx);this.deliverLead(e.contact,e.marketingOptIn,a,o),this.showResult(a,o),this.submitting=!1}showResult(t,e){this.gatePassed=!0,this.resultStep.replaceChildren(),this.tool.renderResult(this.resultStep,{answers:t,results:e},this.ctx,{demoHref:()=>ee(this.overlayCopy.cta.base,this.captured),secondaryHref:()=>ee(this.overlayCopy.cta.secondaryBase,this.captured),onDemoClick:a=>this.track("tool_demo_clicked",!0,{destination:a}),editInputs:()=>
3this.showForm()}),this.formStep.hidden=!0,this.resultStep.hidden=!1,this.root.scrollTop=0,this.resultStep.focus({preventScroll:!0}),this.split&&this.updateProgress(3),this.track("tool_result_viewed")}showForm(){this.resultStep.hidden=!0,this.formStep.hidden=!1,this.split&&(this.leadForm.contactPhase.hidden=!0,this.leadForm.questionsPhase.hidden=!1,this.applyStepCopy("questions"),this.updateProgress(2)),this.root.scrollTop=0,(this.split?this.leadForm.questionsPhase:this.form).querySelector("input, select, button")?.focus({preventScroll:!0})}close(){if(this.closed)return;this.closed=!0,this.root.dataset.state="closed";const t=()=>{this.root.remove(),document.documentElement.classList.remove("tool-overlay-open"),document.body.classList.remove("tool-overlay-open"),this.previouslyFocused?.focus?.()};let e=!1;const a=()=>{e||(e=!0,t())};this.root.addEventListener("transitionend",a,{once:!0}),setTimeout(a,400)}}export{Tn as mountOverlay};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.