<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>DecisionBox Blog</title>
        <link>https://decisionbox.io/blog</link>
        <description>DecisionBox Blog</description>
        <lastBuildDate>Tue, 14 Apr 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Ask: a better way to dig through your discoveries]]></title>
            <link>https://decisionbox.io/blog/ask</link>
            <guid>https://decisionbox.io/blog/ask</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Or: how we stopped losing our own insights.]]></description>
            <content:encoded><![CDATA[<p><em>Or: how we stopped losing our own insights.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem-that-forced-us-to-build-this">The problem that forced us to build this<a href="https://decisionbox.io/blog/ask#the-problem-that-forced-us-to-build-this" class="hash-link" aria-label="Direct link to The problem that forced us to build this" title="Direct link to The problem that forced us to build this" translate="no">​</a></h2>
<p>We had a pile of insights and nobody could find anything in it.</p>
<p>Here's what actually happened. I ran two discoveries back-to-back against a sample vacation rental dataset we use for testing — a thing called WanderBricks. Two runs, 132 insights between them, a handful of recommendations, seven analysis areas. Normal DecisionBox output. Nothing weird about the numbers.</p>
<p>A few days later I was on a call and someone asked me "didn't one of those runs find something about same-day bookings getting cancelled a lot?" And I genuinely could not remember which run, which analysis area it was under, or what the exact finding said. I opened the dashboard and started clicking through insight cards. It took me about four minutes of scrolling to find it.</p>
<p>Four minutes is the kind of friction where you just stop looking. And if I'm doing that — I wrote the thing — a customer staring at their own dashboard for the first time has no chance.</p>
<p>So we built Ask.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-ask-is-and-what-it-isnt">What Ask is (and what it isn't)<a href="https://decisionbox.io/blog/ask#what-ask-is-and-what-it-isnt" class="hash-link" aria-label="Direct link to What Ask is (and what it isn't)" title="Direct link to What Ask is (and what it isn't)" translate="no">​</a></h2>
<p>Ask is a text box. You type a question in plain English, and it pulls up the insights and recommendations your discoveries already produced that are relevant to what you asked. Then it writes you a short answer that stitches those findings together, with numbered citations pointing back to the originals.</p>
<p>I want to be clear about one thing before going further: <strong>Ask does not make things up.</strong> It doesn't invent data. It doesn't run new SQL. It doesn't talk to your warehouse. It retrieves existing insights from the runs you've already completed and summarizes them. If you ask it about something the agent never analyzed, it will tell you it has nothing.</p>
<p>If that sounds boring, good. The whole point is that every number in the answer is traceable back to a SQL query the agent wrote and validated against your data. You can click any citation and read the raw insight — name, description, affected count, risk score, source steps, discovery run, timestamp. All of it.</p>
<p><img decoding="async" loading="lazy" alt="The Ask tab with an empty state before any questions are asked" src="https://decisionbox.io/assets/images/SCREENSHOT_01_ASK_EMPTY-68bf0bedcb485535507d150aeb779593.png" width="2464" height="1570" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-actually-feels-like-to-use">What it actually feels like to use<a href="https://decisionbox.io/blog/ask#what-it-actually-feels-like-to-use" class="hash-link" aria-label="Direct link to What it actually feels like to use" title="Direct link to What it actually feels like to use" translate="no">​</a></h2>
<p>I'll just walk through the session I ran while writing this post. Same project, same two discoveries, no cherry-picking. All the quotes below are copied from actual answers.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="question-1-what-are-the-biggest-threats-to-guest-trust-on-the-platform-right-now">Question 1: "What are the biggest threats to guest trust on the platform right now?"<a href="https://decisionbox.io/blog/ask#question-1-what-are-the-biggest-threats-to-guest-trust-on-the-platform-right-now" class="hash-link" aria-label="Direct link to Question 1: &quot;What are the biggest threats to guest trust on the platform right now?&quot;" title="Direct link to Question 1: &quot;What are the biggest threats to guest trust on the platform right now?&quot;" translate="no">​</a></h3>
<p>Six results came back. The top match was an insight about the five dominant negative review themes — cleanliness, maintenance, unresponsive hosts, misleading descriptions, and bad experiences — each appearing in over 6,500 reviews. The second was the platform-wide rating sitting at 3.01 against a 4.5 target. Then support tickets confirming listing-accuracy complaints, then a suspicious 99,793-reviews-against-72,244-bookings ratio that hints at data integrity issues.</p>
<p>The answer pulled those together into one paragraph I'd actually put in a deck:</p>
<blockquote>
<p>"A guest who sees a misleading listing, arrives to a dirty property, can't reach the host, and then reads reviews that seem unreliable has experienced a complete trust chain failure. The data bears this out: guests with 1–2 star average experiences have only a 7.35% repeat booking rate versus 25.6% for those with 3–4 star averages."</p>
</blockquote>
<p>The 7.35% number is from an insight I hadn't even opened before. Ask found it, cited it, and wove it into the narrative. That's the thing I wanted — a map across insights, not just a list.</p>
<p><img decoding="async" loading="lazy" alt="Q1 answer showing numbered citations pointing to source insights" src="https://decisionbox.io/assets/images/SCREENSHOT_02_Q1_ANSWER-04e843abe62ac2d447498359d21dcf7f.png" width="2464" height="1570" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="question-2-where-are-we-losing-the-most-money-i-care-about-the-biggest-revenue-leaks">Question 2: "Where are we losing the most money? I care about the biggest revenue leaks."<a href="https://decisionbox.io/blog/ask#question-2-where-are-we-losing-the-most-money-i-care-about-the-biggest-revenue-leaks" class="hash-link" aria-label="Direct link to Question 2: &quot;Where are we losing the most money? I care about the biggest revenue leaks.&quot;" title="Direct link to Question 2: &quot;Where are we losing the most money? I care about the biggest revenue leaks.&quot;" translate="no">​</a></h3>
<p>Same session. This is the part where the multi-turn bit matters — Ask remembers what we've already talked about, so follow-ups land naturally.</p>
<p>Top result: cancellation leakage. $5.8M lost in the first seven months of 2025, about 22% of gross. Second result: 77% of guests who cancel never rebook, which is a separate $4.5M annual churn. Third: a refund rate accelerating to 9.3%. The answer arranged these in order of financial impact, which I did not ask for but is obviously what I wanted.</p>
<p>I didn't have to phrase the question a specific way. I didn't have to remember that cancellation findings were in the <code>cancellation</code> and <code>revenue</code> analysis areas. I just said "revenue leaks" and it pulled the right things.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="question-3-is-our-host-onboarding-healthy-how-do-we-compare-to-where-we-want-to-be">Question 3: "Is our host onboarding healthy? How do we compare to where we want to be?"<a href="https://decisionbox.io/blog/ask#question-3-is-our-host-onboarding-healthy-how-do-we-compare-to-where-we-want-to-be" class="hash-link" aria-label="Direct link to Question 3: &quot;Is our host onboarding healthy? How do we compare to where we want to be?&quot;" title="Direct link to Question 3: &quot;Is our host onboarding healthy? How do we compare to where we want to be?&quot;" translate="no">​</a></h3>
<p>This is where I got a bit emotional because the answer was really good.</p>
<p>It opened with:</p>
<blockquote>
<p>"Short answer: No. Host onboarding is in a state of catastrophic failure, and it represents one of the most severe underperformance gaps on the platform."</p>
</blockquote>
<p>Then a table — 80% target, 19.7% actual, 60-point gap. Then the absolute counts: 19,384 registered hosts, 3,817 have ever created a listing, 15,567 signed up and did nothing. Then a country-by-country breakdown showing that India and China together account for 72.6% of registered hosts and only 2.96% of them have listed anything. Then a first-week retention window — hosts who list within a week average 6.8 properties and 17.3 bookings, hosts who take six months average 2.9 and 8.3.</p>
<p>Every one of those numbers came from a different insight in the discovery run. I could have found them manually. I would not have thought to line them up next to each other like that.</p>
<p><img decoding="async" loading="lazy" alt="Q3 answer with the host onboarding country breakdown and first-week retention table" src="https://decisionbox.io/assets/images/SCREENSHOT_04_MULTI_TURN-f659a98de4b87feb3273fd2c04904a04.png" width="2464" height="1570" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="question-4-out-of-everything-above-what-could-we-actually-ship-this-quarter-to-move-the-needle">Question 4: "Out of everything above, what could we actually ship this quarter to move the needle?"<a href="https://decisionbox.io/blog/ask#question-4-out-of-everything-above-what-could-we-actually-ship-this-quarter-to-move-the-needle" class="hash-link" aria-label="Direct link to Question 4: &quot;Out of everything above, what could we actually ship this quarter to move the needle?&quot;" title="Direct link to Question 4: &quot;Out of everything above, what could we actually ship this quarter to move the needle?&quot;" translate="no">​</a></h3>
<p>This is the question I care about most, because "what do I do on Monday" is the real job. The answer came back with four concrete initiatives, ordered by impact and effort, with dollar ranges attached:</p>
<ol>
<li class=""><strong>Same-day booking guardrails</strong> — non-refundable deposits for bookings made within 3 days of check-in. Estimated $800K–$2M saved in cancellation losses this quarter, based on the insight that 26.4% of July volume came from same-day bookings with a 40.8% cancel rate.</li>
<li class=""><strong>Mega-host relationship program</strong> — defensive, protects the $8.18M (31% of platform) concentrated in the top 169 hosts. Low-medium effort.</li>
<li class=""><strong>Off-season activation for 7,068 summer-only properties</strong> — the agent had already found that 39% of supply has literally zero bookings outside June-July. Ask stitched that to a recommendation the agent generated in the same run.</li>
<li class=""><strong>Urban destination acceleration</strong> — longer-term, but addresses the Q4/Q1 seasonal cliff.</li>
</ol>
<p>It also added a "what I'd explicitly deprioritize" section that basically said: don't bother with pricing optimization this quarter, the structural problem is too big for a one-quarter fix. I didn't ask for that. It just did it.</p>
<p>The thing I want you to notice is that #3 cited <strong>both</strong> an insight ("Summer Seasonal Destinations Surge 135-217% Q1-to-Q2") and a separately-generated recommendation ("Launch Off-Season Activation Campaign"). Ask treats insights and recommendations as the same kind of thing for retrieval — they both get embedded, they both get searched, they both get cited. That matters when you're trying to answer "what should we do" because the agent already did that work in a previous run. You just need to be able to find it again.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-search-is-the-thing">The search is the thing<a href="https://decisionbox.io/blog/ask#the-search-is-the-thing" class="hash-link" aria-label="Direct link to The search is the thing" title="Direct link to The search is the thing" translate="no">​</a></h2>
<p>I want to call out one specific query because it surprised me.</p>
<p>In a fresh session I asked: <strong>"What are the early signs a guest won't come back?"</strong></p>
<p>None of the matched insights contain the phrase "early signs" or "won't come back" in their titles. What came back:</p>
<ul>
<li class=""><em>73.6% Single-Booking Guest Rate: 40,242 Guests Never Return</em></li>
<li class=""><em>77% of Guests Who Cancel Never Rebook</em></li>
<li class=""><em>Two-Booking Guests Take 159 Days to Return</em></li>
<li class=""><em>Low-Rated Experiences Drive Churn: Guests With &lt;2-Star Average Have Only 7.35% Repeat Rate</em></li>
</ul>
<p>That's a semantic match, not a keyword match. The insight titles talk about "repeat booking," "rebook," "return," "retention." My question talks about "early signs" and "won't come back." Different words, same concept. The embedding model — <code>text-embedding-3-large</code>, in our case — handles that without anyone having to think about it.</p>
<p>The reason this matters: you don't have to remember how the agent phrased a finding to get back to it. You just have to remember roughly what it was about. Which is how humans actually remember things.</p>
<p><img decoding="async" loading="lazy" alt="Q5 answer showing semantic matches to a question that shares no exact keywords with the insight titles" src="https://decisionbox.io/assets/images/SCREENSHOT_05_SEMANTIC-f96a7526f0f1efb6de321851dd1c04b3.png" width="2588" height="1376" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-it-works-under-the-hood">How it works under the hood<a href="https://decisionbox.io/blog/ask#how-it-works-under-the-hood" class="hash-link" aria-label="Direct link to How it works under the hood" title="Direct link to How it works under the hood" translate="no">​</a></h2>
<p>Short version for the people who care.</p>
<p>When a discovery finishes, every insight and every recommendation gets embedded and stored in a vector database. We use Qdrant (which now ships as part of the default deployment). The embedding model is pluggable — OpenAI <code>text-embedding-3-large</code> is the default, but you can point it at whatever provider you prefer. The same provider abstraction we already have for LLMs and warehouses.</p>
<p>When you ask a question, here's what happens:</p>
<ol>
<li class="">Your question gets embedded with the same model.</li>
<li class="">Qdrant returns the top-k nearest insights + recommendations by cosine similarity, filtered to your project so one customer can never see another customer's data.</li>
<li class="">The top results get passed to the LLM with a prompt that says: answer the user's question using only these sources, cite them like <code>[1]</code>, <code>[2]</code>, and if the sources don't cover the question, say so.</li>
<li class="">The answer and the list of raw sources come back together. The dashboard renders them side by side.</li>
</ol>
<p>Multi-turn conversations work by replaying the last ten messages from the session as context, so the LLM knows what "that" and "above" and "those" refer to. Sessions belong to a specific project. They're stored in MongoDB alongside everything else. There's no separate infrastructure.</p>
<p>One thing worth saying: we use the same LLM provider you've already configured for discoveries. If you're running Claude Opus via Bedrock, that's what answers your questions. If you're running Ollama locally, that's what answers them. No new API keys, no new billing, no new secrets. That was a deliberate call — we didn't want Ask to require a "now also sign up for X" moment.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-doesnt-do">What it doesn't do<a href="https://decisionbox.io/blog/ask#what-it-doesnt-do" class="hash-link" aria-label="Direct link to What it doesn't do" title="Direct link to What it doesn't do" translate="no">​</a></h2>
<p>Worth being explicit about the edges:</p>
<p><strong>It doesn't write new SQL.</strong> If you ask it a question that isn't covered by your existing discoveries, you'll get a polite version of "I don't have data on that." The fix is to run another discovery, or add a new analysis area to your domain pack.</p>
<p><strong>It doesn't cross projects.</strong> Each Ask session is scoped to one project. This is a privacy boundary — it's not something we'll loosen. If you need cross-project reporting, that's a different feature.</p>
<p><strong>It doesn't replace the insights tab.</strong> If you're exploring, browse the insights directly. If you have a specific question, use Ask. They do different jobs.</p>
<p><strong>It doesn't know about the future.</strong> It knows what your discoveries found, which is a snapshot of what your data looked like when the run happened. "What will happen next quarter" isn't a question it can answer, and it will tell you so.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-try-it">How to try it<a href="https://decisionbox.io/blog/ask#how-to-try-it" class="hash-link" aria-label="Direct link to How to try it" title="Direct link to How to try it" translate="no">​</a></h2>
<p>If you're already running DecisionBox, pull the latest images and you'll get Ask automatically. The feature is part of the community release, AGPL v3, runs in your own infrastructure, no separate tier. You'll need Qdrant running, which the Helm chart provisions by default.</p>
<ol>
<li class="">Navigate to a project with at least one completed discovery</li>
<li class="">Click the <strong>Ask</strong> tab in the sidebar</li>
<li class="">Type a question</li>
</ol>
<p>That's it. There's nothing to configure. Your existing discoveries are already indexed on run completion — no backfill step, no migration, no "enable this feature" toggle.</p>
<p>If you don't have a project yet: pick a domain pack, connect a warehouse, hit run. Come back in ten minutes and start asking questions.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="where-were-taking-it">Where we're taking it<a href="https://decisionbox.io/blog/ask#where-were-taking-it" class="hash-link" aria-label="Direct link to Where we're taking it" title="Direct link to Where we're taking it" translate="no">​</a></h2>
<p>A few things on the list. No promises on timing.</p>
<ul>
<li class=""><strong>Cited chart generation.</strong> When an answer references a trend over time, draw it. The data is already in the insight metrics, we just need to render it.</li>
<li class=""><strong>Saved questions.</strong> Right now every session is free-form. Eventually you should be able to save "the five questions I check every Monday" and have them run against each new discovery automatically.</li>
<li class=""><strong>Cross-discovery comparison.</strong> Right now a single question retrieves across all discoveries in a project, which is usually what you want. But being able to scope explicitly to "compare last week's run to this week's" is the obvious next step.</li>
<li class=""><strong>Slack integration.</strong> Ask, but from the place where the question actually gets asked.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="one-last-thing">One last thing<a href="https://decisionbox.io/blog/ask#one-last-thing" class="hash-link" aria-label="Direct link to One last thing" title="Direct link to One last thing" translate="no">​</a></h2>
<p>The reason I wrote this post the way I did is that I'm a bit allergic to the way AI features get talked about right now. "Revolutionary AI-powered conversational insights experience" — you can find that sentence on a dozen product landing pages this week and none of them mean anything.</p>
<p>Ask is a text box that helps you find stuff you already have. It's useful because the alternative is scrolling through 132 insight cards trying to remember which one had the 7.35% number. That's all it is. That's enough.</p>
<p>If you try it and it doesn't help, tell us what question it fell over on. That's the useful feedback. The email is <a href="mailto:can@decisionbox.io" target="_blank" rel="noopener noreferrer" class="">can@decisionbox.io</a>, or open an issue on the repo.</p>
<p>— Can</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="links">Links<a href="https://decisionbox.io/blog/ask#links" class="hash-link" aria-label="Direct link to Links" title="Direct link to Links" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">GitHub Repository</a></li>
<li class=""><a href="https://decisionbox.io/docs" target="_blank" rel="noopener noreferrer" class="">Documentation</a></li>
<li class=""><a href="https://decisionbox.io/docs/reference/api" target="_blank" rel="noopener noreferrer" class="">Ask API reference</a></li>
</ul>]]></content:encoded>
            <category>feature</category>
            <category>ask</category>
            <category>semantic-search</category>
            <category>v0.4.0</category>
        </item>
        <item>
            <title><![CDATA[Domain Packs: Teach DecisionBox Your Industry in Minutes]]></title>
            <link>https://decisionbox.io/blog/domain-packs</link>
            <guid>https://decisionbox.io/blog/domain-packs</guid>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Create, edit, import, and share AI discovery templates — entirely from the dashboard.]]></description>
            <content:encoded><![CDATA[<p><em>Create, edit, import, and share AI discovery templates — entirely from the dashboard.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">TL;DR<a href="https://decisionbox.io/blog/domain-packs#tldr" class="hash-link" aria-label="Direct link to TL;DR" title="Direct link to TL;DR" translate="no">​</a></h2>
<p>Domain packs are how DecisionBox knows what to look for in your data.
From the dashboard, you can create a domain pack, edit it with a built-in markdown editor, export it as JSON to share with others, or import one someone else made.
No restarts, no deploys — just save and run a discovery.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-a-domain-pack">What Is a Domain Pack?<a href="https://decisionbox.io/blog/domain-packs#what-is-a-domain-pack" class="hash-link" aria-label="Direct link to What Is a Domain Pack?" title="Direct link to What Is a Domain Pack?" translate="no">​</a></h2>
<p>A domain pack teaches DecisionBox's AI agent how to analyze a specific industry.
Think of it as a recipe: it tells the agent what questions to ask, what patterns matter, and what context it needs about your business.</p>
<p>Every pack has four parts:</p>

























<table><thead><tr><th>Part</th><th>What It Does</th></tr></thead><tbody><tr><td><strong>Categories</strong></td><td>Sub-types within the domain. E-Commerce has "Multi-Category Store". Gaming has "Match-3", "Idle", and "Casual". Each activates different analysis strategies.</td></tr><tr><td><strong>Analysis Areas</strong></td><td>The patterns to look for — like "Conversion Funnel", "Revenue &amp; Pricing", or "Customer Retention".</td></tr><tr><td><strong>Prompts</strong></td><td>Markdown instructions that guide the AI through exploration, analysis, and recommendations.</td></tr><tr><td><strong>Profile Schema</strong></td><td>A form where users describe their business — KPIs, business model, product catalog — so the AI can tailor its analysis.</td></tr></tbody></table>
<p>DecisionBox ships with built-in packs for <strong>E-Commerce</strong>, <strong>Gaming</strong>, <strong>Social Network</strong>, and <strong>Real Estate CRM</strong>.
But you can create your own for any industry.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="browsing-your-packs">Browsing Your Packs<a href="https://decisionbox.io/blog/domain-packs#browsing-your-packs" class="hash-link" aria-label="Direct link to Browsing Your Packs" title="Direct link to Browsing Your Packs" translate="no">​</a></h2>
<p>Navigate to <strong>Domain Packs</strong> in the sidebar.
Each pack appears as a card with its name, status (Published or Draft), number of categories and analysis areas, and version.</p>
<p>You can create a new pack, import one from a JSON file, export any pack, edit it, or delete it.
Deleting a pack doesn't affect projects that already use it — they keep their own copy.</p>
<p><img decoding="async" loading="lazy" alt="Domain Packs list page showing built-in packs with Import and New Pack buttons" src="https://decisionbox.io/assets/images/SCREENSHOT_01_DOMAIN_PACKS_LIST-6244b3bd98baeaa62dafd2d45ee6ffa6.png" width="2878" height="1592" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="inside-a-domain-pack-e-commerce">Inside a Domain Pack: E-Commerce<a href="https://decisionbox.io/blog/domain-packs#inside-a-domain-pack-e-commerce" class="hash-link" aria-label="Direct link to Inside a Domain Pack: E-Commerce" title="Direct link to Inside a Domain Pack: E-Commerce" translate="no">​</a></h2>
<p>Let's open the built-in <strong>E-Commerce</strong> pack to see how everything fits together.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="general">General<a href="https://decisionbox.io/blog/domain-packs#general" class="hash-link" aria-label="Direct link to General" title="Direct link to General" translate="no">​</a></h3>
<p>The basics: a slug (<code>ecommerce</code>), a name, a description, a version number, and a Published toggle that controls whether the pack shows up when creating new projects.</p>
<p><img decoding="async" loading="lazy" alt="General tab showing slug, name, description, version, and published toggle" src="https://decisionbox.io/assets/images/SCREENSHOT_02_GENERAL_TAB-253fe6aa7553f841c8b2dea8e0470422.png" width="2878" height="1592" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="categories">Categories<a href="https://decisionbox.io/blog/domain-packs#categories" class="hash-link" aria-label="Direct link to Categories" title="Direct link to Categories" translate="no">​</a></h3>
<p>Categories are sub-types within your domain.
The E-Commerce pack ships with <strong>Multi-Category Store</strong> — for large retailers selling across electronics, appliances, fashion, and more.</p>
<p>You could add others like "Subscription Box" or "Marketplace", each with its own tailored prompts and analysis areas.</p>
<p>For comparison, the Gaming pack has three categories — Match-3, Idle, and Casual — because a puzzle game and an idle clicker need completely different analysis strategies.</p>
<p><img decoding="async" loading="lazy" alt="Categories tab showing the Multi-Category Store category" src="https://decisionbox.io/assets/images/SCREENSHOT_03_CATEGORIES_TAB-3d951352f5a55c5209633c5515d39f8b.png" width="2878" height="1592" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="prompts">Prompts<a href="https://decisionbox.io/blog/domain-packs#prompts" class="hash-link" aria-label="Direct link to Prompts" title="Direct link to Prompts" translate="no">​</a></h3>
<p>This is where the magic happens.
Prompts are markdown documents that tell the AI agent how to think about your industry.</p>
<p>There are three base prompts:</p>
<p><strong>Base Context</strong> gives the agent background about the user's specific business.
It includes <code>{{PROFILE}}</code> — the information the user filled in about their store (business model, KPI targets, product categories).
If a user sets a 3% conversion rate target, the agent uses that to judge whether what it finds is a problem or not.</p>
<p><strong>Exploration</strong> is the main prompt that drives autonomous SQL generation.
It tells the agent what dataset to connect to, what tables are available, and lays out a phased strategy: start broad with baseline metrics, deep-dive into each analysis area, then look for cross-area correlations.
It even includes example SQL queries tailored to e-commerce — conversion funnels, revenue by category, repeat customer behavior — so the agent hits the ground running.</p>
<p><strong>Recommendations</strong> takes what the agent discovered and turns it into specific, actionable steps — with target segments, expected impact, and implementation details.</p>
<p>Each prompt is edited with a markdown editor that supports preview mode.</p>
<p><img decoding="async" loading="lazy" alt="Prompts tab showing the markdown editor for the exploration prompt" src="https://decisionbox.io/assets/images/SCREENSHOT_04_PROMPTS_TAB-64d791f97aa667ef40a6fa953edc0f71.png" width="2878" height="1592" class="img_ev3q"></p>
<p>You can also write <strong>category-specific prompts</strong>.
Select "Multi-Category Store" from the dropdown and you'll see an exploration context that tells the agent to focus on cross-category shopping behavior, brand dynamics, and price range diversity — things that only matter for large multi-category retailers.</p>
<p>The Gaming pack leans on this heavily: the Idle game context explains prestige cycles and offline earnings, while the Casual game context focuses on ad tolerance and onboarding funnels. Same domain, very different analysis.</p>
<p><img decoding="async" loading="lazy" alt="Category-specific prompt editor showing multi-category exploration context" src="https://decisionbox.io/assets/images/SCREENSHOT_05_CATEGORY_PROMPT-0f5f97bb1e7c337b977538a4e6a974dc.png" width="1886" height="754" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="analysis-areas">Analysis Areas<a href="https://decisionbox.io/blog/domain-packs#analysis-areas" class="hash-link" aria-label="Direct link to Analysis Areas" title="Direct link to Analysis Areas" translate="no">​</a></h3>
<p>Analysis areas define what the agent should look for and how to interpret what it finds.</p>
<p>The E-Commerce pack has five areas — three at the base level (for all categories) and two specific to Multi-Category Store:</p>

























<table><thead><tr><th>Priority</th><th>Area</th><th>What It Finds</th></tr></thead><tbody><tr><td>1</td><td><strong>Conversion Funnel</strong></td><td>Where shoppers drop off — view to cart to purchase rates, cart abandonment by price range, category-level differences</td></tr><tr><td>2</td><td><strong>Revenue &amp; Pricing</strong></td><td>Where the money comes from — AOV trends, revenue concentration across categories and brands, price sensitivity</td></tr><tr><td>3</td><td><strong>Customer Retention</strong></td><td>Who comes back — repeat purchase rates, cohort analysis, repurchase intervals</td></tr></tbody></table>
<p>Each area includes its own detailed analysis prompt.
For example, the Conversion Funnel prompt tells the agent to check cart abandonment by price range, compare category-level conversion, and estimate revenue at risk — and it defines what "critical" vs "medium" severity means for this type of insight.</p>
<p><img decoding="async" loading="lazy" alt="Analysis Areas tab showing areas with expandable prompt editors" src="https://decisionbox.io/assets/images/SCREENSHOT_06_ANALYSIS_AREAS-cd5198865b658ed10447691cd3b511f4.png" width="2878" height="1592" class="img_ev3q"></p>
<p>The Gaming pack shows how category-specific areas work: Churn, Engagement, and Monetization apply to all game types, but <code>ad_performance</code> only activates for Casual games and <code>economy</code> only for Idle games.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="profile-schema">Profile Schema<a href="https://decisionbox.io/blog/domain-packs#profile-schema" class="hash-link" aria-label="Direct link to Profile Schema" title="Direct link to Profile Schema" translate="no">​</a></h3>
<p>The profile schema defines the form that users fill out when creating a project.
It's a JSON Schema that gets rendered as a dynamic form in the project settings.</p>
<p>The E-Commerce pack asks about:</p>
<ul>
<li class=""><strong>Business</strong>: Industry, business model, target market, growth stage</li>
<li class=""><strong>Product Catalog</strong>: Number of products, average price, categories, inventory model</li>
<li class=""><strong>Shipping</strong>: Free shipping threshold, delivery time, return rate</li>
<li class=""><strong>Payment</strong>: Accepted methods, supported currencies</li>
<li class=""><strong>KPI Targets</strong>: Conversion rate, AOV, 30-day retention, CAC, LTV</li>
</ul>
<p>The Multi-Category Store category adds extra fields for catalog depth, search and discovery features, and cross-sell/bundling capabilities.</p>
<p>All of this becomes the <code>{{PROFILE}}</code> that the agent receives in every prompt.
The more context users provide, the more targeted the analysis — setting a conversion rate target of 3% means the agent flags anything below that as a problem.</p>
<p><img decoding="async" loading="lazy" alt="Profile Schema tab showing the JSON schema editor" src="https://decisionbox.io/assets/images/SCREENSHOT_07_PROFILE_SCHEMA-7da39702660b40e264fc8d7381e169b1.png" width="2878" height="1592" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-your-own">Create Your Own<a href="https://decisionbox.io/blog/domain-packs#create-your-own" class="hash-link" aria-label="Direct link to Create Your Own" title="Direct link to Create Your Own" translate="no">​</a></h2>
<p>Click <strong>New Pack</strong> and follow the same structure: general info, categories, prompts, analysis areas, and profile schema.</p>
<p>For example, a <strong>FinTech</strong> pack might have categories like "Neobank", "Lending", and "Payments", with analysis areas for transaction fraud, customer lifetime value, and churn prediction.</p>
<p>DecisionBox validates everything when you save — required template variables in prompts, analysis areas with prompts and keywords, valid slug format.
Once saved, the pack is immediately available for new projects.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sharing-packs">Sharing Packs<a href="https://decisionbox.io/blog/domain-packs#sharing-packs" class="hash-link" aria-label="Direct link to Sharing Packs" title="Direct link to Sharing Packs" translate="no">​</a></h2>
<p>Every pack can be exported as a single JSON file and imported elsewhere.</p>
<p><strong>Export</strong>: Click <strong>Export</strong> on any pack card. The browser downloads a portable JSON file — no database IDs, no timestamps, just the pack definition.</p>
<p><strong>Import</strong>: Click <strong>Import</strong>, upload a <code>.json</code> file or paste the JSON directly, and the pack is created.</p>
<p><img decoding="async" loading="lazy" alt="Import modal showing JSON preview and Import button" src="https://decisionbox.io/assets/images/SCREENSHOT_08_IMPORT_MODAL-78f19ef67f714dab78d25e1faa2b1468.png" width="2878" height="1592" class="img_ev3q"></p>
<p>This makes it easy to:</p>
<ul>
<li class="">Move packs between environments (staging to production)</li>
<li class="">Share packs with your team or the community</li>
<li class="">Keep pack definitions in version control alongside your code</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-happens-when-you-run-a-discovery">What Happens When You Run a Discovery<a href="https://decisionbox.io/blog/domain-packs#what-happens-when-you-run-a-discovery" class="hash-link" aria-label="Direct link to What Happens When You Run a Discovery" title="Direct link to What Happens When You Run a Discovery" translate="no">​</a></h2>
<p>When a user creates a project, they pick a domain pack and category.
DecisionBox copies the pack's prompts and analysis areas into the project — the project gets its own independent copy.
The user fills in the profile form, clicks <strong>Run Discovery</strong>, and the agent takes it from there.</p>
<p>A few things worth noting:</p>
<ul>
<li class=""><strong>Changing a pack doesn't change existing projects.</strong> Projects snapshot the pack at creation time, so updates to a pack only affect new projects.</li>
<li class=""><strong>Projects can be customized independently.</strong> You can tweak a project's prompts without touching the source pack.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's Next<a href="https://decisionbox.io/blog/domain-packs#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<ul>
<li class=""><strong>Community pack registry</strong> — browse and install packs with one click</li>
<li class=""><strong>Pack versioning</strong> — track changes, diff, and rollback</li>
<li class=""><strong>AI-assisted pack creation</strong> — describe your industry and let the AI draft prompts for you</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get Started<a href="https://decisionbox.io/blog/domain-packs#get-started" class="hash-link" aria-label="Direct link to Get Started" title="Direct link to Get Started" translate="no">​</a></h2>
<p>DecisionBox ships with built-in packs seeded automatically on startup.</p>
<p>To create your own:</p>
<ol>
<li class="">Navigate to <strong>Domain Packs</strong> in the sidebar</li>
<li class="">Click <strong>New Pack</strong></li>
<li class="">Fill in your categories, prompts, analysis areas, and profile schema</li>
<li class="">Save — and start running discoveries</li>
</ol>
<p>Or grab a JSON file from someone who already built a pack for your industry, and <strong>Import</strong> it.</p>
<hr>
<ul>
<li class=""><a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">GitHub Repository</a></li>
<li class=""><a href="https://decisionbox.io/docs" target="_blank" rel="noopener noreferrer" class="">Documentation</a></li>
<li class=""><a href="https://decisionbox.io/docs/guides/creating-domain-packs" target="_blank" rel="noopener noreferrer" class="">Domain Packs Guide</a></li>
</ul>]]></content:encoded>
            <category>feature</category>
            <category>domain-packs</category>
            <category>dashboard</category>
            <category>v0.4.0</category>
        </item>
        <item>
            <title><![CDATA[DecisionBox v0.3.0 — PostgreSQL, Databricks, Ecommerce, and Plugin Hooks]]></title>
            <link>https://decisionbox.io/blog/v0.3.0-release</link>
            <guid>https://decisionbox.io/blog/v0.3.0-release</guid>
            <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[DecisionBox v0.3.0 adds two new warehouse providers, the first non-gaming domain pack, and a plugin middleware system that opens the door for enterprise extensions without touching community code.]]></description>
            <content:encoded><![CDATA[<p>DecisionBox v0.3.0 adds two new warehouse providers, the first non-gaming domain pack, and a plugin middleware system that opens the door for enterprise extensions without touching community code.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="postgresql-support">PostgreSQL Support<a href="https://decisionbox.io/blog/v0.3.0-release#postgresql-support" class="hash-link" aria-label="Direct link to PostgreSQL Support" title="Direct link to PostgreSQL Support" translate="no">​</a></h2>
<p>PostgreSQL is now a supported warehouse, making DecisionBox accessible to teams that don't use a cloud data warehouse. Connect with username/password or a connection string, with SSL mode configurable (default: <code>require</code>).</p>
<p>The PostgreSQL provider includes a comprehensive SQL fix prompt covering 13 error patterns that the AI agent commonly encounters — LATERAL joins, FILTER clauses, recursive CTEs, the NOT IN NULL trap, BETWEEN timestamp pitfalls, and more. Row count estimates use <code>pg_class.reltuples</code> for fast schema discovery without full-table scans.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="databricks-integration">Databricks Integration<a href="https://decisionbox.io/blog/v0.3.0-release#databricks-integration" class="hash-link" aria-label="Direct link to Databricks Integration" title="Direct link to Databricks Integration" translate="no">​</a></h2>
<p>Databricks SQL warehouses are now supported via Unity Catalog. Two authentication methods are available:</p>
<ul>
<li class=""><strong>Personal Access Token (PAT)</strong> for quick setup.</li>
<li class=""><strong>OAuth M2M (service principal)</strong> for production workloads.</li>
</ul>
<p>The provider covers the full Databricks type system including complex types (STRUCT, ARRAY, MAP, VARIANT) and includes a dialect-specific SQL fix prompt for QUALIFY, PIVOT/UNPIVOT, Delta time travel, and the common <code>yyyy</code> vs <code>YYYY</code> date format pitfall.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ecommerce-domain-pack">Ecommerce Domain Pack<a href="https://decisionbox.io/blog/v0.3.0-release#ecommerce-domain-pack" class="hash-link" aria-label="Direct link to Ecommerce Domain Pack" title="Direct link to Ecommerce Domain Pack" translate="no">​</a></h2>
<p>The first domain pack outside of gaming brings AI-powered analysis to online stores. It covers five analysis areas:</p>
<ul>
<li class=""><strong>Conversion Funnel</strong> — Drop-off analysis from landing to purchase.</li>
<li class=""><strong>Revenue &amp; Pricing</strong> — Price sensitivity, discount effectiveness, AOV trends.</li>
<li class=""><strong>Customer Retention</strong> — Cohort analysis, repeat purchase patterns, churn signals.</li>
<li class=""><strong>Product &amp; Category Performance</strong> — Top sellers, underperformers, cross-sell opportunities.</li>
<li class=""><strong>Session &amp; Browsing Behavior</strong> — Navigation paths, search patterns, device segmentation.</li>
</ul>
<p>The pack includes a profile schema for capturing store context — business model, fulfillment method, marketing channels, and KPIs — so the agent tailors its analysis to your specific setup.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="plugin-middleware-hooks">Plugin Middleware Hooks<a href="https://decisionbox.io/blog/v0.3.0-release#plugin-middleware-hooks" class="hash-link" aria-label="Direct link to Plugin Middleware Hooks" title="Direct link to Plugin Middleware Hooks" translate="no">​</a></h2>
<p>This release introduces a middleware system that lets enterprise plugins wrap core functionality without modifying community code:</p>
<ul>
<li class=""><strong>Warehouse Middleware</strong> (<code>warehouse.RegisterMiddleware()</code>) — Intercept warehouse calls for logging, access controls, or cost tracking.</li>
<li class=""><strong>HTTP Middleware</strong> (<code>apiserver.RegisterGlobalMiddleware()</code>) — Wrap all API requests for audit logging or custom authentication.</li>
<li class=""><strong>Agent Export</strong> (<code>agentserver.Run()</code>) — Build custom agent binaries that import your plugins and call the standard entry point.</li>
</ul>
<p>These hooks power the <a href="https://github.com/decisionbox-io/decisionbox-platform/blob/main/docs/concepts/architecture.md" target="_blank" rel="noopener noreferrer" class="">enterprise auth plugin</a> and are available for anyone building custom extensions.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-improvements">Other Improvements<a href="https://decisionbox.io/blog/v0.3.0-release#other-improvements" class="hash-link" aria-label="Direct link to Other Improvements" title="Direct link to Other Improvements" translate="no">​</a></h2>
<ul>
<li class=""><strong>Per-model max output tokens</strong> — The agent now requests each model's full output capacity for recommendation generation instead of a fixed 8K limit.</li>
<li class=""><strong>IP restriction</strong> — GKE, EKS, and AKS control plane access can be restricted to specific CIDR ranges via <code>allowed_cidr_blocks</code> in Terraform modules. The setup wizard auto-detects your public IP.</li>
<li class=""><strong>Insight validation fix</strong> — Improved SQL fix prompt parsing and added missing schema context, increasing the success rate of automated insight validation.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="seamless-upgrade">Seamless Upgrade<a href="https://decisionbox.io/blog/v0.3.0-release#seamless-upgrade" class="hash-link" aria-label="Direct link to Seamless Upgrade" title="Direct link to Seamless Upgrade" translate="no">​</a></h2>
<p>No breaking changes. Update your Docker images to <code>v0.3.0</code> or pull the latest Helm charts:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">helm repo update decisionbox</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">helm upgrade decisionbox-api decisionbox/decisionbox-api</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">helm upgrade decisionbox-dashboard decisionbox/decisionbox-dashboard</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get Started<a href="https://decisionbox.io/blog/v0.3.0-release#get-started" class="hash-link" aria-label="Direct link to Get Started" title="Direct link to Get Started" translate="no">​</a></h2>
<p>Check out the <a href="https://github.com/decisionbox-io/decisionbox-platform/releases/tag/v0.3.0" target="_blank" rel="noopener noreferrer" class="">v0.3.0 release notes</a> on GitHub. If you have suggestions or run into issues, join us on <a href="https://github.com/decisionbox-io/decisionbox-platform/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>v0.3.0</category>
            <category>postgresql</category>
            <category>databricks</category>
            <category>ecommerce</category>
            <category>announcement</category>
        </item>
        <item>
            <title><![CDATA[How We Found $5.8M in Hidden Revenue Leakage Using AI-Powered Data Discovery on Databricks]]></title>
            <link>https://decisionbox.io/blog/databricks-revenue-leakage-discovery</link>
            <guid>https://decisionbox.io/blog/databricks-revenue-leakage-discovery</guid>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[DecisionBox autonomously analyzed 11 tables, executed 233 SQL queries, and surfaced 67 validated insights in 76 minutes — no dashboards to build, no SQL to write.]]></description>
            <content:encoded><![CDATA[<p><em>DecisionBox autonomously analyzed 11 tables, executed 233 SQL queries, and surfaced 67 validated insights in 76 minutes — no dashboards to build, no SQL to write.</em></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tldr">TL;DR<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#tldr" class="hash-link" aria-label="Direct link to TL;DR" title="Direct link to TL;DR" translate="no">​</a></h2>
<p>We pointed DecisionBox at a Databricks SQL Warehouse connected to a vacation rental dataset (WanderBricks — 11 tables, 500K+ rows) and hit <strong>Run Discovery</strong>. Seventy-six minutes later, the AI agent had:</p>
<ul>
<li class="">Explored every table autonomously, writing and executing <strong>92 SQL queries</strong> during exploration alone</li>
<li class="">Identified <strong>67 insights</strong> across 7 analysis areas — 17 critical, 18 high severity</li>
<li class="">Validated each claim with <strong>independent SQL queries</strong> — 21 confirmed exactly, 12 adjusted with corrected numbers</li>
<li class="">Discovered a <strong>$5.8M revenue leak</strong> from cancellations, a <strong>28.8% cancellation spike</strong> driven by same-day bookings, and an <strong>80% host onboarding failure</strong> rate</li>
</ul>
<p>No one told it what to look for. No one wrote a single query. The agent figured it all out.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-setup-databricks--decisionbox-in-5-minutes">The Setup: Databricks + DecisionBox in 5 Minutes<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#the-setup-databricks--decisionbox-in-5-minutes" class="hash-link" aria-label="Direct link to The Setup: Databricks + DecisionBox in 5 Minutes" title="Direct link to The Setup: Databricks + DecisionBox in 5 Minutes" translate="no">​</a></h2>
<p>DecisionBox connects directly to your Databricks SQL Warehouse. The setup is three fields:</p>





















<table><thead><tr><th style="text-align:left">Setting</th><th style="text-align:left">Value</th></tr></thead><tbody><tr><td style="text-align:left"><strong>Host</strong></td><td style="text-align:left"><code>dbc-xxxxx.cloud.databricks.com</code></td></tr><tr><td style="text-align:left"><strong>HTTP Path</strong></td><td style="text-align:left"><code>/sql/1.0/warehouses/xxxxx</code></td></tr><tr><td style="text-align:left"><strong>Auth</strong></td><td style="text-align:left">Personal Access Token</td></tr></tbody></table>
<p>We pointed it at the <code>samples.wanderbricks</code> schema — a vacation rental marketplace dataset with 11 tables covering users, hosts, properties, destinations, bookings, payments, reviews, clickstream, page views, support logs, and booking updates.</p>
<p><img decoding="async" loading="lazy" alt="project_configuration_edited" src="https://decisionbox.io/assets/images/project_configuration_edited-d384f76637fced08fec42a9b6fe570a5.png" width="1424" height="1020" class="img_ev3q"></p>
<p>Then we configured the AI model (Claude Opus via Vertex AI) and hit <strong>Run Discovery</strong>.</p>
<p>That's it. No metric definitions. No dashboard templates. No SQL.</p>
<p><img decoding="async" loading="lazy" alt="discovery_started_edited" src="https://decisionbox.io/assets/images/discovery_started_edited-2ca70d51f4f6d8c92b6218ba581d0578.png" width="1385" height="670" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-happened-next-the-ai-agent-at-work">What Happened Next: The AI Agent at Work<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#what-happened-next-the-ai-agent-at-work" class="hash-link" aria-label="Direct link to What Happened Next: The AI Agent at Work" title="Direct link to What Happened Next: The AI Agent at Work" translate="no">​</a></h2>
<p>DecisionBox's discovery agent is a Go binary that connects to your warehouse and runs an autonomous multi-phase analysis. Here's what it did with the WanderBricks dataset:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="phase-1-exploration-92-queries">Phase 1: Exploration (92 queries)<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#phase-1-exploration-92-queries" class="hash-link" aria-label="Direct link to Phase 1: Exploration (92 queries)" title="Direct link to Phase 1: Exploration (92 queries)" translate="no">​</a></h3>
<p>The agent started by sampling every table (<code>SELECT * FROM ... LIMIT 5</code>) to understand the schema. Then it got to work — progressively writing more complex queries to build a complete picture of the business:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">-- Step 3: Baseline metrics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">MIN</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">created_at</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> earliest_booking</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">MAX</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">created_at</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> latest_booking</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> total_bookings</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">DISTINCT</span><span class="token plain"> user_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> total_guests</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">DISTINCT</span><span class="token plain"> property_id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> total_properties</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">AVG</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">total_amount</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> avg_booking_value</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token identifier">wanderbricks.bookings</span><span class="token identifier punctuation" style="color:#393A34">`</span><br></span></code></pre></div></div>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">-- Step 22: Spotting the July cancellation spike</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> DATE_TRUNC</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">created_at</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">MONTH</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> booking_month</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> total_bookings</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">ROUND</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">status</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cancelled'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">             </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100.0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> cancel_rate</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token identifier">wanderbricks.bookings</span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> created_at </span><span class="token operator" style="color:#393A34">&gt;=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'2025-04-01'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GROUP</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><br></span></code></pre></div></div>
<p>When it saw the July cancellation rate spike to 28.8% (up from ~20%), it didn't stop there. It immediately drilled into <strong>why</strong> — investigating lead times, same-day bookings, destination breakdowns, and property type correlations. All autonomously.</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">-- Step 25: Investigating cancellation timing</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> TIMESTAMP_DIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">check_in</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">updated_at</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DAY</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'30+ days before'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> TIMESTAMP_DIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">check_in</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">updated_at</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DAY</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'7-30 days before'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> TIMESTAMP_DIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">check_in</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">updated_at</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">DAY</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'1-7 days before'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Same day'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token keyword" style="color:#00009f">END</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> cancel_timing</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> cancellations</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token identifier">wanderbricks.bookings</span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">status</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cancelled'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">AND</span><span class="token plain"> created_at </span><span class="token operator" style="color:#393A34">&gt;=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'2025-06-01'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GROUP</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><br></span></code></pre></div></div>
<p><strong>Finding</strong>: 71% of cancellations happen the same day or day before check-in. The agent flagged this as "devastating for hosts."</p>
<p><img decoding="async" loading="lazy" alt="exploration_step" src="https://decisionbox.io/assets/images/exploration_step-3ce511594ed555efc79e40ec8eca5cc7.png" width="1155" height="670" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="phase-2-analysis-74-steps">Phase 2: Analysis (74 steps)<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#phase-2-analysis-74-steps" class="hash-link" aria-label="Direct link to Phase 2: Analysis (74 steps)" title="Direct link to Phase 2: Analysis (74 steps)" translate="no">​</a></h3>
<p>The agent took everything it learned during exploration and produced structured insights across 7 business areas:</p>





















































<table><thead><tr><th style="text-align:left">Analysis Area</th><th style="text-align:left">Insights</th><th style="text-align:left">Critical</th><th style="text-align:left">Confirmed/Adjusted</th></tr></thead><tbody><tr><td style="text-align:left">Booking Conversion</td><td style="text-align:left">10</td><td style="text-align:left">4</td><td style="text-align:left">6</td></tr><tr><td style="text-align:left">Revenue</td><td style="text-align:left">10</td><td style="text-align:left">4</td><td style="text-align:left">5</td></tr><tr><td style="text-align:left">Guest Retention</td><td style="text-align:left">8</td><td style="text-align:left">1</td><td style="text-align:left">5</td></tr><tr><td style="text-align:left">Cancellation</td><td style="text-align:left">8</td><td style="text-align:left">2</td><td style="text-align:left">5</td></tr><tr><td style="text-align:left">Destination</td><td style="text-align:left">9</td><td style="text-align:left">2</td><td style="text-align:left">1</td></tr><tr><td style="text-align:left">Host Performance</td><td style="text-align:left">11</td><td style="text-align:left">5</td><td style="text-align:left">7</td></tr><tr><td style="text-align:left">Guest Satisfaction</td><td style="text-align:left">11</td><td style="text-align:left">3</td><td style="text-align:left">4</td></tr></tbody></table>
<p>Each insight includes severity, affected count, confidence score, risk score, specific metrics, and supporting indicators — all derived from the data, not predefined templates.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="phase-3-validation-67-steps">Phase 3: Validation (67 steps)<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#phase-3-validation-67-steps" class="hash-link" aria-label="Direct link to Phase 3: Validation (67 steps)" title="Direct link to Phase 3: Validation (67 steps)" translate="no">​</a></h3>
<p>This is where DecisionBox differentiates itself from "AI that generates reports." <strong>Every single insight gets validated.</strong> The agent writes a fresh, independent SQL query — different from the one that discovered the finding — and runs it against the warehouse to verify the numbers.</p>
<p>For example, the "July 2025 Cancellation Spike" insight was validated with this query:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> total_july_bookings</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">status</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cancelled'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> cancelled_bookings</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">ROUND</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">status</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cancelled'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100.0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> cancellation_rate_pct</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">-- Same-day bookings</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> DATEDIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">check_in_date</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> booking_date</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> same_day_bookings</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">-- Same-day cancellation rate</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">ROUND</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> DATEDIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">check_in_date</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> booking_date</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token operator" style="color:#393A34">AND</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">status</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cancelled'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">NULLIF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">SUM</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">CASE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">WHEN</span><span class="token plain"> DATEDIFF</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">check_in_date</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> booking_date</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                     </span><span class="token keyword" style="color:#00009f">THEN</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">ELSE</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">END</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">AS</span><span class="token plain"> same_day_cancel_rate_pct</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token identifier">wanderbricks.bookings</span><span class="token identifier punctuation" style="color:#393A34">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">WHERE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">YEAR</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">booking_date</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2025</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">AND</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">MONTH</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">booking_date</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><br></span></code></pre></div></div>
<p><strong>Result</strong>: Confirmed. 2,979 cancelled bookings. 28.8% cancellation rate. Numbers match exactly.</p>
<p>Of the 67 insights:</p>
<ul>
<li class=""><strong>21 confirmed</strong> — numbers matched exactly</li>
<li class=""><strong>12 adjusted</strong> — the insight was directionally correct but the validation query found slightly different numbers (the agent updates the insight with the corrected count)</li>
<li class=""><strong>1 rejected</strong> — the claim didn't hold up under validation and was flagged</li>
</ul>
<p><img decoding="async" loading="lazy" alt="insights" src="https://decisionbox.io/assets/images/insights-5e8769e0d4e4cecb4b6aadf14968cfd1.png" width="1385" height="670" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-5-most-impactful-discoveries">The 5 Most Impactful Discoveries<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#the-5-most-impactful-discoveries" class="hash-link" aria-label="Direct link to The 5 Most Impactful Discoveries" title="Direct link to The 5 Most Impactful Discoveries" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-58m-revenue-leakage-from-cancellations-22-of-gross">1. $5.8M Revenue Leakage from Cancellations (22% of Gross)<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#1-58m-revenue-leakage-from-cancellations-22-of-gross" class="hash-link" aria-label="Direct link to 1. $5.8M Revenue Leakage from Cancellations (22% of Gross)" title="Direct link to 1. $5.8M Revenue Leakage from Cancellations (22% of Gross)" translate="no">​</a></h3>
<p>In 2025, 10,492 cancelled bookings represented $5.81M in lost revenue — 22% of the $26.4M total. But the real story was <strong>why</strong>: same-day bookings surged from 3% of volume in April to 26.4% in July, and these carry a 40.8% cancellation rate.</p>
<p>The agent traced the full causal chain:</p>
<ul>
<li class="">Average lead time collapsed from 52.6 days (April) → 5.9 days (July)</li>
<li class="">71% of cancellations happen same day or day before check-in</li>
<li class="">Refund rate climbed from 7% to 9.27% in July ($624K refunded)</li>
<li class="">Realized revenue (completed + confirmed) is only $9.1M of $26.4M gross — a 34.4% realization rate</li>
</ul>
<p><strong>Severity</strong>: Critical | <strong>Confidence</strong>: 95% | <strong>Validation</strong>: Confirmed</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-80-of-hosts-never-list-a-property">2. 80% of Hosts Never List a Property<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#2-80-of-hosts-never-list-a-property" class="hash-link" aria-label="Direct link to 2. 80% of Hosts Never List a Property" title="Direct link to 2. 80% of Hosts Never List a Property" translate="no">​</a></h3>
<p>14,273 out of 17,764 registered hosts (80.3%) have zero properties on the platform. The host activation rate has been stuck between 17-21% across every quarterly cohort since Q1 2023 — no improvement over 2.5 years.</p>
<p>The agent dug deeper and found the geographic driver: India (6,564 hosts, 2.1% activation) and China (6,330 hosts, 3.8% activation) represent 72.6% of all hosts but only 2.96% of them have listings. Meanwhile, hosts from destination countries show dramatically higher activation — Thailand at 88.7%, France at 82.9%, Italy at 82.0%.</p>
<p><strong>Severity</strong>: Critical | <strong>Confidence</strong>: 95% | <strong>Validation</strong>: Adjusted (verified 15,567)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-437-of-bookings-stuck-in-pending--never-confirmed">3. 43.7% of Bookings Stuck in "Pending" — Never Confirmed<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#3-437-of-bookings-stuck-in-pending--never-confirmed" class="hash-link" aria-label="Direct link to 3. 43.7% of Bookings Stuck in &quot;Pending&quot; — Never Confirmed" title="Direct link to 3. 43.7% of Bookings Stuck in &quot;Pending&quot; — Never Confirmed" translate="no">​</a></h3>
<p>Of 72,244 total bookings, 31,575 (43.7%) remain in pending status. Only 10.3% ever reach "completed." The agent calculated that realized revenue is only $9.1M out of $26.4M in gross booking value — 65.6% of booking value is unrealized.</p>
<p><strong>Severity</strong>: Critical | <strong>Confidence</strong>: 92% | <strong>Validation</strong>: Confirmed (31,575 exactly)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-guest-satisfaction-crisis-301-average-vs-45-target">4. Guest Satisfaction Crisis: 3.01 Average vs 4.5 Target<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#4-guest-satisfaction-crisis-301-average-vs-45-target" class="hash-link" aria-label="Direct link to 4. Guest Satisfaction Crisis: 3.01 Average vs 4.5 Target" title="Direct link to 4. Guest Satisfaction Crisis: 3.01 Average vs 4.5 Target" translate="no">​</a></h3>
<p>The platform-wide average review rating is 3.01 — 33% below the 4.5 target. What makes this remarkable is how <strong>uniformly bad</strong> it is: the agent checked every dimension and found the same 3.0 rating across all destinations, all property types, all price tiers, and all time periods.</p>
<p>The agent also connected this to retention: guests with 1-2 star average reviews have a 7.35% repeat rate vs 25.6% for those with 3-4 star averages.</p>
<p><strong>Severity</strong>: Critical | <strong>Confidence</strong>: 97% | <strong>Validation</strong>: Confirmed (99,185 reviews)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-184-occupancy-rate-vs-65-target">5. 1.84% Occupancy Rate vs 65% Target<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#5-184-occupancy-rate-vs-65-target" class="hash-link" aria-label="Direct link to 5. 1.84% Occupancy Rate vs 65% Target" title="Direct link to 5. 1.84% Occupancy Rate vs 65% Target" translate="no">​</a></h3>
<p>Across 10,758 properties over 12 months, only 72,200 nights were booked from 3.93M available — 1.84% occupancy. The average property gets 6.7 booked nights per year. The platform has approximately 35x more supply than demand.</p>
<p><strong>Severity</strong>: Critical | <strong>Confidence</strong>: 90% | <strong>Validation</strong>: Adjusted (18,163 properties counted)</p>
<p><img decoding="async" loading="lazy" alt="insights_detail" src="https://decisionbox.io/assets/images/insights_detail-0b33d532b6cc079e79e2c5bf44a2055a.png" width="1385" height="670" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="validation" src="https://decisionbox.io/assets/images/validation-272f689d481c8129882815ae9ae806e2.png" width="1155" height="230" class="img_ev3q"></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-this-matters-for-databricks-users">Why This Matters for Databricks Users<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#why-this-matters-for-databricks-users" class="hash-link" aria-label="Direct link to Why This Matters for Databricks Users" title="Direct link to Why This Matters for Databricks Users" translate="no">​</a></h2>
<p>If you're using Databricks, your data warehouse already has the answers to your most important business questions. The problem is that finding them requires:</p>
<ol>
<li class=""><strong>Knowing what to ask</strong> — an analyst needs to hypothesize "maybe same-day bookings are driving cancellations" before writing the query</li>
<li class=""><strong>Writing the SQL</strong> — Databricks SQL is powerful but someone has to write it</li>
<li class=""><strong>Connecting the dots</strong> — the cancellation spike, the lead time collapse, the refund rate increase, and the host activation failure are all related, but different teams would typically investigate them in isolation</li>
<li class=""><strong>Validating the findings</strong> — dashboards show numbers but don't verify whether those numbers actually support the conclusion</li>
</ol>
<p>DecisionBox does all four autonomously. It connects directly to your Databricks SQL Warehouse, explores your data without any guidance, and comes back with validated, actionable insights.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-agent-did-that-a-dashboard-cant">What the Agent Did That a Dashboard Can't<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#what-the-agent-did-that-a-dashboard-cant" class="hash-link" aria-label="Direct link to What the Agent Did That a Dashboard Can't" title="Direct link to What the Agent Did That a Dashboard Can't" translate="no">​</a></h3>
<p>The agent's reasoning chain during exploration is what sets this apart. When it saw a 28.8% cancellation rate in July, it didn't just flag the number — it:</p>
<ol>
<li class="">Compared July to prior months to confirm it was anomalous</li>
<li class="">Checked if the spike was isolated to specific property types (it wasn't)</li>
<li class="">Investigated booking lead times and discovered the same-day surge</li>
<li class="">Calculated the cancellation rate by lead time bucket to prove causation</li>
<li class="">Cross-referenced with refund data to quantify the financial impact</li>
<li class="">Checked if host ratings correlated with cancellations (they didn't)</li>
<li class="">Looked at destination-level patterns to see if it was geographic (Byron Bay 37.2%, London 34.5%)</li>
</ol>
<p>That's 7 layers of investigation, each informed by the previous one. A dashboard would show you the 28.8% number. The agent tells you <strong>why</strong> it happened.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-numbers">The Numbers<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#the-numbers" class="hash-link" aria-label="Direct link to The Numbers" title="Direct link to The Numbers" translate="no">​</a></h2>

















































<table><thead><tr><th style="text-align:left">Metric</th><th style="text-align:left">Value</th></tr></thead><tbody><tr><td style="text-align:left"><strong>Setup time</strong></td><td style="text-align:left">~5 minutes</td></tr><tr><td style="text-align:left"><strong>Discovery duration</strong></td><td style="text-align:left">76 minutes</td></tr><tr><td style="text-align:left"><strong>SQL queries executed</strong></td><td style="text-align:left">233 (92 exploration + 74 analysis + 67 validation)</td></tr><tr><td style="text-align:left"><strong>Query success rate</strong></td><td style="text-align:left">96.7% (the agent self-corrected Databricks SQL syntax errors)</td></tr><tr><td style="text-align:left"><strong>Tables analyzed</strong></td><td style="text-align:left">11</td></tr><tr><td style="text-align:left"><strong>Insights generated</strong></td><td style="text-align:left">67</td></tr><tr><td style="text-align:left"><strong>Critical insights</strong></td><td style="text-align:left">17</td></tr><tr><td style="text-align:left"><strong>Validated (confirmed + adjusted)</strong></td><td style="text-align:left">33 of 67 (49%)</td></tr><tr><td style="text-align:left"><strong>Analysis areas covered</strong></td><td style="text-align:left">7 (booking conversion, revenue, guest retention, cancellation, destination, host performance, guest satisfaction)</td></tr><tr><td style="text-align:left"><strong>AI model used</strong></td><td style="text-align:left">Claude Opus (via Vertex AI)</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-yourself">Try It Yourself<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#try-it-yourself" class="hash-link" aria-label="Direct link to Try It Yourself" title="Direct link to Try It Yourself" translate="no">​</a></h2>
<p>DecisionBox is open source (AGPL v3) and available on <a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">GitHub</a>.</p>
<p>To run the same analysis on your Databricks warehouse:</p>
<ol>
<li class=""><strong>Deploy</strong> — <code>docker compose up</code> for local, or use our <a href="https://github.com/decisionbox-io/decisionbox-platform/tree/main/helm-charts" target="_blank" rel="noopener noreferrer" class="">Helm charts</a> for Kubernetes</li>
<li class=""><strong>Connect</strong> — Add your Databricks SQL Warehouse host, HTTP path, and PAT</li>
<li class=""><strong>Discover</strong> — Hit Run Discovery and let the agent work</li>
</ol>
<p>The agent works with any Databricks catalog and schema. It adapts to your data — no domain-specific configuration required for the general discovery mode.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="supported-warehouses">Supported Warehouses<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#supported-warehouses" class="hash-link" aria-label="Direct link to Supported Warehouses" title="Direct link to Supported Warehouses" translate="no">​</a></h3>
<p>DecisionBox isn't limited to Databricks. It also connects to:</p>
<ul>
<li class=""><strong>Snowflake</strong> — Username/password or key pair auth</li>
<li class=""><strong>BigQuery</strong> — ADC or service account key</li>
<li class=""><strong>Redshift</strong> — IAM role, access keys, or assume role</li>
<li class=""><strong>PostgreSQL</strong> — Standard connection</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's Next<a href="https://decisionbox.io/blog/databricks-revenue-leakage-discovery#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>This was a general discovery run — no domain pack, no pre-defined analysis areas. DecisionBox also supports <strong>domain packs</strong> that bring industry-specific knowledge to the analysis. Our gaming and social domain packs, for example, know about retention cohorts, monetization funnels, and engagement metrics specific to those industries.</p>
<p>We're building domain packs for travel, e-commerce, SaaS, and fintech next. If you're interested in contributing or have a dataset you'd like to see analyzed, <a href="https://github.com/decisionbox-io/decisionbox-platform/discussions" target="_blank" rel="noopener noreferrer" class="">open a discussion</a> on GitHub.</p>
<hr>
<p><em>DecisionBox is an open-source AI-powered data discovery platform. It connects to your data warehouse, runs autonomous AI agents, and surfaces validated insights — no SQL, no dashboards, no manual analysis. <a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">Star us on GitHub</a></em></p>]]></content:encoded>
            <category>databricks</category>
            <category>case-study</category>
            <category>revenue</category>
            <category>ai</category>
        </item>
        <item>
            <title><![CDATA[Your First AI Discovery: E-Commerce Dataset on Redshift]]></title>
            <link>https://decisionbox.io/blog/first-discovery-ecommerce-tutorial</link>
            <guid>https://decisionbox.io/blog/first-discovery-ecommerce-tutorial</guid>
            <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We're excited to introduce DecisionBox — an open-source platform that connects to your data warehouse, runs autonomous AI agents, and delivers validated insights and actionable recommendations. No queries to write. No dashboards to build. No questions to ask. Just point it at your data and let it discover what matters.]]></description>
            <content:encoded><![CDATA[<p>We're excited to introduce DecisionBox — an open-source platform that connects to your data warehouse, runs autonomous AI agents, and delivers validated insights and actionable recommendations. No queries to write. No dashboards to build. No questions to ask. Just point it at your data and let it discover what matters.</p>
<p>Before jumping into a hands-on tutorial, let's talk about what DecisionBox is and why we built it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem-your-data-knows-more-than-youre-asking">The Problem: Your Data Knows More Than You're Asking<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#the-problem-your-data-knows-more-than-youre-asking" class="hash-link" aria-label="Direct link to The Problem: Your Data Knows More Than You're Asking" title="Direct link to The Problem: Your Data Knows More Than You're Asking" translate="no">​</a></h2>
<p>Every data team has the same bottleneck: insights only come from questions someone thought to ask. A PM has a hunch, an analyst writes queries, iterates, reports back. It's serial and slow. And the biggest problem? It only finds answers to questions someone thought to ask.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-decisionbox-does">What DecisionBox Does<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#what-decisionbox-does" class="hash-link" aria-label="Direct link to What DecisionBox Does" title="Direct link to What DecisionBox Does" translate="no">​</a></h2>
<p>DecisionBox flips this process. Instead of humans writing queries to answer specific questions, an AI agent autonomously explores your data and tells you what it found.</p>
<p>Here's how it works — three steps:</p>
<p><strong>Connect</strong> your warehouse — BigQuery, Redshift, Snowflake, Databricks, PostgreSQL. No data transfer, no schema migration. Your data stays where it is.</p>
<p><strong>Discover</strong> — The agent discovers your schema, writes SQL queries, executes them, and iterates based on results. Dozens of queries per run, each building on the last. Not a chatbot — an autonomous investigator.</p>
<p><strong>Act</strong> on what it finds — <strong>Insights</strong> with severity, affected counts, and confidence scores. <strong>Recommendations</strong> with expected impact, target segments, and implementation steps.</p>
<p><strong>Validate</strong> — This is where DecisionBox differs from other AI analytics tools. Any LLM can generate plausible-sounding findings. DecisionBox verifies them. Every insight goes through two independent validation passes against your actual data: one catches inflated numbers, the other generates entirely new SQL queries to confirm each finding from a different angle. Insights come back as confirmed, adjusted with corrected numbers, or rejected. Every query and reasoning step is fully auditable. No black box.</p>
<p>The platform is industry-agnostic, but <strong>domain packs</strong> give the agent specialized expertise per industry (E-commerce, Gaming, Social Networks today — open source means anyone can add more). It's licensed under AGPL v3, deploys on your infrastructure, and works with your choice of LLM provider — Claude, OpenAI, Azure AI Foundry, Vertex AI, Bedrock, or local models via Ollama.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lets-see-it-in-action">Let's See It in Action<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#lets-see-it-in-action" class="hash-link" aria-label="Direct link to Let's See It in Action" title="Direct link to Let's See It in Action" translate="no">​</a></h2>
<p>The best way to understand DecisionBox is to use it. In the rest of this post, I'll walk you through a complete end-to-end tutorial:</p>
<ol>
<li class="">Set up DecisionBox locally (3 commands, 5 minutes)</li>
<li class="">Import a real e-commerce dataset from Kaggle into Amazon Redshift Serverless</li>
<li class="">Create a project with the E-commerce domain pack</li>
<li class="">Run a discovery and explore the results</li>
</ol>
<p>By the end, you'll have a completed AI discovery run with real insights from real data — and a clear picture of how DecisionBox works.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-youll-need">What You'll Need<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#what-youll-need" class="hash-link" aria-label="Direct link to What You'll Need" title="Direct link to What You'll Need" translate="no">​</a></h3>
<ul>
<li class=""><strong>Docker Desktop</strong> (Docker 24+ with Compose v2+)</li>
<li class=""><strong>An AWS account</strong> with permissions to create Redshift Serverless resources and S3 buckets</li>
<li class=""><strong>An Anthropic API key</strong> for Claude (<a href="https://console.anthropic.com/" target="_blank" rel="noopener noreferrer" class="">console.anthropic.com</a>)</li>
<li class=""><strong>A Kaggle account</strong> to download the dataset</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-1-set-up-decisionbox-locally">Step 1: Set Up DecisionBox Locally<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-1-set-up-decisionbox-locally" class="hash-link" aria-label="Direct link to Step 1: Set Up DecisionBox Locally" title="Direct link to Step 1: Set Up DecisionBox Locally" translate="no">​</a></h2>
<p>DecisionBox runs as three services — an API server, a dashboard, and MongoDB — all orchestrated with Docker Compose.</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/decisionbox-io/decisionbox-platform.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> decisionbox-platform</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose up </span><span class="token parameter variable" style="color:#36acaa">-d</span><br></span></code></pre></div></div>
<p>That's it. After about 10 seconds, open <a href="http://localhost:3000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000</a> and you should see the DecisionBox dashboard.</p>
<p><img decoding="async" loading="lazy" alt="DecisionBox Dashboard" src="https://decisionbox.io/assets/images/screenshot-1-eed83b916aadc200860a3fc0b5b4acb7.png" width="2136" height="1491" class="img_ev3q"></p>
<p>You can verify everything is healthy:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> http://localhost:8080/health/ready</span><br></span></code></pre></div></div>
<p>You should get a <code>200 OK</code> response.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-2-get-the-dataset">Step 2: Get the Dataset<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-2-get-the-dataset" class="hash-link" aria-label="Direct link to Step 2: Get the Dataset" title="Direct link to Step 2: Get the Dataset" translate="no">​</a></h2>
<p>We'll use the <a href="https://www.kaggle.com/datasets/mkechinov/ecommerce-behavior-data-from-multi-category-store" target="_blank" rel="noopener noreferrer" class="">eCommerce Behavior Data from Multi Category Store</a> dataset from Kaggle, provided by <a href="https://rees46.com/" target="_blank" rel="noopener noreferrer" class="">REES46 Marketing Platform</a> via their Open CDP project. It contains real behavioral data from a large multi-category online store (similar to Amazon or eBay).</p>
<p>Download both CSV files:</p>
<ul>
<li class=""><code>2019-Oct.csv</code> (~5.6GB, ~42M events)</li>
<li class=""><code>2019-Nov.csv</code> (~9.5GB, ~67M events)</li>
</ul>
<p>Each row is a single event with these columns:</p>













































<table><thead><tr><th style="text-align:left">Column</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><code>event_time</code></td><td style="text-align:left">When the event happened (UTC)</td></tr><tr><td style="text-align:left"><code>event_type</code></td><td style="text-align:left"><code>view</code>, <code>cart</code>, <code>remove_from_cart</code>, or <code>purchase</code></td></tr><tr><td style="text-align:left"><code>product_id</code></td><td style="text-align:left">Unique product identifier</td></tr><tr><td style="text-align:left"><code>category_id</code></td><td style="text-align:left">Product's category ID</td></tr><tr><td style="text-align:left"><code>category_code</code></td><td style="text-align:left">Human-readable category (e.g., <code>electronics.smartphone</code>)</td></tr><tr><td style="text-align:left"><code>brand</code></td><td style="text-align:left">Brand name (may be null)</td></tr><tr><td style="text-align:left"><code>price</code></td><td style="text-align:left">Product price in USD</td></tr><tr><td style="text-align:left"><code>user_id</code></td><td style="text-align:left">Permanent user identifier</td></tr><tr><td style="text-align:left"><code>user_session</code></td><td style="text-align:left">Session identifier</td></tr></tbody></table>
<p>This is a rich dataset for e-commerce analysis — it has the full purchase funnel (view → cart → purchase), product categorization, pricing, and session-level behavior.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-3-set-up-amazon-redshift-serverless">Step 3: Set Up Amazon Redshift Serverless<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-3-set-up-amazon-redshift-serverless" class="hash-link" aria-label="Direct link to Step 3: Set Up Amazon Redshift Serverless" title="Direct link to Step 3: Set Up Amazon Redshift Serverless" translate="no">​</a></h2>
<p>We need somewhere to put this data so DecisionBox can query it. We'll use Amazon Redshift Serverless — it's pay-per-query, requires no cluster management, and takes a few minutes to set up.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="31-create-a-redshift-serverless-endpoint">3.1 Create a Redshift Serverless Endpoint<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#31-create-a-redshift-serverless-endpoint" class="hash-link" aria-label="Direct link to 3.1 Create a Redshift Serverless Endpoint" title="Direct link to 3.1 Create a Redshift Serverless Endpoint" translate="no">​</a></h3>
<ol>
<li class="">Open the <a href="https://console.aws.amazon.com/redshiftv2/" target="_blank" rel="noopener noreferrer" class="">Amazon Redshift console</a> and select <strong>Serverless dashboard</strong> from the left menu</li>
<li class="">Click <strong>Create workgroup</strong></li>
<li class="">Give your workgroup a name (e.g., <code>decisionbox-tutorial</code>)</li>
<li class="">Under <strong>Namespace</strong>, create a new namespace (e.g., <code>decisionbox-tutorial-ns</code>)</li>
<li class="">Set an admin username and password — you'll need these later</li>
<li class="">Keep the default settings for everything else and click <strong>Create</strong></li>
<li class="">Wait 2-3 minutes for the workgroup to become <strong>Available</strong></li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="32-upload-csvs-to-s3">3.2 Upload CSVs to S3<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#32-upload-csvs-to-s3" class="hash-link" aria-label="Direct link to 3.2 Upload CSVs to S3" title="Direct link to 3.2 Upload CSVs to S3" translate="no">​</a></h3>
<p>Redshift loads data from S3, so we need to upload our CSVs first.</p>
<ol>
<li class="">Open the <a href="https://console.aws.amazon.com/s3/" target="_blank" rel="noopener noreferrer" class="">S3 console</a> and create a new bucket (e.g., <code>decisionbox-tutorial-data</code>) in the <strong>same region</strong> as your Redshift workgroup</li>
<li class="">Upload both CSV files to the bucket:
<ul>
<li class=""><code>s3://decisionbox-tutorial-data/2019-Oct.csv</code></li>
<li class=""><code>s3://decisionbox-tutorial-data/2019-Nov.csv</code></li>
</ul>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="33-set-up-iam-permissions">3.3 Set Up IAM Permissions<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#33-set-up-iam-permissions" class="hash-link" aria-label="Direct link to 3.3 Set Up IAM Permissions" title="Direct link to 3.3 Set Up IAM Permissions" translate="no">​</a></h3>
<p>Your Redshift namespace needs an IAM role that can read from S3:</p>
<ol>
<li class="">Go to <strong>IAM</strong> → <strong>Roles</strong> → <strong>Create role</strong></li>
<li class="">Select <strong>Redshift - Customizable</strong> as the trusted entity</li>
<li class="">Attach the <strong>AmazonS3ReadOnlyAccess</strong> policy</li>
<li class="">Name it (e.g., <code>redshift-s3-read-role</code>) and create it</li>
<li class="">Back in the Redshift Serverless console, go to your <strong>Namespace</strong> → <strong>Security and encryption</strong> → <strong>Manage IAM roles</strong></li>
<li class="">Associate the role you just created</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="34-create-the-table-and-load-data">3.4 Create the Table and Load Data<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#34-create-the-table-and-load-data" class="hash-link" aria-label="Direct link to 3.4 Create the Table and Load Data" title="Direct link to 3.4 Create the Table and Load Data" translate="no">​</a></h3>
<p>Open the <strong>Redshift Query Editor v2</strong> from the Serverless console (or use any SQL client) and run:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">CREATE</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">TABLE</span><span class="token plain"> ecommerce_events </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    event_time      </span><span class="token keyword" style="color:#00009f">TIMESTAMP</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    event_type      </span><span class="token keyword" style="color:#00009f">VARCHAR</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    product_id      </span><span class="token keyword" style="color:#00009f">BIGINT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    category_id     </span><span class="token keyword" style="color:#00009f">BIGINT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    category_code   </span><span class="token keyword" style="color:#00009f">VARCHAR</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">256</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    brand           </span><span class="token keyword" style="color:#00009f">VARCHAR</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">256</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    price           </span><span class="token keyword" style="color:#00009f">DECIMAL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    user_id         </span><span class="token keyword" style="color:#00009f">BIGINT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    user_session    </span><span class="token keyword" style="color:#00009f">VARCHAR</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">64</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Now load both CSV files:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">COPY ecommerce_events</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'s3://decisionbox-tutorial-data/2019-Oct.csv'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">IAM_ROLE </span><span class="token string" style="color:#e3116c">'arn:aws:iam::&lt;YOUR_ACCOUNT_ID&gt;:role/redshift-s3-read-role'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CSV</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">IGNOREHEADER </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TIMEFORMAT </span><span class="token string" style="color:#e3116c">'auto'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">REGION </span><span class="token string" style="color:#e3116c">'us-east-1'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">COPY ecommerce_events</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'s3://decisionbox-tutorial-data/2019-Nov.csv'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">IAM_ROLE </span><span class="token string" style="color:#e3116c">'arn:aws:iam::&lt;YOUR_ACCOUNT_ID&gt;:role/redshift-s3-read-role'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CSV</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">IGNOREHEADER </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TIMEFORMAT </span><span class="token string" style="color:#e3116c">'auto'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">REGION </span><span class="token string" style="color:#e3116c">'us-east-1'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Replace <code>&lt;YOUR_ACCOUNT_ID&gt;</code> with your AWS account ID and adjust the region if needed.</p>
<p>The load takes roughly 5-10 minutes per file. Once done, verify:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> ecommerce_events</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">-- Should return ~109M rows (42M Oct + 67M Nov)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">SELECT</span><span class="token plain"> event_type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">COUNT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> cnt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">FROM</span><span class="token plain"> ecommerce_events</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">GROUP</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> event_type</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">ORDER</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">BY</span><span class="token plain"> cnt </span><span class="token keyword" style="color:#00009f">DESC</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="35-configure-network-access">3.5 Configure Network Access<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#35-configure-network-access" class="hash-link" aria-label="Direct link to 3.5 Configure Network Access" title="Direct link to 3.5 Configure Network Access" translate="no">​</a></h3>
<p>For DecisionBox running locally to reach your Redshift endpoint, you need to make it publicly accessible:</p>
<ol>
<li class="">In the Redshift Serverless console, go to your <strong>Workgroup</strong> → <strong>Data access</strong> → <strong>Network and security</strong></li>
<li class="">Turn on <strong>Publicly accessible</strong></li>
<li class="">Make sure the associated security group allows inbound traffic on port <strong>5439</strong> from your IP address</li>
</ol>
<p><strong>Note</strong>: For a production setup, you'd use VPC peering or a private endpoint. For this tutorial, public access is fine — just restrict the security group to your IP.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-4-create-a-project-in-decisionbox">Step 4: Create a Project in DecisionBox<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-4-create-a-project-in-decisionbox" class="hash-link" aria-label="Direct link to Step 4: Create a Project in DecisionBox" title="Direct link to Step 4: Create a Project in DecisionBox" translate="no">​</a></h2>
<p>Now for the fun part. Go back to the DecisionBox dashboard at <a href="http://localhost:3000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000</a> and click <strong>Create Project</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="41-basic-configuration">4.1 Basic Configuration<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#41-basic-configuration" class="hash-link" aria-label="Direct link to 4.1 Basic Configuration" title="Direct link to 4.1 Basic Configuration" translate="no">​</a></h3>
<ul>
<li class=""><strong>Name</strong>: Give it something descriptive, like "E-Commerce Kaggle — Multi-Category Store"</li>
<li class=""><strong>Domain</strong>: Select <strong>Ecommerce</strong></li>
<li class=""><strong>Category</strong>: Select <strong>Multi-Category Store</strong></li>
</ul>
<p>As we covered earlier, the domain and category determine which domain pack the AI agent uses. The E-commerce / Multi-Category pack includes five analysis areas:</p>
<ul>
<li class=""><strong>Conversion Funnel</strong> — View-to-cart-to-purchase rates, cart abandonment patterns</li>
<li class=""><strong>Revenue &amp; Pricing</strong> — Revenue trends, average order value, pricing dynamics</li>
<li class=""><strong>Customer Retention</strong> — Repeat purchase behavior, customer lifecycle stages</li>
<li class=""><strong>Product &amp; Category Performance</strong> — Category conversion gaps, cross-category affinity, brand performance</li>
<li class=""><strong>Session &amp; Browsing Behavior</strong> — Browse patterns, session depth, discovery-to-action paths</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Project configuration with E-commerce domain and Multi-Category Store category" src="https://decisionbox.io/assets/images/screenshot-2-25a372b46e0dab6a710a8799bc5b201a.png" width="2374" height="1760" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="42-data-warehouse-configuration">4.2 Data Warehouse Configuration<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#42-data-warehouse-configuration" class="hash-link" aria-label="Direct link to 4.2 Data Warehouse Configuration" title="Direct link to 4.2 Data Warehouse Configuration" translate="no">​</a></h3>
<ul>
<li class=""><strong>Provider</strong>: Select <strong>Amazon Redshift</strong></li>
<li class=""><strong>Workgroup Name</strong>: <code>decisionbox-tutorial</code> (or whatever you named it)</li>
<li class=""><strong>Database Name</strong>: <code>dev</code> (the default Redshift database)</li>
<li class=""><strong>Region</strong>: Your AWS region (e.g., <code>us-east-1</code>)</li>
<li class=""><strong>Authentication</strong>: Select <strong>Access Keys</strong> and enter the admin credentials you set up in Step 3.1</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Redshift warehouse configuration" src="https://decisionbox.io/assets/images/screenshot-3-55d856f933dae067fe1080cee8856c4a.png" width="2394" height="1908" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="43-ai-provider-configuration">4.3 AI Provider Configuration<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#43-ai-provider-configuration" class="hash-link" aria-label="Direct link to 4.3 AI Provider Configuration" title="Direct link to 4.3 AI Provider Configuration" translate="no">​</a></h3>
<ul>
<li class=""><strong>LLM Provider</strong>: Select <strong>Claude</strong></li>
<li class=""><strong>Model</strong>: Enter <code>claude-sonnet-4-6</code></li>
<li class=""><strong>API Key</strong>: Paste your Anthropic API key</li>
</ul>
<p>Claude Sonnet 4.6 is a strong balance of speed and quality for discovery runs. A typical 100-step run costs about $1-3 in API usage.</p>
<p><img decoding="async" loading="lazy" alt="AI provider configuration with Claude" src="https://decisionbox.io/assets/images/screenshot-4-7b27d07d79a2d34b1cd80a7dcfe27c2b.png" width="2405" height="1713" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="44-optional-fill-in-the-project-profile">4.4 (Optional) Fill in the Project Profile<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#44-optional-fill-in-the-project-profile" class="hash-link" aria-label="Direct link to 4.4 (Optional) Fill in the Project Profile" title="Direct link to 4.4 (Optional) Fill in the Project Profile" translate="no">​</a></h3>
<p>Navigate to the <strong>Profile</strong> tab. The domain pack generates a profile form specific to your store type — business info, product catalog, shipping, KPIs, and more. Filling this in gives the AI agent richer context for better-targeted analysis.</p>
<p>For this tutorial dataset, you might enter:</p>
<ul>
<li class=""><strong>Business Model</strong>: B2C</li>
<li class=""><strong>Industry</strong>: General Retail / Consumer Electronics</li>
<li class=""><strong>Target Market</strong>: Global</li>
<li class=""><strong>Total Products</strong>: ~200,000+</li>
<li class=""><strong>Top Categories</strong>: Electronics, Appliances, Computers</li>
</ul>
<p>The more context you provide, the more tailored the insights will be. But it's entirely optional — the agent will discover the data structure on its own.</p>
<p><img decoding="async" loading="lazy" alt="The profile form is generated from the domain pack&amp;#39;s schema. Fill in what you know about the dataset to improve insight quality." src="https://decisionbox.io/assets/images/screenshot-5-f53779b74daa6135d3b670b98db70de8.png" width="2864" height="1921" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-5-run-your-first-discovery">Step 5: Run Your First Discovery<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-5-run-your-first-discovery" class="hash-link" aria-label="Direct link to Step 5: Run Your First Discovery" title="Direct link to Step 5: Run Your First Discovery" translate="no">​</a></h2>
<p>Click <strong>"Run Discovery"</strong> from the top bar of your project page.</p>
<p>You'll see a configuration panel:</p>
<ul>
<li class=""><strong>Exploration Steps</strong>: Set to <strong>10</strong> for a quick first run. This controls how many exploration queries the AI agent will execute. You can increase it later for deeper analysis (the default is 100).</li>
<li class=""><strong>Areas</strong>: Select <strong>"Run All Areas"</strong> to analyze all five e-commerce areas.</li>
</ul>
<p>Click <strong>Start</strong> and watch the agent work.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-happening-behind-the-scenes">What's Happening Behind the Scenes<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#whats-happening-behind-the-scenes" class="hash-link" aria-label="Direct link to What's Happening Behind the Scenes" title="Direct link to What's Happening Behind the Scenes" translate="no">​</a></h3>
<p>The discovery run follows a structured lifecycle:</p>
<ol>
<li class="">
<p><strong>Schema Discovery</strong> — The agent connects to your Redshift endpoint and discovers all tables, columns, and data types. It doesn't need you to describe your schema — it figures it out.</p>
</li>
<li class="">
<p><strong>Autonomous Exploration</strong> — This is the core of the process. The agent writes SQL queries, executes them, reads the results, and decides what to explore next. It starts broad (total events, date ranges, customer counts) and drills into specific patterns (cart abandonment by price range, conversion rates by category, repeat purchase behavior).</p>
</li>
<li class="">
<p><strong>Analysis</strong> — After exploration, the agent runs structured analysis for each of the five areas. It takes the exploration results relevant to each area and produces specific, validated insights.</p>
</li>
<li class="">
<p><strong>Validation</strong> — Every insight goes through two independent validation passes. First, a user count validator ensures affected counts are realistic (not event counts mistaken for user counts). Second, a warehouse verifier generates fresh SQL queries to independently confirm each insight's numbers.</p>
</li>
<li class="">
<p><strong>Recommendations</strong> — Finally, the agent synthesizes all validated insights into actionable recommendations — specific actions your team could implement, with expected impact and implementation steps.</p>
</li>
</ol>
<p>The dashboard shows real-time progress: a progress bar, the current phase, live query counts, and a timeline of the agent's actions. You can see exactly what the agent is thinking and querying at each step.</p>
<p><img decoding="async" loading="lazy" alt="The completed discovery run. The timeline shows each step the agent took — from schema discovery through exploration, analysis, and validation. Every query and reasoning step is logged." src="https://decisionbox.io/assets/images/screenshot-6-27986cb3331a31830b6dd4f62c2ac8bd.png" width="2864" height="1921" class="img_ev3q"></p>
<p>Even with just 10 exploration steps, our run took about <strong>30 minutes</strong> and produced <strong>33 insights</strong> and <strong>6 recommendations</strong>. Most of that time is the agent waiting for Redshift query results — the AI reasoning itself is fast. Increasing the step count lets the agent dig deeper, but even a short run surfaces meaningful patterns.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="step-6-explore-the-results">Step 6: Explore the Results<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#step-6-explore-the-results" class="hash-link" aria-label="Direct link to Step 6: Explore the Results" title="Direct link to Step 6: Explore the Results" translate="no">​</a></h2>
<p>Once the run completes, navigate to <strong>Insights</strong> and <strong>Recommendations</strong> in the sidebar to explore what the agent found.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="insights">Insights<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#insights" class="hash-link" aria-label="Direct link to Insights" title="Direct link to Insights" translate="no">​</a></h3>
<p>Insights are the discovered patterns — the agent's answer to "what's going on in this data?" Each insight belongs to one of the five analysis areas and includes:</p>
<ul>
<li class=""><strong>Severity</strong> (critical / high / medium / low) — how urgent this is</li>
<li class=""><strong>Affected Count</strong> — how many unique customers are impacted</li>
<li class=""><strong>Confidence</strong> — how statistically reliable the observation is (0-100%)</li>
<li class=""><strong>Validation Status</strong> — whether the numbers were independently confirmed</li>
</ul>
<p><img decoding="async" loading="lazy" alt="The Insights page lists all discovered patterns sorted by severity. Even with just 10 exploration steps, the agent can find many critical findings across all five analysis areas — from conversion funnel issues to revenue concentration risks to catalog quality problems." src="https://decisionbox.io/assets/images/screenshot-7-48811ff59a17a58e70a5be6e45f8f28d.png" width="2864" height="1921" class="img_ev3q"></p>
<p>Click on any insight to see the full detail. Each insight page includes a description with exact numbers, key indicators, a metrics table, an assessment section with risk score and confidence, validation results showing claimed vs. verified counts, and — at the bottom — a <strong>"How This Insight Was Found"</strong> section that shows the exact source queries the AI used, complete with the agent's reasoning and the SQL it wrote.</p>
<p><img decoding="async" loading="lazy" alt="Every insight is independently validated. Here, the agent claimed 246K affected customers — the validation pass ran its own query and adjusted the count to 340K. You can see the exact SQL queries that produced this finding." src="https://decisionbox.io/assets/images/screenshot-8-1914262254a031d730d604c29df2aba0.png" width="1856" height="550" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Insights link to related recommendations. This catalog quality insight directly led to a recommendation for fixing product categorization — you can see the connection right on the page." src="https://decisionbox.io/assets/images/screenshot-9-acc5884fbdd5a3457b6614568d081966.png" width="1874" height="842" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="recommendations">Recommendations<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#recommendations" class="hash-link" aria-label="Direct link to Recommendations" title="Direct link to Recommendations" translate="no">​</a></h3>
<p>While insights tell you what's happening, recommendations tell you what to do about it. The agent synthesizes insights across all areas and produces specific, actionable recommendations with:</p>
<ul>
<li class=""><strong>Priority</strong> (P1-P4) — what to address first</li>
<li class=""><strong>Expected Impact</strong> — quantified improvement estimate with reasoning</li>
<li class=""><strong>Implementation Steps</strong> — numbered steps specific enough for a product team to execute</li>
<li class=""><strong>Related Insights</strong> — which discovered patterns this recommendation addresses</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Recommendations are prioritized and actionable. Each one includes a target segment with size, expected impact, concrete implementation steps, and links back to the insights that informed it." src="https://decisionbox.io/assets/images/screenshot-10-d1ec72b55425b0b4e502ea2309a8109c.png" width="2874" height="2170" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="full-audit-trail">Full Audit Trail<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#full-audit-trail" class="hash-link" aria-label="Direct link to Full Audit Trail" title="Direct link to Full Audit Trail" translate="no">​</a></h3>
<p>DecisionBox is designed to be fully transparent. There's no separate "transparency" tab because transparency is woven throughout the product:</p>
<ul>
<li class="">The <strong>Discovery runs</strong> page shows a live, step-by-step log of every action the agent took — what it was thinking, what SQL it wrote, what results it got, and whether queries were auto-fixed</li>
<li class="">Each <strong>Insight</strong> includes a "How This Insight Was Found" section with the exact source queries and reasoning</li>
<li class=""><strong>Validation</strong> results show claimed vs. verified counts for every insight, with the status clearly marked (confirmed, adjusted, or rejected)</li>
</ul>
<p>Your data team can trace any finding from recommendation back to insight, back to the SQL queries that produced the data. Nothing is a black box.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="feedback">Feedback<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#feedback" class="hash-link" aria-label="Direct link to Feedback" title="Direct link to Feedback" translate="no">​</a></h3>
<p>Found an insight that's particularly valuable? Click the thumbs up. See something off? Thumbs down. This feedback trains the agent for subsequent runs — it will avoid repeating disliked patterns and continue monitoring liked ones. Each discovery run builds on the last.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-concepts-at-a-glance">Key Concepts at a Glance<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#key-concepts-at-a-glance" class="hash-link" aria-label="Direct link to Key Concepts at a Glance" title="Direct link to Key Concepts at a Glance" translate="no">​</a></h2>
<p>This tutorial introduced several DecisionBox concepts. Here's a quick reference:</p>

















































<table><thead><tr><th style="text-align:left">Concept</th><th style="text-align:left">What It Means</th></tr></thead><tbody><tr><td style="text-align:left"><strong>Project</strong></td><td style="text-align:left">A connection to your data warehouse + AI provider + domain pack. One project per dataset or product you're analyzing.</td></tr><tr><td style="text-align:left"><strong>Domain Pack</strong></td><td style="text-align:left">Industry-specific intelligence module. Defines what to look for, how to prompt the AI, and what profile context to collect. E-commerce, Gaming, and Social are available today.</td></tr><tr><td style="text-align:left"><strong>Category</strong></td><td style="text-align:left">A specialization within a domain. E-commerce → Multi-Category Store. Gaming → Match-3. Each adds category-specific analysis areas.</td></tr><tr><td style="text-align:left"><strong>Analysis Area</strong></td><td style="text-align:left">A specific dimension the AI investigates (e.g., Conversion Funnel, Customer Retention). Each area has its own prompts and keywords.</td></tr><tr><td style="text-align:left"><strong>Discovery Run</strong></td><td style="text-align:left">A single end-to-end execution: schema discovery → exploration → analysis → validation → recommendations.</td></tr><tr><td style="text-align:left"><strong>Insight</strong></td><td style="text-align:left">A discovered pattern with severity, affected count, confidence, and validation status. Answers "what's happening?"</td></tr><tr><td style="text-align:left"><strong>Recommendation</strong></td><td style="text-align:left">An actionable response to one or more insights. Answers "what should we do about it?"</td></tr><tr><td style="text-align:left"><strong>Exploration</strong></td><td style="text-align:left">The autonomous phase where the AI writes and executes SQL queries, iterating based on results.</td></tr><tr><td style="text-align:left"><strong>Validation</strong></td><td style="text-align:left">Two independent passes that verify insight accuracy against actual warehouse data.</td></tr><tr><td style="text-align:left"><strong>Profile</strong></td><td style="text-align:left">Optional business context (store type, KPIs, product categories) that helps the AI tailor its analysis.</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-just-happened">What Just Happened<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#what-just-happened" class="hash-link" aria-label="Direct link to What Just Happened" title="Direct link to What Just Happened" translate="no">​</a></h2>
<p>Let's step back and look at what we did. We pointed DecisionBox at a dataset it had never seen before — 109 million raw e-commerce events with no documentation, no data dictionary, no context. The AI agent figured out the schema on its own, explored the data systematically across five analysis areas, discovered specific patterns with exact numbers, validated every finding against the actual data, and produced prioritized recommendations with implementation steps.</p>
<p>With just 10 exploration steps, the discovery took about 30 minutes and produced 33 insights and 6 recommendations — fully autonomous, no human input after clicking "Start." The equivalent manual process — an analyst writing queries, iterating, validating, synthesizing findings into a report — would take days to weeks.</p>
<p>And this was a first run. Subsequent runs build on previous context. The agent learns what it already found, avoids repeating itself, respects your feedback, and focuses on new patterns. Each discovery compounds.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-yourself">Try It Yourself<a href="https://decisionbox.io/blog/first-discovery-ecommerce-tutorial#try-it-yourself" class="hash-link" aria-label="Direct link to Try It Yourself" title="Direct link to Try It Yourself" translate="no">​</a></h2>
<p>DecisionBox is open source under AGPL v3.</p>
<ul>
<li class=""><strong>GitHub</strong>: <a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">github.com/decisionbox-io/decisionbox-platform</a></li>
<li class=""><strong>Documentation</strong>: <a href="https://decisionbox.io/docs" target="_blank" rel="noopener noreferrer" class="">decisionbox.io/docs</a></li>
<li class=""><strong>Website</strong>: <a href="https://decisionbox.io/" target="_blank" rel="noopener noreferrer" class="">decisionbox.io</a></li>
</ul>
<p>Clone it, <code>docker compose up -d</code>, and run your first discovery. Questions, feedback, or issues? Open a <a href="https://github.com/decisionbox-io/decisionbox-platform/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussion</a> or file an <a href="https://github.com/decisionbox-io/decisionbox-platform/issues" target="_blank" rel="noopener noreferrer" class="">issue</a> — we'd love to hear what you discover.</p>]]></content:encoded>
            <category>tutorial</category>
            <category>ecommerce</category>
            <category>redshift</category>
            <category>discovery</category>
            <category>getting-started</category>
        </item>
        <item>
            <title><![CDATA[DecisionBox v0.2.0 — Azure, Snowflake, and Structured Auth]]></title>
            <link>https://decisionbox.io/blog/v0.2.0-release</link>
            <guid>https://decisionbox.io/blog/v0.2.0-release</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The v0.2.0 release of DecisionBox expands the platform's reach with full Azure cloud support, the addition of Snowflake as a data warehouse provider, and a more structured approach to authentication. This release maintains compatibility with existing deployments while providing several new enterprise-ready features.]]></description>
            <content:encoded><![CDATA[<p>The v0.2.0 release of DecisionBox expands the platform's reach with full Azure cloud support, the addition of Snowflake as a data warehouse provider, and a more structured approach to authentication. This release maintains compatibility with existing deployments while providing several new enterprise-ready features.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="snowflake-integration">Snowflake Integration<a href="https://decisionbox.io/blog/v0.2.0-release#snowflake-integration" class="hash-link" aria-label="Direct link to Snowflake Integration" title="Direct link to Snowflake Integration" translate="no">​</a></h2>
<p>Snowflake is now a first-class citizen in the DecisionBox ecosystem. We've added full support for:</p>
<ul>
<li class=""><strong>Username/Password</strong> authentication for quick setup.</li>
<li class=""><strong>Key Pair (JWT)</strong> authentication for secure, production-grade connections.</li>
<li class=""><strong>Type Mapping</strong>: Robust handling of all major Snowflake data types (NUMBER, VARIANT, DATE, TIMESTAMP, etc.).</li>
<li class=""><strong>Efficient Discovery</strong>: Uses Snowflake metadata queries to explore schemas without impacting performance.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="azure-cloud-support">Azure Cloud Support<a href="https://decisionbox.io/blog/v0.2.0-release#azure-cloud-support" class="hash-link" aria-label="Direct link to Azure Cloud Support" title="Direct link to Azure Cloud Support" translate="no">​</a></h2>
<p>Azure joins GCP and AWS as a supported cloud provider. This includes:</p>
<ul>
<li class=""><strong>Azure AI Foundry</strong>: Support for GPT-4o and other models via Azure's enterprise LLM platform.</li>
<li class=""><strong>Azure Key Vault</strong>: Securely store and manage your credentials using Azure's native secret management service.</li>
<li class=""><strong>Terraform Module</strong>: A dedicated Terraform module for provisioning AKS (Azure Kubernetes Service) and all related infrastructure.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="improved-authentication-experience">Improved Authentication Experience<a href="https://decisionbox.io/blog/v0.2.0-release#improved-authentication-experience" class="hash-link" aria-label="Direct link to Improved Authentication Experience" title="Direct link to Improved Authentication Experience" translate="no">​</a></h2>
<p>We've introduced a structured approach to authentication. Warehouse providers now declare their supported auth methods via metadata. This allows the DecisionBox dashboard to:</p>
<ul>
<li class="">Render provider-specific forms for a better user experience.</li>
<li class="">Validate configuration before it's submitted.</li>
<li class="">Dynamically update the UI based on the selected auth method (e.g., showing fields for Key Pair vs. Password).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="helm-chart-improvements">Helm Chart Improvements<a href="https://decisionbox.io/blog/v0.2.0-release#helm-chart-improvements" class="hash-link" aria-label="Direct link to Helm Chart Improvements" title="Direct link to Helm Chart Improvements" translate="no">​</a></h2>
<ul>
<li class=""><strong>Azure Workload Identity</strong>: Support for Azure Workload Identity webhooks, including new labels for service accounts and pods.</li>
<li class=""><strong>Enhanced Configuration</strong>: More flexible Helm values for managing cloud-specific integrations.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="seamless-upgrade">Seamless Upgrade<a href="https://decisionbox.io/blog/v0.2.0-release#seamless-upgrade" class="hash-link" aria-label="Direct link to Seamless Upgrade" title="Direct link to Seamless Upgrade" translate="no">​</a></h2>
<p>This release contains no breaking changes. Existing v0.1.0 deployments can upgrade to v0.2.0 without any modifications, and you can opt into the new Snowflake and Azure features as needed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get Started<a href="https://decisionbox.io/blog/v0.2.0-release#get-started" class="hash-link" aria-label="Direct link to Get Started" title="Direct link to Get Started" translate="no">​</a></h2>
<p>Check out the <a href="https://github.com/decisionbox-io/decisionbox-platform/releases/tag/v0.2.0" target="_blank" rel="noopener noreferrer" class="">v0.2.0 release notes</a> on GitHub to get started.</p>
<p>We're continuing to build towards our v0.3.0 milestone. If you have any suggestions or encounter any issues, please reach out to us on <a href="https://github.com/decisionbox-io/decisionbox-platform/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>v0.2.0</category>
            <category>snowflake</category>
            <category>azure</category>
            <category>announcement</category>
        </item>
        <item>
            <title><![CDATA[DecisionBox v0.1.0 — First Public Release]]></title>
            <link>https://decisionbox.io/blog/v0.1.0-release</link>
            <guid>https://decisionbox.io/blog/v0.1.0-release</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We are excited to announce the first public release of DecisionBox (v0.1.0). DecisionBox is an autonomous AI-powered data discovery platform that connects to your data warehouse, runs autonomous AI agents that write and execute SQL, and surfaces validated insights and actionable recommendations.]]></description>
            <content:encoded><![CDATA[<p>We are excited to announce the first public release of DecisionBox (v0.1.0). DecisionBox is an autonomous AI-powered data discovery platform that connects to your data warehouse, runs autonomous AI agents that write and execute SQL, and surfaces validated insights and actionable recommendations.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-decisionbox">What is DecisionBox?<a href="https://decisionbox.io/blog/v0.1.0-release#what-is-decisionbox" class="hash-link" aria-label="Direct link to What is DecisionBox?" title="Direct link to What is DecisionBox?" translate="no">​</a></h2>
<p>DecisionBox bridges the gap between raw data and actionable insights. Unlike traditional BI tools that require manual dashboard building and SQL writing, DecisionBox uses autonomous agents to:</p>
<ol>
<li class=""><strong>Explore</strong>: Automatically sample and understand your data schema.</li>
<li class=""><strong>Analyze</strong>: Identify patterns, anomalies, and opportunities across different business areas.</li>
<li class=""><strong>Validate</strong>: Verify every finding with independent SQL queries to ensure accuracy.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features-in-v010">Key Features in v0.1.0<a href="https://decisionbox.io/blog/v0.1.0-release#key-features-in-v010" class="hash-link" aria-label="Direct link to Key Features in v0.1.0" title="Direct link to Key Features in v0.1.0" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-llm-support">Multi-LLM Support<a href="https://decisionbox.io/blog/v0.1.0-release#multi-llm-support" class="hash-link" aria-label="Direct link to Multi-LLM Support" title="Direct link to Multi-LLM Support" translate="no">​</a></h3>
<p>Connect to the models of your choice. v0.1.0 supports:</p>
<ul>
<li class=""><strong>Claude</strong> (Anthropic)</li>
<li class=""><strong>OpenAI</strong> (GPT-4o/GPT-4-turbo)</li>
<li class=""><strong>Ollama</strong> (Local models)</li>
<li class=""><strong>Vertex AI</strong> (Claude &amp; Gemini)</li>
<li class=""><strong>Bedrock</strong> (Claude &amp; Titan)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="warehouse-providers">Warehouse Providers<a href="https://decisionbox.io/blog/v0.1.0-release#warehouse-providers" class="hash-link" aria-label="Direct link to Warehouse Providers" title="Direct link to Warehouse Providers" translate="no">​</a></h3>
<p>Start discovering insights from:</p>
<ul>
<li class=""><strong>BigQuery</strong>: Includes dry-run cost estimation to keep your analysis budget-friendly.</li>
<li class=""><strong>Redshift</strong>: Full support for both Serverless and Provisioned clusters.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="enterprise-grade-security">Enterprise-Grade Security<a href="https://decisionbox.io/blog/v0.1.0-release#enterprise-grade-security" class="hash-link" aria-label="Direct link to Enterprise-Grade Security" title="Direct link to Enterprise-Grade Security" translate="no">​</a></h3>
<ul>
<li class=""><strong>Secret Management</strong>: Integration with GCP Secret Manager, AWS Secrets Manager, and encrypted local storage via MongoDB (AES-256).</li>
<li class=""><strong>Non-Root Containers</strong>: All services run as non-root (UID 1000) with read-only filesystems.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="domain-packs">Domain Packs<a href="https://decisionbox.io/blog/v0.1.0-release#domain-packs" class="hash-link" aria-label="Direct link to Domain Packs" title="Direct link to Domain Packs" translate="no">​</a></h3>
<p>industry-specific analysis is powered by Domain Packs. Initial support includes:</p>
<ul>
<li class=""><strong>Gaming</strong>: Specialized analysis for Match-3, Idle, and Casual games.</li>
<li class=""><strong>Social Networks</strong>: Insights focused on content sharing and user engagement.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="infrastructure--deployment">Infrastructure &amp; Deployment<a href="https://decisionbox.io/blog/v0.1.0-release#infrastructure--deployment" class="hash-link" aria-label="Direct link to Infrastructure &amp; Deployment" title="Direct link to Infrastructure &amp; Deployment" translate="no">​</a></h3>
<ul>
<li class=""><strong>Docker Compose</strong>: For quick local evaluation.</li>
<li class=""><strong>Helm Charts</strong>: Production-ready deployment to Kubernetes.</li>
<li class=""><strong>Terraform</strong>: Modules for GCP (GKE) and AWS (EKS).</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="quality-and-reliability">Quality and Reliability<a href="https://decisionbox.io/blog/v0.1.0-release#quality-and-reliability" class="hash-link" aria-label="Direct link to Quality and Reliability" title="Direct link to Quality and Reliability" translate="no">​</a></h2>
<p>We believe in software that works. v0.1.0 ships with:</p>
<ul>
<li class=""><strong>500+ Tests</strong>: Comprehensive unit and integration testing.</li>
<li class=""><strong>85%+ Coverage</strong>: High confidence in core logic.</li>
<li class=""><strong>CI/CD</strong>: Robust pipeline with vulnerability scanning and SBOM generation.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get Started<a href="https://decisionbox.io/blog/v0.1.0-release#get-started" class="hash-link" aria-label="Direct link to Get Started" title="Direct link to Get Started" translate="no">​</a></h2>
<p>DecisionBox is open-source (AGPL v3). You can find the code and installation instructions on <a href="https://github.com/decisionbox-io/decisionbox-platform" target="_blank" rel="noopener noreferrer" class="">GitHub</a>.</p>
<p>We'd love to hear your feedback! Join the conversation in our <a href="https://github.com/decisionbox-io/decisionbox-platform/discussions" target="_blank" rel="noopener noreferrer" class="">GitHub Discussions</a>.</p>]]></content:encoded>
            <category>release</category>
            <category>v0.1.0</category>
            <category>roadmap</category>
            <category>announcement</category>
        </item>
    </channel>
</rss>