{"slug": "i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud", "title": "I Generated a Tableau Dashboard Using Gemma 4 — Locally, No API Key, No Cloud", "summary": "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.", "body_md": "**Why I Wanted to Try This With Gemma 4**\n\nI’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?”\n\nSo 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).\n\nHere is exactly what I did.\n\n**What You Need Before You Start**\n\n• Windows 10 or 11, 64-bit\n\n• Python 3.10+ installed and on PATH — tick “Add Python to PATH” in the installer\n\n• Twilize Standalone v1.01 — download at twilize.com\n\n• Around 6 GB of free disk space for the Gemma 4 model weights\n\n• 8 GB RAM minimum; 16 GB recommended for comfortable performance\n\n• A CSV to visualise — I used the classic Superstore sales dataset\n\nFirst-time internet access is needed once to pull the model weights. After that, everything runs air-gapped.\n\n1 Install Twilize and Launch the Dashboard Builder\n\nRun 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.\n\nAfter install, launch via: Start Menu → Twilize → Twilize Dashboard Builder\n\nA 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.\n\n⚠️ Important: Keep the console window open. Closing it stops the server. Minimise it and leave it running.\n\n2 Download Gemma 4 Through the AI Provider Panel\n\nIn the [Twilize](https://www.twilize.com) UI, open the AI Provider panel. Select Gemma 4 (Local) and click Download.\n\nWhat happens automatically:\n\n1.[Twilize](https://www.twilize.com) checks whether Ollama is already installed on your machine\n\n2.If not, it runs winget install Ollama.Ollama — no separate installer needed\n\n3.Once Ollama is confirmed, it pulls the model weights: ollama pull gemma4\n\n4.The download is roughly 6 GB — expect 5 to 15 minutes depending on your connection\n\n5.When done, the panel shows a green “ready” badge next to Gemma 4\n\n💡 Verify at any time: Open a new PowerShell window and run ollama list. You should see gemma4 in the model list.\n\n**# Verify Ollama sees the model**\n\nPS> ollama list\n\nNAME ID SIZE MODIFIED\n\ngemma4:latest a1b2c3d4e5f6 6.1 GB 2 minutes ago\n\n3Load the CSV Into the Data Source Panel\n\nClick 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.\n\n[Twilize](https://www.twilize.com) immediately shows you:\n\n•Inferred field types — measure (numeric) vs dimension (categorical or date)\n\n•A sample of the first few rows\n\n•Row and column counts\n\nSpend 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.\n\n4 Write the Prompt\n\nThis step is optional but meaningfully shapes the output. I wanted a regional sales dashboard with a profit breakdown, so I typed:\n\nExecutive summary focused on regional sales trends and profit by\n\ncategory. Include a year-over-year comparison and highlight the top 5\n\nsub-categories by sales. KPI tiles at the top for total sales,\n\ntotal profit, and profit margin.\n\nYou 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.\n\n🔍 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'.\n\n5 Run Suggest and Review the Dashboard Plan\n\nClick 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.\n\nThe plan Gemma 4 returned proposed six charts:\n\nKPI tiles — Total Sales, Total Profit, Profit Margin (calculated field)\n\nBar chart — Sales by Region, sorted descending\n\nLine chart — Monthly Sales trend, coloured by Year for year-over-year overlay\n\nBar chart — Profit by Category with a reference line at zero\n\nTreemap — Sales by Sub-Category, Top 5 highlighted\n\nScatter plot — Sales vs. Profit by Sub-Category, sized by Discount\n\nThis 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.\n\n🔄 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.\n\n6Generate the Workbook\n\nClick 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.\n\nThe browser downloads the file automatically. The generation manifest:\n\n```\n{\n  \"dashboards\": 1,\n  \"charts\": 6,\n  \"required_charts_requested\": 3,\n  \"required_charts_fulfilled\": 3,\n  \"warnings\": [],\n  \"style_reference\": \"none\"\n}\n```\n\nZero warnings. All three pinned charts (KPI tiles, regional bar, YoY line) confirmed fulfilled.\n\n7Open in Tableau Desktop or Tableau Public\n\nDouble-click the .twbx file. Tableau Desktop or the free Tableau Public opens it directly. The data is embedded — no reconnection required.\n\nWhat I found already in place:\n\n•All six sheets present and correctly named\n\n•Profit Margin calculated field pre-built: SUM([Profit]) / SUM([Sales])\n\n•Year-over-year line correctly split by Year (discrete), not continuous\n\n•Zero-reference line on the profit bar, formatted in grey\n\n•Treemap Top-5 filter using a Top N set — exactly the right approach\n\nWhat needed a quick manual touch:\n\n•Axis number format — Gemma used full integers; I switched Sales to abbreviated (K/M)\n\n•Dashboard tiled layout needed minor resize to fit a 16:9 widescreen\n\n•Colour palette — swapped Tableau’s default blue to a brand palette in about 2 minutes\n\nHonest Assessment: Gemma 4 vs Claude for This Task\n\nDimension Gemma 4 (Local) Claude (API)\n\nSuggest speed ~45 sec ~8 sec\n\nChart quality Very good Excellent\n\nCalculated fields Good Excellent\n\nSchema inference Good Excellent\n\nData privacy 100% local Sent to Anthropic\n\nCost per run Free ~$0.02–0.05\n\nNeeds internet One-time only Every run\n\nThe 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.\n\nFor 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.\n\nThe Takeaway\n\nRunning 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.\n\nThe full stack I used:\n\n• Twilize Standalone v1.01 — twilize.com\n\n• Gemma 4 via Ollama — installed automatically by Twilize\n\n• Superstore CSV — free from Tableau’s sample data page\n\n• Tableau Public — free desktop app to open the .twbx\n\nTotal time from installer to open workbook in Tableau: under 20 minutes, including the 6 GB model download. Without the download, closer to 4.\n\n💬 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.\n\nTags: Tableau · Gemma 4 · Local AI · Data Visualisation · Ollama · Business Intelligence · Twilize", "url": "https://wpnews.pro/news/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud", "canonical_source": "https://dev.to/twilize4332/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud-5bfm", "published_at": "2026-05-28 11:39:28+00:00", "updated_at": "2026-05-28 11:52:58.703950+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "generative-ai"], "entities": ["Gemma 4", "Twilize", "Anthropic", "Claude", "Tableau", "Ollama"], "alternates": {"html": "https://wpnews.pro/news/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud", "markdown": "https://wpnews.pro/news/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud.md", "text": "https://wpnews.pro/news/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud.txt", "jsonld": "https://wpnews.pro/news/i-generated-a-tableau-dashboard-using-gemma-4-locally-no-api-key-no-cloud.jsonld"}}