<?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: Ketan Chokkara</title>
    <description>The latest articles on DEV Community by Ketan Chokkara (@ketan_chokkara_98dc76f0fe).</description>
    <link>https://dev.to/ketan_chokkara_98dc76f0fe</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%2F4231896%2F0eb05cff-c2ca-48fc-ae6d-f1894af8360a.jpg</url>
      <title>DEV Community: Ketan Chokkara</title>
      <link>https://dev.to/ketan_chokkara_98dc76f0fe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ketan_chokkara_98dc76f0fe"/>
    <language>en</language>
    <item>
      <title>Why Your AI Support Bot Hallucinates — And How We Built an Evidence-Gated Fix</title>
      <dc:creator>Ketan Chokkara</dc:creator>
      <pubDate>Sat, 07 Nov 2026 11:31:40 +0000</pubDate>
      <link>https://dev.to/ketan_chokkara_98dc76f0fe/why-your-ai-support-bot-hallucinates-and-how-we-built-an-evidence-gated-fix-19hm</link>
      <guid>https://dev.to/ketan_chokkara_98dc76f0fe/why-your-ai-support-bot-hallucinates-and-how-we-built-an-evidence-gated-fix-19hm</guid>
      <description>&lt;h1&gt;
  
  
  Building RelayDesk: Evidence-Gated Multi-Agent Support Triage on Switch AI
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Ketan Kumar Chokkara — AI Engineer &amp;amp; Data Scientist from India (&lt;a href="https://github.com/CodeUltr0n" rel="noopener noreferrer"&gt;@CodeUltr0n&lt;/a&gt;) — Built for the Flip the Switch Hackathon (Nov 4–7, 2026)&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📺 &lt;strong&gt;Watch the 4-Minute Demo Video on YouTube:&lt;/strong&gt; &lt;a href="https://youtu.be/Gi6qcB_jUVQ" rel="noopener noreferrer"&gt;https://youtu.be/Gi6qcB_jUVQ&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Frontline Support Dilemma
&lt;/h2&gt;

&lt;p&gt;Every software engineering organization faces a compounding crisis at the intersection of customer support and core engineering:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Over-escalation &amp;amp; Alert Fatigue:&lt;/strong&gt; Support teams, overwhelmed by incoming tickets and lacking engineering context, reflexively escalate routine issues, transient glitches, or already-reported bugs to on-call engineers. Developers spend up to 30% of their sprints sifting through duplicate tickets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Under-escalation &amp;amp; Hallucinatory Support:&lt;/strong&gt; Organizations that deploy off-the-shelf generative AI chatbots often discover an even worse problem: ungrounded LLMs invent plausible-sounding troubleshooting steps, promise features that don't exist, or fail to recognize severe novel regressions that urgently require engineering intervention.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When building &lt;strong&gt;RelayDesk&lt;/strong&gt; for the &lt;strong&gt;Flip the Switch Hackathon&lt;/strong&gt;, our guiding principle was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Never let an AI make a customer-facing or engineering decision without citing verified, structured evidence, and never take action without a human in the loop.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is the story of how we built &lt;strong&gt;RelayDesk&lt;/strong&gt; — an evidence-gated customer support triage and engineering escalation system powered by &lt;strong&gt;Switch AI&lt;/strong&gt;, &lt;strong&gt;Antigravity&lt;/strong&gt;, and &lt;strong&gt;Discord&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. System Architecture: The Four Outcome Tracks
&lt;/h2&gt;

&lt;p&gt;At the core of RelayDesk is a deterministic, evidence-gated pipeline that classifies every incoming customer report into one of exactly four outcomes:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["Support Lead / Customer Report"] --&amp;gt;|"Free Text"| B["normalize.py (Structured Extraction)"]
    B --&amp;gt;|"IssueReport"| C["retrieval.py (Deterministic Index)"]
    D[("Knowledge Corpus: Tickets, Runbooks, Releases, Logs")] --&amp;gt; C
    C --&amp;gt;|"Top-3 Candidates"| E["scoring.py (Feature Blending)"]
    E --&amp;gt;|"Scored Candidates"| F["decision.py (Threshold Routing)"]
    F --&amp;gt;|"Outcome: ANSWER/CLARIFY/DUPLICATE/ESCALATE"| G["handoff.py (Message Card Rendering)"]
    G --&amp;gt;|"Switch Room Feed"| H{"Human-in-the-Loop Approval"}
    H --&amp;gt;|"Approved Fix"| I["Customer Message Dispatched"]
    H --&amp;gt;|"Approved Duplicate"| J["Linked to Active Ticket"]
    H --&amp;gt;|"Approved Escalation"| K["sandbox.py (Isolated Repro Execution)"]
    K --&amp;gt;|"Reproduction Evidence"| L["Engineering Ticket Packaged"]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  The 4 Decisions:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ANSWER&lt;/code&gt; (Confidence $\ge 0.65$):&lt;/strong&gt; The issue is a known operational question with a verified resolution in a published troubleshooting runbook. The system cites the exact runbook section.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CLARIFY&lt;/code&gt; (Ambiguous / Missing Signals):&lt;/strong&gt; Key diagnostics (component name, reproduction steps, version, or exact error text) are missing. The system asks a single targeted clarifying question rather than guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;DUPLICATE&lt;/code&gt; (Confidence $\ge 0.75$):&lt;/strong&gt; The issue matches an active, open incident ticket (&lt;code&gt;INC-xxxx&lt;/code&gt;) based on component, version, and error signature. Links to the existing incident to prevent duplicate triage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ESCALATE&lt;/code&gt; (Novel Defect):&lt;/strong&gt; The issue represents a genuine novel regression or unhandled error not covered by existing tickets or runbooks. Hands off to the investigation agent for sandboxed test reproduction.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Why Switch AI is Essential
&lt;/h2&gt;

&lt;p&gt;RelayDesk is not a standalone Python script or a solitary bot; it is a collaborative multi-agent workflow designed for human teams. &lt;strong&gt;Switch AI&lt;/strong&gt; provides the crucial infrastructure that makes this work:&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Agent Specialization
&lt;/h3&gt;

&lt;p&gt;Rather than asking one monolithic LLM to do everything, RelayDesk connects two specialized agents in a shared room bridged to Discord:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@relaydesk-triager&lt;/code&gt; (Frontline Triage):&lt;/strong&gt; Configured with public addressing (&lt;code&gt;anyone&lt;/code&gt;). Listens to customer and support lead messages in &lt;code&gt;#support-triage&lt;/code&gt;, runs regex normalization, queries the deterministic retrieval index, scores evidence, and formats structured &lt;code&gt;[EVIDENCE]&lt;/code&gt; and &lt;code&gt;[DECISION]&lt;/code&gt; cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@relaydesk-investigator&lt;/code&gt; (Deep Investigation):&lt;/strong&gt; Configured with restricted addressing (&lt;code&gt;ownerAndAgents&lt;/code&gt;). Wakes up only when tagged by human operators or delegated by &lt;code&gt;@relaydesk-triager&lt;/code&gt;. Its sole job is to spin up an isolated sandbox, execute reproduction test suites, and report verified stack traces.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Human-in-the-Loop Safety by Design
&lt;/h3&gt;

&lt;p&gt;Every triage recommendation posted to the Switch room ends with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Next: human approval required before anything is sent or merged.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No email is sent, no customer reply is dispatched, and no Jira ticket is filed until a human support lead gives the green light. Switch turns Discord into a mission control room where humans supervise AI agents in real time.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Under the Hood: Deterministic Scoring &amp;amp; Sandboxed Reproduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Weighted Evidence Scoring Engine
&lt;/h3&gt;

&lt;p&gt;Instead of asking an LLM "Does this ticket look like a duplicate?", RelayDesk computes an explainable 4-feature weighted score ($S \in [0.0, 1.0]$):&lt;/p&gt;

&lt;p&gt;$$S = 0.35 \cdot M_{\text{error}} + 0.25 \cdot M_{\text{comp_ver}} + 0.20 \cdot M_{\text{timing}} + 0.20 \cdot E_{\text{repro}}$$&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error Symptom Match ($M_{\text{error}}$):&lt;/strong&gt; Token containment between the normalized error signature and document tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component &amp;amp; Version Match ($M_{\text{comp_ver}}$):&lt;/strong&gt; Strict metadata alignment with fallback to document body scanning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release Timing Match ($M_{\text{timing}}$):&lt;/strong&gt; Proximity between the incident observation and service deployment dates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproduction Evidence ($E_{\text{repro}}$):&lt;/strong&gt; Quality of verified reproduction data (differentiating active open tickets from closed historical ones).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Disposable Sandbox Execution
&lt;/h3&gt;

&lt;p&gt;When a novel defect is escalated, &lt;code&gt;@relaydesk-investigator&lt;/code&gt; never runs tests in production or inside the main codebase. Instead, &lt;code&gt;relaydesk/sandbox.py&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copies the suspect service into a &lt;strong&gt;disposable temporary directory&lt;/strong&gt; (&lt;code&gt;tempfile.mkdtemp()&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Restricts commands strictly to allow-listed binaries (&lt;code&gt;pytest&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;python3&lt;/code&gt;, &lt;code&gt;make&lt;/code&gt;) parsed via &lt;code&gt;shlex.split&lt;/code&gt;, running with &lt;code&gt;shell=False&lt;/code&gt; to eliminate shell injection vulnerabilities.&lt;/li&gt;
&lt;li&gt;Enforces strict execution timeouts (&lt;code&gt;timeout_s: 120&lt;/code&gt;) and proxy blackholing for network isolation.&lt;/li&gt;
&lt;li&gt;Caches and truncates test output tails (&lt;code&gt;max_log_echo_lines: 20&lt;/code&gt;) to prevent log flooding and prompt injection.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Live Discord Walkthrough
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;📺 &lt;strong&gt;Watch the live multi-agent execution in action:&lt;/strong&gt; &lt;a href="https://youtu.be/Gi6qcB_jUVQ" rel="noopener noreferrer"&gt;https://youtu.be/Gi6qcB_jUVQ&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is what the workflow looks like in practice inside our bridged Discord channel:&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 1: Automated Duplicate Triage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Human:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@relaydesk-triager Customer reports payment total mismatch (HTTP 500) on checkout-service v2.14.0 since this morning's release.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@relaydesk-triager&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Parsed report:
Component: checkout-service
Version: v2.14.0
Error signature: payment total mismatch (HTTP 500)
Observation timing: Since this morning (following this week's release)

[EVIDENCE] Candidate shortlist for this report:
Checkout HTTP 500 — payment total mismatch after v2.14.0 rollout [ticket] score=0.86 id=INC-1042
why: Score 0.86 for [INC-1042] (ticket): driven by error_symptom_match=1.00, component_version_match=1.00.

[DECISION] DUPLICATE (confidence 0.86)
Why: Top candidate [INC-1042] is an active ticket with score 0.86 &amp;gt;= duplicate threshold 0.75.
Evidence: INC-1042
Next: human approval required before anything is sent or merged.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scenario 2: Novel Bug Escalation &amp;amp; Sandboxed Reproduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Human:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@relaydesk-triager Customer reports discount calculation failure in price_calculator on 10% discount orders. checkout-service v2.14.0. No matching past incident. Please escalate to @relaydesk-investigator to run reproduction tests in the sandbox.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@relaydesk-triager&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Evaluates candidates (top ticket score 0.70 &amp;lt; threshold 0.75). Issues &lt;code&gt;[DECISION] ESCALATE&lt;/code&gt; and tags &lt;code&gt;@relaydesk-investigator&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@relaydesk-investigator&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;[REPRODUCTION RESULT] Bug Confirmed

Component: checkout-service (v2.14.0) — price_calculator.py
Reproduction: Reproduced in isolated sandbox (disposable copy, network-isolated, allow-listed pytest).
Root Cause: Discount quantizing uses ROUND_DOWN instead of ROUND_HALF_UP, causing a 1-cent calculation error on 10% discount orders (134.98 vs expected 134.97).

Test failure log tail:
&lt;span class="gt"&gt;&amp;gt;       assert result == Decimal("134.97"), f"Got {result}, expected 134.97"&lt;/span&gt;
E       AssertionError: Got 134.98, expected 134.97

Recommendation: Create an engineering ticket for checkout-service to switch decimal rounding to ROUND_HALF_UP in price_calculator.py. Awaiting human operator approval.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scenario 3: Grounded Runbook Resolution (ANSWER)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Human:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@relaydesk-triager Customer reports stale search results in search autocomplete on search-service v3.2.1. Products that were deleted yesterday still appear in search results.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@relaydesk-triager&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Matches runbook &lt;code&gt;search_troubleshooting&lt;/code&gt; (RB-501) and resolved ticket &lt;code&gt;INC-1038&lt;/code&gt;. Outputs &lt;code&gt;[DECISION] ANSWER (grounded in runbook RB-501)&lt;/code&gt;. Drafts verified operational steps: manual Elasticsearch alias swap (&lt;code&gt;POST /_aliases&lt;/code&gt;) and autocomplete cache TTL invalidation, pausing for human approval.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Scenario 4: Smart Diagnostic Clarification (CLARIFY)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Human:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;@relaydesk-triager Customer says the CSV export button in Reports does nothing when clicked. No error message shown. No app version or browser provided.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;@relaydesk-triager&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Refuses to hallucinate speculative answers. Detects missing technical context and outputs &lt;code&gt;[DECISION] CLARIFY&lt;/code&gt; with a single targeted diagnostic question requesting app version, browser details, and developer console logs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  6. Rigorous Benchmark Evaluation
&lt;/h2&gt;

&lt;p&gt;To prove that RelayDesk performs reliably beyond one-off demos, we built an automated benchmark suite (&lt;code&gt;scripts/run_eval.py&lt;/code&gt;) evaluated across 8 synthetic incident cases split into development and held-out test sets, backed by 27 passing unit and integration tests:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Null Baseline (Always Escalate)&lt;/th&gt;
&lt;th&gt;RelayDesk (Dev Split)&lt;/th&gt;
&lt;th&gt;RelayDesk (Held-Out Split)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;correct_next_action&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;escalation_precision&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;escalation_recall&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;top3_evidence_recall&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;50.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;unsupported_assertion_count&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;median_latency_ms&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.0 ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.5 ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.4 ms&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Key Findings:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% Escalation Precision:&lt;/strong&gt; No non-bugs or known duplicates were sent to engineering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Escalation Recall:&lt;/strong&gt; Every single novel defect was caught and reproduced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-Millisecond Overhead:&lt;/strong&gt; The scoring and routing logic takes under &lt;strong&gt;0.5 milliseconds&lt;/strong&gt;, adding zero perceived latency to the chat interaction.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Key Takeaways &amp;amp; What's Next
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Determinism + AI Beats Pure LLMs:&lt;/strong&gt; Using fast, deterministic heuristics for evidence retrieval and scoring prevents hallucinated citations and gives human operators full explainability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch AI Makes Multi-Agent Real:&lt;/strong&gt; Managing agent identities, addressing scopes, and Discord bridges via Switch turned a complex multi-agent architecture into a seamless team room experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety First:&lt;/strong&gt; Sandboxed reproduction ensures agents can run automated diagnostic tests without risking the host system or production data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Try it out!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Demo Video (YouTube):&lt;/strong&gt; &lt;a href="https://youtu.be/Gi6qcB_jUVQ" rel="noopener noreferrer"&gt;https://youtu.be/Gi6qcB_jUVQ&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/CodeUltr0n/RelayDesk" rel="noopener noreferrer"&gt;https://github.com/CodeUltr0n/RelayDesk&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quickstart:&lt;/strong&gt; Run &lt;code&gt;make test&lt;/code&gt; and &lt;code&gt;make eval-heldout&lt;/code&gt; in under 30 seconds!&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Thank you to WeMakeDevs and Switch AI for hosting the Flip the Switch Hackathon!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
