<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rickard Collander</title>
    <description>The latest articles on DEV Community by Rickard Collander (@rickardcollander).</description>
    <link>https://dev.to/rickardcollander</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4174075%2Faa6baf1e-b117-4585-a5bd-f4b1f0491cab.png</url>
      <title>DEV Community: Rickard Collander</title>
      <link>https://dev.to/rickardcollander</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rickardcollander"/>
    <language>en</language>
    <item>
      <title>Ticketing system for customer service: what it must handle</title>
      <dc:creator>Rickard Collander</dc:creator>
      <pubDate>Sat, 10 Oct 2026 07:04:18 +0000</pubDate>
      <link>https://dev.to/rickardcollander/ticketing-system-for-customer-service-what-it-must-handle-3eeg</link>
      <guid>https://dev.to/rickardcollander/ticketing-system-for-customer-service-what-it-must-handle-3eeg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; A ticketing system for customer service turns every customer contact into a ticket with an owner, a status and a history, from any channel. The core requirements are one inbox for every channel, ticket types in fixed fields, assignment, response time targets and reporting. What separates a system in 2026 from one from 2020 is that the knowledge base is the core: the same reviewed answers serve every channel.&lt;/p&gt;

&lt;p&gt;Anyone searching for a ticketing system for customer service usually has a concrete problem: the emails sit in a shared inbox where nobody knows who replied, the chat is logged in another tool and nobody can say how many tickets came in last week. This article is a buyer's guide for a team with a few hundred tickets a week. We develop such a system ourselves, so read it as a vendor's checklist and test the requirements against your own operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a ticketing system for customer service?
&lt;/h2&gt;

&lt;p&gt;A system where every customer contact becomes a ticket with an owner, a status and a history, and where every channel lands in the same place. &lt;a href="https://www.gartner.com/en/information-technology/glossary/customer-engagement-center-cec" rel="noopener noreferrer"&gt;Gartner&lt;/a&gt; calls the category customer engagement center and defines it as software built around case management, which creates, assigns, routes and escalates cases and holds the conversation with the customer together.&lt;/p&gt;

&lt;p&gt;That differs from two things that often have to do instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A shared inbox&lt;/strong&gt; in Outlook or Gmail. It has no owner per ticket, no status, no history per customer and no statistics. It works until two people reply to the same customer or nobody does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A CRM system.&lt;/strong&gt; It holds the customer record, contracts and deals, but not the flow of a ticket: who has it, what has been promised and when it should be resolved. The two should be connected, not the same thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The word ticket is the important one. A ticket has a beginning, an owner, a type and an end, and that is what makes customer service measurable and improvable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which functions are core requirements?
&lt;/h2&gt;

&lt;p&gt;Seven things, and most systems have them. The difference lies in how they fit together:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;th&gt;What it should do&lt;/th&gt;
&lt;th&gt;What to check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One inbox for every channel&lt;/td&gt;
&lt;td&gt;Email, forms, chat and phone notes as tickets in the same view&lt;/td&gt;
&lt;td&gt;That the chat and the form are not separate tools with their own logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ticket type and fields&lt;/td&gt;
&lt;td&gt;Fixed values for type, cause and outcome&lt;/td&gt;
&lt;td&gt;That the fields are mandatory at closing and can be reported on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assignment and status&lt;/td&gt;
&lt;td&gt;An owner per ticket, statuses such as waiting for customer, waiting for us, resolved&lt;/td&gt;
&lt;td&gt;That a ticket cannot be without an owner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response time targets&lt;/td&gt;
&lt;td&gt;Targets per channel and ticket type, with alerts when they are breached&lt;/td&gt;
&lt;td&gt;That the target is measured from the customer's first message, not from assignment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer history&lt;/td&gt;
&lt;td&gt;All previous tickets and purchases for the customer in the same view&lt;/td&gt;
&lt;td&gt;That it fetches customer data from your systems, not just from previous emails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Templates and suggested replies&lt;/td&gt;
&lt;td&gt;Reviewed answers the agent starts from&lt;/td&gt;
&lt;td&gt;That the templates come from the same source as the help centre, not from a separate list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reporting&lt;/td&gt;
&lt;td&gt;Tickets per type, channel, hour and agent; response time and resolution rate&lt;/td&gt;
&lt;td&gt;That the report answers what customers ask about, not only how many&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;How the ticket types are built so the reports can actually be used is described in &lt;a href="https://www.supportifier.se/en/blog/categorising-customer-service-tickets" rel="noopener noreferrer"&gt;the article on categorising tickets&lt;/a&gt;. A system that lets tags grow freely produces data that looks like data but is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What separates a system in 2026 from one from 2020?
&lt;/h2&gt;

&lt;p&gt;The knowledge base is the core, not an add-on. A ticketing system from 2020 was built around the inbox; the answers lived in the agent's head and in a template list. A system in 2026 should rest on reviewed source material that the same answer is drawn from in three places: as an article in the help centre, as an answer in the chat and as a draft in the inbox. What such a knowledge base is, and why an FAQ is not enough, is in &lt;a href="https://www.supportifier.se/en/blog/knowledge-base-customer-service" rel="noopener noreferrer"&gt;the article on knowledge bases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is an excerpt. The full article continues on the &lt;a href="https://www.supportifier.se/en/blog/ticketing-system-for-customer-service" rel="noopener noreferrer"&gt;Supportifier blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>customerservice</category>
      <category>helpdesk</category>
      <category>saas</category>
      <category>support</category>
    </item>
    <item>
      <title>Where is my order? Cut e-commerce's most common question</title>
      <dc:creator>Rickard Collander</dc:creator>
      <pubDate>Sat, 10 Oct 2026 07:04:04 +0000</pubDate>
      <link>https://dev.to/rickardcollander/where-is-my-order-cut-e-commerces-most-common-question-meg</link>
      <guid>https://dev.to/rickardcollander/where-is-my-order-cut-e-commerces-most-common-question-meg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; The question "where is my order?" arises when the customer wants to know something the company already knows but has not shown: whether the order has shipped, when it will arrive and what happens if it is late or missing. It shrinks when notifications answer that and when the help centre and chat can look up the order and the carrier's status.&lt;/p&gt;

&lt;p&gt;Anyone who runs customer service for an online store with a few hundred orders a week knows which question tops the inbox: where is my order? It arrives by email, chat and phone, it comes back two days later from the same customer, and it takes time from the tickets that actually need a person. The question cannot be abolished, but it can be made rare. This article shows where it comes from, what the customer is entitled to and how to build it away without hiring more people. A broader overview of e-commerce support, covering all five ticket types, is in &lt;a href="https://www.supportifier.se/en/blog/ecommerce-customer-support" rel="noopener noreferrer"&gt;the article on e-commerce customer support&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is "where is my order?" e-commerce's most common question?
&lt;/h2&gt;

&lt;p&gt;The question arises because the customer wants to know something the company already knows but has not shown, at the moment the customer wonders. The industry calls it WISMO, from "where is my order". According to &lt;a href="https://www.salesforce.com/commerce/wismo/" rel="noopener noreferrer"&gt;Salesforce&lt;/a&gt; these are questions about order status and delivery that arrive in every channel, each one simple but together so numerous that they take a large share of customer service's time; as a worked example Salesforce states that a retailer shipping 5,000 orders a month can receive around 1,200 such questions.&lt;/p&gt;

&lt;p&gt;The volume comes from a gap. Between the order confirmation and the delivery the order passes through several systems, each with its own status: the store's order system says "processing", the warehouse says "picked", the carrier says "in transit". The customer sees one of them, usually the last, and it is rarely updated. The longer the gap, the more people ask. That is also why the question peaks in November and December, when delivery times grow and customers are more numerous; what that means for staffing is covered in &lt;a href="https://www.supportifier.se/en/blog/ecommerce-customer-service-christmas-preparation" rel="noopener noreferrer"&gt;the article on preparing for the Christmas season&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the customer entitled to when the parcel is late or lost?
&lt;/h2&gt;

&lt;p&gt;The company that sold the item is responsible for it until the customer has received it, and that applies even when the carrier caused the problem. According to the &lt;a href="https://www.konsumentverket.se/fragor-och-svar/2702107/det-star-att-mitt-paket-ar-levererat-men-det-ar-det-inte/" rel="noopener noreferrer"&gt;Swedish Consumer Agency&lt;/a&gt; the customer should direct their claims to the company they bought from if the delivery is late or disappears in transit, regardless of whether the shipping company caused it. The same applies according to the agency when &lt;a href="https://www.konsumentverket.se/fragor-och-svar/2959716/vem-ansvarar-nar-en-vara-gar-sonder-under-transpor/" rel="noopener noreferrer"&gt;an item breaks during transport&lt;/a&gt;: the risk passes to the customer only on receipt.&lt;/p&gt;

&lt;p&gt;For delays there is a time limit. If no delivery time was promised, the item counts as delayed after 30 days from the purchase, according to the Swedish Consumer Agency's page on &lt;a href="https://www.konsumentverket.se/konsumentratt-process/forsenad-leverans-vara/" rel="noopener noreferrer"&gt;late delivery of goods&lt;/a&gt;. If you promised a delivery time, that applies. When a delivery is late the customer can demand that the item be delivered or, if the delay matters a great deal to the customer, cancel the purchase and get their money back.&lt;/p&gt;

&lt;p&gt;Two things follow for customer service. The answer "contact the shipping company" is wrong; the customer is entitled to turn to you, and you in turn take it up with the carrier. And a delivery time promised at checkout is a promise that Swedish consumer sales law holds you to, so it should match what logistics can actually deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is the carrier's tracking link not enough?
&lt;/h2&gt;

&lt;p&gt;Because the tracking link shows where the parcel has been, not when it will arrive or what the customer should do if it does not. A &lt;a href="https://www.gartner.com/en/newsroom/press-releases/gartner-survey-finds-two-thirds-of-customers-contact-customer-se" rel="noopener noreferrer"&gt;Gartner survey&lt;/a&gt; shows the pattern: only 13 percent of customers say they receive proactive service, and 90 percent of those who did found it valuable, yet two thirds still contacted the company afterwards, most often because they needed more information or a confirmation. A notification that does not answer the next question creates a contact instead of preventing one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is an excerpt. The full article continues on the &lt;a href="https://www.supportifier.se/en/blog/where-is-my-order-customer-service" rel="noopener noreferrer"&gt;Supportifier blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>customerservice</category>
      <category>support</category>
      <category>saas</category>
    </item>
    <item>
      <title>A GEO Checklist for B2B Sites: robots.txt, llms.txt, Schema and Citability</title>
      <dc:creator>Rickard Collander</dc:creator>
      <pubDate>Fri, 09 Oct 2026 18:52:49 +0000</pubDate>
      <link>https://dev.to/rickardcollander/a-geo-checklist-for-b2b-sites-robotstxt-llmstxt-schema-and-citability-f18</link>
      <guid>https://dev.to/rickardcollander/a-geo-checklist-for-b2b-sites-robotstxt-llmstxt-schema-and-citability-f18</guid>
      <description>&lt;h1&gt;
  
  
  A GEO Checklist for B2B Sites: robots.txt, llms.txt, Schema and Citability
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What actually gets a site cited by AI search engines, and which popular advice is still just a hypothesis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; a B2B site gets cited by AI search engines when three things are true at once. AI crawlers can fetch the content and the site is indexed; the content is machine-readable (server-rendered HTML and consistent structured data); and every page gives an answer that can be lifted out verbatim. There is no requirement for special "AI markup", a particular text length, or an &lt;code&gt;llms.txt&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Generative Engine Optimization (GEO) isn't a new profession or a new list of rules. The foundation is the same as ordinary search. But many sites with solid SEO still miss a few of the points below, usually without anyone noticing. A misconfigured &lt;code&gt;robots.txt&lt;/code&gt;, or a company name spelled three different ways, can be enough for a model to pick a competitor as its source.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirement, method or hypothesis?
&lt;/h3&gt;

&lt;p&gt;GEO advice mixes three different kinds of claims. Keep them apart:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Checks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Documented requirement&lt;/td&gt;
&lt;td&gt;The search engines describe it in their own docs. Google says AI Overviews and AI Mode use the regular index, need no special AI optimisation, and require pages to be indexable and snippet-eligible.&lt;/td&gt;
&lt;td&gt;1, 2, 5 (for rich results), 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Working method&lt;/td&gt;
&lt;td&gt;Not required, but formats that in practice recur in what gets cited, overlapping with Google's advice on useful content&lt;/td&gt;
&lt;td&gt;6, 7, 8, 9, 10, 12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hypothesis&lt;/td&gt;
&lt;td&gt;Conventions AI companies haven't confirmed they use. Low cost, unclear effect.&lt;/td&gt;
&lt;td&gt;3, 4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Crawlability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Explicit AI crawler rules in robots.txt.&lt;/strong&gt; Training crawlers (e.g. GPTBot, Google-Extended) collect data for future models; search/fetch crawlers (OAI-SearchBot, ChatGPT-User, PerplexityBot) retrieve pages that can be cited right now; Bingbot feeds the Bing index that Copilot builds on. If you want to appear in AI answers, the search crawlers must get in. ClaudeBot handles crawling for Claude. Also check your firewall and CDN: a WAF rule returning 403 to an unfamiliar user agent never shows up in an SEO report. Look for 403/429 responses in server logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Be in Google's &lt;em&gt;and&lt;/em&gt; Bing's index, and allow snippets.&lt;/strong&gt; Google's AI features need an indexed page that's eligible for a snippet and not restricted by &lt;code&gt;nosnippet&lt;/code&gt; or a low &lt;code&gt;max-snippet&lt;/code&gt;. Many teams have never opened Bing Webmaster Tools, even though ChatGPT search has leaned on Bing's index and Copilot is built on it. Verify the domain, submit the sitemap and compare &lt;code&gt;site:&lt;/code&gt; counts.&lt;/p&gt;

&lt;h3&gt;
  
  
  llms.txt (hypothesis)
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;llms.txt&lt;/code&gt; is a proposed standard (&lt;a href="https://llmstxt.org" rel="noopener noreferrer"&gt;llmstxt.org&lt;/a&gt;) for a root-level Markdown file describing a site for language models. Be clear about what's known: Google has said it doesn't use it as a search signal, and OpenAI, Anthropic and Perplexity haven't documented that their crawlers read it. The case for it is low cost when generated automatically, some tools and agents fetch it, and writing it forces you to define what the site is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Structure it correctly:&lt;/strong&gt; an H1 with the site name, a blockquote summary, optional context paragraphs, H2 sections with &lt;code&gt;- [Title](URL): description&lt;/code&gt; lists, and an &lt;code&gt;Optional&lt;/code&gt; section. A curated short list beats hundreds of URLs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Generate it automatically.&lt;/strong&gt; &lt;code&gt;llms-full.txt&lt;/code&gt; holds the full content of linked pages as Markdown. Hand-maintained files go stale, so build both into your publishing pipeline: when an article is published, it appears in the next build.&lt;/p&gt;

&lt;h3&gt;
  
  
  Structured data that builds entities
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;5. Organization, Person and Article/BlogPosting as JSON-LD&lt;/strong&gt; in &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, with &lt;code&gt;datePublished&lt;/code&gt; and &lt;code&gt;dateModified&lt;/code&gt; matching the visible dates. Organization gets &lt;code&gt;sameAs&lt;/code&gt; links to profiles; Person gets &lt;code&gt;jobTitle&lt;/code&gt;, &lt;code&gt;worksFor&lt;/code&gt; and a LinkedIn &lt;code&gt;sameAs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. FAQPage, BreadcrumbList and stable &lt;code&gt;@id&lt;/code&gt;s.&lt;/strong&gt; Give the organisation a fixed id like &lt;code&gt;https://www.example.com/#organization&lt;/code&gt; and each author their own, then reference the same ids from &lt;code&gt;publisher&lt;/code&gt;, &lt;code&gt;author&lt;/code&gt; and &lt;code&gt;worksFor&lt;/code&gt; on every page. One entity each, not twenty partial copies. Only mark up FAQs that are visible on the page.&lt;/p&gt;

&lt;h3&gt;
  
  
  Citable content (methods)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;7. A short answer first&lt;/strong&gt; — two or three sentences under the H1 that hold up out of context — and one clear definition per page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Question headings, Q&amp;amp;A sections, tables and sourced figures.&lt;/strong&gt; If a figure has no source, label it as experience or as a clearly marked example rather than guessing. Producing this consistently at scale is a content-operations problem; Successifier covers it in its guide to &lt;a href="https://www.successifier.se/blog/ai-driven-content-marknadsforing-b2b-strategi-som-skalar" rel="noopener noreferrer"&gt;AI-driven content marketing for B2B&lt;/a&gt; (in Swedish).&lt;/p&gt;

&lt;h3&gt;
  
  
  Entity consistency and freshness
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;9. Same company everywhere.&lt;/strong&gt; Compare name, one-line description, location and category across your About page, LinkedIn, directories and business profiles, and fix every mismatch. Add real author pages; they're also the home of your Person schema.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Freshness.&lt;/strong&gt; Show honest update dates, run a quarterly review of your key pages, set sitemap &lt;code&gt;lastmod&lt;/code&gt; from the same field as &lt;code&gt;dateModified&lt;/code&gt; (not build time), and enable &lt;a href="https://www.indexnow.org" rel="noopener noreferrer"&gt;IndexNow&lt;/a&gt;. If every deploy bumps every &lt;code&gt;lastmod&lt;/code&gt;, the signal becomes worthless.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technical foundation and measurement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;11.&lt;/strong&gt; Self-referencing canonicals, &lt;code&gt;hreflang&lt;/code&gt; for language versions, green Core Web Vitals, descriptive alt text and, critically, &lt;strong&gt;server-rendered HTML&lt;/strong&gt;. Content that only exists after JavaScript runs is invisible to several AI crawlers. Test with &lt;code&gt;curl&lt;/code&gt;. Most of this overlaps with classic technical SEO, covered in &lt;a href="https://www.successifier.se/blog/seo-konsult-for-b2b-foretag-sa-dominerar-du-google-med-ratt-strategi" rel="noopener noreferrer"&gt;SEO for B2B companies&lt;/a&gt; (in Swedish).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Measure per engine.&lt;/strong&gt; Run a fixed list of buyer prompts monthly in ChatGPT, Perplexity, Gemini and Copilot; segment GA4 referrals from AI domains; and track mention rate over time with a dedicated tool. Prompt testing is described in &lt;a href="https://www.successifier.se/blog/ai-synlighet-i-marknadsforing-2026-allt-du-behover-veta" rel="noopener noreferrer"&gt;AI visibility in marketing&lt;/a&gt; (in Swedish).&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to start
&lt;/h3&gt;

&lt;p&gt;Checks 1, 2 and 11 are the documented requirements, they block everything else, and they can be verified in an afternoon. Then do structured data in a sprint and build the content format into your editorial routine. Add &lt;code&gt;llms.txt&lt;/code&gt; if it can be generated automatically, but don't let it get in the way of the rest.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.successifier.se/blog/geo-checklista-for-b2b-sajter-2026-llms-txt-schema-och-citerbarhet" rel="noopener noreferrer"&gt;https://www.successifier.se/blog/geo-checklista-for-b2b-sajter-2026-llms-txt-schema-och-citerbarhet&lt;/a&gt; (in Swedish)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Chatbots That Don't Guess: Grounding AI in Customer Service</title>
      <dc:creator>Rickard Collander</dc:creator>
      <pubDate>Fri, 09 Oct 2026 18:52:14 +0000</pubDate>
      <link>https://dev.to/rickardcollander/chatbots-that-dont-guess-grounding-ai-in-customer-service-3345</link>
      <guid>https://dev.to/rickardcollander/chatbots-that-dont-guess-grounding-ai-in-customer-service-3345</guid>
      <description>&lt;h1&gt;
  
  
  Chatbots That Don't Guess: Grounding AI in Customer Service
&lt;/h1&gt;

&lt;h2&gt;
  
  
  A support bot should answer only from reviewed content, cite its source, and say so when it doesn't know. Here's how to design and test for that.
&lt;/h2&gt;

&lt;p&gt;If you build or buy a chatbot for customer service, the single most important design decision is not the model. It's &lt;strong&gt;where the bot is allowed to get its answers&lt;/strong&gt;. A bot that answers freely can sound confident and still be wrong, and the company, not the vendor, has to stand behind every answer it gives a customer.&lt;/p&gt;

&lt;h3&gt;
  
  
  What "grounded" means
&lt;/h3&gt;

&lt;p&gt;A grounded chatbot may only answer with content from a defined source, usually the company's knowledge base, and must be able to show where each answer came from. In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It answers only from published articles.&lt;/strong&gt; Asked about the return period, it retrieves your returns article and phrases the answer from it. If the knowledge base says nothing about returns, it must not invent a period.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cites its source.&lt;/strong&gt; The customer can see which article the answer is built on and click through.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It admits missing material.&lt;/strong&gt; "I don't have an answer to that, let me connect you" is a correct answer. A guess is not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The usual technique is retrieval-augmented generation (RAG): retrieve relevant passages first, then let the model write an answer from exactly those passages. A general-purpose model without that link answers everything, whether or not it has your terms in front of it. That's why a reviewed knowledge base is a prerequisite, not an option. It also needs to cover exceptions: if delivery terms differ by country, the bot should ask which country applies rather than pick one.&lt;/p&gt;

&lt;h3&gt;
  
  
  General questions vs. personal cases
&lt;/h3&gt;

&lt;p&gt;An article is enough for general questions. A personal case needs data about that specific customer.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Customer asks&lt;/th&gt;
&lt;th&gt;Bot needs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How do I make a return?&lt;/td&gt;
&lt;td&gt;A current, approved returns article&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where is my refund?&lt;/td&gt;
&lt;td&gt;Verified identity and live payment data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does this feature work on my plan?&lt;/td&gt;
&lt;td&gt;The product rule and possibly account data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can you make an exception?&lt;/td&gt;
&lt;td&gt;A clear limit and a human who decides&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If a required piece of data can't be fetched, the bot should say so and show the next step. Keep three levels apart and decide per flow which one applies: &lt;strong&gt;a draft an agent reviews&lt;/strong&gt;, &lt;strong&gt;an automatic answer sent straight to the customer&lt;/strong&gt;, and &lt;strong&gt;an executed action&lt;/strong&gt; such as a refund. Each level needs more data and tighter permissions. Supportifier's &lt;a href="https://www.supportifier.se/en/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt; page shows the kind of system connections that personal answers depend on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why models hallucinate, and why RAG alone isn't the fix
&lt;/h3&gt;

&lt;p&gt;A hallucination is an answer that sounds credible but has no support in any material. OpenAI researchers described in 2025 how training and evaluation reward guessing over admitting uncertainty, a bit like a multiple-choice exam where a blank never scores but a guess sometimes does.&lt;/p&gt;

&lt;p&gt;Retrieval reduces the problem but doesn't remove it. Stanford RegLab's 2024 evaluation found that commercial legal research tools built on retrieval still hallucinated on a meaningful share of test questions. The takeaway: retrieval is necessary, but the bot must also be constrained to what was retrieved and allowed to say the answer is missing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The company owns what the bot says
&lt;/h3&gt;

&lt;p&gt;In &lt;em&gt;Moffatt v. Air Canada&lt;/em&gt; (2024), an airline's chatbot told a traveller that a bereavement discount could be claimed retroactively; another page on the same site said the opposite. The airline argued the chatbot was a separate entity. The tribunal disagreed: the bot is part of the website, and the company is responsible for its statements. In e-commerce, the same mechanism produces invented discount codes, wrong return periods or delivery promises made without checking any system.&lt;/p&gt;

&lt;p&gt;There's also a transparency requirement: under Article 50 of the EU AI Act, people must be told they're interacting with an AI system, at the latest at first contact, from 2 August 2026. Supportifier covers the data side in &lt;a href="https://www.supportifier.se/en/blog/gdpr-ai-customer-service" rel="noopener noreferrer"&gt;GDPR and AI in customer service&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  A ten-question test for any vendor
&lt;/h3&gt;

&lt;p&gt;Don't ask whether a bot "uses AI". Ask what it's allowed to answer and what happens when the answer doesn't exist. Then test it with your own material:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5 questions&lt;/strong&gt; you have clear articles for → the bot should answer and cite them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 questions&lt;/strong&gt; you have no article for → it should say so or hand over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 questions&lt;/strong&gt; where your own sources contradict each other → it should surface the conflict.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also ask: Can we see the list of questions it couldn't answer? Who can publish content it uses, and is there review? How is the customer identified before personal data is shown? Can we block topics like compensation, pricing exceptions and legal assessments? How are errors measured after launch?&lt;/p&gt;

&lt;h3&gt;
  
  
  Design the handover
&lt;/h3&gt;

&lt;p&gt;Hand over automatically when material is missing, always when the customer asks, and as a rule when money, contracts or complaints are involved. A good handover means the customer doesn't repeat themselves (the whole conversation follows into the ticket), the agent sees which article the bot used so the article can be fixed, and the contact route is visible, including outside staffed hours.&lt;/p&gt;

&lt;p&gt;The handover is simplest when bot and humans work from the same reviewed content. The same principle applies when AI suggests replies an agent reviews before sending; see &lt;a href="https://www.supportifier.se/en/blog/ai-drafts-human-review-customer-service" rel="noopener noreferrer"&gt;why reviewed AI drafts beat full automation at the start&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checklist
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Every top question has a published article with a named owner.&lt;/li&gt;
&lt;li&gt;Run the ten-question test on your current bot or a vendor demo.&lt;/li&gt;
&lt;li&gt;Write a block list of topics the bot never handles alone.&lt;/li&gt;
&lt;li&gt;Document the handover rule: when, to whom, with what context.&lt;/li&gt;
&lt;li&gt;Review unanswered questions weekly and write the missing articles.&lt;/li&gt;
&lt;li&gt;Track share of answers with a source, share of handovers, and repeat contacts within a week.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.supportifier.se/en/blog/grounded-ai-chatbot-customer-service" rel="noopener noreferrer"&gt;https://www.supportifier.se/en/blog/grounded-ai-chatbot-customer-service&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>chatbots</category>
      <category>customerservice</category>
    </item>
  </channel>
</rss>
