AI Assisted Development: Building a Tableau Change Intelligence tool
A client I was working with had a problem every BI team eventually runs into: a dashboard that was correct on Monday and wrong on Friday, with nobody able to say exactly what changed in between.
Tableau Server was doing its job — revision history was switched on, every publish was versioned. But "versioned" isn't the same as "understood." When someone asked "what actually changed in the last publish, and is it safe?", the honest answer was: open two .twb files, diff raw XML by hand, and hope you spot the one calculated field that got quietly redefined. That's not a process , that's an incident to happen!
What we built:
A tool that pulls any two consecutive revisions of a published Tableau workbook straight from Tableau Server — via the official tableauserverclient SDK and a Personal Access Token, no scraping, no raw REST calls — and produces a single self-contained HTML report, plus a tabbed Streamlit console for interactive use.
It structurally diffs the workbook across 10 categories: data connections, calculated fields (plus groups, sets, hierarchies), parameters, worksheets, filters, dashboards, actions & interactivity, formatting, ownership/metadata, and extract-vs-live connections.
The part that actually changes behavior, though, isn't the diff — it's what sits above it:
1. Impact / blast-radius analysis — for every changed field, the report walks the dependency graph and lists exactly which downstream calcs, worksheets, and dashboards consume it.
2. Severity tagging — every change is flagged breaking, attention, or info, so a Friday-afternoon reviewer knows in five seconds which of the twelve changes actually matters.
3. A coverage scorecard — an honest measure of how much of the diff is precisely described versus caught by a generic "something changed here" safety net.
4. Lineage, when the Data Management add-on is available — upstream databases, tables, and columns via the Metadata API.
What it looks in-practice:

Nobody has to open Tableau Desktop and reverse-engineer intent from a formula diff — the report says this specific field is breaking, and here's the blast radius, in the same view as the other eleven changes that are just noise.The report also toggles between a Natural Language view ("You changed the formula for 'Sales above Target?'") and a raw XML view with inline add/remove highlighting — for the one person on the team who wants to see the actual clause that got inserted:

How its wired-together:

I built this entirely in VS Code, with Claude wired in as a coding plugin — not as autocomplete, as an actual pair-programmer sitting in the editor.
The Takeaway:
If your team publishes Tableau workbooks and nobody can answer "what changed and is it safe" in under a minute, you don't need a better process document. And if you're sitting on a similar internal-tooling itch, don't underestimate what an AI pair-programmer inside your actual editor does to the size of problem you're willing to take on solo



Comments