<?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: Samuel Kyeremeh</title>
    <description>The latest articles on DEV Community by Samuel Kyeremeh (@kyeremehs).</description>
    <link>https://dev.to/kyeremehs</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3822610%2F79dd1103-5a09-4fc2-8bf0-f73f497dc2cf.jpeg</url>
      <title>DEV Community: Samuel Kyeremeh</title>
      <link>https://dev.to/kyeremehs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kyeremehs"/>
    <language>en</language>
    <item>
      <title>How AI Agents Actually Connect to Real Backends (Agents, Tools, Channels Explained)</title>
      <dc:creator>Samuel Kyeremeh</dc:creator>
      <pubDate>Tue, 17 Mar 2026 16:16:01 +0000</pubDate>
      <link>https://dev.to/kyeremehs/how-ai-agents-actually-connect-to-real-backends-agents-tools-channels-explained-3aj3</link>
      <guid>https://dev.to/kyeremehs/how-ai-agents-actually-connect-to-real-backends-agents-tools-channels-explained-3aj3</guid>
      <description>&lt;p&gt;In Part 1, I talked about why building conversational apps is still messy.&lt;/p&gt;

&lt;p&gt;Now let’s get into the part that actually matters:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do these systems really work under the hood?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If a user sends:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I want 2 fried rice”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How does that message turn into a real backend action?&lt;/p&gt;

&lt;p&gt;Not just a response — but something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creating an order&lt;/li&gt;
&lt;li&gt;updating a database&lt;/li&gt;
&lt;li&gt;returning a real result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To understand that, we need to look at the core building blocks behind modern conversational systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Idea
&lt;/h2&gt;

&lt;p&gt;At a high level, the architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User (Telegram / Slack / WhatsApp)
            ↓
         Agent
            ↓
          Tool
            ↓
        Backend API
            ↓
         Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each piece has a very specific role.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Agent — The Brain
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;agent&lt;/strong&gt; is the AI layer that understands user messages and decides what to do.&lt;/p&gt;

&lt;p&gt;It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reads the user’s message&lt;/li&gt;
&lt;li&gt;interprets intent&lt;/li&gt;
&lt;li&gt;decides whether to respond directly or call a tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can think of it as the &lt;strong&gt;decision-maker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But here’s the important part:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The agent should &lt;strong&gt;not contain your business logic&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It shouldn’t calculate totals, write database queries, or enforce rules.&lt;/p&gt;

&lt;p&gt;That belongs in your backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Tool — The Bridge to Your Backend
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;tool&lt;/strong&gt; is just a function your agent can call.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;get_menu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_order&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;track_order&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of the agent guessing or hallucinating results, it calls a tool like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create_order({
  items: [...]
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That tool then runs real backend logic.&lt;/p&gt;

&lt;p&gt;This is the most important concept:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tools are the &lt;strong&gt;only safe way&lt;/strong&gt; for agents to interact with real systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validate input&lt;/li&gt;
&lt;li&gt;execute real logic&lt;/li&gt;
&lt;li&gt;return structured results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No guessing. No hallucination.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Backend — The Source of Truth
&lt;/h2&gt;

&lt;p&gt;Your backend still does everything it normally does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;database queries&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;business rules&lt;/li&gt;
&lt;li&gt;calculations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing changes here.&lt;/p&gt;

&lt;p&gt;The agent doesn’t replace your backend.&lt;/p&gt;

&lt;p&gt;It just &lt;strong&gt;sits on top of it&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Channels — Where Users Come From
&lt;/h2&gt;

&lt;p&gt;Users don’t talk to your backend directly.&lt;/p&gt;

&lt;p&gt;They come from platforms like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these platforms has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;different APIs&lt;/li&gt;
&lt;li&gt;different message formats&lt;/li&gt;
&lt;li&gt;different authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where things usually get messy.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. The Missing Piece: Routing
&lt;/h2&gt;

&lt;p&gt;So how does everything connect?&lt;/p&gt;

&lt;p&gt;That’s where the &lt;strong&gt;webhook layer&lt;/strong&gt; comes in.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User → Channel → Webhook → Agent → Tool → Backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a user sends a message:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The channel sends it to your webhook&lt;/li&gt;
&lt;li&gt;The agent processes it&lt;/li&gt;
&lt;li&gt;The agent decides to call a tool&lt;/li&gt;
&lt;li&gt;The tool runs backend logic&lt;/li&gt;
&lt;li&gt;A response is sent back to the user&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Where Konsier Fits In
&lt;/h2&gt;

&lt;p&gt;Instead of building all of this yourself, Konsier provides a structured way to handle it.&lt;/p&gt;

&lt;p&gt;It gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a way to define &lt;strong&gt;agents&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a way to define &lt;strong&gt;tools&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;a unified &lt;strong&gt;webhook layer&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;built-in support for &lt;strong&gt;multiple channels&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of wiring everything manually, you focus on:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;defining what your system can do&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and Konsier handles the rest.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Model Works
&lt;/h2&gt;

&lt;p&gt;This approach solves a major problem:&lt;/p&gt;

&lt;p&gt;It separates &lt;strong&gt;AI reasoning&lt;/strong&gt; from &lt;strong&gt;business logic&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent decides &lt;em&gt;what to do&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The backend decides &lt;em&gt;how it’s done&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That separation makes the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more reliable&lt;/li&gt;
&lt;li&gt;easier to debug&lt;/li&gt;
&lt;li&gt;easier to scale&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  A Simple Mental Model
&lt;/h2&gt;

&lt;p&gt;If you remember nothing else, remember this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent = decision maker&lt;/li&gt;
&lt;li&gt;Tool = controlled execution&lt;/li&gt;
&lt;li&gt;Backend = source of truth&lt;/li&gt;
&lt;li&gt;Channel = entry point&lt;/li&gt;
&lt;li&gt;Webhook = connection layer&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;Now that the architecture is clear, the next question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do you actually plug this into an existing backend?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In &lt;strong&gt;Part 3&lt;/strong&gt;, I’ll walk through how I integrated this model into an existing Express + PostgreSQL API using Konsier.&lt;/p&gt;

&lt;p&gt;We’ll go from theory to actual code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;setting up the SDK&lt;/li&gt;
&lt;li&gt;defining tools&lt;/li&gt;
&lt;li&gt;mounting the webhook&lt;/li&gt;
&lt;li&gt;syncing configuration&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you're building conversational systems, understanding this pattern will save you a lot of time.&lt;/p&gt;

&lt;p&gt;In the next post, we’ll make it real.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why Building AI Chat Apps Is Still Hard in 2026</title>
      <dc:creator>Samuel Kyeremeh</dc:creator>
      <pubDate>Fri, 13 Mar 2026 17:58:02 +0000</pubDate>
      <link>https://dev.to/kyeremehs/why-building-ai-chat-apps-is-still-hard-in-2026-2918</link>
      <guid>https://dev.to/kyeremehs/why-building-ai-chat-apps-is-still-hard-in-2026-2918</guid>
      <description>&lt;blockquote&gt;
&lt;h1&gt;
  
  
  Why Building AI Chat Apps Is Still Hard in 2026
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;A few months ago I tried building what sounded like a simple feature.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Let users place orders through chat.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nothing fancy. Just a conversational interface that could talk to a backend and perform actions.&lt;/p&gt;

&lt;p&gt;In my head, it felt like something that could take a weekend.&lt;/p&gt;

&lt;p&gt;In reality, it quickly turned into a pile of moving parts.&lt;/p&gt;

&lt;p&gt;LLM APIs.&lt;br&gt;
Prompt tuning.&lt;br&gt;
Conversation state.&lt;br&gt;
API integrations.&lt;br&gt;
Safety checks so the AI doesn’t hallucinate things like a &lt;strong&gt;100% discount&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What looked like a small feature started feeling like I was assembling a mini distributed system.&lt;/p&gt;

&lt;p&gt;And that’s when I realized something:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversational interfaces look simple, but building them is still messy.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Illusion of a “Simple Chat Interface”
&lt;/h2&gt;

&lt;p&gt;From the user’s perspective, chat feels incredibly simple.&lt;/p&gt;

&lt;p&gt;They send a message.&lt;br&gt;
The system replies.&lt;br&gt;
Something gets done.&lt;/p&gt;

&lt;p&gt;But behind that simple interaction, developers usually end up stitching together several different systems.&lt;/p&gt;

&lt;p&gt;A typical conversational stack often includes things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LLM APIs&lt;/strong&gt;&lt;br&gt;
constantly switching models, providers, and pricing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt engineering&lt;/strong&gt;&lt;br&gt;
the strange craft of convincing a machine to behave consistently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API integrations&lt;/strong&gt;&lt;br&gt;
teaching the AI how to actually perform useful actions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conversation state&lt;/strong&gt;&lt;br&gt;
making sure the bot remembers context between messages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Business logic&lt;/strong&gt;&lt;br&gt;
preventing the AI from inventing features or hallucinating results.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these pieces is manageable on its own.&lt;/p&gt;

&lt;p&gt;But when you combine them, the system becomes surprisingly fragile.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem: Too Many Responsibilities
&lt;/h2&gt;

&lt;p&gt;When building conversational systems today, developers often end up responsible for far more than just backend logic.&lt;/p&gt;

&lt;p&gt;You suddenly find yourself building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a conversation orchestration layer&lt;/li&gt;
&lt;li&gt;a tool execution system&lt;/li&gt;
&lt;li&gt;integrations with messaging platforms&lt;/li&gt;
&lt;li&gt;state management for conversations&lt;/li&gt;
&lt;li&gt;guardrails around AI behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then there’s &lt;strong&gt;distribution&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you want your assistant to work across platforms like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you usually have to build &lt;strong&gt;separate integrations for each one&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Different webhooks.&lt;br&gt;
Different payload formats.&lt;br&gt;
Different authentication models.&lt;/p&gt;

&lt;p&gt;The same logic ends up being repeated again and again.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Developers Actually Want
&lt;/h2&gt;

&lt;p&gt;Most developers don’t want to reinvent messaging infrastructure.&lt;/p&gt;

&lt;p&gt;They just want something simpler:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Define &lt;strong&gt;what the AI can do&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Connect it to &lt;strong&gt;real backend actions&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Expose it across &lt;strong&gt;multiple channels&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;without rewriting everything for each platform.&lt;/p&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;Focus on the &lt;strong&gt;business logic&lt;/strong&gt;, not the plumbing.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Different Approach
&lt;/h2&gt;

&lt;p&gt;Recently, while experimenting with conversational interfaces, I came across an SDK called &lt;strong&gt;Konsier&lt;/strong&gt; that tries to simplify this problem.&lt;/p&gt;

&lt;p&gt;Instead of building separate bots or integrations for every messaging platform, the idea is to define your agents and capabilities once in code, while the SDK handles messaging channels and conversation infrastructure.&lt;/p&gt;

&lt;p&gt;Your backend stays the &lt;strong&gt;source of truth&lt;/strong&gt;, while the conversational layer becomes a thin interface on top.&lt;/p&gt;

&lt;p&gt;The mental model was interesting enough that I decided to explore it further.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Series Will Cover
&lt;/h2&gt;

&lt;p&gt;Over the next few posts, I’ll walk through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the architecture behind conversational agents&lt;/li&gt;
&lt;li&gt;how agents call backend tools safely&lt;/li&gt;
&lt;li&gt;how messaging platforms connect to the system&lt;/li&gt;
&lt;li&gt;how to integrate this into an existing Express backend&lt;/li&gt;
&lt;li&gt;real bugs and production issues I ran into&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn’t to promote a tool.&lt;/p&gt;

&lt;p&gt;It’s to explore &lt;strong&gt;a practical pattern for building conversational backends&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next in the Series
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;Part 2&lt;/strong&gt;, I’ll break down the core primitives behind this approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;agents&lt;/li&gt;
&lt;li&gt;tools&lt;/li&gt;
&lt;li&gt;channels&lt;/li&gt;
&lt;li&gt;webhooks&lt;/li&gt;
&lt;li&gt;configuration sync&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and how these pieces fit together to make conversational systems easier to build.&lt;/p&gt;




&lt;p&gt;If you’re building chat interfaces in 2026, follow this series.&lt;/p&gt;

&lt;p&gt;Next, we’ll dive into &lt;strong&gt;how agents call backend tools reliably without turning your backend into chaos&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Series
&lt;/h3&gt;

&lt;p&gt;Part 1 — Why conversational apps are still hard&lt;br&gt;
Part 2 — The architecture behind agents, tools, and channels&lt;br&gt;
Part 3 — Integrating Konsier into an existing Express backend&lt;br&gt;
Part 4 — Designing tools for real business logic&lt;br&gt;
Part 5 — Production bugs and lessons learned&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>backend</category>
      <category>node</category>
    </item>
  </channel>
</rss>
