test-demoprep / docs /LIVEBOARD_HANDOFF.md
mikeboone's picture
docs: liveboard handoff + data-upgrade working plan
c09e689
|
Raw
History Blame Contribute Delete
4.42 kB

A newer version of the Gradio SDK is available: 6.26.0

Upgrade

Liveboard Quality β€” Handoff Note

Status: NOT started. This is groundwork/diagnosis only. The current "data upgrade" session focused on DATA quality (see origin/develop_dg @ e769a68); liveboard is the next lever and untouched. Fix the generation system for any prospect β€” never tune to the test companies or reverse-engineer the grader (see memory fix-system-not-grader).

The problem

In tests/e2e_quality.py, every successful demo scores the liveboard exactly 72/100 (18 pts) β€” identical across 6+ very different companies. A constant like that is a structural ceiling, not chance. The grader's critiques are consistent and correct (real defects, not grader quirks). Per-defect detail lives in the latest tests/quality_results/*_quality_run.json under tests[].ai_grading.liveboard_weaknesses.

The 5 systemic defects (recurring across every run)

All live in the MCP + enhance_mcp_liveboard() flow β€” liveboard_creator.py ~line 4083, the single supported liveboard path (MCP creates the board, this function post-processes the exported TML and re-imports).

  1. Single-letter intro heading. The intro tile's H1 is just the company's first letter ("C" Chipotle, "D" Dynatrace, "W" Wells Fargo). Gotcha: enhance_mcp_liveboard already removes note tiles (Step 2.5, line 4220) yet this one survives β€” so the MCP intro tile does NOT match the code's note_tile detection. Its real structure must be inspected in an actual exported TML. create_branded_note_tile() (line 663) renders the full name correctly and is the intended replacement.
  2. Rate/average measures aggregated as SUM. "Avg Selling Price", "CTR", "Revenue Per Billable Head" get summed β†’ semantically wrong. Fix: detect rate/avg/ratio measures (fmt=pct, or name βˆ‹ RATE/AVG/PCT/MARGIN/PER/PRICE) and set aggregation to AVERAGE.
  3. Raw/doubled display names. "Total Total Order Revenue Usd", "Dim Region Name", "Fact Month Date_2". Needs a display-name cleanup pass.
  4. TABLE_MODE where a chart is intended. Some trend/breakdown vizzes render as tables. Force CHART_MODE for those.
  5. No dedicated time-series line + inconsistent time windows (last 12 / 18 / 24 months / none, mixed across vizzes). Add one explicit trend line and one consistent default window.

The golden standard: goldendemo/Vizio.com.liveboard.tml

This is the gold standard to make enhance_mcp_liveboard output resemble. 48 vizzes. It confirms every fix above:

  • Clean measure names β€” GrossSales, NetSales, UnitPrice, GrossMarginPct, CostAmount, DiscountAmount, ReturnAmount (CamelCase; no Dim/Fact/Total-Total).
  • Correct aggregation β€” average [UnitPrice], sum [GrossSales] (per-measure semantics).
  • Rich time hierarchy β€” [FullDate].monthly/.weekly/.quarterly/.yearly/.'day of week'/ .'month of year'.
  • 47 formula columns β€” running totals, 3-month moving averages, growth, YoY (this year vs last year), forecasting (next 6 months).
  • Chart variety β€” KPI, LINE, COLUMN, BAR, PIE, HEATMAP, SANKEY, BUBBLE, STACKED_*, ADVANCED_*, LINE_COLUMN, CUSTOM_CHART.
  • Consistent windows β€” 'last 12 months', 'last 6 months', YoY. display_mode: CHART_MODE.

How to do it right (constraints)

  • Work against a REAL exported TML. The aggregation / display-name / display-mode fields live inside viz answer internals (answer.columns, search_query, display_mode) β€” NOT the outer schema. Editing against guessed paths will silently no-op or corrupt a working board. Export a recent graded board via POST /api/rest/2.0/metadata/tml/export, or use the goldendemo file for the target shape.
  • Add the fixes as guarded passes inside enhance_mcp_liveboard (it already exports β†’ post-processes β†’ re-imports). Wrap each so a mis-fire degrades gracefully β€” liveboard creation currently WORKS; do not break it.
  • Verify each fix by exportβ†’modifyβ†’re-import against a live board. Don't claim fixed without testing.

Pointers

  • Entry: create_liveboard_from_model_mcp() β†’ enhance_mcp_liveboard() in liveboard_creator.py.
  • Data-upgrade work (already done, for context): origin/develop_dg @ e769a68 β€” added share_of (bounded parts), per (per-entity stable prices), dimension-richness + cost prompt guidance. Same "fix the system" philosophy applies to liveboards.