<svg viewBox="-40 0 1040 318" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="diagram-title diagram-desc">
  <title id="diagram-title">The Product Development Loop</title>
  <desc id="diagram-desc">A six-step loop running left to right: Sense, Prioritize, Spec, Act, Verify, and Measure. Each step produces a named output, and a feedback path labeled Learn loops from Measure back to Sense so outcomes improve future ranking and quality.</desc>

  <defs>
    <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 Z" fill="#f0f0f0" />
    </marker>
    <marker id="arrow-accent" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 Z" fill="#93c5fd" />
    </marker>
  </defs>

  <!-- ============ Title ============ -->
  <text x="480" y="28" text-anchor="middle"
        font-family="Gellix, 'IBM Plex Sans', system-ui, -apple-system, Segoe UI, sans-serif"
        font-size="18" font-weight="600" fill="#f0f0f0">The Product Development Loop</text>
  <text x="480" y="48" text-anchor="middle"
        font-family="'IBM Plex Sans', system-ui, -apple-system, Segoe UI, sans-serif"
        font-size="12" font-weight="400" fill="#a8a8a8">Sense what matters. Build the right thing. Measure and learn.</text>

  <!-- ============ Step badges and connecting arrows ============ -->
  <!-- Badge centers: 120, 256, 392, 528, 664, 800 (pitch 136). Badge circle r=16 at y=98. -->

  <!-- connector arrows between badges (horizontal at y=98) -->
  <line x1="146" y1="98" x2="230" y2="98" stroke="#f0f0f0" stroke-width="1.5" marker-end="url(#arrow)" />
  <line x1="282" y1="98" x2="366" y2="98" stroke="#f0f0f0" stroke-width="1.5" marker-end="url(#arrow)" />
  <line x1="418" y1="98" x2="502" y2="98" stroke="#f0f0f0" stroke-width="1.5" marker-end="url(#arrow)" />
  <line x1="554" y1="98" x2="638" y2="98" stroke="#f0f0f0" stroke-width="1.5" marker-end="url(#arrow)" />
  <line x1="690" y1="98" x2="774" y2="98" stroke="#f0f0f0" stroke-width="1.5" marker-end="url(#arrow)" />

  <!-- ============ Step 1: SENSE (center x=120) ============ -->
  <g>
    <circle cx="120" cy="98" r="16" fill="#1e61f0" />
    <text x="120" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">1</text>
    <text x="120" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">SENSE</text>
    <text x="120" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Continuously monitor</text>
    <text x="120" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">product data for</text>
    <text x="120" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">anomalies, friction,</text>
    <text x="120" y="202" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">and unmet user intent.</text>
    <text x="120" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="120" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Candidate problems</text>
  </g>

  <!-- ============ Step 2: PRIORITIZE (center x=256) ============ -->
  <g>
    <circle cx="256" cy="98" r="16" fill="#1e61f0" />
    <text x="256" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">2</text>
    <text x="256" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">PRIORITIZE</text>
    <text x="256" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Score candidates with</text>
    <text x="256" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">a quality judge and</text>
    <text x="256" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">rank by impact.</text>
    <text x="256" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="256" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Ranked opportunities</text>
  </g>

  <!-- ============ Step 3: SPEC (center x=392) ============ -->
  <g>
    <circle cx="392" cy="98" r="16" fill="#1e61f0" />
    <text x="392" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">3</text>
    <text x="392" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">SPEC</text>
    <text x="392" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Write a spec with</text>
    <text x="392" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">evidence, proposed</text>
    <text x="392" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">solution, acceptance</text>
    <text x="392" y="202" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">criteria, and target metrics.</text>
    <text x="392" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="392" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Structured spec</text>
  </g>

  <!-- ============ Step 4: ACT (center x=528) ============ -->
  <g>
    <circle cx="528" cy="98" r="16" fill="#1e61f0" />
    <text x="528" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">4</text>
    <text x="528" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">ACT</text>
    <text x="528" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Route spec to the</text>
    <text x="528" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">right execution surface</text>
    <text x="528" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">based on complexity.</text>
    <text x="528" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="528" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Output PR</text>
  </g>

  <!-- ============ Step 5: VERIFY (center x=664) ============ -->
  <g>
    <circle cx="664" cy="98" r="16" fill="#1e61f0" />
    <text x="664" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">5</text>
    <text x="664" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">VERIFY</text>
    <text x="664" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Review agent checks</text>
    <text x="664" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">against spec, runs code</text>
    <text x="664" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">in sandbox, and captures</text>
    <text x="664" y="202" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">session replay.</text>
    <text x="664" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="664" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Reviewed PR + replay</text>
  </g>

  <!-- ============ Step 6: MEASURE (center x=800) ============ -->
  <g>
    <circle cx="800" cy="98" r="16" fill="#1e61f0" />
    <text x="800" y="103" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="14" font-weight="600" fill="#ffffff">6</text>
    <text x="800" y="142" text-anchor="middle"
          font-family="Gellix, 'IBM Plex Sans', system-ui, sans-serif"
          font-size="13" font-weight="600" fill="#f0f0f0" letter-spacing="0.6">MEASURE</text>
    <text x="800" y="160" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">Track outcome metric</text>
    <text x="800" y="174" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">and feed results back</text>
    <text x="800" y="188" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" fill="#f0f0f0">to improve the loop.</text>
    <text x="800" y="236" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="10" font-weight="600" fill="#a8a8a8" letter-spacing="1">OUTPUT</text>
    <text x="800" y="252" text-anchor="middle" font-family="'IBM Plex Sans', system-ui, sans-serif" font-size="11" font-weight="500" fill="#f0f0f0">Outcome metric</text>
  </g>

  <!-- ============ LEARN feedback loop (accent, dashed) ============ -->
  <!-- From step 6 (x=800) down to y=290, left to x=120, up into step 1. Risers sit under the outer steps; the symmetric viewBox margin gives the loop side breathing room. -->
  <path d="M800,264 V290 H120 V266" fill="none" stroke="#93c5fd" stroke-width="1.5" stroke-dasharray="5 4" marker-end="url(#arrow-accent)" />
  <rect x="284" y="282" width="392" height="16" fill="#2a2a2a" />
  <text x="480" y="293" text-anchor="middle"
        font-family="'IBM Plex Sans', system-ui, sans-serif"
        font-size="11" font-weight="600" fill="#93c5fd" letter-spacing="0.6">LEARN — Outcomes improve future ranking and quality.</text>
</svg>
