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. Why I Wanted to Try This With Gemma 4 I’ve been building Twilize https://www.twilize.com — 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 https://www.twilize.com . 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 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 https://www.twilize.com UI, open the AI Provider panel. Select Gemma 4 Local and click Download. What happens automatically: 1. Twilize https://www.twilize.com 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 https://www.twilize.com 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