<?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: Jackie Cheng</title>
    <description>The latest articles on DEV Community by Jackie Cheng (@jiaqicheng1998).</description>
    <link>https://dev.to/jiaqicheng1998</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%2F3583918%2Fc6db9940-d3ac-4d02-8030-7e2f0c97812d.gif</url>
      <title>DEV Community: Jackie Cheng</title>
      <link>https://dev.to/jiaqicheng1998</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jiaqicheng1998"/>
    <language>en</language>
    <item>
      <title>Building Agentic Workflow: Auto Banking Customer Service with MindsDB</title>
      <dc:creator>Jackie Cheng</dc:creator>
      <pubDate>Sun, 26 Oct 2025 21:50:03 +0000</pubDate>
      <link>https://dev.to/jiaqicheng1998/building-agentic-workflow-auto-banking-customer-service-with-mindsdb-484p</link>
      <guid>https://dev.to/jiaqicheng1998/building-agentic-workflow-auto-banking-customer-service-with-mindsdb-484p</guid>
      <description>&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;When a customer calls a bank, a lot happens behind the scenes: an agent listens, takes notes, types into Salesforce, and classifies the issue. Then the business owner will go through the unresolved issues in Salesforce and manually create a Jira story for further tracking.&lt;/p&gt;

&lt;p&gt;It’s a mess of tabs, forms, and human fatigue. For &lt;a href="https://github.com/mindsdb/mindsdb/tree/main/mindsdb%20hacktoberfest" rel="noopener noreferrer"&gt;&lt;strong&gt;Hacktoberfest&lt;/strong&gt;&lt;/a&gt; 2025, our team decided to automate this entire workflow by building &lt;a href="https://github.com/jiaqicheng1998/mindsdb/tree/main/mindsdb%20hacktoberfest/use-cases/auto-banking-customer-service" rel="noopener noreferrer"&gt;&lt;strong&gt;AutoBankingCustomerService&lt;/strong&gt;&lt;/a&gt; with &lt;a href="https://mindsdb.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;MindsDB&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our goal was to turn hours of manual case handling into an automated pipeline that could:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Summarize&lt;/strong&gt; each customer call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify&lt;/strong&gt; whether it’s resolved or unresolved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalate&lt;/strong&gt; unresolved issues directly into Jira, complete with recommendations for next steps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of this needed to happen automatically, using enterprise systems that already exist (Salesforce, Jira, Confluence, PostgreSQL).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxy402yeixcr3kuphpae.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxy402yeixcr3kuphpae.jpg" alt="old workflow" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo76ws0k518txpa9ceytv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo76ws0k518txpa9ceytv.jpg" alt="new workflow with mindsdb" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MindsDB?
&lt;/h2&gt;

&lt;p&gt;Because it lets our Python backend focus on logic instead of plumbing.&lt;/p&gt;

&lt;p&gt;Instead of hard-coding every integration or retraining pipeline, we used MindsDB to connect multiple enterprise data sources and build a lightweight &lt;strong&gt;RAG-powered knowledge base&lt;/strong&gt; in minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MindsDB gave us:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified interface:&lt;/strong&gt; query and manage both AI models and data with familiar SQL syntax.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plug-and-play connectors:&lt;/strong&gt; Salesforce, Jira, Confluence, PostgreSQL, all quickly accessible from one orchestration layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless RAG setup:&lt;/strong&gt; ingest structured + unstructured content and use it as context for every agent call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise deployment options:&lt;/strong&gt; open-source server deployable locally, in Docker, or on cloud, with sensitive information hidden by default in system metadata."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid iteration:&lt;/strong&gt; prototype → deploy → refine, all inside our existing Python server without adding new infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, MindsDB handled the heavy lifting of data access and retrieval augmentation, while our backend handled the business logic and workflow orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdnhpzbvqjrxlfo1ert3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdnhpzbvqjrxlfo1ert3.jpg" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our system automates customer support case management from ingestion to escalation using a Python backend orchestrated by MindsDB agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Call Ingestion&lt;/strong&gt;&lt;br&gt;
Customer call transcripts are captured from Gong's conversation intelligence platform. In production, MindsDB would connect directly to Gong's API. For development, we mock this integration using PostgreSQL to simulate the call transcript data structure provided by Gong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. First MindsDB Agent: Summary &amp;amp; Classification&lt;/strong&gt;&lt;br&gt;
Connected to PostgreSQL, this agent performs two tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summarizes&lt;/strong&gt; customer conversations into structured summaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classifies&lt;/strong&gt; cases as Resolved or Unresolved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our Python backend retrieves the agent's results and writes them to Salesforce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Second MindsDB Agent: RAG-Powered Recommendations&lt;/strong&gt;&lt;br&gt;
For Unresolved cases, a second agent activates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries a Confluence knowledge base via RAG for relevant context&lt;/li&gt;
&lt;li&gt;Generates actionable ticket recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our Python backend retrieves these recommendations and creates Jira tickets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Integration Layer&lt;/strong&gt;&lt;br&gt;
MindsDB provides the AI intelligence layer (connecting to PostgreSQL for data and Confluence for RAG), while our Python backend orchestrates all data writes to Salesforce and Jira.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Fully automated workflow from transcript → analysis → escalation → documentation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Step-by-Step Walkthrough
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1) Connect Data Sources to Break Down Data Silos&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of MindsDB's core strengths is connecting diverse enterprise data sources into a single, unified interface. Instead of navigating multiple platforms and APIs, all business-critical data becomes accessible through one SQL layer. That eliminates the data silos that typically fragment enterprise workflows.&lt;/p&gt;

&lt;p&gt;For this project, we connected four different data sources, each representing a distinct data type:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; – Structured call transcripts (tabular data)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stores raw customer call records in a traditional relational format&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Note: In production, MindsDB supports direct integration with Gong's conversation intelligence platform. We used PostgreSQL as a substitute.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Salesforce &amp;amp; Jira&lt;/strong&gt; – Semi-structured business records (JSON/API data)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Systems of record for customer cases and issue tracking&lt;/li&gt;
&lt;li&gt;Queryable sources for metrics and analytics. Enables natural-language queries across CRM and ticketing data within the same interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Confluence&lt;/strong&gt; – Unstructured knowledge documents (Markdown/HTML)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Houses our Customer Complaints Management Policy and Complaint Handling Framework&lt;/li&gt;
&lt;li&gt;Serves as the RAG knowledge base for intelligent recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Power of Unified Access:&lt;/strong&gt;&lt;br&gt;
With MindsDB, all four sources in this vertical line of business (tabular databases, API-driven platforms, and document repositories) are accessible through the same SQL interface. Your team can query call transcripts, check Salesforce metrics, search Confluence docs, and review Jira tickets without switching contexts or learning multiple query languages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example Connection:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;banking_postgres_db&lt;/span&gt;
&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ENGINE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'postgres'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;PARAMETERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"host.docker.internal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"port"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"database"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"demo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"postgresql"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"psqlpasswd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"demo_data"&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Validation:&lt;/strong&gt;&lt;br&gt;
Confirm each connection with a simple SELECT query (e.g., &lt;code&gt;SELECT * FROM banking_postgres_db.conversations_summary LIMIT 50;&lt;/code&gt;) to verify schemas and data availability before building downstream agents and models.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;2) Build the Knowledge Base (RAG): Zero-Infrastructure Context Retrieval&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We create a Knowledge Base directly within MindsDB by ingesting targeted Confluence pages. This approach eliminates the entire RAG infrastructure stack that would normally require weeks of engineering effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What MindsDB's Knowledge Base Replaces:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional RAG implementations require orchestrating multiple components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vector database deployment&lt;/strong&gt; (Pinecone, Weaviate, Chroma, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding pipeline&lt;/strong&gt; (API calls, batching, rate limiting, error handling)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom retrieval logic&lt;/strong&gt; (similarity search, reranking, prompt construction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data sources infrastructure&lt;/strong&gt; (crawlers, change detection, incremental updates)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access control &amp;amp; monitoring&lt;/strong&gt; (security layers, usage tracking, debugging tools)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With MindsDB, all of this collapses into a single SQL workflow. Define the Knowledge Base once, and every agent can automatically leverage it for context-aware responses without separate infrastructure or custom code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating the Knowledge Base:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;KNOWLEDGE_BASE&lt;/span&gt; &lt;span class="n"&gt;my_confluence_kb&lt;/span&gt;
&lt;span class="k"&gt;USING&lt;/span&gt;
    &lt;span class="n"&gt;embedding_model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;"model_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"text-embedding-3-small"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;""&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;content_columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'body_storage_value'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;id_column&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;DESCRIBE&lt;/span&gt; &lt;span class="n"&gt;KNOWLEDGE_BASE&lt;/span&gt; &lt;span class="n"&gt;my_confluence_kb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ingesting Confluence Content:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;my_confluence_kb&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;body_storage_value&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;my_confluence&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pages&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'360449'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'589825'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;total_rows&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;my_confluence_kb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What Happens Behind the Scenes:&lt;/strong&gt;&lt;br&gt;
MindsDB automatically handles document chunking, embedding generation, vector indexing, and retrieval optimization. &lt;/p&gt;

&lt;p&gt;To update content, simply re-run the INSERT statement—either manually, via scheduled SQL jobs within MindsDB, or triggered from your Python backend on a cron schedule. Once created, this Knowledge Base becomes a shared resource. Any agent in your workflow can reference it without duplicating retrieval logic or managing separate context windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3) Define AI Agents:&lt;/strong&gt; (Summary/Classification/Recommendation)
&lt;/h3&gt;

&lt;p&gt;We deploy two specialized agents that handle the complete analytical workflow, from raw transcript analysis to context-aware recommendations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary &amp;amp; Classification Agent&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Input:&lt;/strong&gt; Raw call transcript from PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task:&lt;/strong&gt; Generate a concise summary + classify as &lt;code&gt;Resolved&lt;/code&gt; or &lt;code&gt;Unresolved&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; Structured results written to Salesforce via our Python backend
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;AGENT&lt;/span&gt; &lt;span class="n"&gt;classification_agent&lt;/span&gt;
&lt;span class="k"&gt;USING&lt;/span&gt;
    &lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;"tables"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;"banking_postgres_db.conversations_summary"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;prompt_template&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'You are an analyst specializing in banking customer support interactions. Review the conversation transcript and produce:
1. A concise 2–3 sentence summary of the interaction.
2. A determination of the issue resolution status (RESOLVED or UNRESOLVED).
RESOLUTION CRITERIA:
UNRESOLVED (choose UNRESOLVED if ANY of the following are true):
- The customer expresses dissatisfaction, frustration, or complaints.
- The agent only provides reassurance, escalation, or requests for follow-up without delivering a solution.
- The customer questions or challenges bank policies, procedures, or communication.
- The conversation ends without a clear solution acknowledged by the customer.
- The customer side of the conversation is missing or incomplete.
- The agent proposes a solution, but the customer does not explicitly confirm acceptance.
- The conversation is cut off, incomplete, or ends abruptly.
RESOLVED:
- Only label as RESOLVED if the customer clearly acknowledges satisfaction.
- Acceptable confirmation cues include explicit statements such as:
  "thank you", "that worked", "this resolves my issue", "problem solved", "perfect", or similar positive closure.
OUTPUT FORMAT (strictly follow this format):
Summary: &amp;lt;your 2–3 sentence summary&amp;gt;
Status: &amp;lt;RESOLVED or UNRESOLVED&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;RAG-Powered Recommendation Agent&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trigger:&lt;/strong&gt; Activated only for &lt;code&gt;Unresolved&lt;/code&gt; cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task:&lt;/strong&gt; Query the Confluence Knowledge Base for relevant policies, then generate actionable Jira ticket content (title, description, acceptance criteria)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output:&lt;/strong&gt; Structured recommendations written to Jira via our Python backend
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;AGENT&lt;/span&gt; &lt;span class="n"&gt;recommendation_agent&lt;/span&gt;
&lt;span class="k"&gt;USING&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;"model_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;"gpt-4o"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nv"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;""&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;"knowledge_bases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;"mindsdb.my_confluence_kb"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="n"&gt;prompt_template&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'You are a Banking Customer Issue Resolution Consultant. Your task is to provide clear and actionable next-step recommendations for UNRESOLVED customer cases.
You have access to my_confluence_kb, which contains official internal procedures, escalation workflows, and complaint handling guidelines. 
Use the knowledge base as your primary reference source and DO NOT invent policies.
OUTPUT REQUIREMENTS:
- Only output a numbered action plan.
- Each action must be specific and operational, not general or vague.
- Avoid emotional, generic, or training-like statements (e.g., "improve communication" / "show empathy").
- If no direct procedural reference is found in the knowledge base, include action: "Escalate following standard unresolved case workflow."
OUTPUT FORMAT (strictly follow this):
Recommended Actions:
1. &amp;lt;clear operational step&amp;gt;
2. &amp;lt;clear operational step&amp;gt;
3. &amp;lt;clear operational step&amp;gt;'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why Define Agents in MindsDB?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional AI workflows require maintaining separate infrastructure for prompt management, vector retrieval, model orchestration, output parsing, and observability logging. MindsDB collapses all of this into declarative SQL definitions. The recommendation agent, for example, automatically retrieves context from the Knowledge Base with no custom code. You just specify which knowledge base to use. Every agent interaction is traceable through the MindsDB UI: prompts, retrieved passages, model responses, and outputs are all inspectable, which is essential for debugging and compliance in regulated industries. Agents become reusable components queryable like standard tables: &lt;code&gt;SELECT * FROM classification_agent WHERE conversation_id = '12345'&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;End-to-end automation:&lt;/strong&gt; Complete workflow from call transcript ingestion to Jira ticket creation with zero manual intervention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;84% time reduction:&lt;/strong&gt; Cases that previously required 15+ minutes of manual triage, summarization, and ticket creation now complete in under 2 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production-ready architecture:&lt;/strong&gt; MindsDB connects to enterprise data sources with standard authentication; our Python backend controls all write operations to Salesforce and Jira, maintaining security boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid development:&lt;/strong&gt; Full prototype built and deployed in 48 hours using MindsDB's declarative agent framework without custom RAG infrastructure or embedding pipelines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What We Learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;MindsDB's SQL-driven framework made debugging and prompt tuning significantly faster. Instead of parsing application logs, we could query agent execution history like any database table and analyze patterns across hundreds of runs to refine prompts quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model Selection Strategy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We matched models to operational needs. The summary and classification agent processes high volumes with tight latency requirements, so we use smaller, efficient models (&lt;a href="https://openrouter.ai/openai/gpt-5-nano" rel="noopener noreferrer"&gt;gpt-5-nano&lt;/a&gt;, &lt;a href="https://openrouter.ai/openai/gpt-oss-120b" rel="noopener noreferrer"&gt;gpt-oss-120b&lt;/a&gt;). The recommendation agent handles fewer cases but requires deeper reasoning over complex policy documents, so we use more capable models (&lt;a href="https://openrouter.ai/openai/gpt-5-pro" rel="noopener noreferrer"&gt;gpt-5-pro&lt;/a&gt;, &lt;a href="https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro" rel="noopener noreferrer"&gt;gemini-2.5-pro&lt;/a&gt;) to reduce misaligned outputs that need human correction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explainability &amp;amp; Traceability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MindsDB's UI shows the complete execution trace: input, agent reasoning in the "Thoughts" panel, knowledge base queries, and retrieved data in the "Observation" panel. When outputs miss the mark, you can see exactly which knowledge base or table content influenced the decision. This transparency is essential for compliance audits and far superior to black-box implementations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0mqtx7e6o21a70xwlhf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0mqtx7e6o21a70xwlhf.png" alt="mindsdb thought process" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
