# The UX Maturity Model

A five stage framework for evaluating where your design organization sits.

<style>
.scale-overview {
    padding: 60px 0;
    background: var(--paper-soft);
    border-bottom: 1px solid var(--line);
  }
  .scale-track {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 8px;
    padding: 0 40px;
  }
  .scale-step {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: 6px;
    padding: 24px 20px;
    text-align: center;
    transition: all 0.2s;
    text-decoration: none;
    color: inherit;
  }
  .scale-step:hover {
    border-color: var(--red);
    transform: translateY(-2px);
    color: inherit;
  }
  .scale-step-num {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: 28px;
    color: var(--red);
    line-height: 1;
    margin-bottom: 12px;
    letter-spacing: -0.02em;
  }
  .scale-step-name {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 14px;
    color: var(--ink);
    margin-bottom: 6px;
  }
  .scale-step-tagline {
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ink-muted);
    line-height: 1.4;
  }

  .stage {
    max-width: 1000px;
    margin: 0 auto;
    padding: 80px 40px;
    border-bottom: 1px solid var(--line);
  }
  .stage:last-child { border-bottom: none; }
  .stage-header {
    display: flex;
    align-items: baseline;
    gap: 24px;
    margin-bottom: 28px;
    flex-wrap: wrap;
  }
  .stage-badge {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--red);
    background: var(--red-soft);
    padding: 6px 14px;
    border-radius: 100px;
    font-weight: 600;
  }
  .stage h2 {
    font-family: var(--font-display);
    font-weight: 800;
    font-size: clamp(32px, 4vw, 44px);
    line-height: 1.1;
    color: var(--ink);
    letter-spacing: -0.025em;
  }
  .stage h2 .accent { color: var(--red); }
  .stage-lede {
    font-size: 17px;
    line-height: 1.65;
    color: var(--ink-soft);
    margin-bottom: 32px;
    font-weight: 300;
  }
  .stage-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
  }
  .stage-col h3 {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--red);
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--line);
  }
  .stage-col ul { list-style: none; padding: 0; }
  .stage-col li {
    padding: 8px 0 8px 22px;
    position: relative;
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink-soft);
  }
  .stage-col li::before {
    content: '→';
    position: absolute;
    left: 0;
    color: var(--red);
    font-weight: 600;
  }
  .stage-recommendation {
    margin-top: 28px;
    padding: 24px 28px;
    background: var(--paper-soft);
    border-left: 3px solid var(--red);
    border-radius: 4px;
  }
  .stage-recommendation-label {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--red);
    margin-bottom: 10px;
  }
  .stage-recommendation p {
    font-family: var(--font-display);
    font-style: italic;
    font-weight: 500;
    font-size: 16px;
    line-height: 1.55;
    color: var(--ink);
  }

  .cta-band {
    padding: 100px 0;
    background: var(--black);
    color: var(--white);
    text-align: center;
    position: relative;
    overflow: hidden;
  }
  .cta-band::before {
    content: '';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 700px; height: 700px;
    background: radial-gradient(circle, rgba(153, 27, 27, 0.08) 0%, transparent 60%);
    pointer-events: none;
  }
  .cta-band .container { position: relative; z-index: 2; }
  .cta-band h2 {
    color: var(--white);
    font-size: clamp(32px, 4vw, 48px);
    font-weight: 800;
    margin-bottom: 24px;
  }
  .cta-band h2 .accent { color: var(--red); }
  .cta-band p {
    color: var(--text-on-dark-soft);
    font-size: 18px;
    max-width: 600px;
    margin: 0 auto 36px;
    font-weight: 300;
  }

  @media (max-width: 980px) {
    .scale-track { grid-template-columns: repeat(2, 1fr); }
    .stage-grid { grid-template-columns: 1fr; }
  }
</style>

<section class="page-hero">
  <div class="container">
    <div class="breadcrumb">
      <a href="/">Density Labs</a> <span>/</span> <a href="/design/">Product Design</a> <span>/</span> Maturity Model
    </div>
    <h1>The UX <span class="accent">Maturity Model</span>.</h1>
    <p class="lede">A five stage framework for evaluating where your design organization sits and what to invest in next. We use it on every discovery call. Free to apply yourself.</p>
  </div>
</section>

<section class="scale-overview">
  <div class="scale-track">
    <a href="#stage-1" class="scale-step">
      <div class="scale-step-num">01</div>
      <div class="scale-step-name">Absent</div>
      <div class="scale-step-tagline">No design function</div>
    </a>
    <a href="#stage-2" class="scale-step">
      <div class="scale-step-num">02</div>
      <div class="scale-step-name">Decorative</div>
      <div class="scale-step-tagline">Design as polish</div>
    </a>
    <a href="#stage-3" class="scale-step">
      <div class="scale-step-num">03</div>
      <div class="scale-step-name">Functional</div>
      <div class="scale-step-tagline">Design as a service</div>
    </a>
    <a href="#stage-4" class="scale-step">
      <div class="scale-step-num">04</div>
      <div class="scale-step-name">Integrated</div>
      <div class="scale-step-tagline">Design at the table</div>
    </a>
    <a href="#stage-5" class="scale-step">
      <div class="scale-step-num">05</div>
      <div class="scale-step-name">Strategic</div>
      <div class="scale-step-tagline">Design drives outcomes</div>
    </a>
  </div>
</section>

<div class="stage" id="stage-1">
  <div class="stage-header">
    <span class="stage-badge">Stage 01</span>
    <h2>Absent. <span class="accent">No design function.</span></h2>
  </div>
  <p class="stage-lede">There is no designer on the team. The product is built by engineers who pick patterns from frameworks or competitors. The interface works but feels generic. UX decisions happen as a side effect of engineering decisions.</p>
  <div class="stage-grid">
    <div class="stage-col">
      <h3>Signs you are here</h3>
      <ul>
        <li>No designer in the org</li>
        <li>UI built from a component library, mostly unmodified</li>
        <li>Engineers make UX calls during sprint planning</li>
        <li>"We'll add design when we have product market fit"</li>
        <li>Customer feedback frequently mentions "feels clunky"</li>
      </ul>
    </div>
    <div class="stage-col">
      <h3>Common pitfalls</h3>
      <ul>
        <li>Hiring a single designer expecting strategic impact</li>
        <li>Over-investing in research before basics are in place</li>
        <li>Buying a design system before understanding usage</li>
        <li>Treating UX as cosmetic when it's structural</li>
      </ul>
    </div>
  </div>
  <div class="stage-recommendation">
    <div class="stage-recommendation-label">Recommended investment</div>
    <p>"Hire or embed one senior designer. Their first job is not designing features, it's establishing what design even means in your org. Foundations: tokens, components, naming, handoff. Pretty mockups can wait."</p>
  </div>
</div>

<div class="stage" id="stage-2">
  <div class="stage-header">
    <span class="stage-badge">Stage 02</span>
    <h2>Decorative. <span class="accent">Design as polish.</span></h2>
  </div>
  <p class="stage-lede">A designer exists. They are brought in late to make engineering's work look better. The product is functional but inconsistent, different pages feel like different products. Design rarely shapes what gets built, only how it looks once built.</p>
  <div class="stage-grid">
    <div class="stage-col">
      <h3>Signs you are here</h3>
      <ul>
        <li>One designer (often junior or contractor)</li>
        <li>Design tickets arrive after specs are finalized</li>
        <li>"Make it pretty" is a common request</li>
        <li>No design system; visual decisions per-feature</li>
        <li>Different parts of the product feel disconnected</li>
      </ul>
    </div>
    <div class="stage-col">
      <h3>Common pitfalls</h3>
      <ul>
        <li>Burning out the lone designer with rework</li>
        <li>Treating inconsistency as cosmetic instead of structural</li>
        <li>Hiring more designers without changing the process</li>
        <li>Skipping foundations to chase features</li>
      </ul>
    </div>
  </div>
  <div class="stage-recommendation">
    <div class="stage-recommendation-label">Recommended investment</div>
    <p>"Build foundations. Tokens, components, type system, handoff protocol. This is the unglamorous work that compounds. Without it, every feature reinvents the wheel."</p>
  </div>
</div>

<div class="stage" id="stage-3">
  <div class="stage-header">
    <span class="stage-badge">Stage 03</span>
    <h2>Functional. <span class="accent">Design as a service.</span></h2>
  </div>
  <p class="stage-lede">There is a small design team. Engineering knows when to involve them. There's a basic design system. The product looks consistent. Design is treated as a competent service function, not a strategic partner. Designers respond to roadmap; they don't shape it.</p>
  <div class="stage-grid">
    <div class="stage-col">
      <h3>Signs you are here</h3>
      <ul>
        <li>2 to 5 designers, including a lead</li>
        <li>Working design system in active use</li>
        <li>Design involved before engineering, after PM</li>
        <li>Roadmap discussions happen without design</li>
        <li>Research happens occasionally, on request</li>
      </ul>
    </div>
    <div class="stage-col">
      <h3>Common pitfalls</h3>
      <ul>
        <li>Plateau here for years without realizing it's a plateau</li>
        <li>Confusing competent execution with strategic contribution</li>
        <li>Underutilizing senior designers as pixel-pushers</li>
        <li>Investing in tools instead of seat at the roadmap table</li>
      </ul>
    </div>
  </div>
  <div class="stage-recommendation">
    <div class="stage-recommendation-label">Recommended investment</div>
    <p>"This is the most common stage and the hardest to leave. The investment is structural: bring design into roadmap discussions before specs. Establish design rituals. Make research a standing practice, not an exception."</p>
  </div>
</div>

<div class="stage" id="stage-4">
  <div class="stage-header">
    <span class="stage-badge">Stage 04</span>
    <h2>Integrated. <span class="accent">Design at the table.</span></h2>
  </div>
  <p class="stage-lede">Design contributes to roadmap before specs are written. Designers are paired with PMs and engineers throughout the lifecycle. Research is continuous. The design system is mature and actively maintained. Design has voice in tradeoff conversations, not just execution conversations.</p>
  <div class="stage-grid">
    <div class="stage-col">
      <h3>Signs you are here</h3>
      <ul>
        <li>Mature design org with leadership representation</li>
        <li>Designers in roadmap and prioritization meetings</li>
        <li>Continuous research feeding product decisions</li>
        <li>Design system has dedicated stewardship</li>
        <li>Design metrics tracked alongside product metrics</li>
      </ul>
    </div>
    <div class="stage-col">
      <h3>Common pitfalls</h3>
      <ul>
        <li>Plateau at competent process, missing strategic impact</li>
        <li>Process overhead crowding out actual design work</li>
        <li>Confusing seniority with strategic contribution</li>
        <li>Letting design system maintenance consume design hours</li>
      </ul>
    </div>
  </div>
  <div class="stage-recommendation">
    <div class="stage-recommendation-label">Recommended investment</div>
    <p>"Connect design to business outcomes. Build the muscle of articulating design's contribution in revenue, retention, and growth terms. Move from 'design serves the roadmap' to 'design shapes the roadmap.'"</p>
  </div>
</div>

<div class="stage" id="stage-5">
  <div class="stage-header">
    <span class="stage-badge">Stage 05</span>
    <h2>Strategic. <span class="accent">Design drives outcomes.</span></h2>
  </div>
  <p class="stage-lede">Design is a strategic function reporting to the executive table. UX research informs business strategy, not just product features. The design org owns outcomes, not just artifacts. The product's experience is a primary moat, recognized as such by leadership and the market.</p>
  <div class="stage-grid">
    <div class="stage-col">
      <h3>Signs you are here</h3>
      <ul>
        <li>Chief Design Officer or VP Design at exec level</li>
        <li>Design owns outcome metrics (retention, NPS, revenue)</li>
        <li>UX research influences company strategy</li>
        <li>Customer experience is a recognized competitive moat</li>
        <li>Design org is a recruiting magnet</li>
      </ul>
    </div>
    <div class="stage-col">
      <h3>Common pitfalls</h3>
      <ul>
        <li>Strategic ambition outpacing operational capacity</li>
        <li>Senior leadership disconnected from craft</li>
        <li>Design org becoming political instead of generative</li>
        <li>Plateau through complacency at the top</li>
      </ul>
    </div>
  </div>
  <div class="stage-recommendation">
    <div class="stage-recommendation-label">Recommended investment</div>
    <p>"The work at this stage is about institutional design, the structures that keep the function generative as the company scales. This is where most companies fail not by missing the bar but by gradually drifting back to Stage 4."</p>
  </div>
</div>

<section class="cta-band">
  <div class="container">
    <h2>Want to map <span class="accent">your design org</span>?</h2>
    <p>Book a 30 minute call. We'll walk through the model with you and map your current stage and the highest leverage move from here.</p>
    <a href="" class="btn-primary">Book a discovery call →</a>
  </div>
</section>
