SVG: exploded French press, by pareto
pareto · round 4 of 4 · seed 2$0.37SVGPNGpress.svg
press.svg · 158 lines
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1450" width="1000" height="1450">
  <defs>
    <linearGradient id="steelH" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#83898f"/>
      <stop offset="0.18" stop-color="#c9ced3"/>
      <stop offset="0.45" stop-color="#f4f6f7"/>
      <stop offset="0.72" stop-color="#c9ced3"/>
      <stop offset="1" stop-color="#7f868c"/>
    </linearGradient>
    <radialGradient id="discGrad" cx="0.5" cy="0.42" r="0.65">
      <stop offset="0" stop-color="#eef0f2"/>
      <stop offset="0.7" stop-color="#ccd2d6"/>
      <stop offset="1" stop-color="#aab1b6"/>
    </radialGradient>
    <radialGradient id="lidTop" cx="0.5" cy="0.4" r="0.7">
      <stop offset="0" stop-color="#f2f4f5"/>
      <stop offset="0.75" stop-color="#cfd5d9"/>
      <stop offset="1" stop-color="#b2b9be"/>
    </radialGradient>
    <radialGradient id="knobGrad" cx="0.35" cy="0.3" r="0.9">
      <stop offset="0" stop-color="#7c8288"/>
      <stop offset="0.45" stop-color="#33373a"/>
      <stop offset="1" stop-color="#0f1112"/>
    </radialGradient>
    <linearGradient id="glassH" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#9fc4d2" stop-opacity="0.5"/>
      <stop offset="0.18" stop-color="#eef9fc" stop-opacity="0.75"/>
      <stop offset="0.5" stop-color="#cfe9f1" stop-opacity="0.42"/>
      <stop offset="0.82" stop-color="#e8f6fa" stop-opacity="0.65"/>
      <stop offset="1" stop-color="#8fb6c6" stop-opacity="0.55"/>
    </linearGradient>
    <pattern id="mesh" width="6" height="6" patternUnits="userSpaceOnUse">
      <path d="M0 0 L6 6 M6 0 L0 6 M0 3 H6 M3 0 V6" stroke="#949ca2" stroke-width="0.55" fill="none"/>
    </pattern>
  </defs>

  <!-- background -->
  <rect x="0" y="0" width="1000" height="1450" fill="#fbfbf9"/>

  <!-- title -->
  <text x="500" y="42" text-anchor="middle" font-family="Helvetica, Arial, sans-serif" font-size="34" font-weight="700" letter-spacing="6" fill="#2c3237">FRENCH PRESS</text>
  <text x="500" y="68" text-anchor="middle" font-family="Helvetica, Arial, sans-serif" font-size="17" letter-spacing="1" fill="#6a7278">Exploded assembly view &#8212; three-piece plunger filter</text>

  <!-- centerline -->
  <line x1="500" y1="88" x2="500" y2="1400" stroke="#b3b7ba" stroke-width="1.5" stroke-dasharray="12 9"/>

  <!-- floor shadow -->
  <ellipse cx="500" cy="1374" rx="175" ry="12" fill="#000000" opacity="0.06"/>

  <!-- ===================== KNOB ===================== -->
  <circle cx="500" cy="110" r="32" fill="url(#knobGrad)" stroke="#0d0f10" stroke-width="1"/>
  <ellipse cx="489" cy="99" rx="10" ry="7" fill="#9aa1a7" opacity="0.55"/>
  <rect x="481" y="136" width="38" height="12" rx="5" fill="#2b2d2f"/>

  <!-- ===================== PLUNGER ROD ===================== -->
  <rect x="494" y="148" width="12" height="288" rx="3" fill="url(#steelH)" stroke="#7c8288" stroke-width="0.8"/>
  <rect x="491" y="422" width="18" height="12" rx="2.5" fill="#9aa0a6" stroke="#7c8288" stroke-width="0.8"/>

  <!-- ===================== LID ===================== -->
  <path d="M 337 506 L 337 534 Q 500 558 663 534 L 663 506 Z" fill="url(#steelH)" stroke="#8a9096" stroke-width="1"/>
  <ellipse cx="500" cy="506" rx="163" ry="26" fill="url(#lidTop)" stroke="#8a9096" stroke-width="1.2"/>
  <ellipse cx="500" cy="506" rx="118" ry="17" fill="none" stroke="#c2c8cc" stroke-width="1"/>
  <ellipse cx="500" cy="506" rx="15" ry="6" fill="#4e5256" stroke="#3b3e41" stroke-width="1"/>

  <!-- Upper filter part: perforated spring plate with peripheral coil -->
  <ellipse cx="500" cy="655" rx="126" ry="37" fill="url(#discGrad)" stroke="#84898e" stroke-width="1.4"/>
  <g fill="#fbfbf9" stroke="#929aa0" stroke-width="1">
    <ellipse cx="424" cy="654" rx="18" ry="7"/>
    <ellipse cx="456" cy="638" rx="18" ry="5"/>
    <ellipse cx="500" cy="634" rx="18" ry="5"/>
    <ellipse cx="544" cy="638" rx="18" ry="5"/>
    <ellipse cx="576" cy="654" rx="18" ry="7"/>
    <ellipse cx="456" cy="672" rx="18" ry="5"/>
    <ellipse cx="500" cy="676" rx="18" ry="5"/>
    <ellipse cx="544" cy="672" rx="18" ry="5"/>
  </g>
  <ellipse cx="500" cy="655" rx="125" ry="37" fill="none" stroke="#777f86" stroke-width="9"/>
  <ellipse cx="500" cy="655" rx="125" ry="37" fill="none" stroke="#e2e6e9" stroke-width="8" stroke-dasharray="2 4"/>
  <ellipse cx="500" cy="655" rx="11" ry="5.5" fill="#565b60" stroke="#3f4347"/>
  <ellipse cx="500" cy="655" rx="5" ry="2.4" fill="#fbfbf9"/>

  <!-- ===================== MESH FILTER SCREEN ===================== -->
  <ellipse cx="500" cy="790" rx="127" ry="38" fill="#c7ccd0" stroke="#878d93" stroke-width="1.5"/>
  <ellipse cx="500" cy="790" rx="118" ry="33.5" fill="#e4e7e9"/>
  <ellipse cx="500" cy="790" rx="118" ry="33.5" fill="url(#mesh)"/>
  <ellipse cx="500" cy="790" rx="118" ry="33.5" fill="none" stroke="#9aa1a7" stroke-width="1"/>
  <ellipse cx="500" cy="790" rx="10" ry="4.6" fill="#5c6165" stroke="#44484c" stroke-width="1"/>

  <!-- Lower filter part: open cross plate, with integral threaded stud -->
  <path d="M374 914 a126 37 0 1 0 252 0 a126 37 0 1 0 -252 0
           M385 914 a115 30 0 1 0 230 0 a115 30 0 1 0 -230 0"
        fill="url(#steelH)" fill-rule="evenodd" stroke="#84898e" stroke-width="1.2"/>
  <path d="M486 878 L514 878 L514 907 L625 907 L625 921 L514 921 L514 950 L486 950 L486 921 L375 921 L375 907 L486 907 Z"
        fill="url(#discGrad)" stroke="#84898e" stroke-width="1.2"/>
  <ellipse cx="500" cy="914" rx="17" ry="7" fill="#919ba3" stroke="#707980"/>
  <rect x="494" y="876" width="12" height="38" fill="url(#steelH)" stroke="#7c8288"/>
  <ellipse cx="500" cy="876" rx="6" ry="2.5" fill="#dce0e3" stroke="#7c8288"/>
  <path d="M494 884 L506 880 M494 891 L506 887 M494 898 L506 894 M494 905 L506 901"
        stroke="#6c737a" stroke-width="1.3" fill="none"/>

  <!-- ===================== GLASS CARAFE ===================== -->
  <path d="M 344 1000 C 318 1002 296 1014 282 1032 C 276 1040 284 1048 293 1042 C 312 1029 332 1022 356 1019 Z"
        fill="#dceef4" opacity="0.95" stroke="#9fb9c4" stroke-width="0.9"/>
  <path d="M 350 1012 L 368 1350 Q 369 1367 386 1367 L 614 1367 Q 631 1367 632 1350 L 650 1012 Z"
        fill="url(#glassH)" stroke="#7fa3b0" stroke-width="1.6"/>
  <path d="M 350 1012 L 344 1000 L 356 1019 Z" fill="#cfe6ee" stroke="#7fa3b0" stroke-width="1"/>
  <ellipse cx="500" cy="1012" rx="150" ry="26" fill="#d8ecf3" stroke="#8fb0bc" stroke-width="1.5"/>
  <ellipse cx="500" cy="1013" rx="139" ry="22.5" fill="#c2dbe4"/>
  <ellipse cx="500" cy="1013" rx="131" ry="20.5" fill="#eef8fb"/>
  <rect x="376" y="1050" width="14" height="270" rx="7" fill="#ffffff" opacity="0.55"/>
  <rect x="398" y="1050" width="6" height="270" rx="3" fill="#ffffff" opacity="0.35"/>
  <!-- handle -->
  <path d="M 645 1035 C 715 1045 740 1120 726 1180 C 716 1222 688 1245 646 1238 L 646 1210 C 678 1214 696 1198 702 1170 C 712 1122 694 1074 645 1066 Z"
        fill="#1e2124" stroke="#0c0e0f" stroke-width="1"/>
  <path d="M 655 1046 C 710 1058 726 1114 716 1166" fill="none" stroke="#4a5055" stroke-width="3" opacity="0.7"/>

  <!-- ===================== LEADER LINES + LABELS ===================== -->
  <g stroke="#9aa0a5" stroke-width="1.4">
    <line x1="254" y1="100" x2="462" y2="100"/>
    <line x1="254" y1="517" x2="333" y2="517"/>
    <line x1="254" y1="655" x2="376" y2="655"/>
    <line x1="254" y1="914" x2="371" y2="914"/>
    <line x1="748" y1="300" x2="514" y2="300"/>
    <line x1="748" y1="790" x2="631" y2="790"/>
    <line x1="748" y1="1140" x2="734" y2="1140"/>
    <line x1="748" y1="1300" x2="642" y2="1300"/>
  </g>
  <g fill="#6b7278">
    <circle cx="466" cy="100" r="3"/>
    <circle cx="333" cy="517" r="3"/>
    <circle cx="380" cy="655" r="3"/>
    <circle cx="371" cy="914" r="3"/>
    <circle cx="511" cy="300" r="3"/>
    <circle cx="628" cy="790" r="3"/>
    <circle cx="731" cy="1140" r="3"/>
    <circle cx="639" cy="1300" r="3"/>
  </g>
  <g font-family="Helvetica, Arial, sans-serif" font-size="21" font-weight="600" fill="#3a3f44">
    <text x="246" y="106" text-anchor="end">Knob</text>
    <text x="246" y="523" text-anchor="end">Lid</text>
    <text x="246" y="661" text-anchor="end">Spring plate</text>
    <text x="246" y="920" text-anchor="end">Cross plate</text>
    <text x="756" y="306">Plunger rod</text>
    <text x="756" y="796">Mesh filter screen</text>
    <text x="756" y="1146">Handle</text>
    <text x="756" y="1306">Glass carafe</text>
  </g>

  <g font-family="Helvetica, Arial, sans-serif" font-size="14" fill="#777f86">
    <text x="246" y="683" text-anchor="end">Coiled spring seals the edge</text>
    <text x="756" y="818">Fine woven stainless steel</text>
    <text x="246" y="942" text-anchor="end">Threaded stud secures the stack</text>
  </g>
  <!-- caption -->
  <text x="500" y="1434" text-anchor="middle" font-family="Helvetica, Arial, sans-serif" font-size="15" font-style="italic" fill="#8a9197">Filter stack, top to bottom: spring plate &#8594; mesh screen &#8594; cross plate. Stud threads into the plunger rod.</text>
</svg>
round 1 of 4
Exploded French press, by Pareto, the render after round 1
1234What the model saw after each round. The picture above is the round that was scored, round 4.

The same result in one round fewer, with a handle drawn on the carafe.

modelunbiased/paretotasksvg-french-press@v2date2026-09-22rounds4 of 8 allowedcost$0.3719thinkingmediumtokens119,946 in, 34,385 out, of which 0 reasoningtime3 min 20 s
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.pass
Stack orderdecided by a number, from the filepass
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.