SVG: exploded French press, by claude-opus-5.5
claude-opus-5.5 · round 2 of 2 · seed 2$0.21SVGPNGpress.svg
press.svg · 163 lines
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="1220" viewBox="0 0 900 1220" font-family="Helvetica, Arial, sans-serif">
<defs>
 <pattern id="mesh" width="5" height="5" patternUnits="userSpaceOnUse">
  <rect width="5" height="5" fill="#dfe3e6"/>
  <path d="M0 0L5 5M5 0L0 5" stroke="#7a838a" stroke-width="0.6"/>
 </pattern>
 <linearGradient id="steel" x1="0" x2="1">
  <stop offset="0" stop-color="#8d969c"/><stop offset="0.4" stop-color="#e8ecee"/><stop offset="1" stop-color="#7b848a"/>
 </linearGradient>
 <linearGradient id="glass" x1="0" x2="1">
  <stop offset="0" stop-color="#cfe6f0" stop-opacity="0.8"/><stop offset="0.25" stop-color="#ffffff" stop-opacity="0.6"/><stop offset="1" stop-color="#b5d4e2" stop-opacity="0.8"/>
 </linearGradient>
 <linearGradient id="black" x1="0" x2="1">
  <stop offset="0" stop-color="#222"/><stop offset="0.4" stop-color="#555"/><stop offset="1" stop-color="#1a1a1a"/>
 </linearGradient>
 <marker id="arr" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0 0L10 5L0 10z" fill="#555"/></marker>
</defs>
<rect width="900" height="1220" fill="#fbfbf8"/>
<text x="450" y="34" text-anchor="middle" font-size="24" font-weight="bold" fill="#222">French Press — Exploded Assembly</text>

<!-- assembly axis -->
<line x1="380" y1="60" x2="380" y2="1170" stroke="#999" stroke-width="1" stroke-dasharray="12 4 3 4"/>

<!-- 1 knob -->
<g stroke="#111" stroke-width="1.5">
 <path d="M350 100 Q346 70 362 62 Q380 55 398 62 Q414 70 410 100 Z" fill="url(#black)"/>
 <ellipse cx="380" cy="100" rx="30" ry="6" fill="#333"/>
 <rect x="372" y="100" width="16" height="10" fill="#333"/>
</g>

<!-- 2 plunger rod -->
<g stroke="#333" stroke-width="1.2">
 <rect x="375" y="140" width="10" height="240" fill="url(#steel)"/>
 <g stroke="#555" stroke-width="1">
  <line x1="375" y1="144" x2="385" y2="148"/><line x1="375" y1="150" x2="385" y2="154"/><line x1="375" y1="156" x2="385" y2="160"/>
  <line x1="375" y1="362" x2="385" y2="366"/><line x1="375" y1="368" x2="385" y2="372"/><line x1="375" y1="374" x2="385" y2="378"/>
 </g>
</g>

<!-- 3 lid -->
<g stroke="#111" stroke-width="1.5">
 <path d="M266 452 L266 468 A114 20 0 0 0 494 468 L494 452 Z" fill="#2a2a2a"/>
 <path d="M300 430 A80 14 0 0 1 460 430 L496 450 A116 22 0 0 1 264 450 Z" fill="url(#black)"/>
 <ellipse cx="380" cy="430" rx="80" ry="14" fill="#444"/>
 <ellipse cx="380" cy="422" rx="20" ry="5" fill="#333"/>
 <rect x="360" y="416" width="40" height="8" fill="#3a3a3a"/>
 <ellipse cx="380" cy="416" rx="20" ry="5" fill="#555"/>
 <ellipse cx="380" cy="416" rx="6" ry="2" fill="#000"/>
 <!-- pour slot -->
 <path d="M272 452 Q280 462 292 462" fill="none" stroke="#888" stroke-width="1.2"/>
</g>

<!-- 4 spiral plate -->
<g stroke="#333" stroke-width="1.3">
 <ellipse cx="380" cy="540" rx="114" ry="23" fill="none" stroke="#6c757b" stroke-width="5" stroke-dasharray="2.5 2"/>
 <ellipse cx="380" cy="540" rx="108" ry="21" fill="url(#steel)"/>
 <path d="M380 540 m-14 0 a14 3 0 1 1 28 0 a28 6 0 1 1 -56 0 a42 9 0 1 1 84 0 a56 11 0 1 1 -112 0 a70 14 0 1 1 140 0 a84 16 0 1 1 -168 0" fill="none" stroke="#6a7278" stroke-width="1"/>
 <ellipse cx="380" cy="540" rx="6" ry="2" fill="#222"/>
</g>

<!-- 5 mesh screen -->
<g stroke="#333" stroke-width="1.3">
 <ellipse cx="380" cy="625" rx="110" ry="22" fill="url(#mesh)"/>
 <ellipse cx="380" cy="625" rx="110" ry="22" fill="none" stroke="#555" stroke-width="2.5"/>
 <ellipse cx="380" cy="625" rx="8" ry="2.5" fill="#bbb"/>
 <ellipse cx="380" cy="625" rx="4" ry="1.3" fill="#222"/>
</g>

<!-- 6 cross plate -->
<g stroke="#333" stroke-width="1.3">
 <path d="M270 705 L270 710 A110 22 0 0 0 490 710 L490 705" fill="#8d969c"/>
 <ellipse cx="380" cy="705" rx="110" ry="22" fill="none" stroke="#7b848a" stroke-width="7"/>
 <ellipse cx="380" cy="705" rx="110" ry="22" fill="none"/>
 <ellipse cx="380" cy="705" rx="102" ry="19" fill="none" stroke="#555" stroke-width="0.8"/>
 <g stroke="#7b848a" stroke-width="7" stroke-linecap="round">
  <line x1="282" y1="705" x2="478" y2="705"/><line x1="380" y1="687" x2="380" y2="723"/>
  <line x1="311" y1="691" x2="449" y2="719"/><line x1="449" y1="691" x2="311" y2="719"/>
 </g>
 <ellipse cx="380" cy="705" rx="16" ry="5" fill="url(#steel)"/>
 <ellipse cx="380" cy="705" rx="4" ry="1.3" fill="#222"/>
</g>

<!-- 7 nut -->
<g stroke="#222" stroke-width="1.3">
 <path d="M366 765 L394 765 L398 772 L398 782 L394 788 L366 788 L362 782 L362 772 Z" fill="url(#steel)"/>
 <line x1="372" y1="765" x2="372" y2="788"/><line x1="388" y1="765" x2="388" y2="788"/>
 <ellipse cx="380" cy="765" rx="18" ry="4" fill="#cfd4d7"/>
 <ellipse cx="380" cy="765" rx="5" ry="1.5" fill="#222"/>
</g>

<!-- 8 glass beaker -->
<g stroke="#4f7d92" stroke-width="1.5">
 <path d="M268 868 L268 1110 A112 20 0 0 0 492 1110 L492 868" fill="url(#glass)"/>
 <path d="M268 868 A112 20 0 0 0 492 868" fill="none"/>
 <ellipse cx="380" cy="868" rx="112" ry="20" fill="#e9f4f8" fill-opacity="0.6"/>
 <path d="M270 862 Q252 856 246 866 Q256 872 270 874" fill="#e9f4f8" fill-opacity="0.8"/>
 <path d="M268 1110 A112 20 0 0 0 492 1110" fill="none" stroke-width="4" stroke-opacity="0.6"/>
 <g stroke="#9cc2d2" stroke-width="1" fill="none">
  <line x1="290" y1="895" x2="290" y2="1090"/><line x1="300" y1="900" x2="300" y2="1060"/>
 </g>
 <g stroke="#4f7d92" stroke-width="1"><line x1="470" y1="940" x2="486" y2="940"/><line x1="474" y1="980" x2="486" y2="980"/><line x1="470" y1="1020" x2="486" y2="1020"/></g>
</g>

<!-- 9 frame with handle (to the side) -->
<g stroke="#222" stroke-width="1.5">
 <!-- back part of rings -->
 <path d="M538 870 A118 21 0 0 1 774 870" fill="none" stroke="#777" stroke-width="10"/>
 <path d="M538 1108 A118 21 0 0 1 774 1108" fill="none" stroke="#777" stroke-width="10"/>
 <!-- struts -->
 <rect x="536" y="872" width="9" height="236" fill="url(#steel)"/>
 <rect x="767" y="872" width="9" height="236" fill="url(#steel)"/>
 <rect x="650" y="892" width="9" height="236" fill="url(#steel)"/>
 <!-- front rings -->
 <path d="M538 870 A118 21 0 0 0 774 870" fill="none" stroke="url(#steel)" stroke-width="12"/>
 <path d="M538 870 A118 21 0 0 0 774 870" fill="none" stroke="#333" stroke-width="1"/>
 <path d="M538 1110 A118 21 0 0 0 774 1110 L774 1120 A118 21 0 0 1 538 1120 Z" fill="url(#steel)"/>
 <!-- feet -->
 <rect x="552" y="1130" width="18" height="10" rx="3" fill="#333"/>
 <rect x="648" y="1146" width="18" height="10" rx="3" fill="#333"/>
 <rect x="740" y="1130" width="18" height="10" rx="3" fill="#333"/>
 <!-- handle -->
 <path d="M776 885 L812 885 Q845 885 845 925 L845 1050 Q845 1090 812 1090 L776 1090 L776 1070 L808 1070 Q822 1070 822 1050 L822 925 Q822 905 808 905 L776 905 Z" fill="url(#black)"/>
</g>
<!-- frame fit arrow -->
<path d="M500 990 L528 990" stroke="#555" stroke-width="1.5" marker-end="url(#arr)"/>
<text x="656" y="1188" text-anchor="middle" font-size="13" fill="#444" font-style="italic">beaker drops into frame</text>

<!-- leaders & labels -->
<g font-size="15" fill="#222" stroke="none">
 <g stroke="#555" stroke-width="1" fill="none">
  <polyline points="348,82 230,82"/>
  <polyline points="374,260 230,260"/>
  <polyline points="266,458 230,458"/>
  <polyline points="266,540 230,540"/>
  <polyline points="272,625 230,625"/>
  <polyline points="272,705 230,705"/>
  <polyline points="362,776 230,776"/>
  <polyline points="268,990 230,990"/>
 </g>
 <g fill="#555"><circle cx="348" cy="82" r="2.5"/><circle cx="374" cy="260" r="2.5"/><circle cx="266" cy="458" r="2.5"/><circle cx="266" cy="540" r="2.5"/><circle cx="272" cy="625" r="2.5"/><circle cx="272" cy="705" r="2.5"/><circle cx="362" cy="776" r="2.5"/><circle cx="268" cy="990" r="2.5"/></g>
 <g text-anchor="end">
 <text x="224" y="87"><tspan font-weight="bold">1</tspan>  Knob</text>
 <text x="224" y="265"><tspan font-weight="bold">2</tspan>  Plunger rod</text>
 <text x="224" y="279" font-size="12" fill="#666">threaded both ends</text>
 <text x="224" y="463"><tspan font-weight="bold">3</tspan>  Lid</text>
 <text x="224" y="545"><tspan font-weight="bold">4</tspan>  Spiral plate</text>
 <text x="224" y="559" font-size="12" fill="#666">spring-coil rim seals wall</text>
 <text x="224" y="630"><tspan font-weight="bold">5</tspan>  Mesh screen</text>
 <text x="224" y="710"><tspan font-weight="bold">6</tspan>  Cross plate</text>
 <text x="224" y="781"><tspan font-weight="bold">7</tspan>  Filter nut</text>
 <text x="224" y="995"><tspan font-weight="bold">8</tspan>  Glass beaker</text>
 </g>
 <text x="656" y="836" text-anchor="middle"><tspan font-weight="bold">9</tspan>  Frame &amp; handle</text>
</g>
<!-- filter bracket -->
<g stroke="#b06a2c" stroke-width="1.5" fill="none">
 <path d="M520 515 L530 515 L530 795 L520 795"/>
</g>
<text x="540" y="650" font-size="14" fill="#b06a2c" font-weight="bold">3-piece filter</text>
<text x="540" y="668" font-size="12" fill="#b06a2c">4 + 5 + 6, clamped by 7</text>
<text x="540" y="684" font-size="12" fill="#b06a2c">on rod thread</text>
</svg>
round 1 of 2
Exploded French press, by Opus 5.5, the render after round 1
12What the model saw after each round. The picture above is the round that was scored, round 2.

The stack the right way up in two rounds, with the frame drawn beside the glass instead of under it.

modelanthropic/claude-opus-5.5tasksvg-french-press@v2date2026-09-23rounds2 of 8 allowedcost$0.2084thinkingmediumtokens37,638 in, 7,514 out, of which 1,596 reasoningtime1 min 23 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.fail
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
read the post
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.