{"id":31437,"date":"2026-08-25T12:24:14","date_gmt":"2026-08-25T10:24:14","guid":{"rendered":"https:\/\/botnation.ai\/transport-chatbot\/"},"modified":"2026-08-25T14:53:26","modified_gmt":"2026-08-25T12:53:26","slug":"transport-chatbot","status":"publish","type":"post","link":"https:\/\/botnation.ai\/en\/transport-chatbot\/","title":{"rendered":"Transport chatbot: use cases, real numbers and deployment method (2026)"},"content":{"rendered":"<p><script>(function(){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.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}}\"));document.head.appendChild(s);})();<\/script><\/p>\n<div class=\"bn-art\">\n<div class=\"bn-tldr\">\n<span class=\"bn-klabel\">In short<\/span>\n<ul>\n<li>A <strong>transport chatbot<\/strong> is a conversational agent that answers the most frequent questions on a network: schedules, routes, disruptions, tickets, fares, lost property, parcel tracking. It does not replace agents: it absorbs repetition.<\/li>\n<li>The available public figures: <strong>23 million messages exchanged with 1.8 million travellers and 5 connected regions, according to the case study published by Botnation<\/strong> (2026). These are the vendor\u2019s figures: no independent SNCF confirmation was found.<\/li>\n<li>The factor that decides everything is not AI, it is <strong>data<\/strong>: schedules, traffic status and ticketing must be queryable by program. A bot fed with theoretical data fails silently.<\/li>\n<li>Return on investment is measured in agent hours. The tool below takes three questions and gives you the hours, the days and the full-time equivalents that your volume of requests can free up.<\/li>\n<\/ul>\n<\/div>\n<p>A traveller misses their train and wants to know if another one leaves an hour later. A passenger wants to change their ticket after a strike. A commuter is looking for the nearest stop for their connection. It is 6:20 am, it is snowing, and nobody picks up the phone. This is exactly the moment a transport chatbot is made for.<\/p>\n<p>The topic is not new: SNCF has been experimenting with conversational agents for years, and regional operators have joined in with public results. But the pages competing for the query \u201ctransport chatbot\u201d all look alike: they sell, they do not demonstrate. This one takes the question the other way round: the six real missions, the public figures, the method, and a tool to situate your own case.<\/p>\n<div class=\"bn-def\">\n<span class=\"bn-klabel\">Definition<\/span>\n<p><b>A transport chatbot<\/b> is a conversational agent deployed by a transport operator (passenger network, airline, airport, coach operator or logistics provider) to answer the recurring requests of its users and automate simple interactions: passenger information, disruptions, ticketing, complaints. It can be connected to the operator\u2019s operational data, which sets it apart from a simple scripted bot.<\/p>\n<\/div>\n<p>The organisations concerned are more numerous than one might think. Rail and urban networks, regions, airports, airlines, coach operators, logistics and delivery platforms: they all share the same symptom. Thousands of identical questions, pouring in at all hours, exploding precisely when the support team is busiest.<\/p>\n<ul>\n<li><b>Schedules, next departures and routes<\/b>: the most frequent question, and the easiest to automate if the data is good.<\/li>\n<li><b>Disruptions<\/b>: strikes, works, bad weather, incidents. This is the highest-value use case, because it happens when the network is saturated.<\/li>\n<li><b>Tickets, fares and season passes<\/b>: compare offers, explain discounts, renew a pass, direct towards online booking.<\/li>\n<li><b>Complaints, refunds and lost property<\/b>: qualify the request, collect the documents, pass a complete case to the right department.<\/li>\n<li><b>Logistics tracking<\/b>: for freight carriers and logistics providers, the passenger equivalent of the parcel on its way.<\/li>\n<\/ul>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 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\/transport-chatbot\/#Transport_chatbot_the_six_typical_missions_and_what_they_require\" >Transport chatbot: the six typical missions, and what they require<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#Proof_in_numbers_SNCF_TER_and_its_23_million_messages\" >Proof in numbers: SNCF TER and its 23 million messages<\/a><\/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\/transport-chatbot\/#What_the_other_French_deployments_tell_us\" >What the other French deployments tell us<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#How_many_hours_can_a_transport_chatbot_save_you\" >How many hours can a transport chatbot save you?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#The_six-step_method_from_the_first_month_to_rollout\" >The six-step method, from the first month to rollout<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#Who_builds_the_chatbot_the_three-way_trade-off\" >Who builds the chatbot: the three-way trade-off<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#No-code_platform\" >No-code platform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#Custom_development\" >Custom development<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#The_three_traps_that_sink_a_transport_chatbot_project\" >The three traps that sink a transport chatbot project<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#What_the_law_changes_for_a_transport_chatbot\" >What the law changes for a transport chatbot<\/a><\/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\/transport-chatbot\/#Frequently_asked_questions\" >Frequently asked questions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#Where_to_start_concretely\" >Where to start, concretely<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/botnation.ai\/en\/transport-chatbot\/#Get_your_transport_chatbot_running_on_your_own_or_with_us\" >Get your transport chatbot running, on your own or with us<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 id=\"six-missions\"><span class=\"ez-toc-section\" id=\"Transport_chatbot_the_six_typical_missions_and_what_they_require\"><\/span>Transport chatbot: the six typical missions, and what they require<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Most debates on transport chatbots stay abstract. Here is what it looks like once translated into concrete missions, with, for each one, the condition that makes it genuinely automatable. It is the condition, not the technology, that makes the difference between a demo and a service.<\/p>\n<p>One point runs through every row of the table: the announced features depend on access to real-time data and to the APIs of each network. Without schedule APIs, without a network status feed, without a ticketing interface, the mission remains a promise.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Mission<\/th>\n<th>Example question<\/th>\n<th>What makes it automatable<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Schedule information<\/td>\n<td>\u201cWhat is the next train to Bordeaux after 6 pm?\u201d<\/td>\n<td>Up-to-date schedule data, queryable through an API, with connections<\/td>\n<\/tr>\n<tr>\n<td>Journey planning<\/td>\n<td>\u201cHow do I get from Lyon to the airport?\u201d<\/td>\n<td>A journey planner (the same one as the operator\u2019s mobile app)<\/td>\n<\/tr>\n<tr>\n<td>Traffic status and disruptions<\/td>\n<td>\u201cIs my line disrupted tonight?\u201d<\/td>\n<td>Real-time feed of the network status, otherwise the bot answers in the past tense<\/td>\n<\/tr>\n<tr>\n<td>Tickets, fares, season passes<\/td>\n<td>\u201cWhat is the fare for a round trip this weekend?\u201d<\/td>\n<td>Answers validated by the commercial department, and a handoff to online booking<\/td>\n<\/tr>\n<tr>\n<td>Complaints and refunds<\/td>\n<td>\u201cMy train was late, how do I get a refund?\u201d<\/td>\n<td>A written procedure, a data collection form, and a clear owner for the case<\/td>\n<\/tr>\n<tr>\n<td>Lost property and assistance<\/td>\n<td>\u201cI left a bag on the 9:12 train\u201d<\/td>\n<td>A defined process: declaration, information gathering, handoff to the right department<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"bn-call bn-tip\">\n<svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M9 18h6M10 22h4M12 2a7 7 0 00-4 12.7V17h8v-2.3A7 7 0 0012 2z\"><\/path><\/svg>\n<div>\n<span class=\"bn-klabel\">Key point<\/span>\n<p>The six missions do not carry the same weight. On almost every network, schedule information and traffic status represent more than half of the requests. That is where you start, and that is also what makes the rest easier to sell internally.<\/p>\n<\/div>\n<\/div>\n<h2 id=\"preuve-sncf\"><span class=\"ez-toc-section\" id=\"Proof_in_numbers_SNCF_TER_and_its_23_million_messages\"><\/span>Proof in numbers: SNCF TER and its 23 million messages<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<figure class=\"bn-fig\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/botnation-ai-chatbot-transport-body1.jpg\" alt=\"Hands holding a blank train ticket above a tablet with two empty chat bubbles, small wooden toy train\" width=\"1536\" height=\"1024\"><figcaption>A ticket, a screen, a conversation: the everyday tasks a transport chatbot takes on.<\/figcaption><\/figure>\n<p>The debate about the usefulness of a transport chatbot is rarely settled with figures. So here are some, according to the case study published by Botnation: <b>23 million messages exchanged, 1.8 million engaged users and 5 connected regions<\/b>. The vendor calls it one of the largest public chatbot deployments in France, and this figure is theirs: no independent confirmation of these numbers was found on the SNCF side.<\/p>\n<div class=\"bn-stats\">\n<div class=\"bn-stat\"><b>23 M<\/b><span>messages exchanged with travellers<\/span><\/div>\n<div class=\"bn-stat\"><b>1.8 M<\/b><span>engaged users<\/span><\/div>\n<div class=\"bn-stat\"><b>5<\/b><span>connected regions<\/span><\/div>\n<\/div>\n<p>What is interesting in the deployment described by Botnation, beyond the announced volume, is what the chatbot centralises: the fare offers, the services and the assistance of each region, while every TER region has its own formulas, its own passes and its own lines. This is exactly the difficulty every transport player meets: the right information exists, but it is scattered.<\/p>\n<blockquote>\n<p>\u201cThe agent developed with Botnation lets us support travellers at any time, on all their everyday topics. It is a real gain in responsiveness and accessibility for the users of the TER Centre-Val de Loire network.\u201d<\/p>\n<\/blockquote>\n<p>Guillaume Gillot, marketing and communication manager at SNCF Voyageurs TER Centre-Val de Loire, quoted in the <a href=\"https:\/\/botnation.ai\/en\/clients\/sncf\/\">case study published by Botnation<\/a>.<\/p>\n<p>Two practical lessons to take from this before launching any project. The first: a regional network with its local specificities lends itself better to a chatbot than a unified national network, because the question \u201cwhere do I find the right information\u201d is precisely the one users ask. The second: volume is not the obstacle. A flow like the one described by Botnation is not handled with a ten-question script, but with a platform that keeps control of the data, the answers and human handoff.<\/p>\n<div class=\"bn-call bn-info\">\n<svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 8h.01M11 12h1v4h1\"><\/path><\/svg>\n<div>\n<span class=\"bn-klabel\">Perspective<\/span>\n<p>The SNCF TER case is the most quoted, but it is not an isolated one: Transilien, the RATP and several urban networks currently run or have run conversational agents. The question is no longer \u201cdoes it work\u201d but \u201cwhat does it take for it to work here\u201d.<\/p>\n<\/div>\n<\/div>\n<p>The full details of this deployment, with the problem statement and the figures, are on Botnation\u2019s <a href=\"https:\/\/botnation.ai\/en\/industries\/\">transport industry pages<\/a>, which also cover use cases for airlines, airports and logistics providers.<\/p>\n<h2 id=\"ce-que-montrent-les-autres\"><span class=\"ez-toc-section\" id=\"What_the_other_French_deployments_tell_us\"><\/span>What the other French deployments tell us<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The SNCF TER case is a proven success. Still, looking at two other historical experiences helps avoid the same traps, because they document precise limits.<\/p>\n<p>The <strong>Tilien<\/strong> chatbot, deployed by Transilien on Facebook Messenger, was benchmarked by the MC2i consultants in 2020, after several months of development and a beta version launched in 2018. Of the six tested features, the results were uneven: traffic and works status scored highest, next departures and journey search were average, first and last departures scored poorly, and transport tickets redirected to the website, giving a disjointed journey. The report also notes that the tool did not recognise stations when misspelled.<\/p>\n<p>The same lesson appears on the SNCF Numerique side: in its first beta version, the Transilien chatbot answered schedules and routes, showed next departures in real time, but <strong>explicitly stated that it could not yet report on disrupted situations<\/strong> and that routes relied on theoretical information.<\/p>\n<ul>\n<li><b>Real time costs once, not in imagination<\/b>: traffic status cannot be invented, it must connect to a source, and access to that source is a project condition, not a detail.<\/li>\n<li><b>Routes built on theoretical data give right answers on an ideal network<\/b>, and wrong ones the day it actually rains.<\/li>\n<li><b>Station name spelling is a classic trap<\/b>: count it in the acceptance tests, not in the surprises.<\/li>\n<li><b>Systematic redirects to a website break the journey<\/b>: redirection must be the exception, not the rule.<\/li>\n<\/ul>\n<p>The Transit Bot product, dedicated to public transport, points the same way: its three flagship features are real-time information (connected to vehicle location data, in SIRI or GTFS-RT format), mobile ticketing and demand-responsive transport. Data again, ticketing again, a messaging channel again.<\/p>\n<p>If you want to understand what happens technically between the user\u2019s message and the bot\u2019s answer, the <a href=\"https:\/\/botnation.ai\/en\/how-chatbots-work\/\">page on how a chatbot works<\/a> details the steps, and the <a href=\"https:\/\/botnation.ai\/en\/how-to-develop-a-chatbot\/\">guide to building a chatbot<\/a> compares the three paths: custom code, no-code platform, provider.<\/p>\n<figure class=\"bn-fig\"><img decoding=\"async\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/botnation-ai-chatbot-transport-body2.jpg\" alt=\"Person seen from behind in a control room facing a screen showing a schematic metro map with no text\" width=\"1536\" height=\"1024\"><figcaption>Real-time data is the real engine room of the transport chatbot: without it, it answers in the past.<\/figcaption><\/figure>\n<h2 id=\"outil-gain\"><span class=\"ez-toc-section\" id=\"How_many_hours_can_a_transport_chatbot_save_you\"><\/span>How many hours can a transport chatbot save you?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Saved hours can be calculated, and the calculation comes down to three questions: the volume of requests you receive, the share of these requests that is repetitive and qualifiable, and the time an agent currently spends on each. The three answers give the order of magnitude of what a well-sized chatbot can absorb.<\/p>\n<div class=\"bn-lng\" id=\"bn-tr\" data-loc=\"en-US\">\n<p class=\"lng-qt-sim\" style=\"font-weight:700;color:var(--bn-ink);margin:0 0 6px\">Your situation<\/p>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">1. How many traveller requests do you receive per month?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"tr-v1\"><input type=\"radio\" id=\"tr-v1\" name=\"tr-v\" data-v=\"2000\" checked> Around 2,000<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-v2\"><input type=\"radio\" id=\"tr-v2\" name=\"tr-v\" data-v=\"10000\"> Around 10,000<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-v3\"><input type=\"radio\" id=\"tr-v3\" name=\"tr-v\" data-v=\"50000\"> Around 50,000<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">2. What share of these requests is repetitive (schedules, traffic, fares, tracking)?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"tr-p1\"><input type=\"radio\" id=\"tr-p1\" name=\"tr-p\" data-v=\"0.4\" checked> Around 40%<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-p2\"><input type=\"radio\" id=\"tr-p2\" name=\"tr-p\" data-v=\"0.6\"> Around 60%<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-p3\"><input type=\"radio\" id=\"tr-p3\" name=\"tr-p\" data-v=\"0.8\"> Around 80%<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">3. How long does an agent take on one question, without a chatbot?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"tr-m1\"><input type=\"radio\" id=\"tr-m1\" name=\"tr-m\" data-v=\"3\" checked> Around 3 minutes<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-m2\"><input type=\"radio\" id=\"tr-m2\" name=\"tr-m\" data-v=\"6\"> Around 6 minutes<\/label><br>\n<label class=\"cdc-chip\" for=\"tr-m3\"><input type=\"radio\" id=\"tr-m3\" name=\"tr-m\" data-v=\"10\"> Around 10 minutes<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-out\">\n<div class=\"lng-lines\">\n<div class=\"lng-line\"><b>Agent hours freed up every month<\/b><span id=\"tr-o1\">40<\/span><\/div>\n<div class=\"lng-line\"><b>Working days recovered<\/b><span id=\"tr-o2\">5.3<\/span><\/div>\n<div class=\"lng-line\"><b>Full-time equivalents<\/b><span id=\"tr-o3\">0.3<\/span><\/div>\n<div class=\"lng-line\"><b>Requests handled without an agent<\/b><span id=\"tr-o4\">800<\/span><\/div>\n<\/div>\n<div class=\"lngv lngv-1\" id=\"trv-1\">\n<em>Rule: under 100 agent hours per month<\/em><br>\n<b>A targeted script is enough<\/b>\n<p>At this volume, what you need is not a platform project: it is an agent that takes over the twenty most asked questions from your users, with an answer validated by the relevant department and a handoff to a human when it does not know.<\/p>\n<p>Prioritise schedules and disruption information, measure what the bot actually absorbs, and only scale up with the figures in hand.<\/p>\n<\/div>\n<div class=\"lngv lngv-2\" id=\"trv-2\">\n<em>Rule: between 100 and 500 agent hours per month<\/em><br>\n<b>A real content project<\/b>\n<p>Here, the script alone is no longer enough. You need structured content: fare offers, refund procedures, lost property, accessibility questions, and a method to keep it all up to date.<\/p>\n<p>This is also the moment to connect the data: real-time network status feeding becomes the factor that decides perceived quality.<\/p>\n<\/div>\n<div class=\"lngv lngv-3\" id=\"trv-3\">\n<em>Rule: between 500 and 1,500 agent hours per month<\/em><br>\n<b>A full multichannel chain<\/b>\n<p>You move from \u201ca bot that answers\u201d to \u201ca customer relationship channel\u201d. The chatbot must be published where your users are: website, WhatsApp, Messenger, Instagram, SMS. It becomes the main contact for ticketing, complaints and disruptions, and agents are reorganised around what it cannot do.<\/p>\n<p>Human handoff becomes a position in the organisation: who takes over, when, and with what elements already collected.<\/p>\n<\/div>\n<div class=\"lngv lngv-4\" id=\"trv-4\">\n<em>Rule: more than 1,500 agent hours per month<\/em><br>\n<b>Industrial scale, like SNCF TER<\/b>\n<p>This is the French proof regime: millions of conversations, regional content to maintain, multi-source data, and teams measuring the effect on inbound calls and on satisfaction.<\/p>\n<p>At this level, the value is no longer in the chatbot alone but in what it reveals: the quality of your data, your procedures, and the way your departments talk to each other.<\/p>\n<\/div>\n<p class=\"lng-note\">Calculation assumptions: a working day of 7.5 hours, 21 working days per month. The repetitive share corresponds to the share of requests a well-sized chatbot can handle alone; the rest stay human.<\/p>\n<\/div>\n<\/div>\n<p>The goal is not to reach the last percentage: most well-run networks aim for 60 to 80% absorption of recurring requests, and that figure drops quickly if the data is not up to date. The operation that really matters is this: measure, publish, measure again.<\/p>\n<h2 id=\"methode\"><span class=\"ez-toc-section\" id=\"The_six-step_method_from_the_first_month_to_rollout\"><\/span>The six-step method, from the first month to rollout<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Here is the sequence that recurs in almost every successful deployment, whatever the size of the network. It has an order, and this order is not a detail: you start with the most asked question, not the most impressive one.<\/p>\n<ol class=\"bn-steps\">\n<li><b>Count the real requests before choosing the script<\/b>\n<p>Spend a week noting the questions that come in, or ask an agent to keep tally. You are looking for the forty recurring phrasings; on a passenger network, schedules and traffic information top the list.<\/p>\n<\/li>\n<li><b>Write the answers with the business department<\/b>\n<p>The right answer about a reduced fare, the refund procedure or lost property does not come from IT: it comes from the person who gives it today at the counter. Writing is the slow part of the project, and that is a good thing.<\/p>\n<\/li>\n<li><b>Settle the data question<\/b>\n<p>A chatbot displaying theoretical schedules fails silently. Identify the API or feed the operator already has for schedules and network status, or decide to start on a scope that does not depend on it.<\/p>\n<\/li>\n<li><b>Publish on a single channel, and measure<\/b>\n<p>Start on the website, measure what the bot absorbs, what it hands off and where it fails. Thirty days of measurements are worth more than three months of intuitive tweaks. The <a href=\"https:\/\/botnation.ai\/en\/channels\/\">available channels<\/a> then let you expand without starting from scratch.<\/p>\n<\/li>\n<li><b>Expand to the other channels<\/b>\n<p>WhatsApp for regular users, Messenger and Instagram where the community is, SMS for targeted alerts. The script carries over, with channel-specific rules to respect.<\/p>\n<\/li>\n<li><b>Organise human handoff and maintenance<\/b>\n<p>Name who takes over unresolved conversations, at which times, and who updates the content when fares change. A poorly maintained transport chatbot is worse than no chatbot: it looks right, and it no longer is.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"champ\"><span class=\"ez-toc-section\" id=\"Who_builds_the_chatbot_the_three-way_trade-off\"><\/span>Who builds the chatbot: the three-way trade-off<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Once the scope is set, the question is no longer \u201cdo we need a chatbot\u201d but \u201cwho builds it\u201d. The three paths that exist for any chatbot project carry over to transport, with sector-specific nuances: data is shared across systems, procedures change with every new fare campaign, and the slightest passenger information error is immediately visible.<\/p>\n<div class=\"bn-cols\">\n<div class=\"bn-col biz\">\n<h4><span class=\"ez-toc-section\" id=\"No-code_platform\"><\/span><svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M9 18h6M10 22h4M12 2a7 7 0 00-4 12.7V17h8v-2.3A7 7 0 0012 2z\"><\/path><\/svg>No-code platform<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>The script is built without a developer, and the business department keeps control of the answers.<\/li>\n<li>The first journey is up in half a day, immediately measurable.<\/li>\n<li>Channel connectors (website, WhatsApp, Messenger, Instagram, SMS) are managed by the platform.<\/li>\n<li>The language model is set as a parameter, not as an infrastructure project.<\/li>\n<\/ul>\n<\/div>\n<div class=\"bn-col warn\">\n<h4><span class=\"ez-toc-section\" id=\"Custom_development\"><\/span><svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 9v4M12 17h.01M10.3 3.9L1.8 18a2 2 0 001.7 3h17a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z\"><\/path><\/svg>Custom development<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>The code connects directly to internal systems, with no middleman.<\/li>\n<li>The cost is measured in person-days, and maintenance follows after the team that wrote it leaves.<\/li>\n<li>The project takes weeks before the first useful message, not hours.<\/li>\n<li>Adding a channel or a business rule requires development: a debt that accumulates.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>The third path is the provider one. It makes sense for a very specific trade, on-site staff, or an integrator already in place with the operator, provided the contract clearly settles ownership of the account, access to the editor after delivery and the exact list of what is delivered. In every case, the common point of projects that succeed is the same: someone, on the operator side, owns the truth about the answers.<\/p>\n<h2 id=\"pieges\"><span class=\"ez-toc-section\" id=\"The_three_traps_that_sink_a_transport_chatbot_project\"><\/span>The three traps that sink a transport chatbot project<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"bn-call bn-warn\">\n<svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 9v4M12 17h.01M10.3 3.9L1.8 18a2 2 0 001.7 3h17a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z\"><\/path><\/svg>\n<div>\n<span class=\"bn-klabel\">Trap 1: the demo that answers 5 questions<\/span>\n<p>The demo works, the service does not. Between the five questions chosen by the sales deck and the 40 real variations of the same request lies all the work. The honest recipe: a question set supplied by the operator, not chosen by the provider.<\/p>\n<\/div>\n<\/div>\n<div class=\"bn-call bn-warn\">\n<svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 9v4M12 17h.01M10.3 3.9L1.8 18a2 2 0 001.7 3h17a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z\"><\/path><\/svg>\n<div>\n<span class=\"bn-klabel\">Trap 2: believing generative AI solves the data<\/span>\n<p>A language model writes a nice answer, but it does not know that line 12 is 20 minutes late. For passenger information, truth is a datum, not a phrasing.<\/p>\n<\/div>\n<\/div>\n<div class=\"bn-call bn-warn\">\n<svg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 9v4M12 17h.01M10.3 3.9L1.8 18a2 2 0 001.7 3h17a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z\"><\/path><\/svg>\n<div>\n<span class=\"bn-klabel\">Trap 3: the humanitarian safety net<\/span>\n<p>The chatbot hands off, but nobody takes over, and the complaint stalls. Human handoff is designed before launch: who, when, and with which elements already collected by the bot.<\/p>\n<\/div>\n<\/div>\n<h2 id=\"regles\"><span class=\"ez-toc-section\" id=\"What_the_law_changes_for_a_transport_chatbot\"><\/span>What the law changes for a transport chatbot<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Since <strong>2 August 2026<\/strong>, the EU AI Act requires an interactive AI system to inform its interlocutor that they are talking to an AI, unless this is clear from the context. This is Article 50(1) of Regulation (EU) 2024\/1689, already applicable and not postponed. For a transport chatbot, the application is simple: the first message announces the automated agent, then the bot does its job.<\/p>\n<p>Two limits to keep in mind. The first: for AI-generated content, the obligation to mark content as artificial is linked to the production of synthetic text, not to the simple dissemination of schedule information. The second: personal data collected in a complaint or a lost property report remain subject to the GDPR, as on any channel. Nothing new, but it belongs in the specification.<\/p>\n<details class=\"bn-faq\">\n<summary>How long does it take to deploy a transport chatbot?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The first useful journey is up in half a day on a no-code platform: schedules, FAQ, handoff to a human. The version that holds up, with real-time data, validated content and human handoff, is counted in weeks. The schedule is almost entirely determined by data availability and the writing of business answers, not by technology.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Who answers when the chatbot does not know?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Human handoff is decided before launch, not after. Two models dominate: transfer to a live agent, with the full conversation history, or opening a ticket sent to the relevant department. In both cases, three things are written down: coverage hours, the response time announced to the traveller, and who verifies that the case is complete.<\/p>\n<\/div>\n<\/details>\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 is a transport chatbot?<\/summary>\n<div class=\"bn-faq-b\">\n<p>A conversational agent deployed by a transport operator to answer the recurring requests of its users: schedules, routes, disruptions, tickets, fares, complaints, lost property. Its specificity, compared with a simple scripted bot, is the ability to connect to the operator\u2019s operational data.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>How much does a transport chatbot cost?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The cost depends almost entirely on scope: number of contents, quality of available data, channels targeted, human handoff to organise. On the platform side, Botnation\u2019s public pricing grid reviewed on 3 August 2026 shows a Free plan at EUR 0, a Basic plan at EUR 39 per month, a Pro plan at EUR 59 per month, and a custom Enterprise offer, excluding VAT, which literally includes chatbot creation services. A project handed to a provider is priced on a quote, on the basis of the real scope.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>What percentage of requests can a transport chatbot handle?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The realistic share of requests handled alone often sits between 60 and 80% of recurring requests, once the data and answers are validated in place. The rest is handed to a human, and that is normal: the value of a good chatbot is also measured by its ability to hand off cleanly the cases it must not take.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can a chatbot handle real-time disruptions?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Yes, provided you have a network status feed. This is exactly the point that was missing in the first beta versions of historical chatbots: they clearly stated they did not cover disruption information. A transport chatbot connected to a network status source is, on the other hand, the ideal tool to broadcast information at the exact moment it matters.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>What are the best channels for a transport chatbot?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The website remains the first channel, because it is frictionless and measurable. Then come messaging channels depending on the users: WhatsApp for everyday and subscribers, Messenger and Instagram for audiences that live there, SMS for targeted alerts. The key is to start on one channel and measure before expanding.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>What is the difference between a transport chatbot and a tourism chatbot?<\/summary>\n<div class=\"bn-faq-b\">\n<p>A transport chatbot talks about journeys, networks and chosen or imposed mobility, and relies on operational data. A tourism chatbot, on the other hand, talks about discovery, accommodation and activities: its role is to attract visitors. Both share the same channels and the same script logic, as shown in our article on <a href=\"https:\/\/botnation.ai\/en\/industries\/chatbot-tourism\/\">chatbots for tourism<\/a>.<\/p>\n<\/div>\n<\/details>\n<h2 id=\"commencer\"><span class=\"ez-toc-section\" id=\"Where_to_start_concretely\"><\/span>Where to start, concretely<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The sequence is the same for a metropolitan network, a regional airline or a freight carrier: identify the question that comes back most often, write the right answer, connect the data if it exists, and measure for thirty days. The SNCF TER case shows what it becomes at scale; the Tilien and Transilien experiences remind us what it costs when you skip the data.<\/p>\n<p>If you want to test the scope on your own volume, go back through the tool above. And if you are starting from scratch, reading the <a href=\"https:\/\/botnation.ai\/en\/how-to-develop-a-chatbot\/\">guide to building a chatbot<\/a> gives you the comparison between the code path, the no-code path and the provider path.<\/p>\n<div class=\"bn-cta\">\n<h3><span class=\"ez-toc-section\" id=\"Get_your_transport_chatbot_running_on_your_own_or_with_us\"><\/span>Get your transport chatbot running, on your own or with us<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The platform lets you set up a first informational script without commitment, on a free plan. For a complete deployment with real-time data and human handoff, the Enterprise offer includes chatbot creation services, on a quote.<\/p>\n<p><a class=\"bn-cta-btn\" href=\"https:\/\/botnation.ai\/en\/pricing\/\">See the offers and start for free<\/a> <a class=\"bn-cta-btn\" style=\"background:transparent;color:#fff !important;border:2px solid #fe716b;box-shadow:none\" href=\"https:\/\/botnation.ai\/en\/contact\/\">Request a quote<\/a><\/p>\n<\/div>\n<p class=\"bn-roi-note\">Sources and data: SNCF TER figures and Guillaume Gillot\u2019s quote according to the case study published by Botnation (SNCF clients page, consulted on 25 August 2026); vendor figures, no independent confirmation found; the French version relies on the same source and is not a second validation; MC2i benchmark of the Tilien chatbot (2020); SNCF Numerique article on the beta version of the Transilien chatbot; Transit Bot features from its website; Botnation pricing grid reviewed on 3 August 2026; Article 50 of Regulation (EU) 2024\/1689, in force since 2 August 2026.<\/p>\n<\/div>\n<p><script>(function(){var r=document.getElementById(\"bn-tr\");if(!r){return;}function val(n){var e=r.querySelector(\"input[name='\"+n+\"']:checked\");return e?e.getAttribute(\"data-v\"):\"\";}function num(n){var v=val(n);return v?parseFloat(v):0;}function nf(x,d){return x.toLocaleString(r.getAttribute(\"data-loc\")||\"fr-FR\",{minimumFractionDigits:d,maximumFractionDigits:d});}function put(id,s){var e=document.getElementById(id);if(e){e.textContent=s;}}function up(){var v=num(\"tr-v\"),p=num(\"tr-p\"),m=num(\"tr-m\");var h=v*p*m\/60;var j=h\/7.5;var e2=j\/21;var t=v*p;put(\"tr-o1\",nf(Math.floor(h+0.5),0));put(\"tr-o2\",nf(Math.floor(j*10+0.5)\/10,1));put(\"tr-o3\",nf(Math.floor(e2*10+0.5)\/10,1));put(\"tr-o4\",nf(Math.floor(t+0.5),0));var lvl=1;if(h>=1500){lvl=4;}else{if(h>=500){lvl=3;}else{if(h>=100){lvl=2;}}}var k;for(k=1;4>=k;k++){var pn=document.getElementById(\"trv-\"+k);if(pn){pn.style.display=(k===lvl?\"block\":\"none\");}}}r.addEventListener(\"change\",up);up();})();<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In short A transport chatbot is a conversational agent that answers the most frequent questions on a network: schedules, routes, disruptions, tickets, fares, lost property, parcel tracking. It does not replace agents: it absorbs repetition. The available public figures: 23 million messages exchanged with 1.8 million travellers and 5 connected regions, according to the case [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":31429,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[362],"tags":[],"class_list":["post-31437","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\/31437","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=31437"}],"version-history":[{"count":3,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31437\/revisions"}],"predecessor-version":[{"id":31443,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31437\/revisions\/31443"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media\/31429"}],"wp:attachment":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media?parent=31437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/categories?post=31437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/tags?post=31437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}