One issue, start to finish
This is the actual grammar of the product: the ribbon the SDK captures, the issue the engine tracks, the diagnosis, and the confirm-metric that decides when it's done. Follow UX-07 through the loop.
The SDK writes a ribbon, not a firehose
Every interaction is recorded by meaning: label, role, section, parametrized route. Repeats collapse to a count before they leave the browser. When friction fires, a state probe records what was actually on screen.
view /projects/:id
click "Add tag" (button) Tasks
click "Tag dropdown" (select) Tasks ×13
rageclick "Tag dropdown" (select) Tasks
saw: empty list · no error shown · spinner false
nav /projects/:id/settings
click "Add tag" (button) Tasks ×4
Thousands of sessions become one issue
The engine groups recurring friction into issues with stable identity, so week over week means something. UX-07 is the same issue tomorrow, after the redesign, and in the digest.
Diagnosed once, with evidence attached
One diagnosis per issue, not per session. It names the cause, points at the code, proposes the fix, and, crucially, registers the metric that will prove it. A skeptic gate drops anything without concrete evidence.
| Cause | Tag dropdown closes before the selection registers (state commit race) |
| Saw | empty dropdown at click · no error shown · spinner false |
| Fix | app/components/TagPicker.tsx · keep the menu mounted until the mutation settles (diff attached, ready for your coding agent) |
| Confirm | rageclicks per tag-session · now 4.2 · target 1.0 |
You ship. Sonder watches the metric.
Releases are stamped by SDK build ID, so the engine knows exactly which sessions ran your fix. When the confirm-metric crosses its target, the issue resolves itself. If it climbs back later, the issue reopens as regressed and the digest says so.
rageclicks/tag-session · fix shipped in v2.4.1 · 9 sessions, 6 users since · honest caveat: correlation, not an A/B
The digest only speaks when something moved
No Monday wall of charts. The weekly digest (email or Slack) carries movement only: what resolved, what regressed, what's new. Reply to it and the teammate answers from the board.
Sonder digest · week of Jun 29
- UX-11 Export silent fail resolved. Silent-fail clicks 4.2 → 0.6 per session after v2.4.1. Nine sessions confirm.
- UX-05 Upgrade modal dead clicks regressed after v2.7: +18% week over week. The confirm-metric reopened the issue.
- New: UX-16 Invite form abandons on the last field. 12 users this week. Diagnosis queued.
See it on your own traffic
One command, about 90 seconds, and the board starts filling from your real sessions.