demoprep_doc / status_report.html
mike boone
Upload status_report.html with huggingface_hub
d37f708 verified
Raw
History Blame Contribute Delete
13 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>DemoPrep Status Report</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background: #0f1117;
color: #e2e8f0;
line-height: 1.7;
padding: 48px 24px;
}
.container {
max-width: 820px;
margin: 0 auto;
}
.header {
border-bottom: 1px solid #2d3748;
padding-bottom: 28px;
margin-bottom: 36px;
}
.header h1 {
font-size: 28px;
font-weight: 700;
color: #ffffff;
margin-bottom: 6px;
}
.header .date {
font-size: 14px;
color: #718096;
margin-bottom: 20px;
}
.links {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
}
.links a {
display: inline-block;
background: #1a202c;
border: 1px solid #2d3748;
border-radius: 6px;
padding: 8px 16px;
font-size: 13px;
color: #63b3ed;
text-decoration: none;
transition: border-color 0.15s;
}
.links a:hover {
border-color: #63b3ed;
}
.links a .label {
color: #718096;
margin-right: 6px;
}
.status-badge {
display: inline-block;
background: #1c4532;
color: #68d391;
border: 1px solid #276749;
border-radius: 20px;
padding: 3px 12px;
font-size: 12px;
font-weight: 600;
margin-bottom: 16px;
}
h2 {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #718096;
margin: 40px 0 20px;
}
.section {
background: #1a202c;
border: 1px solid #2d3748;
border-radius: 8px;
padding: 24px;
margin-bottom: 16px;
}
.section h3 {
font-size: 15px;
font-weight: 600;
color: #ffffff;
margin-bottom: 10px;
}
.section p {
font-size: 14px;
color: #a0aec0;
}
.section p + p {
margin-top: 10px;
}
.next-list {
list-style: none;
padding: 0;
}
.next-list li {
font-size: 14px;
color: #a0aec0;
padding: 10px 0;
border-bottom: 1px solid #2d3748;
padding-left: 20px;
position: relative;
}
.next-list li:last-child {
border-bottom: none;
}
.next-list li::before {
content: "β†’";
position: absolute;
left: 0;
color: #4a5568;
}
.archive-section {
background: #111827;
border: 1px solid #1f2937;
border-radius: 8px;
padding: 24px;
margin-bottom: 16px;
}
.archive-section h3 {
font-size: 15px;
font-weight: 600;
color: #6b7280;
margin-bottom: 10px;
}
.archive-section p {
font-size: 14px;
color: #6b7280;
}
.archive-toggle {
font-size: 12px;
color: #4a5568;
cursor: pointer;
text-decoration: underline;
margin-bottom: 16px;
display: block;
}
.footer {
margin-top: 48px;
padding-top: 24px;
border-top: 1px solid #2d3748;
font-size: 13px;
color: #4a5568;
text-align: center;
}
.footer a {
color: #63b3ed;
text-decoration: none;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>DemoPrep Status Report</h1>
<div class="date">April 28, 2026</div>
<div class="links">
<a href="https://thoughtspot-dp-demoprep.hf.space" target="_blank">
<span class="label">App</span>thoughtspot-dp-demoprep.hf.space
</a>
<a href="https://huggingface.co/spaces/boone-ts/demoprep_doc" target="_blank">
<span class="label">Enablement</span>Quick Start Guide
</a>
</div>
</div>
<div class="status-badge">Active Development β€” Beta Launch</div>
<div class="section">
<h3>Test / Production Environment Separation</h3>
<p>Introduced a dedicated test HF Space (separate from the live production app) so changes can be validated end-to-end before reaching users. A visible banner appears in the test environment so there's no confusion about which instance you're in. The test pipeline now requires an explicit target URL β€” there's no default that could silently point at the wrong environment. This lets us iterate fast without risking an active demo.</p>
</div>
<div class="section">
<h3>End-to-End Quality Test Suite</h3>
<p>Built a Playwright-based test harness that runs against the live test app and grades each run with an LLM. The suite covers six test cases across Financial Services, Retail, Technology, and a freeform Custom vertical. Each run gets a quality score (0–100) across data, model, liveboard, and story dimensions. Scores are running 67–77/100 on passing runs β€” this becomes the ongoing quality bar we measure against as we make changes.</p>
<p>The suite also handles real-world test logistics: automatic re-login when sessions expire mid-run, space rebuild detection after a push, stuck-stage timeouts, and pipeline error detection so failures bail early instead of waiting the full timeout window.</p>
</div>
<div class="section">
<h3>Critical Pipeline Bug Fixed β€” Every Liveboard Was Crashing</h3>
<p>Caught and fixed a NameError in the MCP liveboard creation function β€” a variable referenced as <code>outliers</code> throughout the function but defined as <code>data_outliers</code> in the parameter signature. This caused every single liveboard creation attempt to crash on the first reference. The bug was invisible without a full end-to-end test, which is exactly what the new quality suite caught.</p>
</div>
<div class="section">
<h3>Data Quality Improvements</h3>
<p>The DATES table now always spans two full years regardless of dataset size β€” previously it was truncated on smaller presets, which broke time-based KPIs. Default fact table size bumped from 1,000 to 10,000 rows, giving liveboards enough data to show meaningful trends, comparisons, and KPI movement out of the box. Realistic ranges added for inventory and supply chain columns (days on hand, lead time, safety stock).</p>
</div>
<div class="section">
<h3>Numeric Type Fix</h3>
<p>Snowflake's internal type names (<code>FIXED</code> for INT, <code>REAL</code> for FLOAT) weren't recognized, causing every row insert to fail with a type mismatch error on many runs. All three conversion layers now handle the full set of Snowflake numeric types.</p>
</div>
<div class="section">
<h3>LegitData API Call Reduction</h3>
<p>Entity generation was making 50+ AI API calls per run (10 per dimension table Γ— 5 tables). Replaced with a seed-and-cycle approach: one API call generates up to 50 entities, then cycles them to fill the target. Eliminates timeout failures on larger presets and cuts data generation time significantly.</p>
</div>
<div class="section">
<h3>ThoughtSpot Auth Hardening</h3>
<p>Removed all fallback paths that allowed the pipeline to continue with a wrong or missing ThoughtSpot URL. The TS Environment dropdown is now the required input β€” if it's not set, the pipeline fails immediately with a clear error instead of silently using stale credentials or a wrong environment. This prevents a class of subtle failures where objects were being created in the wrong TS instance.</p>
</div>
<div class="section">
<h3>Test Environment Banner</h3>
<p>The test HF Space now shows a visible banner so there's no confusion between the test and production instances β€” no more accidentally running a demo against the wrong environment.</p>
</div>
<div class="section">
<h3>Admin UX</h3>
<p>User list in the Admin tab is now sorted by most recent login, converted to EST. Makes it easy to see who's been active recently without scanning an unordered list.</p>
</div>
<div class="section">
<h3>* CUSTOM * Vertical</h3>
<p>The custom vertical path has been renamed from the old star-character version for consistency and positioned at the bottom of the vertical dropdown β€” easier to find, cleaner to read.</p>
</div>
<div class="section">
<h3>Persona &amp; Vertical Matrix</h3>
<p>Built out a full 3-level dropdown (vertical β†’ line β†’ function) that drives the demo story β€” KPIs, visualizations, and target persona all flow from the selection. A matrix editor tab in the app lets us view and edit coverage directly. The matrix was seeded with TS resources and AI-filled gaps; we're actively looking for field input to make each vertical's story more accurate.</p>
</div>
<div class="section">
<h3>Pipeline Logging Overhaul</h3>
<p>Every stage of the pipeline now writes structured logs to Supabase: DDL generation, Snowflake deployment, ThoughtSpot model creation, liveboard enhancement, sharing, tagging, and Sage indexing. Failures capture the exact step and error message. An Admin log viewer lets us filter by user and review any run. Before this, most of the pipeline ran silently β€” when something failed, there was no visibility into where or why.</p>
</div>
<div class="section">
<h3>Improved Onboarding</h3>
<p>A Run History tab now gives a full log of every pipeline run β€” company, use case, vertical, status, and duration β€” making it easy to review activity and troubleshoot failures. Automated Slack onboarding is implemented and ready: new users will receive credentials and setup instructions automatically. Goes live once the Slack app clears the approval process.</p>
</div>
<h2>Previously Delivered β€” Through April 16</h2>
<div class="archive-section">
<h3>Industry Matrix β€” 3-Level Cascade Navigation</h3>
<p>Completely rebuilt the demo selection system. Replaced the flat two-field form with a 3-level cascade: Industry β†’ Line of Business β†’ Function, with 15 lines of business across all verticals. The matrix drives curated KPIs, story questions, persona, and talking points for each combination, with a smart fallback chain. A Custom path handles demos outside the defined matrix.</p>
</div>
<div class="archive-section">
<h3>Demo Story Quality</h3>
<p>Rebuilt question generation around a story-first approach β€” curated narrative questions, KPI definitions, persona context, and business problem are injected into the AI prompt as primary guidance instead of letting the AI guess from available columns.</p>
</div>
<div class="archive-section">
<h3>UI &amp; Navigation</h3>
<p>App tab and Chat tab separated. Custom vertical path added. Spotter Viz generates dual stories (matrix-grounded + AI-generated). AI Feedback and Deploy Log consolidated. Pipeline progress indicator now correctly advances to Complete. Remember Me on login.</p>
</div>
<div class="archive-section">
<h3>Logging, Observability &amp; Infrastructure</h3>
<p>Comprehensive logging across all pipeline stages with configurable log levels (off / regular / verbose) settable in Admin. Admin run history tab shows every pipeline run, user, status, failure stage, and duration. Per-session state isolation for all loggers β€” concurrent users no longer share state.</p>
</div>
<div class="archive-section">
<h3>Spotter Viz Story</h3>
<p>Fixed story generation flow. Output is clean numbered prompts only, with full model URL included so Spotter doesn't ask which data source to use.</p>
</div>
<h2>Working On Next</h2>
<div class="section">
<ul class="next-list">
<li>Quality Suite to 6/6 β€” Currently 4/6 tests passing. Two remaining failures (Banking + one Marketing run) are from the numeric type fix just pushed β€” running full suite to confirm.</li>
<li>Enablement β€” Continuing to build out the guide and demo videos</li>
<li>Team Input on the Matrix β€” Story definitions started with TS resources, then AI filled gaps as we expanded. Would love field input on liveboard makeup and key outlier questions for each vertical</li>
<li>Async Pipeline β€” Data population and ThoughtSpot model creation currently run sequentially; refactoring to run in parallel to cut pipeline time</li>
<li>Data Quality β€” Connecting the persona matrix to the data generator so numbers better reflect the story we're telling</li>
</ul>
</div>
<div class="footer">
DemoPrep &nbsp;Β·&nbsp; <a href="https://thoughtspot-dp-demoprep.hf.space">App</a> &nbsp;Β·&nbsp; <a href="https://huggingface.co/spaces/boone-ts/demoprep_doc">Enablement Guide</a>
</div>
</div>
</body>
</html>