All work

Strive Labs

Report builder

Lovable for marketing reports — except the artifact is wired to live data. The agent writes the whole document; you describe changes and own the result.

Role
Design engineer, primary author
Scope
Every file in the module
Status
In production, still shipping
Link
strivelabs.ai

The short version

The conversation is the builder

The hard parts

Running code you didn't write

Brand theming, automatically

PDF export

Under the hood

Core
React 19, TypeScript, Vite, Tailwind
State
TanStack Query (cache invalidation drives the live refresh), Zustand
Isolation
allow-scripts-only iframe, opaque-origin postMessage protocol
Report runtime
Agent-authored HTML — Tailwind CDN + Chart.js inside the sandbox
Data
BigQuery + Cube semantic layer, brokered through the bridge
Export
DOM self-snapshot → headless-Chromium Lambda → S3 signed URL
Native reports
Block renderers, Recharts, TanStack Table
Platform
Clerk auth, PostHog analytics, Vitest + Playwright

Why it matters

Reports are where the platform's work becomes visible. Agents run, data lands in the warehouse, and this is the surface where a marketer actually sees it — branded like their own product, live rather than stale, and one click from a conversation about what to do next.

A dashboard shows you the numbers someone else chose. This writes the report you asked for.

Back to all work