cd /news/ai-tools/i-generated-a-tableau-dashboard-usin… · home topics ai-tools article
[ARTICLE · art-16347] src=dev.to pub= topic=ai-tools verified=true sentiment=↑ positive

I Generated a Tableau Dashboard Using Gemma 4 — Locally, No API Key, No Cloud

A developer generated a Tableau dashboard using Google's Gemma 4 model entirely offline, with no API key or cloud dependency. The engineer behind Twilize, a tool that creates Tableau workbooks from natural language, ran the full workflow on a local Windows machine using only a CSV file and the downloaded model weights. The process required 6 GB of disk space, 8 GB of RAM, and a one-time internet connection to pull the Gemma 4 model via Ollama.

read7 min publishedMay 28, 2026

Why I Wanted to Try This With Gemma 4

I’ve been building Twilize — a tool that generates Tableau workbooks from natural language — for a while now. Most of my own testing uses the Anthropic API because Claude gives the sharpest schema reasoning. But I kept getting the same question from enterprise users: “We can’t send data to a third-party API. Can this work entirely offline?”

So I decided to actually do it myself, document every step, and share what the output quality looks like when Gemma 4 is doing the thinking. No API key. No internet after the initial model download. Just a CSV, a local model, and Twilize.

Here is exactly what I did.

What You Need Before You Start

• Windows 10 or 11, 64-bit

• Python 3.10+ installed and on PATH — tick “Add Python to PATH” in the installer

• Twilize Standalone v1.01 — download at twilize.com

• Around 6 GB of free disk space for the Gemma 4 model weights

• 8 GB RAM minimum; 16 GB recommended for comfortable performance

• A CSV to visualise — I used the classic Superstore sales dataset

First-time internet access is needed once to pull the model weights. After that, everything runs air-gapped.

1 Install Twilize and Launch the Dashboard Builder

Run the installer (Twilize-Standalone-Setup-1.01.exe). Accept the defaults. At the end of the wizard you’ll see an optional checkbox: “Download Ollama + Gemma 4”. I left this unchecked — I wanted to control the download timing myself.

After install, launch via: Start Menu → Twilize → Twilize Dashboard Builder

A console window opens. On first launch, Twilize self-installs Python packages into %LOCALAPPDATA%\Twilize\packages — about 30 seconds. Then the browser opens at http://localhost:8000 automatically.

⚠️ Important: Keep the console window open. Closing it stops the server. Minimise it and leave it running.

2 Download Gemma 4 Through the AI Provider Panel

In the Twilize UI, open the AI Provider panel. Select Gemma 4 (Local) and click Download.

What happens automatically:

1.Twilize checks whether Ollama is already installed on your machine

2.If not, it runs winget install Ollama.Ollama — no separate installer needed

3.Once Ollama is confirmed, it pulls the model weights: ollama pull gemma4

4.The download is roughly 6 GB — expect 5 to 15 minutes depending on your connection

5.When done, the panel shows a green “ready” badge next to Gemma 4

💡 Verify at any time: Open a new PowerShell window and run ollama list. You should see gemma4 in the model list.

# Verify Ollama sees the model

PS> ollama list

NAME ID SIZE MODIFIED

gemma4:latest a1b2c3d4e5f6 6.1 GB 2 minutes ago

3Load the CSV Into the Data Source Panel

Click the Data Source panel and choose the File Upload tab. Drag and drop your CSV. I used the Superstore Sales file — 9,994 rows with fields like Order Date, Region, Category, Sales, Profit, and Discount.

Twilize immediately shows you:

•Inferred field types — measure (numeric) vs dimension (categorical or date)

•A sample of the first few rows

•Row and column counts

Spend 30 seconds reviewing the type inference. In my test, Postal Code was correctly flagged as a dimension despite being numeric — a small but important detail that affects how Tableau handles it on maps.

4 Write the Prompt

This step is optional but meaningfully shapes the output. I wanted a regional sales dashboard with a profit breakdown, so I typed:

Executive summary focused on regional sales trends and profit by

category. Include a year-over-year comparison and highlight the top 5

sub-categories by sales. KPI tiles at the top for total sales,

total profit, and profit margin.

You don’t need to specify chart types — Gemma 4 infers appropriate charts from the schema and your intent. But the more specific your prompt, the closer the first draft lands.

🔍 What works well in prompts: Business objectives ('executive summary'), specific fields to feature, layout hints like 'KPI tiles at top', and constraints like 'focus on 2023 data only'.

5 Run Suggest and Review the Dashboard Plan

Click Suggest. Gemma 4 analyses the schema and your prompt, then returns a proposed dashboard plan. On my machine (16 GB RAM, no GPU) this took about 45 seconds — noticeably slower than the Anthropic API but entirely acceptable for a one-time suggestion step.

The plan Gemma 4 returned proposed six charts:

KPI tiles — Total Sales, Total Profit, Profit Margin (calculated field)

Bar chart — Sales by Region, sorted descending

Line chart — Monthly Sales trend, coloured by Year for year-over-year overlay

Bar chart — Profit by Category with a reference line at zero

Treemap — Sales by Sub-Category, Top 5 highlighted

Scatter plot — Sales vs. Profit by Sub-Category, sized by Discount

This was better than I expected. Gemma 4 identified the date field correctly, proposed a year-over-year line rather than a flat trend, included the zero-reference line on the profit bar — a nuance that matters for any P&L-style chart — and added a scatter plot I hadn’t asked for but which made perfect sense given the three numeric fields.

🔄 If the plan isn’t right: Edit your prompt and click Suggest again. Each run is independent. I iterated once, adding 'show discount impact', and the scatter plot appeared in the revised plan.

6Generate the Workbook

Click Generate. The backend builds the .twbx file from the approved plan and your data. A progress indicator runs. With the Superstore file and six charts, generation completed in about 18 seconds.

The browser downloads the file automatically. The generation manifest:

{
  "dashboards": 1,
  "charts": 6,
  "required_charts_requested": 3,
  "required_charts_fulfilled": 3,
  "warnings": [],
  "style_reference": "none"
}

Zero warnings. All three pinned charts (KPI tiles, regional bar, YoY line) confirmed fulfilled.

7Open in Tableau Desktop or Tableau Public

Double-click the .twbx file. Tableau Desktop or the free Tableau Public opens it directly. The data is embedded — no reconnection required.

What I found already in place:

•All six sheets present and correctly named

•Profit Margin calculated field pre-built: SUM([Profit]) / SUM([Sales])

•Year-over-year line correctly split by Year (discrete), not continuous

•Zero-reference line on the profit bar, formatted in grey

•Treemap Top-5 filter using a Top N set — exactly the right approach

What needed a quick manual touch:

•Axis number format — Gemma used full integers; I switched Sales to abbreviated (K/M)

•Dashboard tiled layout needed minor resize to fit a 16:9 widescreen

•Colour palette — swapped Tableau’s default blue to a brand palette in about 2 minutes

Honest Assessment: Gemma 4 vs Claude for This Task

Dimension Gemma 4 (Local) Claude (API)

Suggest speed ~45 sec ~8 sec

Chart quality Very good Excellent

Calculated fields Good Excellent

Schema inference Good Excellent

Data privacy 100% local Sent to Anthropic

Cost per run Free ~$0.02–0.05

Needs internet One-time only Every run

The honest verdict: for most standard business dashboards, Gemma 4 gets you 85–90% of the way there. The remaining polish — axis formatting, layout tuning, brand colours — takes the same 10 to 15 minutes it would take to polish any first draft. What Gemma eliminates is the 45 to 60 minutes of blank-canvas chart setup and calculated field wrangling.

For complex schemas with nested LOD calculations or non-obvious field relationships, Claude gives meaningfully better first drafts. But for the volume of BI work that is “show me regional sales performance”, Gemma 4 offline is a serious option.

The Takeaway

Running a local LLM for dashboard generation isn’t a fallback anymore. It’s a legitimate first-choice for data teams with privacy constraints, air-gapped environments, or a desire to stop paying per-token for routine BI work.

The full stack I used:

• Twilize Standalone v1.01 — twilize.com

• Gemma 4 via Ollama — installed automatically by Twilize

• Superstore CSV — free from Tableau’s sample data page

• Tableau Public — free desktop app to open the .twbx

Total time from installer to open workbook in Tableau: under 20 minutes, including the 6 GB model download. Without the download, closer to 4.

💬 Have you tried local LLMs for any part of your analytics workflow? I’m curious whether the latency trade-off feels worth it at your scale — drop your experience in the comments.

Tags: Tableau · Gemma 4 · Local AI · Data Visualisation · Ollama · Business Intelligence · Twilize

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-generated-a-tablea…] indexed:0 read:7min 2026-05-28 ·