press.svg · 269 lines
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1600" viewBox="0 0 1200 1600" role="img" aria-labelledby="title desc">
<title id="title">French press — exploded assembly</title>
<desc id="desc">Technical exploded diagram of a glass French press with knob, plunger rod, lid, and the standard three-piece filter: spiral plate, fine mesh screen, and cross plate, aligned above a glass beaker with handle and pouring spout.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#faf9f4"/>
<stop offset="1" stop-color="#eeece4"/>
</linearGradient>
<linearGradient id="steel" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#7e8d8e"/>
<stop offset="0.16" stop-color="#d9dedb"/>
<stop offset="0.38" stop-color="#f8f8f2"/>
<stop offset="0.62" stop-color="#b4bfbd"/>
<stop offset="0.84" stop-color="#eef0eb"/>
<stop offset="1" stop-color="#78898a"/>
</linearGradient>
<linearGradient id="steelDark" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#b8c2bf"/>
<stop offset="1" stop-color="#657779"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#b8d7d5" stop-opacity="0.42"/>
<stop offset="0.16" stop-color="#ffffff" stop-opacity="0.68"/>
<stop offset="0.43" stop-color="#d8e8e4" stop-opacity="0.16"/>
<stop offset="0.75" stop-color="#ffffff" stop-opacity="0.45"/>
<stop offset="1" stop-color="#9dbfbc" stop-opacity="0.40"/>
</linearGradient>
<linearGradient id="black" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#405052"/>
<stop offset="0.48" stop-color="#1d2b2e"/>
<stop offset="1" stop-color="#0d181b"/>
</linearGradient>
<radialGradient id="lidTop" cx="42%" cy="22%" r="78%">
<stop offset="0" stop-color="#f9faf5"/>
<stop offset="0.55" stop-color="#cbd3cf"/>
<stop offset="1" stop-color="#839293"/>
</radialGradient>
<pattern id="mesh" width="12" height="12" patternUnits="userSpaceOnUse">
<rect width="12" height="12" fill="#e4e7e1"/>
<path d="M0 0L12 12M12 0L0 12" fill="none" stroke="#6f8181" stroke-width="1.6"/>
<path d="M0 6H12M6 0V12" fill="none" stroke="#a9b5b1" stroke-width="0.65"/>
</pattern>
<pattern id="brush" width="8" height="8" patternUnits="userSpaceOnUse">
<path d="M0 1H8M0 5H8" stroke="#ffffff" stroke-opacity="0.22" stroke-width="0.7"/>
</pattern>
<filter id="softShadow" x="-30%" y="-30%" width="160%" height="180%">
<feGaussianBlur stdDeviation="8"/>
</filter>
<style>
.ink{fill:#203237}.muted{fill:#68797a}.accent{fill:#b95535}
.label{font-family:Arial,Helvetica,sans-serif;font-size:17px;font-weight:700;letter-spacing:1.7px;fill:#203237}
.sub{font-family:Arial,Helvetica,sans-serif;font-size:14px;letter-spacing:.25px;fill:#68797a}
.num{font-family:Arial,Helvetica,sans-serif;font-size:12px;font-weight:700;fill:#fff;text-anchor:middle;dominant-baseline:middle}
.leader{fill:none;stroke:#82918f;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.tiny{font-family:Arial,Helvetica,sans-serif;font-size:12px;letter-spacing:1.5px;fill:#68797a}
</style>
</defs>
<rect width="1200" height="1600" fill="url(#bg)"/>
<path d="M70 184H1130" stroke="#c9cec7" stroke-width="1"/>
<path d="M70 58V161" stroke="#b95535" stroke-width="4"/>
<text x="91" y="70" class="tiny" style="fill:#b95535;font-weight:700">COFFEE EQUIPMENT / TECHNICAL STUDY</text>
<text x="88" y="127" font-family="Arial,Helvetica,sans-serif" font-size="47" font-weight="700" letter-spacing="2" class="ink">FRENCH PRESS</text>
<text x="91" y="157" font-family="Arial,Helvetica,sans-serif" font-size="16" letter-spacing="2.8" class="muted">EXPLODED ASSEMBLY</text>
<g transform="translate(920 63)">
<text x="0" y="48" font-family="Arial,Helvetica,sans-serif" font-size="59" font-weight="700" class="accent">03</text>
<text x="78" y="20" class="tiny" style="font-weight:700;fill:#203237">PIECE</text>
<text x="78" y="40" class="tiny" style="font-weight:700;fill:#203237">PLUNGER</text>
<text x="78" y="60" class="tiny" style="font-weight:700;fill:#203237">FILTER</text>
</g>
<!-- shared assembly axis -->
<path d="M600 203V995" stroke="#9aa9a5" stroke-width="1.2" stroke-dasharray="5 8"/>
<g fill="#9aa9a5">
<path d="M595 306L600 315L605 306Z"/>
<path d="M595 550L600 559L605 550Z"/>
<path d="M595 675L600 684L605 675Z"/>
<path d="M595 795L600 804L605 795Z"/>
<path d="M595 930L600 939L605 930Z"/>
</g>
<!-- handle, behind the vessel -->
<path d="M793 1090C937 1054 1030 1106 1038 1198C1048 1314 949 1378 794 1328L799 1264C909 1301 968 1260 969 1199C970 1144 917 1127 802 1154Z"
fill="url(#black)" stroke="#17272a" stroke-width="3" fill-rule="evenodd"/>
<path d="M829 1100C944 1081 1009 1122 1013 1201C1018 1287 954 1335 880 1333" fill="none" stroke="#5e6d6d" stroke-opacity="0.42" stroke-width="6" stroke-linecap="round"/>
<path d="M802 1154C917 1127 970 1144 969 1199C968 1260 909 1301 799 1264" fill="none" stroke="#0c1719" stroke-width="4"/>
<!-- base and rear frame -->
<ellipse cx="600" cy="1423" rx="238" ry="43" fill="#324547" opacity="0.12" filter="url(#softShadow)"/>
<path d="M366 1365V1401C366 1433 471 1458 600 1458C729 1458 834 1433 834 1401V1365Z" fill="url(#steelDark)" stroke="#5f7375" stroke-width="2"/>
<ellipse cx="600" cy="1366" rx="234" ry="59" fill="url(#steel)" stroke="#6f8080" stroke-width="2"/>
<path d="M378 1039L386 1378M822 1039L814 1378" fill="none" stroke="#6e8081" stroke-width="17"/>
<path d="M374 1040L381 1368M818 1040L810 1368" fill="none" stroke="#d7dfdb" stroke-width="5"/>
<!-- glass beaker -->
<path d="M375 1017V1342C375 1380 392 1397 431 1408C474 1421 534 1427 600 1427C666 1427 726 1421 769 1408C808 1397 825 1380 825 1342V1017Z"
fill="url(#glass)" stroke="#63817f" stroke-width="2.5"/>
<ellipse cx="600" cy="1344" rx="224" ry="56" fill="#bed4cf" fill-opacity="0.13" stroke="#8aa4a0" stroke-opacity="0.65" stroke-width="1.4"/>
<path d="M393 1030V1337C393 1370 409 1384 442 1394" fill="none" stroke="#fff" stroke-opacity="0.88" stroke-width="7" stroke-linecap="round"/>
<path d="M416 1052V1326" fill="none" stroke="#fff" stroke-opacity="0.45" stroke-width="2" stroke-linecap="round"/>
<path d="M786 1050V1341C786 1364 775 1378 755 1388" fill="none" stroke="#a6c2be" stroke-opacity="0.52" stroke-width="4"/>
<!-- upper glass rim and pouring lip -->
<path d="M375 1018C375 986 475 961 600 961C725 961 825 986 825 1018C825 1051 725 1076 600 1076C499 1076 410 1058 383 1036L342 1014L375 1009Z"
fill="#e9f1ec" fill-opacity="0.48" stroke="#5f7e7c" stroke-width="2.5" stroke-linejoin="round"/>
<ellipse cx="600" cy="1018" rx="211" ry="48" fill="#f7f7f0" fill-opacity="0.60" stroke="#91a9a4" stroke-width="1.5"/>
<path d="M375 1018C375 986 475 961 600 961C725 961 825 986 825 1018" fill="none" stroke="#4f706f" stroke-width="3"/>
<path d="M342 1014L384 1016C400 1027 419 1036 442 1043" fill="none" stroke="#ffffff" stroke-opacity="0.9" stroke-width="3" stroke-linecap="round"/>
<!-- volume graduations -->
<g stroke="#6f8b88" stroke-opacity="0.68" fill="#6f8b88" font-family="Arial,Helvetica,sans-serif" font-size="11">
<path d="M454 1120H479M454 1180H473M454 1240H479M454 1300H473" stroke-width="1.5"/>
<text x="486" y="1124" fill="#6f8b88" stroke="none">0.8 L</text>
<text x="486" y="1244" fill="#6f8b88" stroke="none">0.4 L</text>
</g>
<!-- base front band -->
<path d="M366 1380V1402C366 1434 471 1458 600 1458C729 1458 834 1434 834 1402V1380C815 1411 716 1433 600 1433C484 1433 385 1411 366 1380Z" fill="url(#steel)" stroke="#627678" stroke-width="1.8"/>
<path d="M390 1404C439 1430 516 1442 600 1442C684 1442 761 1430 810 1404" fill="none" stroke="#f2f4ee" stroke-opacity="0.7" stroke-width="2"/>
<path d="M366 1380V1402C366 1434 471 1458 600 1458C729 1458 834 1434 834 1402V1380C815 1411 716 1433 600 1433C484 1433 385 1411 366 1380Z" fill="url(#brush)"/>
<path d="M790 1092L830 1098M790 1326L824 1318" stroke="#8c9b99" stroke-width="15" stroke-linecap="round"/>
<!-- rod, behind the separated lid -->
<rect x="594" y="322" width="12" height="203" rx="5" fill="url(#steel)" stroke="#637779" stroke-width="1"/>
<path d="M597 331V514" stroke="#fff" stroke-opacity="0.7" stroke-width="2"/>
<rect x="591" y="511" width="18" height="20" rx="3" fill="url(#steelDark)" stroke="#5c7072"/>
<path d="M592 516H608M592 521H608M592 526H608" stroke="#425c5e" stroke-width="1"/>
<!-- lid -->
<ellipse cx="600" cy="432" rx="218" ry="39" fill="#344a4c" opacity="0.12" filter="url(#softShadow)"/>
<path d="M382 399V425C382 449 480 468 600 468C720 468 818 449 818 425V399Z" fill="url(#steelDark)" stroke="#637779" stroke-width="2"/>
<path d="M382 400C398 361 480 338 600 338C720 338 802 361 818 400C818 427 720 448 600 448C480 448 382 427 382 400Z" fill="url(#lidTop)" stroke="#617679" stroke-width="2"/>
<path d="M403 390C443 362 511 351 600 351C689 351 757 362 797 390" fill="none" stroke="#f7f8f2" stroke-opacity="0.82" stroke-width="3"/>
<path d="M383 412C409 437 495 452 600 452C705 452 791 437 817 412" fill="none" stroke="#e5e9e4" stroke-opacity="0.7" stroke-width="2"/>
<ellipse cx="600" cy="390" rx="17" ry="7" fill="#435b5d"/>
<rect x="596" y="380" width="8" height="21" rx="3" fill="url(#steel)"/>
<path d="M755 391L782 397" stroke="#65797a" stroke-width="4" stroke-linecap="round"/>
<!-- 04: spiral plate, upper filter component -->
<g transform="translate(600 610)">
<ellipse cx="0" cy="20" rx="153" ry="42" fill="#31484a" opacity="0.10" filter="url(#softShadow)"/>
<g transform="scale(1 .31)">
<circle cy="22" r="150" fill="#627779"/>
<path d="M-150 0V22A150 150 0 0 0 150 22V0Z" fill="url(#steelDark)" stroke="#637779" stroke-width="3"/>
<circle r="150" fill="url(#steel)" stroke="#5f7476" stroke-width="4" vector-effect="non-scaling-stroke"/>
<g fill="none" stroke="#50686a" stroke-width="19" stroke-linecap="round">
<path d="M22-13C45-72 92-103 133-82"/>
<path d="M22-13C45-72 92-103 133-82" transform="rotate(60)"/>
<path d="M22-13C45-72 92-103 133-82" transform="rotate(120)"/>
<path d="M22-13C45-72 92-103 133-82" transform="rotate(180)"/>
<path d="M22-13C45-72 92-103 133-82" transform="rotate(240)"/>
<path d="M22-13C45-72 92-103 133-82" transform="rotate(300)"/>
</g>
<g fill="none" stroke="#f4f5ef" stroke-opacity="0.7" stroke-width="3">
<path d="M28-24C55-72 91-91 119-83"/>
<path d="M28-24C55-72 91-91 119-83" transform="rotate(120)"/>
<path d="M28-24C55-72 91-91 119-83" transform="rotate(240)"/>
</g>
<circle r="29" fill="url(#steelDark)" stroke="#5d7375" stroke-width="4"/>
<circle r="10" fill="#354f51"/>
</g>
</g>
<!-- 05: fine mesh screen, middle filter component -->
<g transform="translate(600 730)">
<ellipse cx="0" cy="20" rx="153" ry="42" fill="#31484a" opacity="0.10" filter="url(#softShadow)"/>
<g transform="scale(1 .31)">
<circle cy="18" r="150" fill="#627779"/>
<path d="M-150 0V18A150 150 0 0 0 150 18V0Z" fill="#819391"/>
<circle r="150" fill="url(#steel)" stroke="#5f7476" stroke-width="4" vector-effect="non-scaling-stroke"/>
<circle r="136" fill="url(#mesh)" stroke="#718684" stroke-width="5"/>
<circle r="142" fill="none" stroke="#f3f4ef" stroke-opacity="0.8" stroke-width="4"/>
<circle r="24" fill="url(#steelDark)" stroke="#607779" stroke-width="4"/>
<circle r="9" fill="#354f51"/>
</g>
</g>
<!-- 06: cross plate, lower filter component -->
<g transform="translate(600 850)">
<ellipse cx="0" cy="22" rx="153" ry="42" fill="#31484a" opacity="0.10" filter="url(#softShadow)"/>
<g transform="scale(1 .31)">
<circle cy="20" r="150" fill="none" stroke="#627779" stroke-width="24"/>
<g stroke="#627779" stroke-width="29" stroke-linecap="round">
<path d="M0 20V-125M0 20V165M-145 20H145"/>
</g>
<circle r="150" fill="none" stroke="url(#steel)" stroke-width="24"/>
<g stroke="url(#steel)" stroke-width="27" stroke-linecap="round">
<path d="M0-30V-137M0 30V137M-30 0H-137M30 0H137"/>
</g>
<g stroke="#f5f6f0" stroke-opacity="0.65" stroke-width="3">
<path d="M-10-38V-132M38-10H132"/>
</g>
<circle r="34" fill="url(#steel)" stroke="#617779" stroke-width="4"/>
<circle r="11" fill="#354f51"/>
</g>
</g>
<!-- 01: plunger knob -->
<g transform="translate(600 235)">
<ellipse cx="0" cy="43" rx="69" ry="19" fill="#243b3d" opacity="0.13" filter="url(#softShadow)"/>
<path d="M-61 0V28C-61 45-34 57 0 57C34 57 61 45 61 28V0Z" fill="url(#black)" stroke="#142629" stroke-width="2"/>
<ellipse rx="61" ry="29" fill="url(#black)" stroke="#142629" stroke-width="2"/>
<path d="M-44-4C-24-21 21-24 46-6" fill="none" stroke="#6c7a79" stroke-opacity="0.55" stroke-width="4" stroke-linecap="round"/>
<path d="M-48 31C-29 45 29 47 49 31" fill="none" stroke="#607170" stroke-opacity="0.4" stroke-width="2"/>
<rect x="-8" y="52" width="16" height="15" rx="3" fill="url(#steelDark)" stroke="#596e70"/>
</g>
<!-- leaders and labels -->
<g class="leader">
<path d="M533 235H399L366 222H306"/>
<path d="M612 326H862L892 312"/>
<path d="M813 425H862L892 441"/>
<path d="M451 610H362L329 592H306"/>
<path d="M749 730H862L892 714"/>
<path d="M451 850H362L329 832H306"/>
<path d="M377 1162H335L306 1144"/>
<path d="M962 1325H906L882 1355H892"/>
</g>
<g fill="#82918f">
<circle cx="533" cy="235" r="3"/><circle cx="612" cy="326" r="3"/>
<circle cx="813" cy="425" r="3"/><circle cx="451" cy="610" r="3"/>
<circle cx="749" cy="730" r="3"/><circle cx="451" cy="850" r="3"/>
<circle cx="377" cy="1162" r="3"/><circle cx="962" cy="1325" r="3"/>
</g>
<g transform="translate(90 222)"><circle r="15" fill="#b95535"/><text class="num" y="1">01</text></g>
<text x="120" y="218" class="label">PLUNGER KNOB</text>
<text x="120" y="242" class="sub">Heat-resistant grip</text>
<g transform="translate(918 312)"><circle r="15" fill="#b95535"/><text class="num" y="1">02</text></g>
<text x="948" y="308" class="label">PLUNGER ROD</text>
<text x="948" y="332" class="sub">Stainless steel shaft</text>
<g transform="translate(918 441)"><circle r="15" fill="#b95535"/><text class="num" y="1">03</text></g>
<text x="948" y="437" class="label">LID</text>
<text x="948" y="461" class="sub">Guided central bore</text>
<g transform="translate(90 592)"><circle r="15" fill="#b95535"/><text class="num" y="1">04</text></g>
<text x="120" y="588" class="label">SPIRAL PLATE</text>
<text x="120" y="612" class="sub">Upper filter · curved vanes</text>
<g transform="translate(918 714)"><circle r="15" fill="#b95535"/><text class="num" y="1">05</text></g>
<text x="948" y="710" class="label">MESH SCREEN</text>
<text x="948" y="734" class="sub">Fine stainless weave</text>
<g transform="translate(90 832)"><circle r="15" fill="#b95535"/><text class="num" y="1">06</text></g>
<text x="120" y="828" class="label">CROSS PLATE</text>
<text x="120" y="852" class="sub">Lower filter · rigid support</text>
<g transform="translate(90 1144)"><circle r="15" fill="#b95535"/><text class="num" y="1">07</text></g>
<text x="120" y="1140" class="label">GLASS BEAKER</text>
<text x="120" y="1164" class="sub">Borosilicate vessel</text>
<text x="120" y="1184" class="sub">with pouring lip</text>
<g transform="translate(918 1355)"><circle r="15" fill="#b95535"/><text class="num" y="1">08</text></g>
<text x="948" y="1351" class="label">HANDLE + FRAME</text>
<text x="948" y="1375" class="sub">Cool-touch grip</text>
<text x="948" y="1395" class="sub">with steel cradle</text>
<!-- filter order note -->
<path d="M70 1500H1130" stroke="#c9cec7"/>
<text x="70" y="1531" class="tiny" style="font-weight:700;fill:#203237">FILTER STACK / TOP → BOTTOM</text>
<g font-family="Arial,Helvetica,sans-serif" font-size="14" fill="#526769">
<text x="70" y="1560"><tspan fill="#b95535" font-weight="700">04</tspan><tspan dx="10">Spiral plate</tspan><tspan dx="16" fill="#a2adaa">→</tspan><tspan dx="16" fill="#b95535" font-weight="700">05</tspan><tspan dx="10">Mesh screen</tspan><tspan dx="16" fill="#a2adaa">→</tspan><tspan dx="16" fill="#b95535" font-weight="700">06</tspan><tspan dx="10">Cross plate</tspan></text>
</g>
<text x="1130" y="1531" text-anchor="end" class="tiny">STANDARD NON-TRAVEL PRESS</text>
<text x="1130" y="1560" text-anchor="end" class="sub">Components separated on a common assembly axis</text>
</svg>round 1 of 2

Exploded French press: Kimi K3.1 Pro
modelmoonshotai/kimi-k3.1-protasksvg-french-press@v2, checks c1, harness h1date2026-10-26rounds2 of 8 allowed, 12 minutes on the clockcost$0.1767thinkingmediumtokens89,653 in, 12,921 out, of which 5,166 reasoningtime5 min 47 sfailedFilter 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 filepass
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 2 · 3r · $0.1757
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.