Spaces:
Running
A newer version of the Gradio SDK is available: 6.26.0
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).
- 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_liveboardalready removes note tiles (Step 2.5,line 4220) yet this one survives β so the MCP intro tile does NOT match the code'sline 663) renders the full name correctly and is the intended replacement.note_tiledetection. Its real structure must be inspected in an actual exported TML.create_branded_note_tile()( - 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. - Raw/doubled display names. "Total Total Order Revenue Usd", "Dim Region Name", "Fact Month Date_2". Needs a display-name cleanup pass.
- TABLE_MODE where a chart is intended. Some trend/breakdown vizzes render as tables. Force CHART_MODE for those.
- 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
answerinternals (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 viaPOST /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()inliveboard_creator.py. - Data-upgrade work (already done, for context):
origin/develop_dg@e769a68β addedshare_of(bounded parts),per(per-entity stable prices), dimension-richness + cost prompt guidance. Same "fix the system" philosophy applies to liveboards.