<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Datacooper</title>
    <description>The latest articles on DEV Community by Datacooper (@datacooper).</description>
    <link>https://dev.to/datacooper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4161179%2F09ffa541-1033-4a59-807a-eb0755fc6a49.png</url>
      <title>DEV Community: Datacooper</title>
      <link>https://dev.to/datacooper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/datacooper"/>
    <language>en</language>
    <item>
      <title>Screenshot to layout JSON to TWB: a cwtwb dashboard skeleton experiment</title>
      <dc:creator>Datacooper</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:18:50 +0000</pubDate>
      <link>https://dev.to/datacooper/screenshot-to-layout-json-to-twb-a-cwtwb-dashboard-skeleton-experiment-mnc</link>
      <guid>https://dev.to/datacooper/screenshot-to-layout-json-to-twb-a-cwtwb-dashboard-skeleton-experiment-mnc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbu03lru8vabck478xlmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbu03lru8vabck478xlmv.png" alt="Reference dashboard layout used in the cwtwb experiment" width="480" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nested Tableau containers can consume a surprising amount of dashboard-building time. In this experiment, I asked an AI to infer a layout from a screenshot, save layout JSON and use cwtwb to generate a workbook.&lt;/p&gt;

&lt;p&gt;The output deliberately used text placeholders. I explicitly allowed mocked calculations because this test was about layout construction.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt's important boundary
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate the layout JSON and save it locally, then use this JSON
to generate the final dashboard. I don't need you to perfectly
replicate the calculations; you can just mock up a few.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an excerpt from the original prompt, rather than a runnable SDK example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the intermediate JSON helps
&lt;/h2&gt;

&lt;p&gt;The workflow has three inspectable stages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reference screenshot -&amp;gt; layout JSON -&amp;gt; Tableau workbook (.twb)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A screenshot communicates arrangement. The layout description makes horizontal and vertical nesting explicit. The workbook turns that description into an artifact that can be opened and edited in Tableau.&lt;/p&gt;

&lt;p&gt;The generated skeleton looked unfinished because its job was to expose structure, not to impersonate a verified production dashboard. The container hierarchy was the focus of the original review.&lt;/p&gt;

&lt;h2&gt;
  
  
  What still needs to happen
&lt;/h2&gt;

&lt;p&gt;This demonstration does not establish pixel-perfect replication or calculation correctness. Real data bindings, calculations, styles and interactions need their own implementation and checks.&lt;/p&gt;

&lt;p&gt;That distinction is central to cwtwb's development: build from public SDK operations, then verify the artifact against a concrete case. Datacooper's planned paid MCP should help carry that workflow further toward finished BI work, with reviewable intermediate results.&lt;/p&gt;

&lt;p&gt;Originally shared in &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7435683330072797184/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://github.com/aidatacooper/cwtwb" rel="noopener noreferrer"&gt;cwtwb on GitHub&lt;/a&gt;, &lt;a href="https://github.com/aidatacooper/wow-tableau-problem-solving" rel="noopener noreferrer"&gt;the case replication repository&lt;/a&gt; and &lt;a href="https://datacooper.com/en" rel="noopener noreferrer"&gt;Datacooper&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tableau</category>
    </item>
    <item>
      <title>From raw data to a dashboard blueprint: testing a Tableau design Skill</title>
      <dc:creator>Datacooper</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:13:31 +0000</pubDate>
      <link>https://dev.to/datacooper/from-raw-data-to-a-dashboard-blueprint-testing-a-tableau-design-skill-3b4i</link>
      <guid>https://dev.to/datacooper/from-raw-data-to-a-dashboard-blueprint-testing-a-tableau-design-skill-3b4i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fstlk0zz7oam2qec4pp0r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fstlk0zz7oam2qec4pp0r.jpg" alt="Dashboard Blueprint Skill experiment" width="160" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before generating a workbook, an agent needs to decide what the dashboard is for. I tested Adam Mico's open-source Tableau Dashboard Blueprint Skill with the Antigravity CLI to explore that step.&lt;/p&gt;

&lt;p&gt;The experiment produced a technical specification and an interactive HTML prototype. It was a design test, not proof of a completed Tableau workbook.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Skill helped make explicit
&lt;/h2&gt;

&lt;p&gt;The design identified a sales-manager audience, a short review window, KPI hierarchy and a restrained filter set. It also described the layout and the charts that would answer the intended questions.&lt;/p&gt;

&lt;p&gt;The technical specification included container hierarchy and calculation definitions. The HTML prototype made the proposed arrangement easier to review before implementation. In the original experiment, simulated regional filtering updated the prototype KPIs.&lt;/p&gt;

&lt;p&gt;Those are different outputs with different purposes: the specification tells a builder what to implement; the prototype lets someone inspect the proposed experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where cwtwb fits
&lt;/h2&gt;

&lt;p&gt;My next-step proposal in the original post was to connect the design workflow to cwtwb. That was a plan at the time, and I am preserving that distinction here.&lt;/p&gt;

&lt;p&gt;A useful future workflow would take an agreed specification, construct a Tableau workbook through the SDK and compare the result with the intended design. It would still need to check the real data and calculations separately from the prototype.&lt;/p&gt;

&lt;p&gt;For Datacooper, this suggests a practical product direction: help users move from a business question to an inspectable build specification and an editable artifact. The paid MCP is planned around that broader task.&lt;/p&gt;

&lt;p&gt;Credit and references:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/adammico-lab/Tableau-Dashboard-Blueprint-BETA/blob/main/SKILL.md" rel="noopener noreferrer"&gt;Adam Mico's Blueprint Skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aidatacooper.github.io/20260714-tableaudesign/" rel="noopener noreferrer"&gt;The experiment's published prototype&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Originally shared in &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7482620478189314049/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://github.com/aidatacooper/cwtwb" rel="noopener noreferrer"&gt;cwtwb on GitHub&lt;/a&gt;, &lt;a href="https://github.com/aidatacooper/wow-tableau-problem-solving" rel="noopener noreferrer"&gt;the case replication repository&lt;/a&gt; and &lt;a href="https://datacooper.com/en" rel="noopener noreferrer"&gt;Datacooper&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tableau</category>
    </item>
    <item>
      <title>What a Tableau MCP source-code experiment taught me about workbook authoring</title>
      <dc:creator>Datacooper</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:13:12 +0000</pubDate>
      <link>https://dev.to/datacooper/what-a-tableau-mcp-source-code-experiment-taught-me-about-workbook-authoring-1k7o</link>
      <guid>https://dev.to/datacooper/what-a-tableau-mcp-source-code-experiment-taught-me-about-workbook-authoring-1k7o</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvvvv6xmcj59mobb7s2i4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvvvv6xmcj59mobb7s2i4.jpg" alt="Screenshot from the original Datacooper experiment" width="160" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I explored the official tableau-mcp source in an earlier experiment, one area caught my attention: workbook tools under &lt;code&gt;src/tools/desktop/workbook/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The screenshot and original LinkedIn post record that historical observation. This article describes the design idea I took from it; it does not assert that those tools are currently available to every developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three names that made the workflow interesting
&lt;/h2&gt;

&lt;p&gt;The tool names recorded in my original analysis were:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get-workbook-xml
batch-create-and-cache-sheets
apply-workbook
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read together, they suggest an authoring workflow with separate steps: inspect the existing workbook, prepare new sheets, then apply changes. That is a useful design distinction for an agent: reading, creating and committing changes are different operations.&lt;/p&gt;

&lt;p&gt;This is my interpretation of the names and the historical source observation. It is not proof of public access to a Desktop Agent API, and I am not claiming I successfully executed that internal workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters for cwtwb
&lt;/h2&gt;

&lt;p&gt;There are several ways to approach AI-assisted BI. One works with an active application. Another generates a workbook artifact programmatically. cwtwb focuses on the latter through a Python SDK and MCP-facing capabilities.&lt;/p&gt;

&lt;p&gt;Both approaches raise the same practical questions: what did the agent change, can we inspect the result, and is the calculation correct?&lt;/p&gt;

&lt;p&gt;An official project exploring workbook authoring is relevant technical context. It is not an endorsement of Datacooper or evidence of market leadership.&lt;/p&gt;

&lt;p&gt;My work at Datacooper is to turn that authoring direction into repeatable examples and checked artifacts. A future paid MCP should earn its value by helping users complete BI tasks, not merely by exposing more tool names.&lt;/p&gt;

&lt;p&gt;Project context: &lt;a href="https://github.com/tableau/tableau-mcp" rel="noopener noreferrer"&gt;Tableau MCP repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Originally shared in &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7472231893623746560/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://github.com/aidatacooper/cwtwb" rel="noopener noreferrer"&gt;cwtwb on GitHub&lt;/a&gt;, &lt;a href="https://github.com/aidatacooper/wow-tableau-problem-solving" rel="noopener noreferrer"&gt;the case replication repository&lt;/a&gt; and &lt;a href="https://datacooper.com/en" rel="noopener noreferrer"&gt;Datacooper&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tableau</category>
    </item>
    <item>
      <title>An AI semi-donut experiment: who checks the visualization logic?</title>
      <dc:creator>Datacooper</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:02:41 +0000</pubDate>
      <link>https://dev.to/datacooper/an-ai-semi-donut-experiment-who-checks-the-visualization-logic-5cjc</link>
      <guid>https://dev.to/datacooper/an-ai-semi-donut-experiment-who-checks-the-visualization-logic-5cjc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3f0ytgqmx1kmjpo504gi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3f0ytgqmx1kmjpo504gi.jpg" alt="Screenshot from the original Datacooper experiment" width="480" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A semi-donut chart looks small on a dashboard. Building it can involve considerably more work than its appearance suggests.&lt;/p&gt;

&lt;p&gt;In this early experiment, I gave an AI reference material and asked it to produce the calculation logic and visualization. The original screenshot shows the output. My role shifted toward specifying the design, reviewing it and iterating, rather than manually writing every step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this experiment mattered
&lt;/h2&gt;

&lt;p&gt;The hard part of an unusual chart is not simply choosing a mark type. The calculation and visual construction need to agree. A plausible-looking chart can still misrepresent the underlying value.&lt;/p&gt;

&lt;p&gt;That makes this a useful test of AI-assisted Tableau authoring. Can an agent translate the reference into a workbook? Can a human understand and check what it produced?&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep generation and verification separate
&lt;/h2&gt;

&lt;p&gt;For this kind of chart, I would review the source values, how they map to the visible shape, the labels and any assumptions about the scale. Those are review criteria, not a claim that this historical screenshot includes a complete audit.&lt;/p&gt;

&lt;p&gt;The original post also discussed Tableau Prep automation. Data preparation and workbook authoring are distinct stages; a good-looking final chart cannot establish that its upstream data pipeline is correct.&lt;/p&gt;

&lt;p&gt;At Datacooper, cwtwb is the open-source workbook authoring foundation. The case replication repository provides a place to exercise capabilities against concrete examples and retain validation evidence.&lt;/p&gt;

&lt;p&gt;The commercial opportunity I am exploring is a paid MCP that helps analysts finish actual BI work: specify the question, construct the workbook and review the output. The analyst's judgment remains central.&lt;/p&gt;

&lt;p&gt;Originally shared in &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7432996083385155585/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://github.com/aidatacooper/cwtwb" rel="noopener noreferrer"&gt;cwtwb on GitHub&lt;/a&gt;, &lt;a href="https://github.com/aidatacooper/wow-tableau-problem-solving" rel="noopener noreferrer"&gt;the case replication repository&lt;/a&gt; and &lt;a href="https://datacooper.com/en" rel="noopener noreferrer"&gt;Datacooper&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tableau</category>
    </item>
    <item>
      <title>Building an editable Tableau dashboard with cwtwb and MCP</title>
      <dc:creator>Datacooper</dc:creator>
      <pubDate>Sun, 04 Oct 2026 11:02:17 +0000</pubDate>
      <link>https://dev.to/datacooper/building-an-editable-tableau-dashboard-with-cwtwb-and-mcp-2aof</link>
      <guid>https://dev.to/datacooper/building-an-editable-tableau-dashboard-with-cwtwb-and-mcp-2aof</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8x7j21rayp9lhynnzjp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8x7j21rayp9lhynnzjp.jpg" alt="Original Tableau dashboard and agent prompt" width="480" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A dashboard generated by AI should leave you with a workbook you can keep working on. That was the question behind this early cwtwb experiment: could an agent assemble a Tableau dashboard without manually dragging sheets onto the canvas?&lt;/p&gt;

&lt;p&gt;The screenshot shows the resulting workbook alongside the prompt. It includes sales by sub-category, sales by category, a monthly profit trend and a regional sales breakdown. The useful output is the Tableau &lt;code&gt;.twb&lt;/code&gt; file, rather than an image of a dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the workflow works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Describe the charts and dashboard you need.&lt;/li&gt;
&lt;li&gt;The agent calls the MCP tools to configure workbook elements.&lt;/li&gt;
&lt;li&gt;The implementation writes the workbook structure, including worksheets and layout containers.&lt;/li&gt;
&lt;li&gt;Open the output in Tableau and review the result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A TWB stores workbook definitions as XML. cwtwb provides a Python SDK so callers can work with higher-level operations instead of assembling that XML manually. MCP gives an agent a way to call those operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this demonstration does and does not prove
&lt;/h2&gt;

&lt;p&gt;This is a retrospective of an early prototype. The screenshot demonstrates workbook authoring; it does not prove every business calculation or interaction is correct. A production workflow also needs input checks, calculation validation, rendered output and tests of relevant parameter or filter states.&lt;/p&gt;

&lt;p&gt;Today, the open-source SDK and the Workout Wednesday replication repository help make that review process concrete: a build script, locked input data, a workbook and recorded checks.&lt;/p&gt;

&lt;p&gt;My planned paid MCP builds on that direction: help complete real BI tasks with clearer inputs, repeatable builds and evidence of the result. It remains a product plan, not a claim that every BI task is already automated.&lt;/p&gt;

&lt;p&gt;Originally shared in &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7433095198680764417/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explore &lt;a href="https://github.com/aidatacooper/cwtwb" rel="noopener noreferrer"&gt;cwtwb on GitHub&lt;/a&gt;, &lt;a href="https://github.com/aidatacooper/wow-tableau-problem-solving" rel="noopener noreferrer"&gt;the case replication repository&lt;/a&gt; and &lt;a href="https://datacooper.com/en" rel="noopener noreferrer"&gt;Datacooper&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tableau</category>
    </item>
  </channel>
</rss>
