{"id":31793,"date":"2026-10-01T08:53:02","date_gmt":"2026-10-01T06:53:02","guid":{"rendered":"https:\/\/botnation.ai\/ticketing-chatbot\/"},"modified":"2026-10-05T16:47:41","modified_gmt":"2026-10-05T14:47:41","slug":"ticketing-chatbot","status":"publish","type":"post","link":"https:\/\/botnation.ai\/en\/ticketing-chatbot\/","title":{"rendered":"Ticketing chatbot: what it handles, and the 3 legal rules it must know"},"content":{"rendered":"<p><script>var s=document.createElement(\"style\");s.appendChild(document.createTextNode(`.bn-art{ --bn-cream:#faf8f2; --bn-card:#faf6ea; --bn-sand:#ebe3cb; --bn-sand-2:#f3ecd9; --bn-sand-zebra:#f6f0df; --bn-coral:#fe716b; --bn-coral-soft:#fdeeed; --bn-coral-line:#f6c9c6; --bn-coral-txt:#bd3a34; --bn-blue:#3358f0; --bn-blue-soft:#eef1fe; --bn-blue-line:#c9d4fb; --bn-green:#427632; --bn-green-soft:#eef6ea; --bn-ink:#3d351f; --bn-text:#414b56; --bn-muted:#6d6653; --bn-border:#e6dcc2; --bn-r:16px; --bn-r-sm:11px; --bn-sp:22px; --bn-sh:0 1px 2px rgba(61,53,31,.05),0 10px 26px rgba(61,53,31,.07); --bn-sh-sm:0 1px 2px rgba(61,53,31,.05),0 4px 12px rgba(61,53,31,.05); --bn-mono:'IBM Plex Mono','SFMono-Regular',ui-monospace,'Courier New',monospace; color:var(--bn-text); font-size:18px; line-height:1.75; max-width:820px; margin:0 auto; } .bn-art *{box-sizing:border-box} .bn-art p{margin:0 0 1.15em; color:var(--bn-text)} .bn-art h2{ color:var(--bn-ink); font-weight:700; line-height:1.25; font-size:1.72em; margin:2.2em 0 .7em; letter-spacing:-.01em; } .bn-art h3{color:var(--bn-ink); font-weight:700; font-size:1.22em; margin:1.8em 0 .5em} .bn-art a{color:#3f5cd6; text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px} .bn-art a:hover{color:var(--bn-coral)} .bn-art strong{color:var(--bn-ink); font-weight:700} .bn-art ul,.bn-art ol{margin:0 0 1.3em; padding-left:1.25em} .bn-art li{margin:.4em 0} .bn-art ul li::marker{color:var(--bn-coral)} .bn-art ol li::marker{color:var(--bn-blue); font-weight:700} .bn-klabel{ display:inline-flex; align-items:center; gap:7px; font-family:var(--bn-mono); font-size:14px; font-weight:600; text-transform:uppercase; letter-spacing:.12em; color:var(--bn-coral); margin:0 0 .2em; } .bn-klabel svg{width:15px;height:15px;flex:none} .bn-tldr{ background:var(--bn-card); border:1px solid var(--bn-border); border-left:4px solid var(--bn-coral); border-radius:var(--bn-r); padding:20px 24px; margin:0 0 30px; box-shadow:var(--bn-sh-sm); } .bn-tldr p{margin:0; color:var(--bn-text)} .bn-tldr p+p{margin-top:.6em} .bn-toc{ background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r); padding:18px 22px; margin:0 0 34px; } .bn-toc .bn-klabel{color:var(--bn-coral)} .bn-toc ol{margin:.4em 0 0; padding-left:1.2em; columns:2; column-gap:28px} .bn-toc li{margin:.25em 0; break-inside:avoid} .bn-toc a{color:var(--bn-ink); text-decoration:none; font-weight:600; font-size:.96em} .bn-toc a:hover{color:var(--bn-coral); text-decoration:underline} .bn-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:28px 0} .bn-stat{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:20px 18px; text-align:center; box-shadow:var(--bn-sh-sm); } .bn-stat b{display:block; font-size:2em; line-height:1.1; color:var(--bn-coral); font-weight:800; letter-spacing:-.02em} .bn-stat span{display:block; margin-top:6px; font-size:.86em; color:var(--bn-muted); line-height:1.45} .bn-stat:nth-child(2) b{color:var(--bn-blue)} .bn-stat:nth-child(3) b{color:var(--bn-ink)} .bn-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:26px 0} .bn-card{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px; box-shadow:var(--bn-sh-sm); } .bn-card h4{margin:.1em 0 .35em; color:var(--bn-ink); font-size:1.06em; font-weight:700; display:flex; gap:9px; align-items:center} .bn-card h4 svg{width:20px;height:20px;flex:none;color:var(--bn-coral)} .bn-card p{margin:0; font-size:.96em} .bn-ex{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:20px 0; box-shadow:var(--bn-sh); position:relative; } .bn-ex-h{display:flex; align-items:center; gap:13px; margin-bottom:14px} .bn-ex-n{ flex:none; width:38px; height:38px; border-radius:11px; background:var(--bn-coral-soft); color:var(--bn-coral); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:1.1em; font-family:var(--bn-mono); } .bn-ex-h h3{margin:0; font-size:1.18em} .bn-ex-tag{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.1em; color:var(--bn-muted); display:block; margin-top:2px} .bn-ex p{margin:.2em 0 .9em} .bn-ex .bn-ba{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:14px} .bn-ba div{border-radius:var(--bn-r-sm); padding:13px 15px; font-size:.9em; line-height:1.5} .bn-ba .biz{background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line)} .bn-ba .cli{background:var(--bn-green-soft); border:1px solid #cfe6c4} .bn-ba b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; margin-bottom:4px; color:var(--bn-muted)} .bn-tablewrap{overflow-x:auto; margin:26px 0; border-radius:var(--bn-r); border:1px solid var(--bn-border); box-shadow:var(--bn-sh-sm)} .bn-art table{width:100%; border-collapse:collapse; background:var(--bn-card); font-size:.94em; min-width:520px} .bn-art thead th{background:var(--bn-ink); color:#fbf7ec; text-align:left; font-weight:700; padding:13px 16px; font-size:16px} .bn-art tbody td{padding:12px 16px; border-top:1px solid var(--bn-border); color:var(--bn-text); vertical-align:top; font-size:16px} .bn-art tbody tr:nth-child(even){background:var(--bn-sand-zebra)} .bn-art tbody td:first-child{font-weight:700; color:var(--bn-ink)} .bn-cols{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:26px 0} .bn-col{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px; box-shadow:var(--bn-sh-sm)} .bn-col h4{margin:0 0 12px; font-size:1.05em; color:var(--bn-ink); display:flex; align-items:center; gap:9px} .bn-col h4 svg{width:20px;height:20px;flex:none} .bn-col.biz h4 svg{color:var(--bn-blue)} .bn-col.cli h4 svg{color:var(--bn-green)} .bn-col.warn h4 svg{color:var(--bn-coral)} .bn-col ul{margin:0; padding:0; list-style:none} .bn-col li{position:relative; padding-left:26px; margin:.55em 0; font-size:.96em} .bn-col li::before{content:\"\"; position:absolute; left:0; top:.5em; width:13px; height:13px; border-radius:50%; background:var(--bn-coral-soft); border:2px solid var(--bn-coral)} .bn-col.biz li::before{background:var(--bn-blue-soft); border-color:var(--bn-blue)} .bn-col.cli li::before{background:var(--bn-green-soft); border-color:var(--bn-green)} .bn-call{ display:flex; gap:14px; border-radius:var(--bn-r); padding:18px 20px; margin:24px 0; background:var(--bn-card); border:1px solid var(--bn-border); box-shadow:var(--bn-sh-sm); } .bn-call svg{width:22px; height:22px; flex:none; margin-top:1px} .bn-call b{color:var(--bn-ink)} .bn-call p{margin:0; font-size:.95em} .bn-call .bn-klabel{margin-bottom:3px} .bn-tip{border-left:4px solid var(--bn-green)} .bn-tip svg{color:var(--bn-green)} .bn-tip .bn-klabel{color:var(--bn-green)} .bn-warn{border-left:4px solid var(--bn-coral)} .bn-warn svg{color:var(--bn-coral)} .bn-warn .bn-klabel{color:var(--bn-coral)} .bn-info{border-left:4px solid var(--bn-blue)} .bn-info svg{color:var(--bn-blue)} .bn-info .bn-klabel{color:var(--bn-blue)} .bn-def{background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line); border-radius:var(--bn-r); padding:20px 24px; margin:24px 0} .bn-def .bn-klabel{color:var(--bn-blue)} .bn-def p{margin:0} .bn-steps{counter-reset:s; list-style:none; padding:0; margin:24px 0} .bn-steps li{position:relative; padding:0 0 4px 56px; margin:0 0 18px; min-height:40px} .bn-steps li::before{ counter-increment:s; content:counter(s); position:absolute; left:0; top:0; width:40px; height:40px; border-radius:12px; background:var(--bn-coral); color:#fff; font-weight:800; font-family:var(--bn-mono); display:flex; align-items:center; justify-content:center; box-shadow:var(--bn-sh-sm); } .bn-steps li b{display:block; color:var(--bn-ink); margin-bottom:2px} .bn-check{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-check h3{margin:.1em 0 .3em} .bn-check>p{font-size:.95em; color:var(--bn-muted); margin-bottom:14px} .bn-check ul{list-style:none; padding:0; margin:0 0 18px} .bn-check li{margin:0; border-top:1px solid var(--bn-border)} .bn-check li:first-child{border-top:none} .bn-check label{display:flex; align-items:flex-start; gap:13px; padding:12px 2px; cursor:pointer; font-size:.97em; color:var(--bn-text)} .bn-check input{appearance:none; -webkit-appearance:none; flex:none; width:22px; height:22px; margin-top:1px; border:2px solid var(--bn-coral-line); border-radius:7px; background:#fff; cursor:pointer; position:relative; transition:.15s} .bn-check input:checked{background:var(--bn-coral); border-color:var(--bn-coral)} .bn-check input:checked::after{content:\"\"; position:absolute; left:6px; top:2px; width:6px; height:11px; border:solid #fff; border-width:0 2.5px 2.5px 0; transform:rotate(45deg)} .bn-result{border-radius:var(--bn-r-sm); padding:16px 18px; background:var(--bn-coral-soft); border:1px solid var(--bn-coral-line); font-size:.96em} .bn-result b{color:var(--bn-ink)} .bn-result .bn-score{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral)} .bn-result .bnc-res{display:none; margin-top:10px} .bn-result .bnc-res.on{display:block} .bn-result .bnc-res p{margin:0; color:var(--bn-text)} .bn-faq{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); margin:0 0 12px; box-shadow:var(--bn-sh-sm); overflow:hidden} .bn-faq summary{cursor:pointer; padding:17px 20px; font-weight:700; color:var(--bn-ink); list-style:none; display:flex; justify-content:space-between; align-items:center; gap:14px; font-size:1.03em} .bn-faq summary::-webkit-details-marker{display:none} .bn-faq summary::after{content:\"+\"; font-family:var(--bn-mono); font-size:1.5em; color:var(--bn-coral); flex:none; line-height:1; transition:transform .2s} .bn-faq[open] summary::after{transform:rotate(45deg)} .bn-faq .bn-faq-b{padding:0 20px 18px; color:var(--bn-text)} .bn-faq .bn-faq-b p{margin:0} .bn-fig{margin:30px 0; text-align:center} .bn-fig img{width:100%; height:auto; border-radius:var(--bn-r); box-shadow:var(--bn-sh); display:block} .bn-fig figcaption{margin-top:10px; font-size:.85em; color:var(--bn-muted); font-style:italic} .bn-cta{background:var(--bn-ink); border-radius:var(--bn-r); padding:34px 32px; margin:36px 0 12px; text-align:center} .bn-cta h3{color:#fff; margin:0 0 .4em; font-size:1.4em} .bn-cta p{color:#e9e2cf; margin:0 auto 20px; max-width:560px; font-size:1em} .bn-cta-btn{display:inline-block; background:var(--bn-coral); color:#332c19 !important; text-decoration:none !important; font-weight:800; padding:15px 34px; border-radius:999px; font-size:1.02em; box-shadow:0 8px 22px rgba(254,113,107,.35); transition:.15s} .bn-cta-btn:hover{background:#ff8782; color:#fff !important} .bn-quiz{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-quiz .bnq-q{padding:14px 0; border-top:1px solid var(--bn-border)} .bn-quiz .bnq-q:first-of-type{border-top:none; padding-top:4px} .bn-quiz .bnq-qt{font-weight:700; color:var(--bn-ink); margin:0 0 10px; font-size:1.02em} .bn-quiz .bnq-opt{display:flex; align-items:flex-start; gap:12px; padding:9px 12px; margin:6px 0; cursor:pointer; font-size:.96em; color:var(--bn-text); border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; transition:.15s} .bn-quiz .bnq-opt:hover{border-color:var(--bn-coral-line); background:var(--bn-coral-soft)} .bn-quiz .bnq-opt input{appearance:none; -webkit-appearance:none; flex:none; width:20px; height:20px; margin-top:1px; border:2px solid var(--bn-coral-line); border-radius:50%; background:#fff; cursor:pointer; position:relative; transition:.15s} .bn-quiz .bnq-opt input:checked{border-color:var(--bn-coral)} .bn-quiz .bnq-opt input:checked::after{content:\"\"; position:absolute; left:3px; top:3px; width:10px; height:10px; border-radius:50%; background:var(--bn-coral)} .bn-quiz .bnq-opt:has(input:checked){border-color:var(--bn-coral); background:var(--bn-coral-soft)} .bn-quiz .bnq-btn{margin-top:16px; display:inline-block; background:var(--bn-coral); color:#332c19; border:none; font-weight:800; font-size:1em; padding:13px 30px; border-radius:999px; cursor:pointer; box-shadow:0 6px 16px rgba(254,113,107,.28); transition:.15s; font-family:inherit} .bn-quiz .bnq-btn:hover{background:#ff8782} .bn-quiz .bnq-res{display:none; margin-top:18px; padding:18px 20px; border-radius:var(--bn-r-sm); background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line)} .bn-quiz .bnq-res.on{display:block} .bn-quiz #bnq-agent{background:var(--bn-coral-soft); border-color:var(--bn-coral-line)} .bn-quiz #bnq-hybrid{background:var(--bn-green-soft); border-color:#cfe6c4} .bn-quiz .bnq-rt{font-weight:800; color:var(--bn-ink); margin:0 0 6px; font-size:1.08em} .bn-quiz .bnq-res p{margin:0} .bn-spectrum{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-spectrum h3{margin:.1em 0 .3em} .bn-spectrum>p{font-size:.95em; color:var(--bn-muted); margin:0 0 20px} .bn-spec-track{margin:26px 4px 4px} .bn-spec-range{-webkit-appearance:none; appearance:none; width:100%; height:8px; border-radius:999px; background:var(--bn-sand); outline:none; cursor:pointer; margin:0} .bn-spec-range::-webkit-slider-thumb{-webkit-appearance:none; appearance:none; width:26px; height:26px; border-radius:50%; background:var(--bn-coral); border:3px solid #fff; box-shadow:var(--bn-sh-sm); cursor:pointer} .bn-spec-range::-moz-range-thumb{width:26px; height:26px; border-radius:50%; background:var(--bn-coral); border:3px solid #fff; box-shadow:var(--bn-sh-sm); cursor:pointer} .bn-spec-stops{display:flex; justify-content:space-between; margin-top:13px; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.07em; color:var(--bn-muted); gap:8px} .bn-spec-stops span{flex:1; cursor:pointer; transition:.15s; text-align:center} .bn-spec-stops span:first-child{text-align:left} .bn-spec-stops span:last-child{text-align:right} .bn-spec-stops span.on{color:var(--bn-coral); font-weight:700} .bns-pane{display:none; margin-top:22px; border-radius:var(--bn-r-sm); padding:20px 22px; background:var(--bn-sand-2); border:1px solid var(--bn-sand)} .bns-pane.on{display:block} .bns-pane h4{margin:0 0 3px; color:var(--bn-ink); font-size:1.14em} .bns-tag{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.1em; color:var(--bn-coral); display:block; margin-bottom:11px} .bns-pane>p{margin:0; font-size:.96em; color:var(--bn-text)} .bns-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:15px} .bns-grid div{background:#fff; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); padding:11px 14px; font-size:.9em; color:var(--bn-text)} .bns-grid b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.07em; color:var(--bn-muted); margin-bottom:3px} .bn-roi{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-roi h3{margin:.1em 0 .3em} .bn-roi>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-roi-fields{display:grid; grid-template-columns:1fr 1fr; gap:20px 28px; margin:18px 0 24px} .bn-roi-field:last-child{grid-column:1\/-1} .bn-roi-field label{display:block; font-size:.9em; color:var(--bn-text); font-weight:600; margin-bottom:11px} .bn-roi-field output{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral)} .bn-roi-out{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:4px} .bn-roi-stat{background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r); padding:20px 16px; text-align:center} .bn-roi-stat b{display:block; font-size:1.85em; line-height:1.05; color:var(--bn-coral); font-weight:800; letter-spacing:-.02em; font-family:var(--bn-mono)} .bn-roi-stat:nth-child(2) b{color:var(--bn-blue)} .bn-roi-stat:nth-child(3) b{color:var(--bn-ink)} .bn-roi-stat span{display:block; margin-top:7px; font-size:.82em; color:var(--bn-muted); line-height:1.4} .bn-roi-note{font-size:16px; color:var(--bn-muted); margin:16px 0 0; font-style:italic} .bn-bot{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px 24px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-bot h3{margin:.1em 0 .3em} .bn-bot>p{font-size:.95em; color:var(--bn-muted); margin:0 0 16px} .bn-bot-win{border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; overflow:hidden} .bn-bot-bar{display:flex; align-items:center; gap:11px; padding:12px 16px; background:var(--bn-sand-2); border-bottom:1px solid var(--bn-border)} .bn-bot-ava{flex:none; width:32px; height:32px; border-radius:50%; background:var(--bn-coral-soft); display:flex; align-items:center; justify-content:center} .bn-bot-ava svg{width:19px; height:19px; color:var(--bn-coral)} .bn-bot-id b{display:block; color:var(--bn-ink); font-size:.95em; line-height:1.2} .bn-bot-id span{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-green); display:inline-flex; align-items:center; gap:5px} .bn-bot-id span::before{content:\"\"; width:7px; height:7px; border-radius:50%; background:var(--bn-green)} .bn-bot-log{padding:16px; min-height:130px; max-height:320px; overflow-y:auto; display:flex; flex-direction:column; gap:10px} .bn-bot-msg{max-width:82%; padding:10px 14px; border-radius:15px; font-size:.95em; line-height:1.5} .bn-bot-msg.bot{align-self:flex-start; background:var(--bn-sand-2); color:var(--bn-text); border-bottom-left-radius:4px} .bn-bot-msg.user{align-self:flex-end; background:var(--bn-coral); color:#332c19; border-bottom-right-radius:4px} .bn-bot-quick{display:flex; flex-wrap:wrap; gap:8px; padding:2px 16px 14px} .bn-art .bn-bot-qbtn{font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:7px 14px; cursor:pointer; transition:.15s} .bn-art .bn-bot-qbtn:hover{background:var(--bn-coral-soft); border-color:var(--bn-coral)} .bn-bot-form{display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--bn-border); background:var(--bn-sand-2)} .bn-bot-input{flex:1; min-width:0; font-family:inherit; font-size:.95em; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:10px 16px; outline:none} .bn-bot-input:focus{border-color:var(--bn-coral)} .bn-art .bn-bot-send{flex:none; font-family:inherit; font-weight:700; font-size:16px; color:#fff; background:var(--bn-coral); border:none; border-radius:999px; padding:10px 20px; cursor:pointer; transition:.15s} .bn-art .bn-bot-send:hover{background:#ff8782} .bn-art .bn-bot-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} .bbot-kb,.bbot-fallback{display:none} .bn-shot{margin:16px 0 2px; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; overflow:hidden} .bn-shot-bar{display:flex; align-items:center; gap:8px; padding:9px 13px; background:var(--bn-sand-2); border-bottom:1px solid var(--bn-border)} .bn-shot-dot{width:8px;height:8px;border-radius:50%;background:var(--bn-green);flex:none} .bn-shot-bar b{color:var(--bn-ink); font-size:.9em} .bn-shot-bar span{margin-left:auto; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-muted)} .bn-shot-log{padding:13px 14px; display:flex; flex-direction:column; gap:8px} .bn-shot .bn-bot-msg{max-width:86%; font-size:.9em} .bn-shot-quick{display:flex; flex-wrap:wrap; gap:6px; margin-top:2px} .bn-shot-quick span{font-size:14px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:4px 11px} .bn-exlink{margin:13px 0 0; font-weight:700; display:flex; align-items:center; gap:6px} .bn-exlink svg{width:16px;height:16px;flex:none;color:var(--bn-coral)} .bn-lb{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-lb h3{margin:.1em 0 .3em} .bn-lb>p{font-size:.95em; color:var(--bn-muted); margin:0 0 16px} .bn-lb-ctrl{display:flex; flex-wrap:wrap; gap:11px; align-items:center; margin:0 0 16px} .bn-lb-ctrl br{display:none} .bn-lb-search{flex:1; min-width:200px; font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:11px 18px; outline:none} .bn-lb-search:focus{border-color:var(--bn-coral)} .bn-lb-filters{display:flex; flex-wrap:wrap; gap:8px} .bn-art .bn-lb-fbtn{font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s} .bn-art .bn-lb-fbtn:hover{background:var(--bn-coral-soft)} .bn-art .bn-lb-fbtn.on{background:var(--bn-coral); color:#fff; border-color:var(--bn-coral)} .bn-lb .bn-lb-th{cursor:pointer; user-select:none; white-space:nowrap} .bn-lb .bn-lb-th:hover{color:#fbf7ec; opacity:.85} .bn-lb-rank{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral); text-align:center} .bn-lb-score{font-family:var(--bn-mono); font-weight:700; color:var(--bn-ink); text-align:right; white-space:nowrap} .lb-empty{padding:16px; text-align:center; color:var(--bn-muted); font-size:.95em} .bn-lb-foot{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} @media(max-width:680px){ .bn-art{font-size:17px} .bn-stats,.bn-grid,.bn-cols,.bn-ex .bn-ba,.bns-grid,.bn-roi-fields,.bn-roi-out{grid-template-columns:1fr} .bn-roi-field:last-child{grid-column:auto} .bn-toc ol{columns:1} .bn-art h2{font-size:1.5em} .bn-bot-msg{max-width:90%} } .bn-art sup,.bn-art sub{font-size:14px;line-height:0} .bn-klabel.hc{color:var(--bn-coral-txt)} .bn-cdc{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-cdc h3{margin:.1em 0 .3em} .bn-cdc>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-cdc br{display:none} .bn-cdc p:empty{display:none; margin:0} .cdc-q{padding:15px 0; border-top:1px solid var(--bn-border)} .cdc-q:first-of-type{border-top:none; padding-top:2px} .bn-art .cdc-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .cdc-chips{display:flex; flex-wrap:wrap; gap:8px} .cdc-chips p:not([class]){display:contents} .bn-art .cdc-chip{display:inline-flex; align-items:center; font-size:16px; line-height:1.35; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s} .bn-art .cdc-chip:hover{background:var(--bn-coral-soft)} .bn-art .cdc-chip:has(input:checked){background:var(--bn-coral); color:#332c19; border-color:var(--bn-coral); font-weight:700} .cdc-chip input{position:absolute; opacity:0; width:1px; height:1px; pointer-events:none} .cdc-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .cdc-line{padding:14px 0; border-top:1px solid var(--bn-sand)} .cdc-line:first-of-type{border-top:none; padding-top:2px} .cdc-line p:not([class]){margin:0} .bn-art .cdc-line b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); margin-bottom:6px} .bn-art .cdc-line span{display:block; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .cdc-copy{margin-top:18px; display:inline-block; background:var(--bn-coral); color:#332c19; border:none; font-family:inherit; font-weight:800; font-size:16px; padding:13px 28px; border-radius:999px; cursor:pointer; box-shadow:0 6px 16px rgba(254,113,107,.28); transition:.15s} .bn-art .cdc-copy:hover{background:#ff8782} .bn-art .cdc-note{font-size:16px; color:var(--bn-muted); margin:12px 0 0; font-style:italic; min-height:1.5em} @media(max-width:680px){ .cdc-chips{flex-direction:column; align-items:stretch} .bn-art .cdc-chip{justify-content:flex-start} } .bn-niv{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-niv h3{margin:.1em 0 .3em} .bn-niv>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-niv br{display:none} .bn-niv p:empty{display:none; margin:0} .niv-q{padding:15px 0; border-top:1px solid var(--bn-border)} .niv-q:first-of-type{border-top:none; padding-top:2px} .bn-art .niv-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .niv-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .bn-art .niv-score{display:flex; align-items:baseline; gap:10px; margin:0 0 13px} .bn-art .niv-score b{font-family:var(--bn-mono); font-size:2.1em; line-height:1; color:var(--bn-coral-txt); font-weight:800; letter-spacing:-.02em} .bn-art .niv-score span{font-size:16px; color:var(--bn-muted)} .niv-gauge{height:10px; border-radius:999px; background:var(--bn-sand); overflow:hidden; margin:0 0 18px} .niv-gauge p:not([class]){display:contents} .niv-gauge i{display:block; height:10px; background:var(--bn-coral); border-radius:999px; width:0} .nivv{display:none; border-radius:var(--bn-r-sm); padding:17px 19px; background:#fff; border:1px solid var(--bn-border)} .nivv.on{display:block} .bn-art .nivv b{display:block; font-size:1.08em; color:var(--bn-ink); margin-bottom:5px} .bn-art .nivv p{margin:0; font-size:16px; line-height:1.62} .bn-art .niv-weak{margin:15px 0 0; font-size:16px; color:var(--bn-text)} .bn-art .niv-weak b{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); display:block; margin-bottom:4px} .bn-art blockquote{margin:26px 0; padding:18px 22px; background:var(--bn-card); border:1px solid var(--bn-border); border-left:4px solid var(--bn-blue); border-radius:var(--bn-r); box-shadow:var(--bn-sh-sm)} .bn-art blockquote p{margin:0; font-size:17px; line-height:1.65; color:var(--bn-text)} .bn-chk{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-chk h3{margin:.1em 0 .3em} .bn-chk>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-chk br{display:none} .bn-chk p:empty{display:none; margin:0} .chk-doc{border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-border); padding:16px 18px; margin:0 0 6px} .bn-art .chk-doc b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); margin-bottom:6px} .bn-art .chk-doc span{display:block; font-size:16px; line-height:1.62; color:var(--bn-text)} .chk-q{padding:15px 0; border-top:1px solid var(--bn-border)} .bn-art .chk-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .chk-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .chk-pieces{display:grid; gap:10px; margin:0 0 16px} .chk-piece{border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-border); padding:12px 14px} .chk-piece.hit{border-color:var(--bn-green); background:var(--bn-green-soft)} .bn-art .chk-piece b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-muted); margin-bottom:5px} .bn-art .chk-piece.hit b{color:var(--bn-green)} .bn-art .chk-piece span{display:block; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .chk-verdict{border-radius:var(--bn-r-sm); padding:14px 16px; font-size:16px; line-height:1.55; background:var(--bn-green-soft); border:1px solid #cfe6c4; color:var(--bn-text); margin:0 0 12px} .bn-art .chk-verdict.ko{background:var(--bn-coral-soft); border-color:var(--bn-coral-line)} .bn-art .chk-stats{margin:0; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .chk-stats b{font-family:var(--bn-mono); color:var(--bn-coral-txt); font-weight:700} .bn-dev{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-dev h3{margin:.1em 0 .3em} .bn-dev>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-dev br{display:none} .bn-dev p:empty{display:none; margin:0} .dev-q{padding:15px 0; border-top:1px solid var(--bn-border)} .dev-q:first-of-type{border-top:none; padding-top:2px} .bn-art .dev-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .dev-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .dev-tiles{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0 0 16px} .dev-stat{background:#fff; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); padding:16px 12px; text-align:center} .bn-art .dev-stat b{display:block; font-family:var(--bn-mono); font-size:1.5em; line-height:1.12; font-weight:800; letter-spacing:-.02em; color:var(--bn-coral-txt)} .bn-art .dev-stat:nth-child(2) b{color:var(--bn-blue)} .bn-art .dev-stat:nth-child(3) b{color:var(--bn-green)} .bn-art .dev-stat:nth-child(4) b{color:var(--bn-ink)} .bn-art .dev-stat span{display:block; margin-top:7px; font-size:14px; color:var(--bn-muted); line-height:1.4} .bn-art .dev-line{margin:0 0 14px; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .dev-line b{font-family:var(--bn-mono); color:var(--bn-coral-txt); font-weight:700} .dvv{display:none; border-radius:var(--bn-r-sm); padding:16px 18px; background:#fff; border:1px solid var(--bn-border)} .dvv.on{display:block} .bn-art .dvv b{display:block; font-size:1.06em; color:var(--bn-ink); margin-bottom:5px} .bn-art .dvv p{margin:0; font-size:16px; line-height:1.62} @media(max-width:680px){ .dev-tiles{grid-template-columns:1fr 1fr} } .bn-fig.chat img{max-width:400px; margin:0 auto} .bn-fig.doc img{max-width:520px; margin:0 auto} .bn-nlu{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-nlu h3{margin:.1em 0 .3em} .bn-nlu>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-nlu br{display:none} .bn-nlu p:empty{display:none; margin:0} .nlu-q{padding:15px 0; border-top:1px solid var(--bn-border)} .nlu-q:first-of-type{border-top:none; padding-top:2px} .bn-art .nlu-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .bn-art .nlu-in{width:100%; font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:12px 18px; outline:none} .bn-art .nlu-in:focus{border-color:var(--bn-coral)} .nlu-ex{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px} .nlu-ex p:not([class]){display:contents} .bn-art .nlu-exb{font-family:inherit; font-size:16px; line-height:1.35; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s; text-align:left} .bn-art .nlu-exb:hover{background:var(--bn-coral-soft)} .nlu-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .bn-art .nlu-toks{margin:0 0 14px; font-size:16px; line-height:1.7; color:var(--bn-text)} .bn-art .nlu-toks b{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); display:block; margin-bottom:8px} .bn-art .nlu-tk{display:inline-block; font-family:var(--bn-mono); font-size:14px; background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:3px 11px; margin:0 6px 6px 0; color:var(--bn-ink)} .nlu-row{display:grid; grid-template-columns:1fr 130px 54px; gap:12px; align-items:center; padding:10px 0; border-top:1px solid var(--bn-sand)} .nlu-row:first-child{border-top:none} .bn-art .nlu-lab{font-size:16px; line-height:1.4; color:var(--bn-ink); font-weight:700} .nlu-bar{height:10px; border-radius:999px; background:var(--bn-sand); overflow:hidden} .nlu-bar i{display:block; height:10px; background:var(--bn-coral); border-radius:999px; width:0} .nlu-row.win .nlu-bar i{background:var(--bn-green)} .bn-art .nlu-sc{font-family:var(--bn-mono); font-size:16px; font-weight:700; color:var(--bn-coral-txt); text-align:right} .nlu-verdict{margin:16px 0 0; border-radius:var(--bn-r-sm); padding:16px 18px; background:#fff; border:1px solid var(--bn-border); border-left:4px solid var(--bn-green)} .nlu-verdict.ko{border-left-color:var(--bn-coral)} .bn-art .nlu-verdict b{display:block; font-size:1.06em; color:var(--bn-ink); margin-bottom:5px} .bn-art .nlu-verdict p{margin:0; font-size:16px; line-height:1.62} .bn-art .nlu-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} @media(max-width:680px){ .nlu-row{grid-template-columns:minmax(0,1fr) 64px 48px; gap:9px} .bn-art .nlu-lab{font-size:16px} } @media(max-width:560px){ .nlu-row{grid-template-columns:minmax(0,1fr) auto; gap:7px 10px; padding:12px 0} .bn-art .nlu-lab{grid-column:1; grid-row:1} .bn-art .nlu-sc{grid-column:2; grid-row:1; text-align:right} .nlu-bar{grid-column:1\/3; grid-row:2} } .bn-art code{font-family:var(--bn-mono); font-size:16px; line-height:1.5; background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:6px; padding:1px 7px; color:var(--bn-ink); word-break:break-word} .bn-art pre{background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:16px 18px; overflow-x:auto; margin:22px 0} .bn-art pre code{background:none; border:none; padding:0; font-size:16px} .bn-hd{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-hd h3{margin:.1em 0 .3em} .bn-hd>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-hd br{display:none} .bn-hd p:empty{display:none; margin:0} .hd-q{padding:15px 0; border-top:1px solid var(--bn-border)} .hd-q:first-of-type{border-top:none; padding-top:2px} .bn-art .hd-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .hd-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .hd-head{display:grid; grid-template-columns:minmax(0,auto) minmax(0,1fr); gap:18px; align-items:center} .hd-n{font-family:var(--bn-mono); font-weight:800; line-height:1; color:var(--bn-ink); white-space:nowrap} .bn-art .hd-n span{font-size:34px} .bn-art .hd-n i{font-style:normal; font-size:16px; color:var(--bn-muted); font-weight:600} .hd-track{position:relative; height:14px; border-radius:999px; background:#fff; border:1px solid var(--bn-sand); overflow:hidden} .hd-fill{position:absolute; left:0; top:0; bottom:0; width:0; background:var(--bn-coral); transition:width .18s} .hd-parts{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:16px} .hd-part{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:11px 8px; text-align:center} .bn-art .hd-part span{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3} .bn-art .hd-part b{display:block; font-family:var(--bn-mono); font-size:20px; font-weight:800; color:var(--bn-coral-txt); margin-top:4px} .hdv{display:none; margin-top:18px; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .hdv-1{display:block; border-left:4px solid var(--bn-green)} .hdv-2{border-left:4px solid var(--bn-blue)} .hdv-3{border-left:4px solid var(--bn-coral)} .hdv-4{border-left:4px solid var(--bn-ink)} .bn-art .hdv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:7px} .bn-art .hdv p{margin:0; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .hd-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} @media(max-width:680px){ .bn-hd{padding:20px 17px} .hd-out{padding:17px 15px} .hd-head{grid-template-columns:minmax(0,1fr); gap:12px} .hd-parts{grid-template-columns:repeat(2,minmax(0,1fr))} } .bn-tri{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-tri h3{margin:.1em 0 .3em} .bn-tri>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-tri br{display:none} .bn-tri p:empty{display:none; margin:0} .tri-q{padding:15px 0; border-top:1px solid var(--bn-border)} .tri-q:first-of-type{border-top:none; padding-top:2px} .bn-art .tri-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .tri-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .triv{display:none; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .triv-1{border-left:4px solid var(--bn-ink)} .triv-2{border-left:4px solid var(--bn-coral)} .triv-3{border-left:4px solid var(--bn-blue)} .triv-4{border-left:4px solid var(--bn-muted)} .triv-5{display:block; border-left:4px solid var(--bn-green)} .bn-art .triv em{display:block; font-style:normal; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-coral-txt); margin-bottom:7px; line-height:1.4} .bn-art .triv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:8px} .bn-art .triv p{margin:0 0 .7em; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .triv p:last-child{margin-bottom:0} .tri-lines{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:16px} .tri-line{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:13px 15px} .bn-art .tri-line span{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3; margin-bottom:6px} .bn-art .tri-line b{display:block; font-size:16px; line-height:1.55; color:var(--bn-ink); font-weight:600} .bn-art .tri-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} .bn-tri .bn-tablewrap{margin-top:22px} .bn-art .tri-load{font-family:var(--bn-mono); font-size:16px; line-height:1.2; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:8px 15px; cursor:pointer; white-space:nowrap; transition:.15s} .bn-art .tri-load:hover{background:var(--bn-coral-soft)} @media(max-width:680px){ .bn-tri{padding:20px 17px} .tri-out{padding:17px 15px} .tri-lines{grid-template-columns:minmax(0,1fr)} } .bn-art .bn-steps ol{list-style:none;padding:0;margin:0} .bn-art .bn-tip,.bn-art .bn-warn,.bn-art .bn-info{background:var(--bn-card);border:1px solid var(--bn-border);border-radius:var(--bn-r);padding:18px 20px;margin:24px 0;box-shadow:var(--bn-sh-sm)} .bn-art .bn-tip{border-left:4px solid var(--bn-green)} .bn-art .bn-warn{border-left:4px solid var(--bn-coral)} .bn-art .bn-info{border-left:4px solid var(--bn-blue)} .bn-art .bn-tip .bn-klabel,.bn-art .bn-warn .bn-klabel,.bn-art .bn-info .bn-klabel{margin-bottom:6px} .bn-art .bn-tip p,.bn-art .bn-warn p,.bn-art .bn-info p{margin:0} .bn-art .bn-tri table{table-layout:fixed;min-width:640px} .bn-art .bn-tri th:nth-child(1),.bn-art .bn-tri td:nth-child(1){width:22%} .bn-art .bn-tri th:nth-child(2),.bn-art .bn-tri td:nth-child(2){width:14%} .bn-art .bn-tri th:nth-child(3),.bn-art .bn-tri td:nth-child(3){width:14%} .bn-art .bn-tri th:nth-child(4),.bn-art .bn-tri td:nth-child(4){width:13%} .bn-art .bn-tri th:nth-child(5),.bn-art .bn-tri td:nth-child(5){width:22%} .bn-art .bn-tri th:nth-child(6),.bn-art .bn-tri td:nth-child(6){width:15%} .bn-art .bn-tri thead th,.bn-art .bn-tri tbody td{padding:11px 8px} .bn-art .tri-load{padding:4px 10px} .bn-art .bn-cta-in{text-align:center;margin:26px 0} .bn-lng{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-lng h3{margin:.1em 0 .3em} .bn-lng>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-lng br{display:none} .bn-lng p:empty{display:none; margin:0} .lng-q{padding:15px 0; border-top:1px solid var(--bn-border)} .lng-q:first-of-type{border-top:none; padding-top:2px} .bn-art .lng-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .lng-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .lng-lines{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px} .lng-line{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:13px 15px} .bn-art .lng-line b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3; margin-bottom:6px} .bn-art .lng-line span{display:block; font-size:16px; line-height:1.55; color:var(--bn-ink); font-weight:600} .lngv{display:none; margin-top:16px; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .lngv-1{display:block; border-left:4px solid var(--bn-blue)} .lngv-2{border-left:4px solid var(--bn-coral)} .lngv-3{border-left:4px solid var(--bn-green)} .lngv-4{border-left:4px solid var(--bn-ink)} .bn-art .lngv em{display:block; font-style:normal; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-coral-txt); margin-bottom:7px; line-height:1.4} .bn-art .lngv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:8px} .bn-art .lngv p{margin:0 0 .7em; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .lngv p:last-child{margin-bottom:0} .bn-art .lng-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} .bn-lng .bn-tablewrap{margin-top:22px} .bn-art .bn-lng table{table-layout:fixed; min-width:620px} .bn-art .bn-lng th:nth-child(1),.bn-art .bn-lng td:nth-child(1){width:26%} .bn-art .bn-lng th:nth-child(2),.bn-art .bn-lng td:nth-child(2){width:28%} .bn-art .bn-lng th:nth-child(3),.bn-art .bn-lng td:nth-child(3){width:32%} .bn-art .bn-lng th:nth-child(4),.bn-art .bn-lng td:nth-child(4){width:14%} .bn-art .bn-lng thead th,.bn-art .bn-lng tbody td{padding:11px 10px} @media(max-width:680px){ .bn-lng{padding:20px 17px} .lng-out{padding:17px 15px} .lng-lines{grid-template-columns:minmax(0,1fr)} } .bn-gem{background:var(--bn-card);border:1px solid var(--bn-border);border-radius:var(--bn-r);padding:24px 26px;margin:28px 0;box-shadow:var(--bn-sh)} .bn-gem h3{margin:.1em 0 .3em} .bn-gem>p{font-size:16px;color:var(--bn-muted);margin:0 0 18px} .bn-gem br{display:none} .bn-gem p:empty{display:none;margin:0} .gem-q{padding:15px 0;border-top:1px solid var(--bn-border)} .gem-q:first-of-type{border-top:none;padding-top:2px} .bn-art .gem-qt{font-weight:700;color:var(--bn-ink);margin:0 0 11px;font-size:16px;line-height:1.45} .gem-out{margin:22px 0 0;border-radius:var(--bn-r-sm);background:var(--bn-sand-2);border:1px solid var(--bn-sand);padding:20px 22px} .giv{display:none;border-radius:var(--bn-r-sm);background:#fff;border:1px solid var(--bn-sand);padding:17px 19px;border-left:4px solid var(--bn-coral)} .giv.on{display:block} .giv0{border-left-color:var(--bn-green)} .giv4{border-left-color:var(--bn-blue)} .bn-art .giv em{display:block;font-style:normal;font-family:var(--bn-mono);font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--bn-coral-txt);margin-bottom:7px;line-height:1.4} .bn-art .giv b{display:block;font-size:18px;line-height:1.4;color:var(--bn-ink);margin-bottom:8px} .bn-art .giv p{margin:0;font-size:16px;line-height:1.62;color:var(--bn-text)} .bn-gem .bn-tablewrap{margin-top:22px} @media(max-width:680px){.bn-gem{padding:20px 17px}.gem-out{padding:17px 15px}} .bn-gene{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-gene h3{margin:.1em 0 .3em} .bn-gene>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-gene br{display:none} .bn-gene p:empty{display:none; margin:0} .gene-q{padding:15px 0; border-top:1px solid var(--bn-border)} .gene-q:first-of-type{border-top:none; padding-top:2px} .bn-art .gene-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .gene-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .gene-tiles{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:0 0 16px} .gene-stat{background:#fff; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); padding:16px 12px; text-align:center} .bn-art .gene-stat b{display:block; font-family:var(--bn-mono); font-size:1.5em; line-height:1.12; font-weight:800; letter-spacing:-.02em; color:var(--bn-coral-txt)} .bn-art .gene-stat:nth-child(2) b{color:var(--bn-blue)} .bn-art .gene-stat:nth-child(3) b{color:var(--bn-green)} .bn-art .gene-stat span{display:block; margin-top:7px; font-size:14px; color:var(--bn-muted); line-height:1.4} .bn-art .gene-line{margin:0 0 14px; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .gene-line b{font-family:var(--bn-mono); color:var(--bn-coral-txt); font-weight:700} .gene-v{display:none; border-radius:var(--bn-r-sm); padding:16px 18px; background:#fff; border:1px solid var(--bn-border)} .gene-v.on{display:block} .bn-art .gene-v b{display:block; font-size:1.06em; color:var(--bn-ink); margin-bottom:5px} .bn-art .gene-v p{margin:0; font-size:16px; line-height:1.62} .bn-art .gene-note{margin:14px 0 0; font-size:16px; line-height:1.55; color:var(--bn-muted)} .bn-gene table.gene-data{margin:0 0 4px} .bn-art table.gene-data tbody tr.gene-hit td{background:var(--bn-green-soft)} @media(max-width:680px){ .gene-tiles{grid-template-columns:minmax(0,1fr)} } .bn-bud{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-bud h3{margin:.1em 0 .3em} .bn-bud>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-bud br{display:none} .bn-bud p:empty{display:none; margin:0} .bud-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .budv{display:none; margin-top:16px; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .budv-1{display:block; border-left:4px solid var(--bn-green)} .budv-2{border-left:4px solid var(--bn-blue)} .budv-3{border-left:4px solid var(--bn-coral)} .budv-4{border-left:4px solid var(--bn-ink)} .bn-art .budv em{display:block; font-style:normal; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-coral-txt); margin-bottom:7px; line-height:1.4} .bn-art .budv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:8px} .bn-art .budv p{margin:0 0 .7em; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .budv p:last-child{margin-bottom:0} .bn-art .bud-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} .bn-bud .bn-tablewrap{margin-top:22px} @media(max-width:680px){ .bn-bud{padding:20px 17px} .bud-out{padding:17px 15px} } .bn-bil{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-bil h3{margin:.1em 0 .3em} .bn-bil>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-bil br{display:none} .bn-bil p:empty{display:none; margin:0} .bn-bil .tri-out{margin-top:22px} .bn-bil .bn-tablewrap{margin-top:22px} @media(max-width:680px){ .bn-bil{padding:20px 17px} .bn-bil .tri-out{padding:17px 15px} }`));document.head.appendChild(s);<\/script><\/p>\n<div class=\"bn-art\">\n<div class=\"bn-tldr\">\n<span class=\"bn-klabel\">In brief<\/span>\n<ul>\n<li>A <strong>ticketing chatbot<\/strong> is a conversational assistant connected to an event organiser\u2019s schedule, prices and orders: it answers questions before the purchase, absorbs the on-sale peak, then handles after-sales, from the missing ticket to access control on event day.<\/li>\n<li>Ticketing is not an ordinary support channel: the product has a date, sometimes a name, and a QR code that is legally an <strong>access title<\/strong>. Every bot answer touches a right, not just a courtesy.<\/li>\n<li>Three rules frame its action: <strong>no withdrawal right<\/strong> for leisure services supplied on a fixed date (Article L221-28, 12\u00b0 of the French Consumer Code), <strong>habitual unauthorised resale punishable by a \u20ac15,000 fine<\/strong> (Article 313-6-2 of the French Penal Code, \u20ac75,000 for a legal entity), and the <strong>duty to disclose that you are talking to an AI<\/strong> (Article 50 of the EU Artificial Intelligence Regulation, applicable since 2 August 2026).<\/li>\n<li>The <strong>request router<\/strong> in the middle of the article decides 24 real cases (stage \u00d7 nature \u00d7 identity verification) between \u201cthe bot answers alone\u201d, \u201cverification first\u201d, \u201cthe bot informs, a human decides\u201d and \u201cmotivated refusal\u201d.<\/li>\n<li>The cost reads on three lines: the licence (from \u20ac39 per month excluding tax on the Botnation grid checked on 1 October 2026), the AI credits (\u20ac25 for 1,000), and the build, free in self-service or <strong>on quote<\/strong> when delegated to the Botnation team.<\/li>\n<\/ul>\n<\/div>\n<p>Ticketing chatbot vendors all promise the same thing: 24\/7 assistance, in fifty languages, able to absorb on-sale peaks. The promise is not false. It is incomplete. A ticket is not an ordinary product: it expires, it is sometimes personal, and its QR code is enough to walk through the door. When a spectator writes \u201cI never received my ticket\u201d the night before the show, the chatbot is not answering a comfort question: it is handling an access title, with law and criminal law behind it.<\/p>\n<p>What is missing almost everywhere is the law: presentations of a ticketing chatbot mention GDPR in passing at best, and rarely the Consumer Code, the Penal Code or the European regulation on artificial intelligence. Yet those are the very texts that decide whether the bot may resend a QR code, what it must answer to \u201cI want to cancel\u201d, and why it must refuse to help resell a seat.<\/p>\n<p>This article therefore takes the subject in the order that matters: what the bot actually absorbs, stage by stage; the three legal rules that bound its right to act; a router to decide real cases; the channels; the costs on the public grid of the day; and the method. Botnation appears on both sides that count: the editor of the no-code platform, and a provider of custom builds through its Enterprise offer.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Summary<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #3d351f;color:#3d351f\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #3d351f;color:#3d351f\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#%E2%80%9CTicketing_chatbot%E2%80%9D_what_exactly_are_we_talking_about\" >\u201cTicketing chatbot\u201d: what exactly are we talking about?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#A_story_that_starts_in_2016\" >A story that starts in 2016<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#What_the_chatbot_handles_stage_by_stage\" >What the chatbot handles, stage by stage<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Before_the_sale_inform_without_slowing_anyone_down\" >Before the sale: inform without slowing anyone down<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#The_on-sale_peak_the_real_stress_test\" >The on-sale peak: the real stress test<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#After_the_sale_and_on_event_day_after-sales_for_the_access_title\" >After the sale and on event day: after-sales for the access title<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#The_three_legal_rules_that_bound_the_bot\" >The three legal rules that bound the bot<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#1_There_is_no_withdrawal_right_the_bot_must_not_invent_one\" >1. There is no withdrawal right: the bot must not invent one<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#2_Unauthorised_resale_is_an_offence_the_bot_must_refuse_cleanly\" >2. Unauthorised resale is an offence: the bot must refuse cleanly<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#3_The_bot_must_say_that_it_is_a_bot\" >3. The bot must say that it is a bot<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#The_router_can_the_bot_handle_this_case\" >The router: can the bot handle this case?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Can_the_bot_handle_this_request\" >Can the bot handle this request?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Which_channels_to_deploy_on_the_channel_follows_the_moment\" >Which channels to deploy on: the channel follows the moment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Four_organiser_profiles_four_settings\" >Four organiser profiles, four settings<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#How_much_does_a_ticketing_chatbot_cost\" >How much does a ticketing chatbot cost?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#The_method_six_steps_before_sales_open\" >The method: six steps before sales open<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Five_mistakes_that_cost_dearly\" >Five mistakes that cost dearly<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Frequently_asked_questions\" >Frequently asked questions<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/botnation.ai\/en\/ticketing-chatbot\/#Your_ticketing_already_has_its_questions_start_with_the_first_twenty\" >Your ticketing already has its questions: start with the first twenty<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 id=\"definition\"><span class=\"ez-toc-section\" id=\"%E2%80%9CTicketing_chatbot%E2%80%9D_what_exactly_are_we_talking_about\"><\/span>\u201cTicketing chatbot\u201d: what exactly are we talking about?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"bn-def\">\n<span class=\"bn-klabel\"><svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle><path d=\"M12 16v-4M12 8h.01\"><\/path><\/svg>Definition<\/span>\n<p>A ticketing chatbot is a conversational agent connected to an event organiser\u2019s information: schedule, prices and seat categories, sales and exchange conditions, access and services, then, after the purchase, the state of orders. It answers spectators on the website, social networks or WhatsApp, points them to the official ticketing system, and escalates to humans whatever exceeds its right to act.<\/p>\n<\/div>\n<p>The scope is broad: live shows and concerts, festivals, sport, trade fairs and congresses, museums and monuments, tourist offices, leisure parks, cinema. It also covers transport, where the ticket is the product itself: the subject is covered in depth in our articles on the <a href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/\">chatbot for the transport sector<\/a> and the <a href=\"https:\/\/botnation.ai\/en\/air-transport-chatbot\/\">chatbot for air transport<\/a>. Here we talk about events and leisure: the logic of the access title tied to a fixed date, which is precisely what makes the subject legally specific.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"A_story_that_starts_in_2016\"><\/span>A story that starts in 2016<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In France, the first of its kind was announced by Digitick on 15 November 2016: \u201cDigitick lance aujourd\u2019hui en France le premier chatbot de billetterie en France\u201d (Digitick is launching France\u2019s first ticketing chatbot today), writes the <a href=\"https:\/\/www.vivendi.com\/communique\/digitick-lance-premier-chatbot-de-billetterie-france\/\" rel=\"nofollow noopener\">press release of its shareholder Vivendi<\/a>, describing a \u201cv\u00e9ritable assistant de recherche\u201d (a true search assistant) on Facebook Messenger, built with MFG Labs, for a group that then processed \u201cplus de 35 millions de billets par an\u201d (more than 35 million tickets a year). Ten years later, the Messenger search bot has aged, but the insight behind it has not: the spectator is looking for an outing, not a price grid. The conversation has simply become multi-channel, and generative AI has replaced rigid decision trees.<\/p>\n<figure class=\"bn-fig\"><img fetchpriority=\"high\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/10\/botnation-ai-billetterie-in1.jpg\" alt=\"Two hands in a cream sweater sort a fan of blank coral, blue and sage green cardstock tickets on a light-wood box office desk\" decoding=\"async\" width=\"1536\" height=\"1024\"><figcaption>Before, during, after: every ticketing request has its moment, and the moment changes the answer to give.<\/figcaption><\/figure>\n<h2 id=\"phases\"><span class=\"ez-toc-section\" id=\"What_the_chatbot_handles_stage_by_stage\"><\/span>What the chatbot handles, stage by stage<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Lumping \u201cticketing support\u201d into a single category is the most common framing mistake. The question of a spectator hesitating before buying, the panic message the night before the show and the festivalgoer standing in the entry queue have neither the same urgency, nor the same channel, nor the same legal regime. Three stages, three settings.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Before_the_sale_inform_without_slowing_anyone_down\"><\/span>Before the sale: inform without slowing anyone down<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Times and doors, prices and discounts, capacity and categories, wheelchair access, parking, cloakroom, minimum age, collection deadline: these are information questions, identical for everyone, whose answer conditions the purchase. Every minute without an answer is a sale going elsewhere. The chatbot answers immediately, at any hour, and points to the official ticketing system: its job is to bring the purchase to completion inside the organiser\u2019s checkout, never to divert it. It is also the stage where the bot works best for foreign visitors, holding the conversation in their language without recruiting a hotline for three emails a month.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_on-sale_peak_the_real_stress_test\"><\/span>The on-sale peak: the real stress test<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A tour announcement or the opening of an edition concentrates thousands of identical questions into a few hours: exact opening time, number of tickets per order, presale access, seat categories, accepted payment methods. No support team sizes itself for three peak hours a year: either it over-invests all year, or it drops the ball on launch night. A conversational agent answers all askers in parallel, with no queue and no temporary reinforcements, and it does not fall apart because it was asked the same question four hundred times. It is the use case where the gap between a saturated hotline and a well-tuned bot shows fastest, from the very first on-sale.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"After_the_sale_and_on_event_day_after-sales_for_the_access_title\"><\/span>After the sale and on event day: after-sales for the access title<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Once the ticket is bought, the nature of requests changes: e-ticket not received, QR code that will not display, a misspelled name, a change of holder, a date exchange, a cancellation, a refund, a resale. The spectator is convinced the seat is lost, so the urgency is real even when the cause is a spam folder. On the day itself come the field questions: site map, stage, doors, rules, cloakroom, contactless top-up. These requests play out on a phone, often while walking, and there is no time left to be wrong.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Typical request<\/th>\n<th>Stage<\/th>\n<th>What the bot does<\/th>\n<th>What stays human<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u201cWhat time do sales open? How many tickets per order?\u201d<\/td>\n<td>On-sale peak<\/td>\n<td>Answers instantly, to everyone, without a queue<\/td>\n<td>Nothing: general information<\/td>\n<\/tr>\n<tr>\n<td>\u201cDoes the venue offer accessible seating?\u201d<\/td>\n<td>Before the sale<\/td>\n<td>Explains the access procedure and points to the right form<\/td>\n<td>Accessible-seating requests if they require a named handling<\/td>\n<\/tr>\n<tr>\n<td>\u201cI never received my e-ticket\u201d<\/td>\n<td>After the sale<\/td>\n<td>Guides the checks (spam, address, account), offers the resend after matching the order<\/td>\n<td>The resend if the identity cannot be verified<\/td>\n<\/tr>\n<tr>\n<td>\u201cI want to cancel my order\u201d<\/td>\n<td>After the sale<\/td>\n<td>Explains the applicable regime, opens and qualifies the request<\/td>\n<td>The exception decision, under the terms of sale<\/td>\n<\/tr>\n<tr>\n<td>\u201cI\u2019m reselling my seat, can you transfer it?\u201d<\/td>\n<td>After the sale<\/td>\n<td>Refuses to assist the resale, explains the rule, flags the request<\/td>\n<td>The possible transfer authorisation, if the organiser so decides<\/td>\n<\/tr>\n<tr>\n<td>\u201cWhere is the stage? What time do doors open?\u201d<\/td>\n<td>Event day<\/td>\n<td>Sends the map, the times, the access routes, on a phone<\/td>\n<td>Nothing: field information<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"droit\"><span class=\"ez-toc-section\" id=\"The_three_legal_rules_that_bound_the_bot\"><\/span>The three legal rules that bound the bot<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is the part commercial pages skip, and yet it is what decides the real quality of a ticketing chatbot. Three texts, three boundaries.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_There_is_no_withdrawal_right_the_bot_must_not_invent_one\"><\/span>1. There is no withdrawal right: the bot must not invent one<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The fourteen-day withdrawal right, familiar to e-commerce, does not apply to a ticket. The French Consumer Code excludes it explicitly for contracts for \u201c<em>prestations de services d\u2019h\u00e9bergement, autres que d\u2019h\u00e9bergement r\u00e9sidentiel, de services de transport de biens, de locations de voitures, de restauration ou d\u2019activit\u00e9s de loisirs qui doivent \u00eatre fournis \u00e0 une date ou \u00e0 une p\u00e9riode d\u00e9termin\u00e9e<\/em>\u201d (Article L221-28, 12\u00b0), that is, services for accommodation other than residential, transport of goods, car rental, catering or leisure activities that must be supplied on a specified date or period. A show on a fixed date falls into that last category: the buyer has no cooling-off period, unless the organiser\u2019s terms of sale voluntarily offer one.<\/p>\n<p>The regulator measured this at scale. In 2019, the DGCCRF, France\u2019s consumer protection and fraud-control authority, audited the loyalty of online ticketing sites: of twelve platforms controlled, ten showed irregularities, sanctioned by ten injunctions and two official reports, in a context of about sixty consumer complaints, mostly after purchases from resellers. Its finding deserves to be quoted in the original French, with our translation:<\/p>\n<blockquote>\n<p>\u00ab Les conditions g\u00e9n\u00e9rales de vente des billets pour des \u00e9v\u00e8nements culturels ne pr\u00e9voient pas de possibilit\u00e9 d\u2019\u00e9change ou de remboursement et les assurances annulation, payantes, ont des conditions d\u2019exclusion parfois tr\u00e8s larges. De plus, le consommateur ne b\u00e9n\u00e9ficie d\u2019aucun droit de r\u00e9tractation en application de l\u2019article L. 221-28 du Code de la consommation. \u00bb<\/p>\n<p><em>The general terms of sale of tickets for cultural events provide no exchange or refund option, and paid cancellation insurance sometimes has very broad exclusion conditions. Moreover, the consumer benefits from no withdrawal right under Article L. 221-28 of the Consumer Code.<\/em><\/p>\n<\/blockquote>\n<p class=\"bn-src\"><a href=\"https:\/\/www.economie.gouv.fr\/dgccrf\/laction-de-la-dgccrf\/les-enquetes\/controle-de-la-loyaute-des-sites-internet-de-billetterie\" rel=\"nofollow noopener\">DGCCRF, \u201cContr\u00f4le de la loyaut\u00e9 des sites internet de billetterie en ligne\u201d<\/a>, page published on 27 June 2019, in French only.<\/p>\n<p>The consequence for the chatbot is direct: to \u201cI bought by mistake, I am withdrawing\u201d, the right answer is neither \u201cof course\u201d nor \u201cnever\u201d. The bot explains the regime (no legal withdrawal for a leisure activity on a fixed date), checks what the terms of sale or the cancellation insurance provide, then passes the request to humans. An exact informational answer followed by a human decision, not a refund improvised by a machine.<\/p>\n<figure class=\"bn-fig\"><img src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/10\/botnation-ai-bil-c1.jpg\" alt=\"The DGCCRF page on the loyalty audit of online ticketing websites, in French\" decoding=\"async\" width=\"1500\" height=\"843\"><figcaption>The DGCCRF page on its online ticketing audit, published on 27 June 2019 and published in French only: twelve platforms controlled, ten irregularities, ten injunctions, two official reports.<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"2_Unauthorised_resale_is_an_offence_the_bot_must_refuse_cleanly\"><\/span>2. Unauthorised resale is an offence: the bot must refuse cleanly<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ticket resale is the second legal front, and the most sensitive one. Article 313-6-2 of the French Penal Code, created by Law no. 2012-348 of 12 March 2012, provides, in the French original with our translation:<\/p>\n<blockquote>\n<p>\u00ab Le fait de vendre, d\u2019offrir \u00e0 la vente ou d\u2019exposer en vue de la vente ou de la cession ou de fournir les moyens en vue de la vente ou de la cession des titres d\u2019acc\u00e8s \u00e0 une manifestation sportive, culturelle ou commerciale ou \u00e0 un spectacle vivant, de mani\u00e8re habituelle et sans l\u2019autorisation du producteur, de l\u2019organisateur ou du propri\u00e9taire des droits d\u2019exploitation de cette manifestation ou de ce spectacle, est puni de 15 000 \u20ac d\u2019amende. Cette peine est port\u00e9e \u00e0 30 000 \u20ac d\u2019amende en cas de r\u00e9cidive. \u00bb<\/p>\n<p><em>Selling, offering for sale, exposing for sale or transfer, and providing the means for the sale or transfer of access titles to a sporting, cultural or commercial event or a live show, habitually and without the authorisation of the producer, the organiser or the rights holder of that event or show, is punishable by a \u20ac15,000 fine. The penalty is raised to \u20ac30,000 in case of repeat offence.<\/em><\/p>\n<\/blockquote>\n<p>The same text defines the access title broadly: \u201c<em>tout billet, document, message ou code, quels qu\u2019en soient la forme et le support<\/em>\u201d (any ticket, document, message or code, whatever its form and medium). A QR code is therefore a full access title, which lights up both sides of the issue. For a legal entity, the fine incurred rises to five times that amount, i.e. \u20ac75,000 (Article 131-38 of the Penal Code). And since Ordinance no. 2021-1734 of 22 December 2021, the Consumer Code deems deceptive the practice of \u201c<em>revendre des billets pour des manifestations \u00e0 des consommateurs lorsque le professionnel les a acquis en utilisant un moyen automatis\u00e9 lui permettant de contourner toute limite impos\u00e9e au nombre de billets qu\u2019une personne peut acheter ou toute interdiction applicable \u00e0 l\u2019achat de billets<\/em>\u201d (reselling tickets for events to consumers when the professional acquired them using an automated means to circumvent any limit on the number of tickets a person can buy or any prohibition applicable to ticket purchases), Article L121-4, 26\u00b0: the legislator is aiming at purchase bots here, the other use of automation, the one that harms ticketing instead of serving it.<\/p>\n<p>For an organiser\u2019s chatbot, the consequence is a refusal rule: it never facilitates an unauthorised resale, neither holder transfer, nor matchmaking, nor a \u201cworkaround\u201d. It explains why, cites the framework if asked, and flags the request. Symmetrically, these texts protect the organiser: they ground purchase limits per order and make it possible to act against professional resellers who drain stocks at the on-sale.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_The_bot_must_say_that_it_is_a_bot\"><\/span>3. The bot must say that it is a bot<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Third boundary, more recent: transparency. Since 2 August 2026, Article 50 of Regulation (EU) 2024\/1689 on artificial intelligence requires informing the user that they are interacting with an AI. The European text is explicit:<\/p>\n<blockquote>\n<p>\u201cProviders shall ensure that AI systems intended to interact directly with natural persons are designed and developed in such a way that the natural persons concerned are informed that they are interacting with an AI system, unless this is obvious from the point of view of a natural person who is reasonably well-informed, observant and circumspect, taking into account the circumstances and the context of use.\u201d<\/p>\n<\/blockquote>\n<p class=\"bn-src\"><a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/?uri=CELEX:32024R1689\" rel=\"nofollow noopener\">Regulation (EU) 2024\/1689, Article 50, paragraph 1<\/a>, English text from the Official Journal of the European Union.<\/p>\n<p>In practice: one disclosure sentence at the top of the conversation, and clear signage in the purchase funnel. On the data side, a ticketing conversation carries personal information (name, email, order number, sometimes accessible-seating requests that touch on health): the <a href=\"https:\/\/www.cnil.fr\/fr\/chatbots-les-conseils-de-la-cnil-pour-respecter-les-droits-des-personnes\" rel=\"nofollow noopener\">CNIL\u2019s \u201cChatbots\u201d guidelines<\/a> of 19 February 2021 recall the usual legal bases, data minimisation, retention periods and the need for a processor contract with the platform editor. Nothing insurmountable, but nothing to improvise on launch day either.<\/p>\n<figure class=\"bn-fig\"><img src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/10\/botnation-ai-bil-c2-en.jpg\" alt=\"Article 50 of the EU regulation on artificial intelligence on the EUR-Lex site, English version\" decoding=\"async\" width=\"1500\" height=\"843\"><figcaption>Article 50 of Regulation (EU) 2024\/1689 on EUR-Lex: the duty to inform users that they are interacting with an AI, applicable since 2 August 2026.<\/figcaption><\/figure>\n<h2 id=\"outil\"><span class=\"ez-toc-section\" id=\"The_router_can_the_bot_handle_this_case\"><\/span>The router: can the bot handle this case?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Three parameters are enough to decide most real cases: the moment of the request, its nature, and whether the requester\u2019s identity has been verified. The router below applies the cascade described in the previous section, with the deciding rule written into each verdict. The reference table underneath reloads the router with ten real requests; then change a single answer and watch the boundary move.<\/p>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/10\/botnation-ai-billetterie-in2.jpg\" alt=\"Clay mock-up: a funnel of colored tickets splits toward three lanes, a chat bubble, a desk with a bell and a barrier gate\" decoding=\"async\" width=\"1536\" height=\"1024\"><figcaption>The router principle: not everything arrives in the same place. Part goes to the bot\u2019s bubble, part to the human desk, part to a cleanly motivated refusal.<\/figcaption><\/figure>\n<div class=\"bn-bil\" id=\"bn-bil\" data-p0=\"Before the purchase: the answer is part of the act of buying, it must be immediate, exact and identical for everyone.\" data-p1=\"After the purchase: the spectator holds an access title, every answer touches their order and their name.\" data-p2=\"Event day: the answer plays out on a phone, while walking, with no time left to be wrong.\" data-n0=\"Practical information: the same answer holds for everyone, the bot can give it alone.\" data-n1=\"Ticket or QR code not found: the most pressing request of after-sales, and the most legally sensitive.\" data-n2=\"Exchange, cancellation, refund: a contractual decision, hence an exception decided with a person.\" data-n3=\"Resale: the territory of Article 313-6-2 of the French Penal Code, to be refused cleanly.\">\n<h3><span class=\"ez-toc-section\" id=\"Can_the_bot_handle_this_request\"><\/span>Can the bot handle this request?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Three answers, one verdict, the rule that prevails. Or load a real case from the table below.<\/p>\n<div class=\"tri-q\">\n<p class=\"tri-qt\">1. Where is the spectator in the journey?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"blf-p0\"><input type=\"radio\" name=\"bilP\" id=\"blf-p0\" data-p=\"0\" checked>Before the purchase<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-p1\"><input type=\"radio\" name=\"bilP\" id=\"blf-p1\" data-p=\"1\">Ticket already bought<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-p2\"><input type=\"radio\" name=\"bilP\" id=\"blf-p2\" data-p=\"2\">Event day<\/label>\n<\/div>\n<\/div>\n<div class=\"tri-q\">\n<p class=\"tri-qt\">2. What are they asking for?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"blf-n0\"><input type=\"radio\" name=\"bilN\" id=\"blf-n0\" data-p=\"0\" checked>Practical information<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-n1\"><input type=\"radio\" name=\"bilN\" id=\"blf-n1\" data-p=\"1\">Their ticket or QR code<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-n2\"><input type=\"radio\" name=\"bilN\" id=\"blf-n2\" data-p=\"2\">An exchange, a cancellation, a refund<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-n3\"><input type=\"radio\" name=\"bilN\" id=\"blf-n3\" data-p=\"3\">To resell their seat<\/label>\n<\/div>\n<\/div>\n<div class=\"tri-q\">\n<p class=\"tri-qt\">3. Has their identity been verified?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"blf-i0\"><input type=\"radio\" name=\"bilI\" id=\"blf-i0\" data-p=\"0\" checked>Not yet<\/label><br>\n<label class=\"cdc-chip\" for=\"blf-i1\"><input type=\"radio\" name=\"bilI\" id=\"blf-i1\" data-p=\"1\">Yes, order found<\/label>\n<\/div>\n<\/div>\n<div class=\"tri-out\">\n<div class=\"tri-lines\">\n<div class=\"tri-line\"><span>Moment<\/span><b id=\"bil-phase\">Before the purchase: the answer is part of the act of buying, it must be immediate, exact and identical for everyone.<\/b><\/div>\n<div class=\"tri-line\"><span>Request<\/span><b id=\"bil-nat\">Practical information: the same answer holds for everyone, the bot can give it alone.<\/b><\/div>\n<\/div>\n<div class=\"triv triv-5\" id=\"bilv-5\">\n<em>Rule: general information, no personal data at stake<\/em><br>\n<b>The bot answers alone<\/b>\n<p>Times, prices, access, map, the published exchange policy: the answer is the same for every spectator and commits nothing. This is the core of what a ticketing chatbot absorbs, and the only zone where \u201canswering everyone in parallel\u201d is a sufficient quality bar.<\/p>\n<\/div>\n<div class=\"triv triv-3\" id=\"bilv-3\">\n<em>Rule: an access title is never resent to a stranger<\/em><br>\n<b>Verification first<\/b>\n<p>A QR code is an access title within the meaning of Article 313-6-2 of the French Penal Code: resending it without matching the order amounts to handing a seat to the first asker. The bot guides the spectator (spam folder, address used, customer account) and asks what is needed to find the order. Nothing goes out before that.<\/p>\n<\/div>\n<div class=\"triv triv-2\" id=\"bilv-2\">\n<em>Rule: secure resend after matching the order<\/em><br>\n<b>The bot acts, after verification<\/b>\n<p>Order found, identity consistent: resending the ticket or regenerating the QR code can be automated safely. This is the most urgent after-sales request, the one where the spectator is convinced the seat is lost: an answer in minutes is worth every compensation voucher.<\/p>\n<\/div>\n<div class=\"triv triv-1\" id=\"bilv-1\">\n<em>Rule: the contractual decision stays human<\/em><br>\n<b>The bot informs, a human decides<\/b>\n<p>There is no withdrawal right for a leisure activity supplied on a fixed date (Article L221-28, 12\u00b0 of the French Consumer Code), so every commercial gesture is an exception governed by the terms of sale. The bot explains the regime, opens the request, qualifies it. The exception itself is decided with a person.<\/p>\n<\/div>\n<div class=\"triv triv-4\" id=\"bilv-4\">\n<em>Rule: resale = Article 313-6-2 of the Penal Code<\/em><br>\n<b>Motivated refusal, scripted answer<\/b>\n<p>Habitual resale without the organiser\u2019s authorisation is an offence (a \u20ac15,000 fine, \u20ac75,000 for a legal entity): the bot never facilitates a transfer, it explains the rule and flags the request. If the organiser authorises a named transfer, that is a written procedure, not a conversational favour.<\/p>\n<\/div>\n<p class=\"tri-note\">The cascade applies in order: resale first (refusal), then the access title (verification), then the contractual decision (human), and information by default. One use case, one boundary: copy this table into your specification.<\/p>\n<\/div>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Real request<\/th>\n<th>Moment<\/th>\n<th>Expected answer<\/th>\n<th>Load<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr data-p=\"2\" data-n=\"0\" data-i=\"0\">\n<td>\u201cWhat time do doors open?\u201d<\/td>\n<td>Event day<\/td>\n<td>Bot alone<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"0\" data-n=\"0\" data-i=\"0\">\n<td>\u201cIs the site wheelchair accessible?\u201d<\/td>\n<td>Before the purchase<\/td>\n<td>Bot alone<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"1\" data-n=\"1\" data-i=\"0\">\n<td>\u201cI never received my ticket\u201d (nothing given)<\/td>\n<td>After the purchase<\/td>\n<td>Verification first<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"1\" data-n=\"1\" data-i=\"1\">\n<td>\u201cResend my e-ticket\u201d (order number verified)<\/td>\n<td>After the purchase<\/td>\n<td>The bot acts, after verification<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"2\" data-n=\"1\" data-i=\"1\">\n<td>\u201cMy QR code will not display\u201d (account signed in)<\/td>\n<td>Event day<\/td>\n<td>The bot acts, after verification<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"1\" data-n=\"2\" data-i=\"1\">\n<td>\u201cI want to cancel, I do have 14 days, right?\u201d<\/td>\n<td>After the purchase<\/td>\n<td>The bot informs, a human decides<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"0\" data-n=\"2\" data-i=\"0\">\n<td>\u201cCan I switch to the Saturday date?\u201d<\/td>\n<td>Before the purchase<\/td>\n<td>Bot alone (published exchange policy)<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"1\" data-n=\"3\" data-i=\"1\">\n<td>\u201cI\u2019m reselling my seat, transfer it to the buyer\u201d<\/td>\n<td>After the purchase<\/td>\n<td>Motivated refusal<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"0\" data-n=\"0\" data-i=\"1\">\n<td>\u201cWhere exactly do we buy?\u201d<\/td>\n<td>Before the purchase<\/td>\n<td>Bot alone<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<tr data-p=\"1\" data-n=\"2\" data-i=\"0\">\n<td>\u201cRefund me, the artist cancelled\u201d<\/td>\n<td>After the purchase<\/td>\n<td>The bot informs, a human decides<\/td>\n<td><button type=\"button\" class=\"tri-load\">Load<\/button><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"canaux\"><span class=\"ez-toc-section\" id=\"Which_channels_to_deploy_on_the_channel_follows_the_moment\"><\/span>Which channels to deploy on: the channel follows the moment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The stage also dictates the channel. Before the purchase, the spectator is on the event or venue website: the chatbot lives on the event page and the practical-information page, where the question is born. At the on-sale peak, they are already inside the checkout, and the blocking question is \u201ccan I take four tickets?\u201d: the bot must be reachable without leaving the payment page. On event day, everything moves to the phone and messaging apps: the group of friends organising on WhatsApp needs the access map and the door time, not a confirmation email buried in an inbox. One scenario can live simultaneously on the website, WhatsApp, Messenger and Instagram, each channel keeping the conversation history. Our pages on <a href=\"https:\/\/botnation.ai\/en\/channels\/\">deployment channels<\/a> and the <a href=\"https:\/\/botnation.ai\/en\/products\/faq\/\">FAQ module<\/a> detail these integrations.<\/p>\n<h2 id=\"organisateurs\"><span class=\"ez-toc-section\" id=\"Four_organiser_profiles_four_settings\"><\/span>Four organiser profiles, four settings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"bn-cols\">\n<div class=\"bn-card\">\n<span class=\"bn-klabel\">Venue and live shows<\/span>\n<p>The dominant demand is pre-sale: programme, seat categories, discounts, then after-sales exchanges between dates of the same tour. The critical setting: the exchange policy must be written in black and white in the bot\u2019s answers, because \u201cI cannot come on Tuesday\u201d is the most frequent exception request, and the temptation to settle it automatically is the most dangerous one.<\/p>\n<\/div>\n<div class=\"bn-card\">\n<span class=\"bn-klabel\">Festival<\/span>\n<p>Extreme concentration: three days of field questions (rules, cashless, parking, shuttles, camping) after weeks of presale. Two bots are better than one: a permanent information bot on the website, and on the day, the same scenario available on WhatsApp, where questions arrive from the entry queue. On the day, there is no hotline left.<\/p>\n<\/div>\n<div class=\"bn-card\">\n<span class=\"bn-klabel\">Museum, monument, tourist office<\/span>\n<p>Here the ticket sits next to the visit: time slots, skip-the-line tickets, temporary exhibitions, but also ticketing for sites and shows run by the tourist office. The <a href=\"https:\/\/botnation.ai\/en\/interactive-experience-with-dromardeche\/\">Dr\u00f4mArd\u00e8che case<\/a>, a Dr\u00f4me and Ard\u00e8che destination whose office runs a local-products shop and ticketing for sites, shows the variety of requests; our <a href=\"https:\/\/botnation.ai\/en\/industries\/chatbot-tourism\/\">chatbot for tourism<\/a> page details this setting.<\/p>\n<\/div>\n<div class=\"bn-card\">\n<span class=\"bn-klabel\">Sport and recurring events<\/span>\n<p>Season tickets, home fixtures, away trips: the same question returns every fortnight with a different date. The critical setting is the link to the official calendar, so that the answer \u201cnext home fixture\u201d is computed, never hard-coded. On resale, the framework is the firmest of all: sporting and cultural events are named by Article 313-6-2.<\/p>\n<\/div>\n<\/div>\n<h2 id=\"cout\"><span class=\"ez-toc-section\" id=\"How_much_does_a_ticketing_chatbot_cost\"><\/span>How much does a ticketing chatbot cost?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The cost reads on three lines, as for any conversational agent: the platform licence, the credits consumed by the AI features, and the building of the scenario. On the public Botnation grid checked on 1 October 2026: a <strong>Free plan at \u20ac0<\/strong> to test, <strong>Basic at \u20ac39 per month<\/strong> (500 users and 500 AI credits offered once), <strong>Pro at \u20ac59 per month<\/strong> (1,000 and 1,000), and an <strong>Enterprise plan \u201con demand\u201d<\/strong> that literally includes \u201cchatbot creation management\u201d, a dedicated account manager and premium support; credit packs are bought on the side, from \u20ac25 for 1,000 to \u20ac900 for 60,000, and one user beyond the plan costs \u20ac0.05 per month. All these prices are excluding tax, shown in euros.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Cost line<\/th>\n<th>Public range<\/th>\n<th>What drives it<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Platform licence<\/strong><\/td>\n<td>\u20ac0 to \u20ac59 per month excluding tax, Enterprise on quote (checked 1 October 2026)<\/td>\n<td>Number of tracked users, team features, support level<\/td>\n<\/tr>\n<tr>\n<td><strong>AI credits<\/strong><\/td>\n<td>\u20ac25 for 1,000 credits, up to \u20ac900 for 60,000<\/td>\n<td>The volume of AI requests and the engine called for each<\/td>\n<\/tr>\n<tr>\n<td><strong>Scenario build<\/strong><\/td>\n<td>Your team\u2019s time in self-service, or a quote with the Botnation team<\/td>\n<td>Number of stages covered, ticketing integrations, languages<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>And what if you had a chatbot developed entirely outside the platform? Botnation\u2019s pricing FAQ (in French) puts it plainly: \u201cil vous en co\u00fbtera en g\u00e9n\u00e9ral entre 5000\u20ac et 30000\u20ac, voir bien plus, selon les fonctionnalit\u00e9s dont vous avez besoin. Ces fourchettes de prix sont indicatives\u201d (in general it will cost you between \u20ac5,000 and \u20ac30,000, or far more, depending on the features you need; these price ranges are indicative). A market order of magnitude, to be compared with your team\u2019s time if you build it yourself in the no-code editor.<\/p>\n<p>Then comes the question of who. Botnation is not only the platform editor: the <strong>Enterprise offer<\/strong> includes the custom creation of chatbots, carried out by its chatbot creation experts, on quote. The value of this dual position is simple: the team that builds is the team that edits the tool, and once delivered, the account, the scenarios and the knowledge base stay in the no-code editor, where your team can take over. A third-party agency remains legitimate too, when a very specific trade, a legacy integration or on-site staffing is at stake; what matters is that the platform stays yours in every case.<\/p>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/10\/botnation-ai-bil-c3-en.jpg\" alt=\"The pricing grid of the Botnation pricing page in English with the FOR FREE, BASIC, PRO and ENTREPRISE offers\" decoding=\"async\" width=\"1500\" height=\"843\"><figcaption>The public grid of botnation.ai in English, checked on 1 October 2026: FOR FREE at \u20ac0, BASIC at \u20ac39, PRO at \u20ac59 per month excluding tax, ENTREPRISE on demand. Prices are shown in euros when the page is opened from the European Union.<\/figcaption><\/figure>\n<h2 id=\"methode\"><span class=\"ez-toc-section\" id=\"The_method_six_steps_before_sales_open\"><\/span>The method: six steps before sales open<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol class=\"bn-steps\">\n<li><b>List the real requests.<\/b> The last three events: inbox, direct messages, switchboard, queue at the counter. Not the requests imagined in a meeting: the ones that arrived, with their exact words. That is the raw material for everything else.<\/li>\n<li><b>Classify them with the router.<\/b> Every request goes through the stage \u00d7 nature \u00d7 verification grid: information, access title, contractual decision, resale. This sort decides what the bot handles alone and what goes up.<\/li>\n<li><b>Connect the data.<\/b> Programme, prices and categories, terms of sale and exchange, access map, FAQ: the bot only speaks about what is up to date. A price that changed this morning is worse than no answer at all.<\/li>\n<li><b>Write the on-sale answers.<\/b> The questions of the sales opening are known in advance: opening time, per-order limit, presale, payment. They are written before the announcement, not during.<\/li>\n<li><b>Tune the refusals and the human boundary.<\/b> The answer to \u201cI am withdrawing\u201d as well as to \u201cI am reselling\u201d is written cold, with the legal framework in view. The handover point to a human is tested before the first on-sale.<\/li>\n<li><b>Rehearse before launch.<\/b> One load run on the full scenario, mobile first, with someone playing the hurried spectator. Then supervision on opening night, when the real questions arrive.<\/li>\n<\/ol>\n<h2 id=\"erreurs\"><span class=\"ez-toc-section\" id=\"Five_mistakes_that_cost_dearly\"><\/span>Five mistakes that cost dearly<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><b>Promising a withdrawal right that does not exist.<\/b> Article L221-28, 12\u00b0 of the French Consumer Code excludes it for leisure activities on a fixed date: a bot answering \u201cyou have fourteen days\u201d creates a legally false expectation and a dispute in the making.<\/li>\n<li><b>Resending a QR code without verifying who is asking.<\/b> The access code is an access title: sending it to the first claimer opens the door to fraud and closes the door on trust. Verification first, sending after, always in that order.<\/li>\n<li><b>Letting the bot \u201chelp\u201d with resale.<\/b> Matchmaking, holder transfer, a \u201ctrick\u201d to bypass the purchase limit: habitual unauthorised resale is an offence, and a bot that lends itself to it brings its owner within the scope of Article 313-6-2.<\/li>\n<li><b>Opening sales without human supervision.<\/b> The bot absorbs the peak, but the first hour of a launch always brings one unforeseen question: someone must read it, decide it and correct the answer.<\/li>\n<li><b>Forgetting to disclose the AI.<\/b> One sentence at the top of the conversation, required by Article 50 of the European regulation since 2 August 2026, and one more trust factor: the spectator talks to a machine for simple questions, to a human for the rest.<\/li>\n<\/ul>\n<h2 id=\"faq\"><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<details class=\"bn-faq\">\n<summary>What does a ticketing chatbot cost?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Three lines: the licence (from \u20ac0 to test up to \u20ac59 per month excluding tax on the standard offers of the Botnation grid checked on 1 October 2026, the Enterprise offer being on quote), the AI credits (from \u20ac25 for 1,000), and the building of the scenario, free in self-service or covered by a quote under the Enterprise offer. For a development entirely outside the platform, Botnation\u2019s pricing FAQ cites an indicative range of \u20ac5,000 to \u20ac30,000 and more.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>How long does it take to set up?<\/summary>\n<div class=\"bn-faq-b\">\n<p>In self-service on the platform, a first information scenario (programme, prices, access) is built in a few hours; the fine-tuning of refusals and of the human handover takes as much time as the writing itself. For a custom build by the Botnation team, the schedule is set at the quote stage, depending on the integrations to your ticketing system and the number of languages: no serious figure can be promised before that scoping.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can the chatbot sell the tickets itself?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The best setting is the safest one: the bot informs, qualifies and walks the spectator to the checkout of your official ticketing system, where the transaction completes in a compliant payment environment. An assistant connected to seat availability can go as far as pre-filling the selection; the payment itself stays in the ticketing funnel.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can the chatbot be connected to our existing ticketing system?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Yes: it is even the condition of good after-sales. Scenarios feed on data (programme, prices, conditions) and the connector features allow dialogue with your tools, for example to find an order or check a status. The exact state of the possible integrations with your ticketing platform is checked case by case with our experts: the variety of solutions on the market rules out any blanket promise.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can a spectator withdraw after buying a ticket?<\/summary>\n<div class=\"bn-faq-b\">\n<p>No, in principle: Article L221-28, 12\u00b0 of the French Consumer Code excludes the withdrawal right for leisure activities that must be supplied on a specified date or period. The spectator keeps the options provided by the organiser\u2019s terms of sale (exchange, voucher, purchased cancellation insurance), and the bot must say exactly that rather than promise a fourteen-day period that does not exist.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can the chatbot help a spectator resell their seat?<\/summary>\n<div class=\"bn-faq-b\">\n<p>No, and that refusal rule must be written in black and white: habitual resale without the organiser\u2019s authorisation is an offence (Article 313-6-2 of the French Penal Code, a \u20ac15,000 fine, \u20ac75,000 for a legal entity), and acquiring tickets through automated means bypassing purchase limits is a practice deemed deceptive (Article L121-4, 26\u00b0 of the Consumer Code). If the organiser authorises a named transfer, that is a written procedure the bot can explain, not a conversational favour.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Which channels for an event: website, WhatsApp, social networks?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Three moments, three reflexes: the website for pre-sale and the checkout, messaging apps for the day itself, when the spectator is on a phone and on the move, and social networks to catch the question where it is born, often from a shared announcement. One scenario lives on these channels simultaneously, with the history following the conversation.<\/p>\n<\/div>\n<\/details>\n<div class=\"bn-cta\">\n<h3><span class=\"ez-toc-section\" id=\"Your_ticketing_already_has_its_questions_start_with_the_first_twenty\"><\/span>Your ticketing already has its questions: start with the first twenty<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Take the requests from your last three events, classify them with the router, and build the scenario yourself on the platform; or hand the creation to the team that edits it, under the Enterprise offer, on quote.<\/p>\n<p><a class=\"bn-cta-btn\" href=\"https:\/\/botnation.ai\/en\/pricing\/\">See the pricing grid<\/a><\/p>\n<p><a href=\"https:\/\/botnation.ai\/en\/contact\/\" style=\"color:#f6c9c6\">Get a quote for the creation of your chatbot<\/a> or <a href=\"https:\/\/botnation.ai\/en\/contact\/\" style=\"color:#f6c9c6\">talk to our chatbot creation experts<\/a>.<\/p>\n<\/div>\n<p class=\"bn-src\"><strong>Sources.<\/strong> French Consumer Code, Articles <em>L221-28<\/em> (12\u00b0) and <em>L121-4<\/em> (26\u00b0, created by Ordinance no. 2021-1734 of 22 December 2021), versions in force checked on 1 October 2026 (French official texts; translations ours); French Penal Code, Articles <em>313-6-2<\/em> (created by Article 3 of Law no. 2012-348 of 12 March 2012) and <em>131-38<\/em>, version in force checked on 1 October 2026; Regulation (EU) 2024\/1689 of 13 June 2024, Article 50 paragraph 1, English text of the Official Journal of the European Union on EUR-Lex, applicable since 2 August 2026; DGCCRF, \u201cContr\u00f4le de la loyaut\u00e9 des sites internet de billetterie en ligne\u201d, page published on 27 June 2019 and checked on 1 October 2026 (published in French only); CNIL, \u201cChatbots : les conseils de la CNIL pour respecter les droits des personnes\u201d, 19 February 2021; Vivendi, press release \u201cDigitick lance le premier chatbot de billetterie en France\u201d, 15 November 2016 (in French); pricing grid and FAQ of botnation.ai, checked on 1 October 2026.<\/p>\n<\/div>\n<p><script>(function(){var r=document.getElementById(\"bn-bil\");if(!r){return;}var G=[\"bilP\",\"bilN\",\"bilI\"];function val(n){var e=r.querySelector(\"input[name='\"+n+\"']:checked\");return e?parseInt(e.getAttribute(\"data-p\"),10):0;}function setg(n,v){var els=r.querySelectorAll(\"input[name='\"+n+\"']\"),i;for(i=0;els.length>i;i++){els[i].checked=(els[i].getAttribute(\"data-p\")===v);}}function up(){var p=val(G[0]),n=val(G[1]),ide=val(G[2]);var v=5;if(n===3){v=4;}else if(n===1){v=(ide===1?2:3);}else if(n===2){v=(p===0?5:1);}var k;for(k=1;6>k;k++){var pn=document.getElementById(\"bilv-\"+k);if(pn){pn.style.display=(k===v?\"block\":\"none\");}}var pe=document.getElementById(\"bil-phase\");if(pe){pe.textContent=r.getAttribute(\"data-p\"+p);}var ne=document.getElementById(\"bil-nat\");if(ne){ne.textContent=r.getAttribute(\"data-n\"+n);}}r.addEventListener(\"change\",up);r.addEventListener(\"click\",function(e){var t=e.target;if(!t){return;}if(!t.className){return;}if(String(t.className).indexOf(\"tri-load\")===-1){return;}var tr=t.closest(\"tr\");if(!tr){return;}setg(G[0],tr.getAttribute(\"data-p\"));setg(G[1],tr.getAttribute(\"data-n\"));setg(G[2],tr.getAttribute(\"data-i\"));up();});up();})();<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In brief A ticketing chatbot is a conversational assistant connected to an event organiser\u2019s schedule, prices and orders: it answers questions before the purchase, absorbs the on-sale peak, then handles after-sales, from the missing ticket to access control on event day. Ticketing is not an ordinary support channel: the product has a date, sometimes a [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":31783,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[362],"tags":[],"class_list":["post-31793","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chatbot-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/comments?post=31793"}],"version-history":[{"count":1,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31793\/revisions"}],"predecessor-version":[{"id":31889,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31793\/revisions\/31889"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media\/31783"}],"wp:attachment":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media?parent=31793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/categories?post=31793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/tags?post=31793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}