A UX intelligence tool built for designers, not analysts.
Pulse is an AI-native product I designed and built end to end in code. It diagnoses friction in production interfaces, anchored to your design system at the component level.
I built it because every analytics tool speaks to analysts. Hotjar reports bounce rates. FullStory buries insights in enterprise search. Contentsquare maps friction to revenue, not components.
Designers ship components. Their tools report on pages.
A designer doesn't need "bounce rate increased 12% on /onboarding." She needs to know users click submit 3.2 times because the disabled state looks enabled. That's a WCAG 1.4.3 violation.
The gap is translation, not data. Pages are too coarse, sessions too granular. Components are the unit designers think in.
Make the heatmap an interface, not a visualization.
You can look at a Hotjar heatmap. You can't ask it a question.
Hover a hot zone and the diagnosis arrives with a fix attached. The blob became a tool.
The Living Observatory.
A procedural wireframe renders in code, not screenshots. Four heatmap layers (Friction, Rage Clicks, Dead Clicks, Attention) overlay it in OKLab-interpolated thermal palettes.
Every diagnosis anchors to the component you shipped, not the page. It names the users affected and a token-level fix.
Adding a heatmap layer is a sentence to Pulse. I name the layer; the canvas paints it in.
I add the rage-click layer. The hot zone sharpens.
The first version was competent and forgettable.
I told the dark dashboard to become one canvas.
Version one was Linear meets Datadog. The rebuild is one canvas.
The rebuild went paper-on-cream with Geist Mono headlines: one canvas, two drawers, not five dashboard views. Page X-Ray became the Living Observatory, exploratory instead of medical.
The lesson wasn't "redesign harder." Competent SaaS dashboard work has a ceiling, and it sits far below memorable.
Every change started as an annotation.
My two-Claude method: I annotate a component, Claude Code executes, I review what ships back. This loop built every part of Pulse. Below, one real instance.
I built Pulse by annotating components and letting Claude Code execute.
A concept that earns its place.
17 issues authored across five pages. 32 components tracked. Six procedural wireframes rendered in code. Four heatmap layers. Twelve build phases on a single branch in a focused day, on top of six weeks of part-time work.
The canvas isn't the point; the strategic argument is. Pulse names its competitors, what it won't build (predictive heatmaps, mobile, Figma integration), and its buyer: a Director of Design.
What I'd do differently. I polished the monitoring dashboard too long before seeing it wasn't the interesting part. Next time I'd mock the most ambitious interaction first.
Built with: Figma, Next.js 14, TypeScript, Tailwind v4, Framer Motion. Procedural SVG wireframes and a custom canvas heatmap renderer at 60fps.
Live prototype → (coming soon)