<!-- How long a new posting takes to reach you.
     ⚠️ FORM NOTE: our figure is a MEASURED latency; every competitor figure is a
     PUBLISHED CADENCE. Those are different kinds of quantity, so they are drawn
     differently (solid brand band + dots vs hollow neutral markers) and the legend
     says which is which. Encoding them identically would imply a like-for-like
     comparison the data does not support.
     Palette: #b8470a (DESIGN.md solid primary) + #8c8481 neutral. Validated with the
     dataviz validator: lightness, CVD separation (deutan 12.2), normal-vision (17.6)
     and contrast all PASS. The one FAIL is the chroma floor on #8c8481 "reads gray",
     which is DELIBERATE: the neutral is not a peer series, it is the recessive context
     group, and every mark is directly labeled so identity never rests on colour.
     x = 150 + 247 * log10(minutes). -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 400" width="1000" height="400" role="img" font-family="'Helvetica Neue', Helvetica, 'Segoe UI', Arial, sans-serif">
  <title>How long a new posting takes to reach you. JobShifu publishes a measured latency: a median of 1.9 minutes from the employer board's own timestamp to the posting being searchable, and a 90th percentile of about 17 hours. Teal publishes an ingest cadence of almost hourly. Jobright publishes two different rates on two surfaces, every few minutes and every hour. Simplify refreshes matches daily. Huntr holds no index, so jobs arrive only when the user clips them.</title>
  <rect width="1000" height="400" fill="#fafbfc"/>

  <text x="30" y="32" font-size="17" font-weight="700" fill="#636b78" letter-spacing="0.06em">HOW LONG A NEW POSTING TAKES TO REACH YOU</text>

  <!-- recessive time grid -->
  <g stroke="#e7e1df" stroke-width="1">
    <line x1="150" y1="66" x2="150" y2="330"/>
    <line x1="397" y1="66" x2="397" y2="330"/>
    <line x1="589" y1="66" x2="589" y2="330"/>
    <line x1="781" y1="66" x2="781" y2="330"/>
    <line x1="930" y1="66" x2="930" y2="330"/>
  </g>
  <g font-size="15" fill="#8c8481" text-anchor="middle">
    <text x="150" y="60">1 min</text>
    <text x="397" y="60">10 min</text>
    <text x="589" y="60">1 hour</text>
    <text x="781" y="60">6 hours</text>
    <text x="930" y="60">1 day</text>
  </g>

  <!-- JobShifu: measured band p50 -> p90 -->
  <text x="30" y="103" font-size="18" font-weight="700" fill="#16181d">JobShifu</text>
  <text x="30" y="124" font-size="14.5" fill="#8c8481">measured</text>
  <line x1="219" y1="97" x2="892" y2="97" stroke="#b8470a" stroke-width="7" stroke-linecap="round"/>
  <circle cx="219" cy="97" r="9" fill="#b8470a"/>
  <circle cx="892" cy="97" r="9" fill="#b8470a"/>
  <text x="219" y="82" font-size="15.5" font-weight="600" fill="#b8470a" text-anchor="middle">1.9 min</text>
  <text x="892" y="82" font-size="15.5" font-weight="600" fill="#b8470a" text-anchor="end">17 hours</text>
  <text x="238" y="120" font-size="14.5" fill="#b8470a">median</text>
  <text x="892" y="120" font-size="14.5" fill="#b8470a" text-anchor="end">90th percentile</text>

  <!-- Teal -->
  <text x="30" y="171" font-size="18" font-weight="600" fill="#16181d">Teal</text>
  <text x="30" y="191" font-size="14.5" fill="#8c8481">published</text>
  <circle cx="589" cy="165" r="8" fill="#fafbfc" stroke="#8c8481" stroke-width="2.5"/>
  <text x="606" y="171" font-size="15.5" fill="#636b78">ingested "almost hourly"</text>

  <!-- Jobright: two published rates -->
  <text x="30" y="231" font-size="18" font-weight="600" fill="#16181d">Jobright</text>
  <text x="30" y="251" font-size="14.5" fill="#8c8481">published</text>
  <line x1="323" y1="225" x2="589" y2="225" stroke="#c9ced6" stroke-width="2" stroke-dasharray="4 5"/>
  <circle cx="323" cy="225" r="8" fill="#fafbfc" stroke="#8c8481" stroke-width="2.5"/>
  <circle cx="589" cy="225" r="8" fill="#fafbfc" stroke="#8c8481" stroke-width="2.5"/>
  <text x="323" y="210" font-size="15" fill="#636b78" text-anchor="middle">"every few minutes"</text>
  <text x="606" y="231" font-size="15.5" fill="#636b78">"every hour", on a different page</text>

  <!-- Simplify -->
  <text x="30" y="291" font-size="18" font-weight="600" fill="#16181d">Simplify</text>
  <text x="30" y="311" font-size="14.5" fill="#8c8481">published</text>
  <circle cx="930" cy="285" r="8" fill="#fafbfc" stroke="#8c8481" stroke-width="2.5"/>
  <text x="915" y="291" font-size="15.5" fill="#636b78" text-anchor="end">matches refresh daily</text>

  <!-- Huntr: no index -->
  <text x="30" y="351" font-size="18" font-weight="600" fill="#16181d">Huntr</text>
  <text x="150" y="351" font-size="15.5" fill="#636b78">holds no job index: postings arrive only when you clip them yourself</text>

  <!-- legend -->
  <line x1="30" y1="382" x2="70" y2="382" stroke="#b8470a" stroke-width="7" stroke-linecap="round"/>
  <text x="80" y="387" font-size="14.5" fill="#636b78">measured latency, ours</text>
  <circle cx="330" cy="382" r="8" fill="#fafbfc" stroke="#8c8481" stroke-width="2.5"/>
  <text x="346" y="387" font-size="14.5" fill="#636b78">cadence each product publishes, which is a different kind of claim</text>
</svg>
