vc_008 · Descriptive analytics — monthly client panel

Status: ✓ Passing · Last run: 2026-06-04T05:55:58 · Pipeline: analyze · History: 2/3 runs passed (67%)

What was tested

Same data shape vc_002 uses for ML (panel_snapshot — one row per (client, monthly snapshot)), but here the analyze_agent is asked structural questions about the panel itself: distinct entity count, number of snapshots, time span, marginal positive rate. Tests that the chat surface correctly introspects a panel — counting distinct entities (DISTINCT client_id) is meaningfully different from counting rows, and confusing them is a common analytical mistake the agent must not make.

What we planted in the data

What the system did

What we checked — all assertions passed

Status Assertion Detail
tool_was_used agent used query_bigquery in session up through 'q_time_span'
answer_includes_number_near answer contains 35.20, within 30% of expected 30.00
tool_was_used agent used query_bigquery in session up through 'q_time_span'
answer_includes_number_near answer contains 35.20, within 30% of expected 30.00
tool_was_used agent used query_bigquery in session up through 'q_time_span'
answer_includes_number_near answer contains 35.20, within 30% of expected 30.00
tool_was_used agent used query_bigquery in session up through 'q_time_span'
answer_mentions_fact all expected facts present in answer to 'q_time_span'

How this could have gone wrong

Why this case matters

Panels are where analytical chat agents go wrong most often. Common failures: confusing row count with entity count, reporting the POOLED positive rate when the per-snapshot rate was asked, missing the time dimension entirely. This case is the canary that the chat surface handles all three correctly on the simplest possible panel.

Reproducing

# from auto_insight_api/
python -m validation.v2 run vc_008 --pipeline analyze -v

← back to validation report