SVG: exploded French press, by pareto
pareto · round 2 of 2 · seed 2$0.22SVGPNGpress.svg
press.svg · 133 lines
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="1200" viewBox="0 0 900 1200" font-family="Helvetica, Arial, sans-serif">
  <defs>
    <linearGradient id="rodG" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#f2f2f2"/>
      <stop offset="0.5" stop-color="#c0c0c0"/>
      <stop offset="1" stop-color="#8a8a8a"/>
    </linearGradient>
    <radialGradient id="knobG" cx="0.35" cy="0.3" r="0.85">
      <stop offset="0" stop-color="#767676"/>
      <stop offset="0.55" stop-color="#2e2e2e"/>
      <stop offset="1" stop-color="#111111"/>
    </radialGradient>
    <radialGradient id="plateG" cx="0.42" cy="0.36" r="0.8">
      <stop offset="0" stop-color="#eeeeee"/>
      <stop offset="1" stop-color="#b5b5b5"/>
    </radialGradient>
    <linearGradient id="glassG" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#eaf3f6" stop-opacity="0.55"/>
      <stop offset="0.55" stop-color="#cfe3ea" stop-opacity="0.28"/>
      <stop offset="1" stop-color="#b5d1db" stop-opacity="0.5"/>
    </linearGradient>
    <pattern id="meshG" width="7" height="7" patternUnits="userSpaceOnUse">
      <rect width="7" height="7" fill="#e3edf0"/>
      <path d="M0 3.5 H7 M3.5 0 V7" stroke="#74909b" stroke-width="1.1" fill="none"/>
    </pattern>
  </defs>

  <rect width="900" height="1200" fill="#f6f4ef"/>

  <text x="450" y="46" text-anchor="middle" font-size="30" font-weight="700" letter-spacing="6" fill="#2b2824">FRENCH PRESS</text>
  <text x="450" y="72" text-anchor="middle" font-size="14" letter-spacing="3" fill="#8d867b">EXPLODED ASSEMBLY DIAGRAM</text>

  <line x1="450" y1="86" x2="450" y2="1166" stroke="#c9c2b6" stroke-width="2" stroke-dasharray="2 9" stroke-linecap="round"/>

  <ellipse cx="450" cy="1150" rx="190" ry="16" fill="#e3ded4"/>

  <!-- glass carafe with handle -->
  <g>
    <path d="M 280 910 C 281 990 297 1075 308 1118 A 142 26 0 0 0 592 1118 C 603 1075 619 990 620 910 A 170 34 0 0 1 280 910 Z" fill="url(#glassG)" stroke="#8fa9b3" stroke-width="2.5"/>
    <ellipse cx="450" cy="910" rx="170" ry="34" fill="none" stroke="#8fa9b3" stroke-width="2.5"/>
    <ellipse cx="450" cy="910" rx="156" ry="28.5" fill="none" stroke="#a9c0c9" stroke-width="1.3" opacity="0.8"/>
    <ellipse cx="450" cy="1114" rx="142" ry="26" fill="#d5e5eb" opacity="0.55" stroke="#8fa9b3" stroke-width="1.5"/>
    <path d="M 306 942 C 308 1012 318 1070 326 1106" stroke="#ffffff" stroke-width="9" fill="none" opacity="0.55" stroke-linecap="round"/>
    <path d="M 332 938 C 333 996 341 1052 347 1096" stroke="#ffffff" stroke-width="4" fill="none" opacity="0.3" stroke-linecap="round"/>
    <path d="M 619 942 C 704 946 706 1074 597 1078" stroke="#3a3a3a" stroke-width="16" fill="none" stroke-linecap="round"/>
    <path d="M 619 942 C 704 946 706 1072 597 1078" stroke="#6d6d6d" stroke-width="6" fill="none" stroke-linecap="round" opacity="0.7"/>
  </g>

  <!-- mesh screen (filter piece 3) -->
  <ellipse cx="450" cy="815" rx="135" ry="32" fill="url(#meshG)" stroke="#7f97a1" stroke-width="2.2"/>
  <ellipse cx="450" cy="815" rx="13" ry="4" fill="#f6f4ef" stroke="#7f97a1" stroke-width="1.4"/>

  <!-- spiral spring (filter piece 2) -->
  <g fill="none" stroke="#8e979e" stroke-width="3.6">
    <ellipse cx="436" cy="733" rx="105" ry="24"/>
    <ellipse cx="443" cy="731.5" rx="105" ry="24"/>
    <ellipse cx="450" cy="730" rx="105" ry="24"/>
    <ellipse cx="457" cy="728.5" rx="105" ry="24"/>
    <ellipse cx="464" cy="727" rx="105" ry="24"/>
  </g>

  <!-- filter plate (filter piece 1) -->
  <ellipse cx="450" cy="650" rx="115" ry="26" fill="url(#plateG)" stroke="#8f8f8f" stroke-width="2"/>
  <line x1="344" y1="649" x2="556" y2="649" stroke="#a9a9a9" stroke-width="9" stroke-linecap="round"/>
  <line x1="450" y1="628" x2="450" y2="672" stroke="#a9a9a9" stroke-width="9" stroke-linecap="round"/>
  <circle cx="384" cy="650" r="4" fill="#8c8c8c"/>
  <circle cx="516" cy="650" r="4" fill="#8c8c8c"/>
  <circle cx="450" cy="637" r="3.5" fill="#8c8c8c"/>
  <circle cx="450" cy="663" r="3.5" fill="#8c8c8c"/>
  <circle cx="450" cy="650" r="13" fill="#9c9c9c" stroke="#7c7c7c" stroke-width="1.5"/>
  <ellipse cx="450" cy="650" rx="5" ry="2.6" fill="#3f3f3f"/>

  <!-- plunger rod -->
  <rect x="442.5" y="378" width="15" height="180" rx="6" fill="url(#rodG)" stroke="#8b8b8b" stroke-width="1"/>
  <rect x="445.5" y="554" width="9" height="30" rx="2" fill="#c6c6c6" stroke="#8b8b8b" stroke-width="1"/>
  <line x1="444" y1="562" x2="456" y2="562" stroke="#8b8b8b" stroke-width="1.2"/>
  <line x1="444" y1="570" x2="456" y2="570" stroke="#8b8b8b" stroke-width="1.2"/>
  <line x1="444" y1="578" x2="456" y2="578" stroke="#8b8b8b" stroke-width="1.2"/>

  <!-- lid with central boss, rod hole and pour lip -->
  <ellipse cx="450" cy="284" rx="185" ry="40" fill="#232323"/>
  <ellipse cx="450" cy="270" rx="185" ry="40" fill="#3d3d3d" stroke="#191919" stroke-width="1.5"/>
  <path d="M 416 305 C 430 331 470 331 484 305 C 470 319 430 319 416 305 Z" fill="#1a1a1a"/>
  <ellipse cx="450" cy="258" rx="78" ry="20" fill="#1e1e1e"/>
  <ellipse cx="450" cy="250" rx="78" ry="20" fill="#474747" stroke="#191919" stroke-width="1"/>
  <ellipse cx="450" cy="250" rx="16" ry="5.5" fill="#0b0b0b"/>

  <!-- knob -->
  <rect x="442" y="128" width="16" height="16" rx="3" fill="#1c1c1c"/>
  <circle cx="450" cy="116" r="27" fill="url(#knobG)"/>
  <ellipse cx="441" cy="106" rx="9" ry="6" fill="#ffffff" opacity="0.32"/>

  <!-- labels -->
  <g stroke="#a49d92" stroke-width="1.5">
    <line x1="487" y1="120" x2="694" y2="120"/>
    <line x1="462" y1="470" x2="694" y2="470"/>
    <line x1="562" y1="728" x2="694" y2="728"/>
    <line x1="98" y1="272" x2="258" y2="272"/>
    <line x1="192" y1="650" x2="330" y2="650"/>
    <line x1="186" y1="815" x2="312" y2="815"/>
    <line x1="192" y1="1030" x2="298" y2="1030"/>
  </g>
  <g font-size="19" font-weight="600" fill="#33302b">
    <text x="728" y="126">Knob</text>
    <text x="728" y="476">Plunger rod</text>
    <text x="728" y="734">Spiral spring</text>
    <text x="54" y="278">Lid</text>
    <text x="54" y="656">Filter plate</text>
    <text x="54" y="821">Mesh screen</text>
    <text x="54" y="1036">Glass carafe</text>
  </g>
  <g fill="#2e2b27">
    <circle cx="710" cy="120" r="12"/>
    <circle cx="710" cy="470" r="12"/>
    <circle cx="710" cy="728" r="12"/>
    <circle cx="34" cy="272" r="12"/>
    <circle cx="34" cy="650" r="12"/>
    <circle cx="34" cy="815" r="12"/>
    <circle cx="34" cy="1030" r="12"/>
  </g>
  <g fill="#ffffff" font-size="13" text-anchor="middle">
    <text x="710" y="124.5">1</text>
    <text x="710" y="474.5">3</text>
    <text x="710" y="732.5">5</text>
    <text x="34" y="276.5">2</text>
    <text x="34" y="654.5">4</text>
    <text x="34" y="819.5">6</text>
    <text x="34" y="1034.5">7</text>
  </g>

  <text x="450" y="1188" text-anchor="middle" font-size="15" fill="#7a756b">Three-piece filter assembly: 4 filter plate · 5 spiral spring · 6 mesh screen</text>
</svg>

Exploded French press: Pareto

modelunbiased/paretotasksvg-french-press@v2date2026-10-01rounds2 of 8 allowedcost$0.2169failurecompleteness · part-order
All seven partsdecided by looking · Pass if all seven are drawn as separate shapes and each has a label naming it. A part that is only named in a label or a comment, with nothing drawn, fails it.fail
Stack orderdecided by a number, from the filefail
Filter fits the glassdecided by a number, from the filepass
One assembly axisdecided by looking · Pass if one vertical line runs through the middle of every part, and every leader line leaves from the same side. One part pushed off to the side fails it.pass
Labels matchdecided by looking · Pass if following each leader line from its label ends on the part that label names. One label pointing at the wrong part, or at nothing, fails it.pass

There is no post about this one, since only some results need one, so the picture, the source and the scoring are here instead.

its other runs
the prompt it was given
Draw an exploded assembly diagram of a French press, as an SVG. Use the standard three-piece plunger filter rather than a two-piece travel press.
Frozen at v2. This model got this and nothing else.
ground truth

The standard three-piece plunger, from the top down: spiral (spring) plate, mesh screen, cross-plate. The cross-plate is the bottom piece, because its threaded stem is what the rod screws into. The spiral plate above the mesh is what presses the mesh edge out against the glass. Checked against the WebstaurantStore anatomy diagram, which is drawn exploded and labelled, and against each part's y coordinate in the SVG rather than its comment. Two-piece travel presses exist and stack differently, which is why v2 of the prompt names the design. How it is scored, and this run's files on GitHub.