press.svg · 216 lines
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1500" viewBox="0 0 1200 1500" role="img" aria-labelledby="title desc">
<title id="title">Exploded assembly diagram of a French press</title>
<desc id="desc">A technical illustration showing the plunger knob and rod, lid, cross plate, spiral spring, mesh screen, and glass carafe with frame and handle in exploded alignment.</desc>
<defs>
<linearGradient id="metal" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#8d9999"/>
<stop offset="0.22" stop-color="#e8edeb"/>
<stop offset="0.5" stop-color="#b8c2c0"/>
<stop offset="0.76" stop-color="#f5f6f2"/>
<stop offset="1" stop-color="#879291"/>
</linearGradient>
<linearGradient id="darkMetal" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#202d2e"/>
<stop offset="0.48" stop-color="#556361"/>
<stop offset="1" stop-color="#253233"/>
</linearGradient>
<linearGradient id="glass" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#b8d2d0" stop-opacity="0.30"/>
<stop offset="0.18" stop-color="#ffffff" stop-opacity="0.58"/>
<stop offset="0.54" stop-color="#d8e7e3" stop-opacity="0.12"/>
<stop offset="0.82" stop-color="#ffffff" stop-opacity="0.40"/>
<stop offset="1" stop-color="#9dbbb8" stop-opacity="0.32"/>
</linearGradient>
<radialGradient id="knobTop" cx="42%" cy="30%" r="75%">
<stop offset="0" stop-color="#65716d"/>
<stop offset="1" stop-color="#293635"/>
</radialGradient>
<pattern id="mesh" width="11" height="11" patternUnits="userSpaceOnUse">
<rect width="11" height="11" fill="#e5e7df"/>
<path d="M0 0L11 11M11 0L0 11" fill="none" stroke="#596c67" stroke-width="1.25"/>
</pattern>
<pattern id="fineMesh" width="7" height="7" patternUnits="userSpaceOnUse">
<path d="M0 0L7 7M7 0L0 7" fill="none" stroke="#a2afaa" stroke-width="0.5"/>
</pattern>
<marker id="arrow" markerWidth="8" markerHeight="8" refX="4" refY="4" orient="auto" markerUnits="strokeWidth">
<path d="M1 1L7 4L1 7" fill="none" stroke="#b08350" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
</marker>
<style>
.outline{stroke:#334443;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.fine{fill:none;stroke:#6d7d79;stroke-width:1.25;stroke-linejoin:round;stroke-linecap:round}
.leader{fill:none;stroke:#89938d;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.label{font-family:Arial,Helvetica,sans-serif;font-size:15px;font-weight:700;letter-spacing:1.5px;fill:#344340}
.sub{font-family:Arial,Helvetica,sans-serif;font-size:12px;letter-spacing:.5px;fill:#7b847d}
.num{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:700;fill:#f8f6f0;text-anchor:middle}
.dim{fill:none;stroke:#b08350;stroke-width:1.2;stroke-dasharray:5 7}
</style>
</defs>
<!-- paper and heading -->
<rect width="1200" height="1500" fill="#f7f5ef"/>
<path d="M70 126H1130" stroke="#d7d5ca" stroke-width="1"/>
<text x="70" y="68" font-family="Arial,Helvetica,sans-serif" font-size="32" font-weight="700" letter-spacing="5" fill="#263735">FRENCH PRESS</text>
<text x="72" y="101" font-family="Arial,Helvetica,sans-serif" font-size="13" letter-spacing="2.4" fill="#7b847d">EXPLODED ASSEMBLY / STANDARD THREE-PIECE FILTER</text>
<text x="1130" y="74" text-anchor="end" font-family="Arial,Helvetica,sans-serif" font-size="12" letter-spacing="1.5" fill="#9a7955">FIG. 01</text>
<text x="1130" y="99" text-anchor="end" font-family="Arial,Helvetica,sans-serif" font-size="11" letter-spacing="1" fill="#8c9189">VERTICAL ASSEMBLY</text>
<!-- common assembly axis -->
<path d="M510 155V1360" class="dim" opacity="0.55"/>
<path d="M510 310V345M510 444V480M510 805V858" fill="none" stroke="#b08350" stroke-width="1.25" marker-end="url(#arrow)"/>
<!-- 01 knob and plunger rod -->
<g id="plunger-rod">
<rect x="503" y="214" width="14" height="91" rx="5" fill="url(#metal)" class="outline"/>
<path d="M507 225V293" stroke="#f9faf6" stroke-width="2.5" opacity=".8"/>
<path d="M498 226V205C498 192 522 192 522 205V226" fill="url(#darkMetal)" class="outline"/>
<path d="M440 190V207C440 223 468 236 510 236C552 236 580 223 580 207V190" fill="url(#darkMetal)" class="outline"/>
<ellipse cx="510" cy="190" rx="70" ry="22" fill="url(#knobTop)" class="outline"/>
<ellipse cx="510" cy="188" rx="52" ry="13" fill="none" stroke="#7c8882" stroke-width="1" opacity=".55"/>
<path d="M454 207C466 219 488 222 510 222" fill="none" stroke="#83908a" stroke-width="1.2" opacity=".45"/>
<ellipse cx="510" cy="305" rx="9" ry="4" fill="#778582" class="outline"/>
</g>
<!-- 02 lid -->
<g id="lid">
<ellipse cx="510" cy="409" rx="137" ry="35" fill="#1e2b2b" opacity=".14"/>
<path d="M373 386V407C373 427 434 444 510 444C586 444 647 427 647 407V386" fill="url(#darkMetal)" class="outline"/>
<ellipse cx="510" cy="386" rx="137" ry="38" fill="#42514e" class="outline"/>
<path d="M389 383C402 351 449 337 510 337C571 337 618 351 631 383C604 400 561 408 510 408C459 408 416 400 389 383Z" fill="url(#darkMetal)" class="outline"/>
<path d="M407 373C435 350 487 345 527 347" fill="none" stroke="#88958e" stroke-width="2" opacity=".55"/>
<ellipse cx="510" cy="348" rx="22" ry="8" fill="#202d2d" stroke="#91a09a" stroke-width="1.5"/>
<ellipse cx="510" cy="348" rx="10" ry="4" fill="#f7f5ef" stroke="#334443" stroke-width="1.5"/>
<path d="M393 413C422 428 464 433 510 433C556 433 598 428 627 413" fill="none" stroke="#788681" stroke-width="1.2"/>
<path d="M606 363L618 359L620 365L608 369Z" fill="#1e2c2c" stroke="#92a09a" stroke-width="1"/>
</g>
<!-- 03 cross plate, projected circular geometry -->
<g id="cross-plate">
<ellipse cx="510" cy="542" rx="117" ry="35" fill="#7f8c89" opacity=".18"/>
<path d="M393 526V537C393 556 445 572 510 572C575 572 627 556 627 537V526" fill="url(#metal)" class="outline"/>
<g transform="translate(510 526) scale(1 .30)">
<circle r="117" fill="#cbd3d0" stroke="#334443" stroke-width="6"/>
<circle r="105" fill="none" stroke="#f5f7f2" stroke-width="3" opacity=".9"/>
<g fill="#f7f5ef" stroke="#657572" stroke-width="3">
<path id="slot" d="M39 -17L83 -25A88 88 0 0 1 83 25L39 17A20 20 0 0 0 39 -17Z"/>
<use href="#slot" transform="rotate(60)"/>
<use href="#slot" transform="rotate(120)"/>
<use href="#slot" transform="rotate(180)"/>
<use href="#slot" transform="rotate(240)"/>
<use href="#slot" transform="rotate(300)"/>
</g>
<circle r="27" fill="#aab6b2" stroke="#4c5c59" stroke-width="4"/>
<circle r="12" fill="url(#metal)" stroke="#334443" stroke-width="4"/>
<path d="M-6 0H6" stroke="#53625f" stroke-width="3"/>
</g>
<path d="M403 541C429 557 469 562 510 562C551 562 591 557 617 541" class="fine" opacity=".65"/>
</g>
<!-- 04 spiral spring -->
<g id="spiral-spring" fill="none" stroke-linecap="round" stroke-linejoin="round">
<ellipse cx="510" cy="650" rx="116" ry="35" stroke="#455652" stroke-width="3.4"/>
<ellipse cx="510" cy="648" rx="116" ry="35" stroke="#d9e0db" stroke-width="1.4"/>
<path d="M395 654C402 673 451 689 510 689C569 689 618 673 625 654" stroke="#6f7f7a" stroke-width="3"/>
<path d="M399 661C412 679 456 694 510 694C564 694 608 679 621 661" stroke="#455652" stroke-width="2.6"/>
<path d="M402 656C418 673 460 686 510 686C560 686 602 673 618 656" stroke="#edf1eb" stroke-width="1" opacity=".9"/>
<g stroke="#74837e" stroke-width="1.8">
<path d="M398 654L403 663M410 665L416 674M426 673L432 682M444 679L450 688M463 683L469 692M483 686L489 695M504 687L510 696M525 686L531 695M545 683L551 692M564 679L570 688M582 673L588 682M598 665L604 674M613 654L618 663"/>
</g>
<path d="M409 637C433 622 470 617 510 617C550 617 587 622 611 637" stroke="#f7faf5" stroke-width="1.5" opacity=".9"/>
</g>
<!-- 05 mesh screen -->
<g id="mesh-screen">
<path d="M392 766V776C392 796 445 812 510 812C575 812 628 796 628 776V766" fill="url(#metal)" class="outline"/>
<g transform="translate(510 766) scale(1 .30)">
<circle r="118" fill="url(#mesh)" stroke="#3e504d" stroke-width="5"/>
<circle r="108" fill="none" stroke="#f8faf4" stroke-width="2" opacity=".8"/>
<circle r="17" fill="#f7f5ef" stroke="#657571" stroke-width="4"/>
<circle r="7" fill="#9aa6a1" stroke="#42534f" stroke-width="2"/>
</g>
<path d="M400 780C425 795 467 802 510 802C553 802 595 795 620 780" class="fine"/>
</g>
<!-- filter stack bracket -->
<path d="M683 501H700V804H683" fill="none" stroke="#b08350" stroke-width="1.2"/>
<text x="716" y="642" transform="rotate(90 716 642)" font-family="Arial,Helvetica,sans-serif" font-size="11" letter-spacing="2.2" fill="#a17b50">FILTER STACK · 3 PIECES</text>
<!-- 06 carafe and frame -->
<g id="carafe">
<!-- handle behind vessel -->
<path d="M653 952C728 932 793 944 819 990C846 1038 840 1125 801 1172C774 1204 728 1213 672 1190L679 1144C715 1159 749 1154 767 1131C791 1100 794 1035 776 1010C760 987 718 989 666 1004Z" fill="url(#darkMetal)" class="outline"/>
<path d="M690 963C745 954 785 965 802 997" fill="none" stroke="#82908a" stroke-width="3" opacity=".5"/>
<path d="M791 1150C766 1183 729 1187 690 1175" fill="none" stroke="#1d2a2a" stroke-width="3" opacity=".65"/>
<!-- glass vessel -->
<path d="M350 922L326 904Q317 897 320 913L340 946L354 1190Q356 1224 390 1241Q510 1282 630 1241Q664 1224 666 1190L670 922Z" fill="url(#glass)" stroke="#627e79" stroke-width="2.2" stroke-linejoin="round"/>
<ellipse cx="510" cy="922" rx="160" ry="43" fill="#dbe8e3" fill-opacity=".25" stroke="#627e79" stroke-width="2.2"/>
<ellipse cx="510" cy="922" rx="148" ry="34" fill="#f7f5ef" fill-opacity=".72" stroke="#9db0aa" stroke-width="1.4"/>
<path d="M350 922Q331 918 320 905Q339 905 363 907" fill="#f7f5ef" stroke="#627e79" stroke-width="2" stroke-linejoin="round"/>
<path d="M373 955L384 1179Q385 1208 405 1218" fill="none" stroke="#ffffff" stroke-width="9" opacity=".64" stroke-linecap="round"/>
<path d="M397 967L404 1104" fill="none" stroke="#ffffff" stroke-width="2" opacity=".85"/>
<path d="M637 962L628 1178Q627 1207 609 1218" fill="none" stroke="#9dbab4" stroke-width="3" opacity=".38"/>
<path d="M360 1190Q365 1221 397 1232Q510 1268 623 1232Q655 1221 660 1190" fill="none" stroke="#91aaa4" stroke-width="1.4"/>
<!-- subtle volume graduations -->
<g fill="none" stroke="#79938d" stroke-width="1.2" opacity=".65">
<path d="M578 1014H606M584 1035H599M578 1073H606M584 1094H599M578 1132H606M584 1153H599"/>
</g>
<g font-family="Arial,Helvetica,sans-serif" font-size="10" fill="#6e8882" opacity=".7">
<text x="611" y="1018">0.8</text><text x="611" y="1077">0.6</text><text x="611" y="1136">0.4</text>
</g>
<!-- metal cage and base -->
<path d="M353 927C371 951 433 965 510 965C587 965 649 951 667 927" fill="none" stroke="url(#metal)" stroke-width="10"/>
<path d="M353 927C371 951 433 965 510 965C587 965 649 951 667 927" fill="none" stroke="#40514e" stroke-width="1.4"/>
<path d="M367 949L379 1197M653 949L641 1197" fill="none" stroke="url(#metal)" stroke-width="12"/>
<path d="M367 949L379 1197M653 949L641 1197" fill="none" stroke="#41514f" stroke-width="1.4"/>
<path d="M354 1188V1214C354 1244 424 1268 510 1268C596 1268 666 1244 666 1214V1188" fill="url(#metal)" class="outline"/>
<ellipse cx="510" cy="1189" rx="156" ry="40" fill="none" stroke="#465754" stroke-width="2"/>
<path d="M365 1210C387 1234 447 1247 510 1247C573 1247 633 1234 655 1210" fill="none" stroke="#f4f6f1" stroke-width="2" opacity=".75"/>
<path d="M386 1251V1264M634 1251V1264" stroke="#334341" stroke-width="9" stroke-linecap="round"/>
<ellipse cx="510" cy="1267" rx="112" ry="20" fill="#293938" opacity=".12"/>
</g>
<!-- labels and leaders -->
<g id="annotations">
<circle cx="825" cy="194" r="13" fill="#596963"/><text x="825" y="198" class="num">01</text>
<text x="850" y="190" class="label">PLUNGER KNOB & ROD</text>
<text x="850" y="211" class="sub">Stainless-steel shaft</text>
<path d="M807 194H699L582 209" class="leader"/><circle cx="582" cy="209" r="3" fill="#89938d"/>
<circle cx="105" cy="370" r="13" fill="#596963"/><text x="105" y="374" class="num">02</text>
<text x="130" y="366" class="label">LID</text>
<text x="130" y="387" class="sub">Insulated cover</text>
<path d="M250 371H307L376 390" class="leader"/><circle cx="376" cy="390" r="3" fill="#89938d"/>
<circle cx="105" cy="522" r="13" fill="#596963"/><text x="105" y="526" class="num">03</text>
<text x="130" y="518" class="label">CROSS PLATE</text>
<text x="130" y="539" class="sub">Rigid upper support</text>
<path d="M270 524H330L395 530" class="leader"/><circle cx="395" cy="530" r="3" fill="#89938d"/>
<circle cx="825" cy="651" r="13" fill="#596963"/><text x="825" y="655" class="num">04</text>
<text x="850" y="647" class="label">SPIRAL SPRING</text>
<text x="850" y="668" class="sub">Seals against beaker wall</text>
<path d="M807 651H697L626 654" class="leader"/><circle cx="626" cy="654" r="3" fill="#89938d"/>
<circle cx="105" cy="765" r="13" fill="#596963"/><text x="105" y="769" class="num">05</text>
<text x="130" y="761" class="label">MESH SCREEN</text>
<text x="130" y="782" class="sub">Fine filtration layer</text>
<path d="M270 767H329L393 769" class="leader"/><circle cx="393" cy="769" r="3" fill="#89938d"/>
<circle cx="850" cy="922" r="13" fill="#596963"/><text x="850" y="926" class="num">06</text>
<text x="875" y="918" class="label">GLASS CARAFE</text>
<text x="875" y="939" class="sub">Beaker, frame & handle</text>
<path d="M832 922H759L670 934" class="leader"/><circle cx="670" cy="934" r="3" fill="#89938d"/>
</g>
<!-- assembly note -->
<path d="M70 1360H1130" stroke="#d7d5ca" stroke-width="1"/>
<g transform="translate(70 1390)">
<circle cx="7" cy="-4" r="6" fill="none" stroke="#b08350" stroke-width="1.2"/>
<path d="M7 -12V-8M7 0V4M-1 -4H3M11 -4H15" stroke="#b08350" stroke-width="1"/>
<text x="28" y="0" font-family="Arial,Helvetica,sans-serif" font-size="12" letter-spacing=".6" fill="#707a74">FILTER ORDER, TOP TO BOTTOM: CROSS PLATE → SPIRAL SPRING → MESH SCREEN</text>
</g>
<text x="1130" y="1390" text-anchor="end" font-family="Arial,Helvetica,sans-serif" font-size="11" letter-spacing="1" fill="#92978f">NOT TO SCALE</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.1712thinkingmediumtokens118,295 in, 11,761 out, of which 4,284 reasoningtime5 min 54 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 2 · 3r · $0.1757same 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.