Build a complete Tableau dashboard from a CSV file (end-to-end).
Pipeline: CSV → schema inference → chart suggestion → Hyper extract →
workbook creation → chart configuration → dashboard layout → .twbx output.
IMPORTANT FOR AI AGENTS — know before you call:
* Auto-selected charts are picked by RULES (data shape + heuristics),
NOT by natural-language chart requests. To guarantee a specific chart
(e.g. "top 10 customers by profit") you MUST pass it via
``required_charts``; otherwise it may or may not be generated and
may be trimmed out by ``max_charts``.
* The user's reference image is NOT automatically read from the chat.
If the user asks for styling "like this image", you must save the
image to disk and pass its path via ``reference_image``.
* This tool returns a STRUCTURED MANIFEST dict describing what was
actually built. Always cite fields from the returned manifest
(worksheets / theme / dashboards) when describing the result to
the user — do NOT invent charts that are not listed there.
Args:
csv_path: Path to the source CSV file.
output_path: Output .twbx path (defaults to <csv_stem>_dashboard.twbx).
dashboard_title: Dashboard title (derived from filename if empty).
max_charts: Maximum number of charts (0 = use dashboard_rules.yaml default).
template_path: TWB template path (empty for default template).
theme: Theme preset name (empty = use dashboard_rules.yaml default).
Options: modern-light, modern-dark, classic, minimal, vibrant.
rules_yaml: Optional YAML string with dashboard rules overrides.
Example: "kpi:\n font_size: 32\n max_kpis: 3"
required_charts: Optional list of chart specs that MUST be built.
Each entry is a dict, for example::
{"title": "Top 10 Customers by Profit",
"kind": "bar",
"rows": "Customer Name",
"columns": "SUM(Profit)",
"top_n": 10, "top_by": "SUM(Profit)",
"sort_descending": "SUM(Profit)"}
Supported kinds: bar, line, scatter, pie, map, heatmap,
tree_map, text. Required charts bypass dedup + trim.
reference_image: Optional path to a PNG/JPG whose palette should
drive the dashboard styling. Applied AFTER the theme so image
colours win. The path must exist on disk; chat attachments
need to be saved first.
Returns:
Structured manifest dict with keys: ``status``, ``output_path``,
``source``, ``dashboards``, ``worksheets``, ``charts_built``,
``required_charts_fulfilled``, ``dropped_suggestions``, ``theme``,
``warnings``, ``summary``. Cite THIS dict when describing results.