press.svg · 143 lines
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="1420" viewBox="0 0 900 1420" font-family="Helvetica, Arial, sans-serif">
<defs>
<linearGradient id="steel" x1="0" x2="1"><stop offset="0" stop-color="#8a9097"/><stop offset=".45" stop-color="#eef1f4"/><stop offset="1" stop-color="#7c828a"/></linearGradient>
<linearGradient id="glass" x1="0" x2="1"><stop offset="0" stop-color="#cfe6f2" stop-opacity=".8"/><stop offset=".3" stop-color="#f4fbff" stop-opacity=".5"/><stop offset="1" stop-color="#b9d8ea" stop-opacity=".8"/></linearGradient>
<linearGradient id="black" x1="0" x2="1"><stop offset="0" stop-color="#222"/><stop offset=".4" stop-color="#666"/><stop offset="1" stop-color="#1a1a1a"/></linearGradient>
<pattern id="mesh" width="4" height="4" patternUnits="userSpaceOnUse"><path d="M0 0L4 4M4 0L0 4" stroke="#556" stroke-width=".6"/></pattern>
<clipPath id="meshclip"><ellipse cx="350" cy="560" rx="96" ry="20"/></clipPath>
<marker id="arr" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M0 0L10 5L0 10z" fill="#c33"/></marker>
</defs>
<rect width="900" height="1420" fill="#fff"/>
<text x="450" y="38" text-anchor="middle" font-size="26" font-weight="bold">French Press — Exploded Assembly</text>
<text x="450" y="62" text-anchor="middle" font-size="14" fill="#555">Standard plunger with three-piece filter (cross plate · mesh screen · spiral plate)</text>
<!-- centre axis -->
<line x1="350" y1="80" x2="350" y2="1400" stroke="#c33" stroke-width="1" stroke-dasharray="14 4 3 4"/>
<!-- 1 Knob -->
<g stroke="#111" stroke-width="1.5">
<rect x="344" y="128" width="12" height="14" fill="url(#steel)"/>
<path d="M322 128 Q320 92 350 90 Q380 92 378 128 Z" fill="url(#black)"/>
<ellipse cx="350" cy="128" rx="28" ry="5" fill="#333"/>
</g>
<!-- 2 Lid -->
<g stroke="#111" stroke-width="1.5">
<path d="M238 210 Q250 168 350 164 Q450 168 462 210 Z" fill="url(#steel)"/>
<ellipse cx="350" cy="210" rx="112" ry="14" fill="#c9ced3"/>
<path d="M246 212 L246 226 Q350 246 454 226 L454 212" fill="url(#steel)"/>
<rect x="343" y="160" width="14" height="8" fill="#555"/>
<path d="M430 196 q14 -4 22 6" fill="none" stroke="#333"/>
</g>
<!-- 3 Plunger rod -->
<g stroke="#111" stroke-width="1.2">
<rect x="346" y="262" width="8" height="186" fill="url(#steel)"/>
<g stroke="#444" stroke-width=".8">
<line x1="345" y1="265" x2="355" y2="268"/><line x1="345" y1="270" x2="355" y2="273"/><line x1="345" y1="275" x2="355" y2="278"/>
<line x1="345" y1="432" x2="355" y2="435"/><line x1="345" y1="437" x2="355" y2="440"/><line x1="345" y1="442" x2="355" y2="445"/>
</g>
</g>
<!-- 4 Cross plate -->
<g stroke="#111" stroke-width="1.4">
<ellipse cx="350" cy="504" rx="98" ry="21" fill="#9aa0a6"/>
<ellipse cx="350" cy="500" rx="98" ry="21" fill="url(#steel)"/>
<ellipse cx="350" cy="500" rx="86" ry="17" fill="#fff" stroke-width="1"/>
<g stroke-width="7" stroke="#a5abb1" stroke-linecap="round">
<line x1="268" y1="500" x2="432" y2="500"/><line x1="350" y1="484" x2="350" y2="516"/>
</g>
<g fill="none" stroke-width=".8"><line x1="268" y1="496.5" x2="432" y2="496.5"/><line x1="268" y1="503.5" x2="432" y2="503.5"/></g>
<ellipse cx="350" cy="500" rx="13" ry="5" fill="url(#steel)"/>
<ellipse cx="350" cy="500" rx="4" ry="2" fill="#222"/>
</g>
<!-- 5 Mesh screen -->
<g stroke="#111" stroke-width="1.4">
<ellipse cx="350" cy="560" rx="100" ry="22" fill="#eef"/>
<rect x="250" y="535" width="200" height="50" fill="url(#mesh)" clip-path="url(#meshclip)" stroke="none"/>
<ellipse cx="350" cy="560" rx="100" ry="22" fill="none" stroke-width="2.5" stroke="#667"/>
<ellipse cx="350" cy="560" rx="10" ry="4" fill="#fff"/>
<ellipse cx="350" cy="560" rx="4" ry="2" fill="#222"/>
</g>
<!-- 6 Spiral plate -->
<g stroke="#111" stroke-width="1.3">
<ellipse cx="350" cy="624" rx="102" ry="23" fill="#9aa0a6"/>
<ellipse cx="350" cy="620" rx="102" ry="23" fill="url(#steel)"/>
<ellipse cx="350" cy="620" rx="104" ry="24" fill="none" stroke="#555" stroke-width="4" stroke-dasharray="2 2"/>
<path d="M350 620 m0 -3 a8 3 0 1 1 -1 6 a20 6 0 1 1 3 -13 a34 9 0 1 1 -6 21 a50 12 0 1 1 8 -28 a66 15 0 1 1 -10 34 a82 18 0 1 1 10 -40" fill="none" stroke="#555" stroke-width="1.6"/>
<ellipse cx="350" cy="620" rx="4" ry="2" fill="#222"/>
</g>
<!-- 7 End nut -->
<g stroke="#111" stroke-width="1.2">
<path d="M338 668 L362 668 L362 684 L338 684 Z" fill="url(#steel)"/>
<ellipse cx="350" cy="668" rx="12" ry="4" fill="#dde"/>
<line x1="346" y1="668" x2="346" y2="684"/><line x1="354" y1="668" x2="354" y2="684"/>
</g>
<!-- 8 Glass beaker -->
<g stroke="#335" stroke-width="1.6">
<path d="M240 752 L240 1000 Q240 1016 256 1016 L444 1016 Q460 1016 460 1000 L460 752" fill="url(#glass)"/>
<ellipse cx="350" cy="752" rx="110" ry="18" fill="#e6f4fb" fill-opacity=".7"/>
<path d="M260 742 Q234 738 226 744 Q234 756 242 760" fill="#e6f4fb" />
<ellipse cx="350" cy="1008" rx="104" ry="8" fill="none" stroke="#9bc" stroke-width="1"/>
<line x1="262" y1="780" x2="262" y2="990" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".8"/>
<g stroke="#89a" stroke-width="1"><line x1="420" y1="820" x2="440" y2="820"/><line x1="428" y1="870" x2="440" y2="870"/><line x1="420" y1="920" x2="440" y2="920"/><line x1="428" y1="970" x2="440" y2="970"/></g>
</g>
<!-- 9 Frame / handle -->
<g stroke="#111" stroke-width="1.5">
<!-- top band -->
<path d="M232 1090 L468 1090 L468 1112 L232 1112 Z" fill="url(#steel)"/>
<ellipse cx="350" cy="1090" rx="118" ry="16" fill="none"/>
<!-- struts -->
<rect x="238" y="1112" width="12" height="230" fill="url(#steel)"/>
<rect x="450" y="1112" width="12" height="230" fill="url(#steel)"/>
<rect x="344" y="1118" width="12" height="224" fill="url(#steel)" opacity=".85"/>
<!-- base cup -->
<path d="M232 1330 L468 1330 L468 1362 Q468 1374 452 1374 L248 1374 Q232 1374 232 1362 Z" fill="url(#steel)"/>
<rect x="236" y="1374" width="30" height="8" fill="#333"/><rect x="434" y="1374" width="30" height="8" fill="#333"/>
<!-- handle -->
<path d="M468 1110 Q560 1110 562 1180 L562 1270 Q560 1330 468 1332 L468 1310 Q534 1306 536 1266 L536 1184 Q534 1134 468 1134 Z" fill="url(#black)"/>
</g>
<!-- assembly arrows -->
<g stroke="#c33" stroke-width="1.5" marker-end="url(#arr)">
<line x1="200" y1="1060" x2="200" y2="1100"/>
<line x1="200" y1="700" x2="200" y2="740"/>
</g>
<text x="190" y="1052" font-size="11" fill="#c33" text-anchor="end">beaker drops into frame</text>
<text x="190" y="692" font-size="11" fill="#c33" text-anchor="end">plunger into beaker</text>
<!-- labels -->
<g font-size="15" fill="#111">
<g stroke="#333" stroke-width="1" fill="none">
<polyline points="378,110 640,110"/>
<polyline points="462,200 640,200"/>
<polyline points="354,350 640,350"/>
<polyline points="448,500 640,500"/>
<polyline points="450,560 640,560"/>
<polyline points="452,620 640,620"/>
<polyline points="362,676 640,676"/>
<polyline points="460,880 640,880"/>
<polyline points="468,1100 640,1100"/>
<polyline points="562,1220 640,1220"/>
</g>
<g fill="#111"><circle cx="378" cy="110" r="2.5"/><circle cx="462" cy="200" r="2.5"/><circle cx="354" cy="350" r="2.5"/><circle cx="448" cy="500" r="2.5"/><circle cx="450" cy="560" r="2.5"/><circle cx="452" cy="620" r="2.5"/><circle cx="362" cy="676" r="2.5"/><circle cx="460" cy="880" r="2.5"/><circle cx="468" cy="1100" r="2.5"/><circle cx="562" cy="1220" r="2.5"/></g>
<text x="648" y="115"><tspan font-weight="bold">1</tspan> Knob</text>
<text x="648" y="205"><tspan font-weight="bold">2</tspan> Lid</text>
<text x="648" y="355"><tspan font-weight="bold">3</tspan> Plunger rod</text>
<text x="648" y="505"><tspan font-weight="bold">4</tspan> Cross plate</text>
<text x="648" y="565"><tspan font-weight="bold">5</tspan> Mesh screen</text>
<text x="648" y="625"><tspan font-weight="bold">6</tspan> Spiral plate</text>
<text x="648" y="681"><tspan font-weight="bold">7</tspan> End nut</text>
<text x="648" y="885"><tspan font-weight="bold">8</tspan> Glass beaker</text>
<text x="648" y="1105"><tspan font-weight="bold">9</tspan> Frame</text>
<text x="648" y="1225"><tspan font-weight="bold">10</tspan> Handle</text>
</g>
<rect x="628" y="470" width="190" height="176" fill="none" stroke="#c33" stroke-dasharray="5 4"/>
<text x="723" y="462" font-size="12" fill="#c33" text-anchor="middle">Filter assembly (4–6)</text>
</svg>round 1 of 3

The cleanest press on the bench, with the cross-plate on top of the mesh.
modelanthropic/claude-opus-5.5tasksvg-french-press@v2date2026-09-23rounds3 of 8 allowedcost$0.2115thinkingmediumtokens55,724 in, 7,230 out, of which 1,437 reasoningtime1 min 25 sfailurepart-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.pass
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
run 1 · 3r · $0.2307
run 2 · 2r · $0.2084The stack the right way up in two rounds, with the frame drawn beside the glass instead of under it.
run 2 · 2r · $0.1625
run 3 · 3r · $0.2209Right in round 1, then it swapped the plates, and its filter is wider than the glass.same prompt, other modelsall 33 runs on Exploded French press →
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.
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.