press.svg · 259 lines
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="1800" viewBox="0 0 1600 1800" role="img" aria-labelledby="title desc">
<title id="title">French press — exploded assembly</title>
<desc id="desc">A technical exploded diagram of a French press with a glass beaker, handle and frame, lid, plunger knob and rod, and a standard three-piece filter consisting of a cross plate, fine mesh screen, and spiral spring plate.</desc>
<defs>
<linearGradient id="steel" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#879396"/>
<stop offset="0.16" stop-color="#d9e0df"/>
<stop offset="0.38" stop-color="#f8faf7"/>
<stop offset="0.62" stop-color="#c3cdcc"/>
<stop offset="0.83" stop-color="#f0f3ef"/>
<stop offset="1" stop-color="#879396"/>
</linearGradient>
<linearGradient id="steelDark" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#cbd4d3"/>
<stop offset="1" stop-color="#6f7d80"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#b9d9d7" stop-opacity="0.52"/>
<stop offset="0.13" stop-color="#eaf7f3" stop-opacity="0.78"/>
<stop offset="0.32" stop-color="#ffffff" stop-opacity="0.34"/>
<stop offset="0.75" stop-color="#d9eeea" stop-opacity="0.42"/>
<stop offset="0.92" stop-color="#a8cfcd" stop-opacity="0.62"/>
<stop offset="1" stop-color="#7faeac" stop-opacity="0.52"/>
</linearGradient>
<linearGradient id="knob" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#182d32"/>
<stop offset="0.45" stop-color="#40575a"/>
<stop offset="0.7" stop-color="#263c40"/>
<stop offset="1" stop-color="#102429"/>
</linearGradient>
<radialGradient id="disc" cx="42%" cy="28%" r="75%">
<stop offset="0" stop-color="#fbfcf8"/>
<stop offset="0.55" stop-color="#d7dfdd"/>
<stop offset="1" stop-color="#98a6a8"/>
</radialGradient>
<pattern id="mesh" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="skewX(-18)">
<path d="M0 0H10M0 0V10" fill="none" stroke="#53696d" stroke-width="1.15" opacity="0.78"/>
</pattern>
<pattern id="fineMesh" width="7" height="7" patternUnits="userSpaceOnUse">
<path d="M0 0L7 7M7 0L0 7" fill="none" stroke="#718487" stroke-width="0.65" opacity="0.6"/>
</pattern>
<clipPath id="screenClip"><ellipse cx="760" cy="970" rx="151" ry="46"/></clipPath>
<clipPath id="glassClip"><path d="M550 1302 L563 1608 Q566 1654 760 1669 Q954 1654 957 1608 L970 1302 Z"/></clipPath>
<filter id="softShadow" x="-30%" y="-30%" width="160%" height="180%">
<feDropShadow dx="0" dy="7" stdDeviation="7" flood-color="#19373a" flood-opacity="0.12"/>
</filter>
<style>
.ink{stroke:#243e42;stroke-linecap:round;stroke-linejoin:round}
.leader{fill:none;stroke:#829294;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.label{font-family:Arial,Helvetica,sans-serif;font-size:22px;font-weight:700;letter-spacing:1.5px;fill:#203b3f}
.sub{font-family:Arial,Helvetica,sans-serif;font-size:16px;letter-spacing:.5px;fill:#65777a}
.num{font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:700;fill:#f8f6ef;text-anchor:middle}
.tiny{font-family:Arial,Helvetica,sans-serif;font-size:14px;letter-spacing:2px;fill:#6b7d7f}
</style>
</defs>
<!-- sheet -->
<rect width="1600" height="1800" fill="#f7f5ef"/>
<path d="M80 142H1520" stroke="#c8cfcb" stroke-width="1"/>
<text x="82" y="91" font-family="Arial,Helvetica,sans-serif" font-size="48" font-weight="700" letter-spacing="5" fill="#1d383c">FRENCH PRESS</text>
<text x="84" y="124" class="tiny">EXPLODED ASSEMBLY / STANDARD PLUNGER FILTER</text>
<text x="1518" y="85" text-anchor="end" class="tiny">TECHNICAL PLATE</text>
<text x="1518" y="116" text-anchor="end" font-family="Arial,Helvetica,sans-serif" font-size="24" font-weight="700" fill="#31575a">01</text>
<!-- common assembly axis -->
<path d="M760 169V1285" fill="none" stroke="#a5b3b1" stroke-width="1.5" stroke-dasharray="7 10"/>
<g fill="#8ca09f">
<path d="M753 531L760 541L767 531Z"/>
<path d="M753 722L760 732L767 722Z"/>
<path d="M753 889L760 899L767 889Z"/>
<path d="M753 1048L760 1058L767 1048Z"/>
<path d="M753 1208L760 1218L767 1208Z"/>
</g>
<!-- handle and frame, behind the glass -->
<g>
<path d="M933 1370 C1064 1334 1142 1385 1132 1481 C1123 1570 1050 1608 951 1570 L955 1518 C1022 1544 1074 1517 1080 1468 C1088 1409 1040 1397 944 1422 Z" fill="url(#knob)" class="ink" stroke-width="4"/>
<path d="M978 1391 C1061 1374 1105 1406 1098 1468" fill="none" stroke="#607477" stroke-width="5" opacity="0.65"/>
<path d="M945 1353L953 1618" fill="none" stroke="#58696c" stroke-width="18"/>
<path d="M944 1353L951 1618" fill="none" stroke="#d4ddda" stroke-width="6"/>
</g>
<!-- glass beaker -->
<g>
<path d="M550 1302 L563 1608 Q566 1654 760 1669 Q954 1654 957 1608 L970 1302 Z" fill="url(#glass)" class="ink" stroke-width="3.2"/>
<g clip-path="url(#glassClip)">
<path d="M592 1320L603 1604Q605 1626 640 1638" fill="none" stroke="#ffffff" stroke-width="18" opacity="0.68"/>
<path d="M624 1320L632 1588" fill="none" stroke="#ffffff" stroke-width="4" opacity="0.8"/>
<path d="M920 1320L908 1604" fill="none" stroke="#7ba9a8" stroke-width="8" opacity="0.2"/>
<ellipse cx="760" cy="1640" rx="186" ry="39" fill="#a6cfcb" opacity="0.18"/>
</g>
<!-- pouring lip and open rim -->
<path d="M551 1302 C524 1299 503 1282 488 1263 C522 1277 549 1274 575 1257" fill="#e4f1ed" fill-opacity="0.8" class="ink" stroke-width="3"/>
<ellipse cx="760" cy="1302" rx="210" ry="62" fill="#eaf4ef" fill-opacity="0.45" class="ink" stroke-width="3.2"/>
<ellipse cx="760" cy="1302" rx="195" ry="50" fill="#f7f5ef" fill-opacity="0.84" stroke="#6f9696" stroke-width="2"/>
<path d="M551 1302C579 1365 923 1367 970 1302" fill="none" stroke="#31575a" stroke-width="3.2"/>
<path d="M566 1310C609 1351 902 1354 954 1310" fill="none" stroke="#ffffff" stroke-width="3" opacity="0.8"/>
<!-- subtle graduations -->
<g fill="#527678" stroke="#527678" opacity="0.72" font-family="Arial,Helvetica,sans-serif" font-size="14">
<path d="M833 1411H872M845 1455H872M833 1499H872M845 1543H872" fill="none" stroke-width="1.6"/>
<text x="882" y="1416" stroke="none">800 ml</text>
<text x="882" y="1504" stroke="none">400</text>
</g>
<!-- stainless base -->
<path d="M560 1595V1630Q564 1677 760 1690Q956 1677 960 1630V1595Q947 1642 760 1653Q573 1642 560 1595Z" fill="url(#steel)" class="ink" stroke-width="3"/>
<path d="M560 1595Q574 1644 760 1653Q946 1644 960 1595" fill="none" stroke="#eef2ee" stroke-width="3"/>
<path d="M584 1640Q642 1670 760 1674Q878 1670 936 1640" fill="none" stroke="#6f8082" stroke-width="1.5" opacity="0.65"/>
<path d="M568 1334L574 1599M952 1334L946 1599" fill="none" stroke="url(#steel)" stroke-width="12"/>
<path d="M568 1334L574 1599M952 1334L946 1599" fill="none" stroke="#526669" stroke-width="1.5"/>
</g>
<!-- 06 spiral spring plate -->
<g transform="translate(760 0) scale(1.16 1) translate(-760 0)">
<ellipse cx="760" cy="1114" rx="156" ry="48" fill="#b7c3c2" fill-opacity="0.5" class="ink" stroke-width="2.5"/>
<ellipse cx="760" cy="1108" rx="156" ry="48" fill="#e5eae6" fill-opacity="0.7" class="ink" stroke-width="2.5"/>
<ellipse cx="760" cy="1108" rx="132" ry="38" fill="none" stroke="#819194" stroke-width="1.5"/>
<ellipse cx="760" cy="1108" rx="16" ry="6" fill="#f7f5ef" stroke="#536b6e" stroke-width="2"/>
<path d="M604 1108C632 1156 888 1156 916 1108" fill="none" stroke="#405b5f" stroke-width="3"/>
<path d="M604 1108
C608 1098 612 1098 616 1115 S624 1134 628 1124
S636 1108 640 1131 S648 1146 652 1138
S660 1123 664 1144 S672 1156 676 1148
S684 1134 688 1153 S696 1163 700 1155
S708 1142 712 1160 S720 1168 724 1160
S732 1148 736 1165 S744 1171 748 1163
S756 1151 760 1167 S768 1171 772 1163
S780 1148 784 1165 S792 1168 796 1160
S804 1142 808 1160 S816 1163 820 1155
S828 1134 832 1153 S840 1156 844 1148
S852 1123 856 1144 S864 1146 868 1138
S876 1108 880 1131 S888 1134 892 1124
S900 1098 904 1115 S912 1118 916 1108" fill="none" stroke="#324e52" stroke-width="2.6" stroke-linecap="round"/>
<path d="M608 1103C650 1066 870 1066 912 1103" fill="none" stroke="#f8faf6" stroke-width="3" opacity="0.9"/>
</g>
<!-- 05 fine mesh screen -->
<g transform="translate(760 0) scale(1.16 1) translate(-760 0)">
<ellipse cx="760" cy="978" rx="154" ry="47" fill="#859698" class="ink" stroke-width="2.5"/>
<ellipse cx="760" cy="970" rx="154" ry="47" fill="#d5dedb" class="ink" stroke-width="2.5"/>
<rect x="600" y="920" width="320" height="102" fill="url(#mesh)" clip-path="url(#screenClip)"/>
<rect x="600" y="920" width="320" height="102" fill="url(#fineMesh)" clip-path="url(#screenClip)"/>
<ellipse cx="760" cy="970" rx="154" ry="47" fill="none" stroke="#405b5f" stroke-width="4"/>
<ellipse cx="760" cy="970" rx="146" ry="41" fill="none" stroke="#f5f7f3" stroke-width="2" opacity="0.8"/>
<ellipse cx="760" cy="970" rx="13" ry="5" fill="#f7f5ef" stroke="#4d6669" stroke-width="2"/>
</g>
<!-- 04 cross plate -->
<g transform="translate(760 0) scale(1.16 1) translate(-760 0)">
<ellipse cx="760" cy="810" rx="153" ry="47" fill="#78898c" class="ink" stroke-width="2.5"/>
<ellipse cx="760" cy="801" rx="153" ry="47" fill="url(#disc)" class="ink" stroke-width="2.5"/>
<!-- four open sectors -->
<path d="M742 790L670 769Q642 776 629 787L733 801Z" fill="#f7f5ef" stroke="#718588" stroke-width="1.5"/>
<path d="M778 790L850 769Q878 776 891 787L787 801Z" fill="#f7f5ef" stroke="#718588" stroke-width="1.5"/>
<path d="M733 808L635 817Q652 831 693 838L744 815Z" fill="#f7f5ef" stroke="#718588" stroke-width="1.5"/>
<path d="M787 808L885 817Q868 831 827 838L776 815Z" fill="#f7f5ef" stroke="#718588" stroke-width="1.5"/>
<ellipse cx="760" cy="802" rx="20" ry="8" fill="url(#steelDark)" stroke="#405b5f" stroke-width="2"/>
<ellipse cx="760" cy="801" rx="10" ry="4" fill="#f7f5ef"/>
<path d="M617 792C651 752 868 752 903 792" fill="none" stroke="#ffffff" stroke-width="3" opacity="0.8"/>
</g>
<!-- 03 lid -->
<g transform="translate(760 0) scale(1.10 1) translate(-760 0)">
<path d="M585 598V625C600 688 920 688 935 625V598Z" fill="url(#steel)" class="ink" stroke-width="3"/>
<ellipse cx="760" cy="598" rx="175" ry="53" fill="url(#disc)" class="ink" stroke-width="3"/>
<path d="M599 591C633 549 860 538 919 584" fill="none" stroke="#ffffff" stroke-width="4" opacity="0.8"/>
<path d="M585 613C620 668 900 668 935 613" fill="none" stroke="#718184" stroke-width="2" opacity="0.75"/>
<ellipse cx="760" cy="592" rx="25" ry="10" fill="#6f8183" stroke="#314f53" stroke-width="2"/>
<ellipse cx="760" cy="590" rx="13" ry="5" fill="#f7f5ef" stroke="#314f53" stroke-width="1.5"/>
<!-- small steam vent -->
<ellipse cx="843" cy="581" rx="8" ry="3.5" fill="#667b7e"/>
</g>
<!-- 02 plunger rod, detached above lid -->
<g>
<rect x="750" y="276" width="20" height="225" rx="8" fill="url(#steel)" class="ink" stroke-width="2.5"/>
<path d="M756 288V486" stroke="#ffffff" stroke-width="3" opacity="0.8"/>
<path d="M750 477H770M750 485H770M750 493H770" stroke="#50676a" stroke-width="1.4"/>
<ellipse cx="760" cy="501" rx="10" ry="4" fill="#687b7e" stroke="#314f53" stroke-width="1.5"/>
</g>
<!-- 01 plunger knob -->
<g>
<path d="M701 231V254Q704 278 760 282Q816 278 819 254V231Z" fill="url(#knob)" class="ink" stroke-width="3"/>
<ellipse cx="760" cy="231" rx="59" ry="24" fill="#42595c" class="ink" stroke-width="3"/>
<path d="M704 229C710 183 810 183 816 229Q760 256 704 229Z" fill="url(#knob)" class="ink" stroke-width="3"/>
<path d="M722 211Q744 192 777 201" fill="none" stroke="#718487" stroke-width="4" opacity="0.65"/>
<ellipse cx="760" cy="254" rx="14" ry="5" fill="#142b30" opacity="0.8"/>
</g>
<!-- left callouts -->
<g>
<circle cx="110" cy="229" r="18" fill="#294b4f"/><text x="110" y="234" class="num">01</text>
<text x="145" y="226" class="label">PLUNGER KNOB</text>
<text x="145" y="251" class="sub">Heat-resistant grip</text>
<path d="M375 229H516L681 229" class="leader"/>
<circle cx="686" cy="229" r="4" fill="#526f72"/>
<circle cx="110" cy="598" r="18" fill="#294b4f"/><text x="110" y="603" class="num">03</text>
<text x="145" y="595" class="label">FITTED LID</text>
<text x="145" y="620" class="sub">Central rod guide + vent</text>
<path d="M375 598H490L568 598" class="leader"/>
<circle cx="573" cy="598" r="4" fill="#526f72"/>
<circle cx="110" cy="801" r="18" fill="#294b4f"/><text x="110" y="806" class="num">04</text>
<text x="145" y="798" class="label">CROSS PLATE</text>
<text x="145" y="823" class="sub">Upper rigid support</text>
<path d="M383 801H508L594 801" class="leader"/>
<circle cx="599" cy="801" r="4" fill="#526f72"/>
<circle cx="110" cy="970" r="18" fill="#294b4f"/><text x="110" y="975" class="num">05</text>
<text x="145" y="967" class="label">FINE-MESH SCREEN</text>
<text x="145" y="992" class="sub">Filtration layer</text>
<path d="M421 970H520L592 970" class="leader"/>
<circle cx="597" cy="970" r="4" fill="#526f72"/>
<circle cx="110" cy="1108" r="18" fill="#294b4f"/><text x="110" y="1113" class="num">06</text>
<text x="145" y="1105" class="label">SPIRAL SPRING</text>
<text x="145" y="1130" class="sub">Lower plate + edge coil</text>
<path d="M383 1108H500L590 1108" class="leader"/>
<circle cx="595" cy="1108" r="4" fill="#526f72"/>
</g>
<!-- right callouts -->
<g>
<circle cx="1190" cy="365" r="18" fill="#294b4f"/><text x="1190" y="370" class="num">02</text>
<text x="1225" y="362" class="label">PLUNGER ROD</text>
<text x="1225" y="387" class="sub">Threaded lower end</text>
<path d="M783 389H1010L1165 365" class="leader"/>
<circle cx="778" cy="389" r="4" fill="#526f72"/>
<circle cx="1190" cy="1402" r="18" fill="#294b4f"/><text x="1190" y="1407" class="num">07</text>
<text x="1225" y="1399" class="label">GLASS BEAKER</text>
<text x="1225" y="1424" class="sub">Open vessel + pouring lip</text>
<path d="M982 1402H1165" class="leader"/>
<circle cx="977" cy="1402" r="4" fill="#526f72"/>
<circle cx="1190" cy="1544" r="18" fill="#294b4f"/><text x="1190" y="1549" class="num">08</text>
<text x="1225" y="1541" class="label">HANDLE + FRAME</text>
<text x="1225" y="1566" class="sub">Insulated grip, steel cradle</text>
<path d="M1112 1518L1165 1544" class="leader"/>
<circle cx="1107" cy="1515" r="4" fill="#526f72"/>
</g>
<!-- three-piece filter bracket -->
<g>
<path d="M990 784H1013V1128H990M1013 956H1040" fill="none" stroke="#668083" stroke-width="2"/>
<text x="1064" y="903" class="tiny" fill="#405f62">STANDARD</text>
<text x="1064" y="936" font-family="Arial,Helvetica,sans-serif" font-size="23" font-weight="700" letter-spacing="1.1" fill="#294b4f">THREE-PIECE</text>
<text x="1064" y="968" font-family="Arial,Helvetica,sans-serif" font-size="23" font-weight="700" letter-spacing="1.1" fill="#294b4f">FILTER</text>
<text x="1064" y="998" class="sub">04 + 05 + 06</text>
</g>
<!-- footer -->
<path d="M80 1730H1520" stroke="#c8cfcb" stroke-width="1"/>
<text x="82" y="1764" class="tiny">FILTER ORDER / TOP TO BOTTOM</text>
<text x="565" y="1765" font-family="Arial,Helvetica,sans-serif" font-size="16" letter-spacing="1" fill="#294b4f">CROSS PLATE → MESH SCREEN → SPIRAL SPRING</text>
<text x="1518" y="1764" text-anchor="end" class="sub">Mesh is sandwiched between the two rigid plates.</text>
</svg>round 1 of 3

Exploded French press: Kimi K3.1 Pro
modelmoonshotai/kimi-k3.1-protasksvg-french-press@v2, checks c1, harness h1date2026-10-26rounds3 of 8 allowed, 12 minutes on the clockcost$0.1757thinkingmediumtokens144,184 in, 11,615 out, of which 4,034 reasoningtime5 min 40 sfailedStack order: false, relation transposed, critical · Filter fits the glass: false, geometry distorted, major
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 filefail
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.
run 1 · 2r · $0.1767
run 3 · 3r · $0.1712same prompt, other modelsall 65 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.