May 10, 2026v1.2.0
Snowflake migration + CSAT detail drawer
ShippedData layer migration: Gusto NPS, Flex NPS, and all 4 CSAT data sources now served from Snowflake direct. Faster page loads, on-demand refresh via ?refresh=1, no more Hightouch sync lag.
ShippedCSAT detail drawer: click any response row on /csat/gusto or /csat/flex to see the full respondent profile, satisfaction rating, survey responses, and engagement metrics. Mirrors the NPS drawer pattern.
ShippedShared DateRangePicker: typeable inputs, Notion-style range UX (click start, then end), unified across all 5 dashboards. Replaces the broken per-page picker that caused mid-interaction reloads.
ShippedSnowflake fetcher centralization: shared helpers (coerceDate, type coercion, cache keys, date filters) consolidated into lib/data/snowflake.ts. Future data sources inherit fixes automatically.
ShippedNotion cleanup: legacy fetcher files removed from the codebase. Credit Builder remains on Notion intentionally (being replaced by a new study).
PlannedCSAT detail drawer — full spec: cross-product survey history per user (NPS + CSAT PA + CSAT P90 timeline), satisfaction trajectory mini-chart, NPS↔CSAT linking by user ID, "days since first advance" stamps on each response.
PlannedTier 1+2 frontend wave: engagement cohort filter pills (Power / Regular / Dormant) on CSAT pages. Total $ / avg advance size / cost-of-capital % surfaced using new native Snowflake fields.
PlannedQuestion Explorer rework: JSON config + pie charts for choice questions + Marketing Quotes tab + needs-review badge.
PlannedManual refresh button on every dashboard page (UI for the existing ?refresh=1 cache bypass).
RoadmapProduction hardening: Snowflake env vars synced via Infisical, open-next.config.ts fix, VPN / password-protect the subdomain.
RoadmapRound 3 polish: semantic search / RAG to replace /ask keyword pre-filter, SSE streaming for /ask thinking stages, real Typeform question titles replacing the humanizeKey fallback, sentiment overhaul (collapsible 3-max + ask-your-own + theme counts), compound time filtering.