← Back to Blog
Building in Public

When the UX Audit Says ‘Stop’

christian crumlish•
A robot stopping to organize and prepare before going out, readiness checked before the user sees anything.
“Wait, you’re not ready!”

When the UX Audit Says ‘Stop’

November 13–14, 2025

The hardest thing to do when you’re about to ship is stop. You’re so close. First external alpha tester invited, setup wizard working, core features functional. The momentum says: ship now, fix later. But what if “later” means fixing things in front of real users who are forming first impressions you can’t undo?

That’s when you need the audit to say “stop.”

Not because shipping is wrong. Because shipping without knowing what you’re shipping is worse.

The moment before first impressions

Mid-November, Piper Morgan was alpha-ready by the technical definition. All P0 blockers resolved. Learning system functional. Authentication working. Setup wizard operational. Tests passing. We’d invited Beatrice Mercier — former GSA colleague, someone whose professional judgment I trust — to be our first external alpha tester.

And then I asked a UX Specialist designing the pattern suggestions interface: “Should we do a holistic UX audit before the first external alpha user arrives?”

The question emerged from unease. We’d been building systematically, testing thoroughly, documenting comprehensively. But we’d been building from the inside out. Feature by feature, system by system, component by component. What did the whole product actually look like to someone encountering it for the first time?

I commissioned the audit immediately. Similar depth to the Phase 3 pattern suggestions work. Get it done before Beatrice tests the system. This wasn’t about finding bugs — we had test coverage for bugs. This was about understanding the experience we’d created.

The UXR Specialist (Code Agent in researcher mode) started at 5:12 PM on Thursday. Worked until 7:30 PM that evening, then picked up Friday morning. By evening, the audit was complete.

Three hundred fifty pages.

Sixty-eight gaps.

Six user journeys scored from 2 out of 10 to 6.5 out of 10.

What sixty-eight gaps actually means

Here’s the thing about comprehensive audits: they’re supposed to find a lot of problems. That’s the point. If your audit finds three issues, you probably asked the wrong questions or looked in the wrong places.

Finding sixty-eight gaps sounds terrible! until you realize what the alternative was: shipping to Beatrice with all sixty-eight gaps still there, but undocumented. We’d discover them one by one as she encountered them. Each discovery would be a moment of “oh, we didn’t think about that.” Each gap would chip away at the “this seems professional and complete” impression we wanted to create.

The audit transformed sixty-eight invisible problems into documented, prioritized, addressable issues. That’s not bad news. That’s clarity.

The journey scoring told the story:

  • Journey 1 (Setup & Onboarding): 4 gaps, score 6.5/10 — Not terrible, but not delightful
  • Journey 2 (Daily Standup Flow): 12 gaps, score 4/10 — Core workflow needs work
  • Journey 3 (Chat Interaction): 15 gaps, score 5/10 — Basic functionality present, polish missing
  • Journey 4 (Learning System): 8 gaps, score 3/10 — New feature, rough edges everywhere
  • Journey 5 (Personality & Preferences): 11 gaps, score 3.5/10 — Settings buried, unclear
  • Journey 6 (Document Management): 18 gaps, score 2/10 — Crisis territory

Journey 6 was the big one. Users couldn’t effectively retrieve or manage documents they’d uploaded. The system stored documents — that worked. But finding them again? Organizing them? Understanding what was already uploaded? No good path for any of it.

This is a classic inside-out building problem. We implemented document upload successfully (from our perspective). Upload works, storage works, database handles it, tests pass. From inside the system, documents work fine. From outside the system, as a user trying to find “that document from last Tuesday,” it’s nearly impossible.

The audit caught this before Beatrice encountered it. That’s the intervention value.

What comprehensive audits reveal that incremental testing misses

We’d been testing incrementally. Feature testing: does document upload work? Yes. Integration testing: does the document show up in Notion? Yes. End-to-end testing: can we upload and retrieve a document? Yes, if you know the exact ID.

But we hadn’t asked: “As a user who uploaded five documents last week and three documents this week, how do I find the one about Q4 strategy?” That’s a journey question, not a feature question.

Comprehensive audits force journey thinking. They require the auditor to trace complete user paths from goal to completion:

“I want to review my documents” → Where do I start?
 → Find documents page → Is it in navigation?
 → See document list → Are they organized somehow?
 → Filter or search → Do these tools exist?
 → Open the right document → Can I tell which is which?
 → Read and use document → Does this work?

At each step, the audit asks: Is this easy? Is this clear? Is this well-designed? Or is it a gap?

Journey 6 had eighteen gaps because nearly every step had problems. Not bugs — usability gaps. Missing features that should have been obvious. Poor information architecture. Unclear affordances.

The other journeys revealed patterns:

  • Consistency gaps: Light theme vs dark theme, four different loading patterns, mixed button styles
  • Information architecture gaps: Settings buried three levels deep, no clear navigation hierarchy
  • Feedback gaps: Operations happening silently with no progress indication
  • Affordance gaps: Interactive elements that don’t look interactive
  • Empty state gaps: No guidance when lists are empty

These aren’t things you catch with unit tests or integration tests. They’re system-level experience problems that only emerge when you trace complete journeys systematically.

The design system gap

The audit also revealed something structural: we didn’t have a design system. We had patterns that had emerged organically as we built features. Light theme for early features, dark theme for later features. Ad-hoc color choices (#3498db blues here, #007acc blues there). Inconsistent spacing decisions (30px padding here, 25px there). Mixed measurement units (px, em, rem).

Each decision made sense in isolation. But together they created visual inconsistency and technical debt.

The audit proposed a complete design system: one hundred tokens for colors, typography, spacing, shadows. Semantic color scales (Primary/Success/Error/Warning/Info with 50–900 gradations). Typography scale using Major Third 1.25 ratio. Eight-pixel grid spacing system. Light/dark theme toggle support via CSS custom properties.

This wasn’t extra work — this was missing infrastructure. Without a design system, every new feature required reinventing visual decisions. With a design system, new features inherit consistency automatically.

The audit gave us the roadmap to build it properly.

The Quick Wins strategy

Three hundred fifty pages could have been paralyzing. Sixty-eight gaps could have felt insurmountable. “How do we fix all this before alpha testing?”

The audit answered that too: you don’t fix everything. You fix strategically.

The Quick Wins proposal: five high-impact, low-effort improvements that address 80% of user frustration for roughly $20K in development effort. Focus on the worst journeys first (Document Management at 2/10, Learning System at 3/10). Make them functional, then iterate.

  1. G1: Global navigation menu (orientation problem — users don’t know where they are)
  2. G8: Logged-in user indicator (context problem — users don’t know who they are)
  3. G50: Clear server startup message (onboarding problem — users don’t know if it worked)
  4. G2: Settings index page (findability problem — settings are buried)
  5. G4: Breadcrumb navigation (context problem — users don’t know how they got here)

Five features. Three to four hours of implementation. Journey scores jump from 3–4/10 to 6/10. The transformation from “confusing” to “usable” doesn’t require fixing all sixty-eight gaps. It requires fixing the right ones.

This is what good audits do: they don’t just identify problems, they propose solutions with effort estimates and impact projections. They turn “sixty-eight gaps” into “five features this week, eight features next sprint, design system migration over three months.”

Overwhelming becomes manageable.

When to audit comprehensively vs iterate incrementally

Not every situation needs a comprehensive audit. Sometimes incremental iteration is exactly right. The question is knowing when to stop iterating and audit comprehensively.

Audit comprehensively when:

You’re about to ship to external users for the first time. First impressions matter. You get one chance to seem professional and complete.

You’ve been building inside-out for months. Features work individually but you haven’t traced complete user journeys recently.

Team members use phrases like “users will figure it out” or “it’s obvious how this works.” These are danger signals. If it’s obvious to you (who built it), it might be opaque to users (who didn’t).

You’re feeling vague unease about “polish” or “user experience” but can’t articulate specific problems. Comprehensive audits surface what you sense but can’t name.

Multiple stakeholders have different mental models of “what’s ready to ship.” An audit provides objective assessment that aligns perspectives.

Iterate incrementally when:

You’re early in development with no external users yet. Premature auditing wastes time on features that will change.

You have active users providing regular feedback. User-driven iteration beats audit-driven improvement when feedback is flowing.

The system is stable and mature. Audits are most valuable during rapid change periods, less valuable during maintenance.

You’ve recently conducted an audit. Comprehensive audits are periodic interventions, not continuous processes.

The key insight: comprehensive audits are strategic interventions, not regular practice. They’re most valuable at inflection points — before first external users, before major feature additions, before scaling up, after long periods of inside-out building.

What stopping costs and buys

Commissioning the audit delayed alpha testing by one day. Friday instead of Thursday. That’s the cost — 24 hours of schedule slip.

The benefit: shipping with eyes open. Sixty-eight documented gaps, prioritized by impact. Quick Wins identified. Design system roadmap created. Complete understanding of what we were asking Beatrice to test.

Without the audit, she’d have encountered Journey 6 (Document Management at 2/10) and formed an impression: “They haven’t thought through basic usability.” With the audit, we knew about Journey 6 before she did. We could acknowledge it: “Yes, document management is rough. We’re aware. Here’s the plan to fix it.”

That’s the difference between seeming unaware and seeming in control.

The audit also changed our roadmap. Before the audit, we were planning feature additions. After the audit, we realized: fix the experience of existing features first. The sixty-eight gaps became the roadmap. Features can wait until the existing features work well.

The value of intervention

Comprehensive audits are interventions. They interrupt momentum. They force you to stop building and start looking. They transform vague concerns into documented issues. They reveal blind spots.

That’s uncomfortable. Momentum feels good. Building features feels productive. Stopping feels like delay.

But shipping with undocumented gaps is building blindly. You’re making decisions without data. You’re hoping users will “figure it out.” You’re creating technical debt and experience debt simultaneously.

The audit transforms hope into strategy. You stop guessing about user experience and start measuring it. You stop hoping gaps are small and start documenting how large they are. You stop planning features based on what’s easy to build and start prioritizing based on what’s hard to use.

Sixty-eight gaps before Beatrice tested became sixty-eight documented, prioritized, addressable improvements. Journey scores of 2/10 became roadmap items with effort estimates. Vague unease about “polish” became concrete Quick Wins proposals.

The audit said “stop.” We stopped. We looked. We measured. We planned.

Then we shipped with eyes open.

That’s the intervention value: shipping knowing what you’re shipping, not hoping it’s good enough.

← Back to BlogAlso available on Medium