press.svg · 225 lines
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="1000" viewBox="0 0 800 1000" font-family="Helvetica, Arial, sans-serif">
<rect width="800" height="1000" fill="#FAF9F6"/>
<style>
.outline { stroke:#1a1a1a; stroke-linecap:round; stroke-linejoin:round; }
.thin { stroke:#1a1a1a; stroke-width:1.2; fill:none; }
.glass { fill:#E9F0F6; stroke:#1a1a1a; stroke-width:1.8; }
.metal { fill:#D8DDE2; stroke:#1a1a1a; stroke-width:1.6; }
.metal-dark { fill:#BFC6CF; stroke:#1a1a1a; stroke-width:1.6; }
.mesh { fill:#CBD5DF; }
.dashed { stroke:#7A7A7A; stroke-width:1.2; stroke-dasharray:6 7; fill:none; }
.label { font-size:13px; fill:#1a1a1a; font-weight:600; letter-spacing:0.3px; }
.label-sub { font-size:11px; fill:#555; font-weight:400; letter-spacing:0.2px; }
.num { font-size:11px; fill:#fff; font-weight:700; text-anchor:middle; dominant-baseline:middle; }
</style>
<!-- Title block -->
<text x="400" y="42" text-anchor="middle" font-size="20" font-weight="800" letter-spacing="2.5" fill="#1a1a1a">FRENCH PRESS</text>
<text x="400" y="60" text-anchor="middle" font-size="10" letter-spacing="4" fill="#777">EXPLODED ASSEMBLY — THREE-PIECE PLUNGER FILTER</text>
<line x1="340" y1="70" x2="460" y2="70" stroke="#1a1a1a" stroke-width="1.2"/>
<!-- Center dashed axis -->
<line x1="380" y1="85" x2="380" y2="930" class="dashed"/>
<!-- ============ 1. PLUNGER KNOB ============ -->
<g id="knob">
<!-- ball top -->
<ellipse cx="380" cy="98" rx="28" ry="22" fill="#2B2B2B" stroke="#1a1a1a" stroke-width="1.6"/>
<ellipse cx="372" cy="92" rx="7" ry="5" fill="white" opacity="0.35"/>
<!-- collar -->
<rect x="365" y="116" width="30" height="10" rx="2" fill="#BFC6CF" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- threaded socket bottom -->
<rect x="372" y="126" width="16" height="8" fill="#8A8F96" stroke="#1a1a1a" stroke-width="1.2"/>
</g>
<!-- ============ 2. PLUNGER ROD ============ -->
<g id="rod">
<!-- rod shaft -->
<rect x="376" y="148" width="8" height="165" rx="3" fill="#EAECEE" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- highlight on rod -->
<line x1="379.5" y1="152" x2="379.5" y2="306" stroke="white" stroke-width="1" opacity="0.9"/>
<!-- top thread -->
<g stroke="#1a1a1a" stroke-width="1" fill="none">
<line x1="374" y1="155" x2="386" y2="155"/><line x1="374" y1="160" x2="386" y2="160"/><line x1="374" y1="165" x2="386" y2="165"/>
</g>
<!-- bottom thread / screw for filter -->
<rect x="373" y="313" width="14" height="14" rx="1" fill="#8A8F96" stroke="#1a1a1a" stroke-width="1.2"/>
<line x1="374" y1="317" x2="386" y2="317" stroke="#1a1a1a" stroke-width="1"/>
<line x1="374" y1="321" x2="386" y2="321" stroke="#1a1a1a" stroke-width="1"/>
<!-- little nut -->
<polygon points="380,327 386,324 386,329 380,332 374,329 374,324" fill="#BFC6CF" stroke="#1a1a1a" stroke-width="1.2"/>
</g>
<!-- ============ 3. LID ============ -->
<g id="lid">
<!-- lid top ellipse -->
<ellipse cx="380" cy="358" rx="108" ry="26" fill="#EAECEE" stroke="#1a1a1a" stroke-width="1.7"/>
<!-- side wall -->
<path d="M 272 358 L 272 378 Q 272 392 380 392 Q 488 392 488 378 L 488 358" fill="#D8DDE2" stroke="#1a1a1a" stroke-width="1.5"/>
<!-- top inner ellipse (to show thickness) -->
<ellipse cx="380" cy="362" rx="96" ry="20" fill="none" stroke="#1a1a1a" stroke-width="1.1" opacity="0.5"/>
<!-- spout notch opening on left -->
<path d="M 272 365 Q 255 370 272 378" fill="#1a1a1a" opacity="0.15"/>
<!-- central hole for rod -->
<ellipse cx="380" cy="358" rx="8" ry="6" fill="#2B2B2B" stroke="#1a1a1a" stroke-width="1.2"/>
<ellipse cx="380" cy="358" rx="4.5" ry="3.2" fill="white" opacity="0.9"/>
</g>
<!-- ============ 4. TOP FILTER PLATE (cross plate) ============ -->
<g id="top-plate">
<!-- side -->
<ellipse cx="380" cy="462" rx="72" ry="16" fill="#D8DDE2" stroke="#1a1a1a" stroke-width="1.6"/>
<path d="M308 462 L308 475 Q308 487 380 487 Q452 487 452 475 L452 462" fill="#BFC6CF" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- top face detail: holes -->
<g fill="#1a1a1a" opacity="0.85">
<circle cx="360" cy="462" r="3"/><circle cx="400" cy="462" r="3"/><circle cx="380" cy="455" r="3"/><circle cx="380" cy="469" r="3"/>
<circle cx="348" cy="455" r="2.2"/><circle cx="412" cy="455" r="2.2"/><circle cx="348" cy="469" r="2.2"/><circle cx="412" cy="469" r="2.2"/>
<circle cx="365" cy="450" r="1.8"/><circle cx="395" cy="450" r="1.8"/><circle cx="365" cy="474" r="1.8"/><circle cx="395" cy="474" r="1.8"/>
</g>
<!-- cross bar highlight -->
<line x1="320" y1="462" x2="440" y2="462" stroke="#1a1a1a" stroke-width="1" opacity="0.25"/>
<line x1="380" y1="447" x2="380" y2="477" stroke="#1a1a1a" stroke-width="1" opacity="0.25"/>
<!-- central hole -->
<circle cx="380" cy="462" r="6" fill="white" stroke="#1a1a1a" stroke-width="1.3"/>
<circle cx="380" cy="462" r="2.5" fill="#1a1a1a"/>
</g>
<!-- ============ 5. MESH FILTER SCREEN ============ -->
<g id="mesh">
<ellipse cx="380" cy="540" rx="78" ry="18" fill="#CBD5DF" stroke="#1a1a1a" stroke-width="1.6"/>
<path d="M302 540 L302 556 Q302 570 380 570 Q458 570 458 556 L458 540" fill="#ADB9C7" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- mesh pattern on top ellipse -->
<defs>
<pattern id="meshPat" width="6" height="6" patternUnits="userSpaceOnUse" patternTransform="rotate(0)">
<path d="M0 3 H6 M3 0 V6" stroke="#5A6573" stroke-width="0.6" opacity="0.5"/>
</pattern>
</defs>
<ellipse cx="380" cy="540" rx="70" ry="14" fill="url(#meshPat)" stroke="#5A6573" stroke-width="1"/>
<!-- outer rim ring -->
<ellipse cx="380" cy="540" rx="70" ry="14" fill="none" stroke="#1a1a1a" stroke-width="1.2"/>
<ellipse cx="380" cy="540" rx="78" ry="18" fill="none" stroke="#1a1a1a" stroke-width="1"/>
<!-- central hole -->
<circle cx="380" cy="540" r="6" fill="white" stroke="#1a1a1a" stroke-width="1.3"/>
<circle cx="380" cy="540" r="2.5" fill="#1a1a1a"/>
<!-- side mesh texture lines -->
<g stroke="#5A6573" stroke-width="0.7" opacity="0.4">
<line x1="310" y1="548" x2="310" y2="562"/><line x1="325" y1="550" x2="325" y2="565"/><line x1="340" y1="552" x2="340" y2="567"/>
<line x1="380" y1="553" x2="380" y2="568"/><line x1="410" y1="552" x2="410" y2="567"/><line x1="440" y1="548" x2="440" y2="562"/>
</g>
</g>
<!-- ============ 6. BOTTOM SPIRAL PLATE ============ -->
<g id="bottom-plate">
<ellipse cx="380" cy="618" rx="68" ry="15" fill="#D8DDE2" stroke="#1a1a1a" stroke-width="1.6"/>
<path d="M312 618 L312 630 Q312 642 380 642 Q448 642 448 630 L448 618" fill="#BFC6CF" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- spiral detail clipped to top face -->
<clipPath id="clipSpiral"><ellipse cx="380" cy="618" rx="62" ry="13.5"/></clipPath>
<g clip-path="url(#clipSpiral)">
<circle cx="380" cy="618" r="38" fill="none" stroke="#1a1a1a" stroke-width="1.1" opacity="0.85"/>
<circle cx="380" cy="618" r="28" fill="none" stroke="#1a1a1a" stroke-width="1.1" opacity="0.85"/>
<circle cx="380" cy="618" r="18" fill="none" stroke="#1a1a1a" stroke-width="1.1" opacity="0.85"/>
<circle cx="380" cy="618" r="8" fill="none" stroke="#1a1a1a" stroke-width="1" opacity="0.9"/>
<g stroke="#1a1a1a" stroke-width="1.2" stroke-linecap="round">
<line x1="380" y1="580" x2="380" y2="656"/>
<line x1="318" y1="618" x2="442" y2="618"/>
<line x1="336" y1="588" x2="424" y2="648"/>
<line x1="336" y1="648" x2="424" y2="588"/>
</g>
</g>
<circle cx="380" cy="618" r="6" fill="white" stroke="#1a1a1a" stroke-width="1.3"/>
<circle cx="380" cy="618" r="2.5" fill="#1a1a1a"/>
</g>
<!-- ============ 7. GLASS CARAFE ============ -->
<g id="carafe">
<!-- glass body -->
<!-- define glass shape with spout -->
<path d="M 268 700 L 268 915 Q 268 935 380 935 Q 492 935 492 915 L492 700 Q492 688 380 688 Q268 688 268 700 Z" class="glass"/>
<!-- inner liquid hint? no -->
<!-- top rim thickness -->
<ellipse cx="380" cy="700" rx="112" ry="18" fill="none" stroke="#1a1a1a" stroke-width="1.7"/>
<ellipse cx="380" cy="700" rx="98" ry="13" fill="#D6E4F0" stroke="#1a1a1a" stroke-width="1.2" opacity="0.85"/>
<!-- spout lip left side -->
<path d="M268 700 Q252 704 250 712 Q252 718 268 712" fill="#E9F0F6" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- measurement marks -->
<g stroke="#5A6573" stroke-width="1" opacity="0.4">
<line x1="288" y1="760" x2="305" y2="760"/><line x1="288" y1="790" x2="305" y2="790"/>
<line x1="288" y1="820" x2="305" y2="820"/><line x1="288" y1="850" x2="305" y2="850"/>
</g>
<!-- glass highlight -->
<path d="M285 720 L285 910 Q285 920 310 925" stroke="white" stroke-width="3" opacity="0.6" fill="none" stroke-linecap="round"/>
<path d="M475 720 L475 910" stroke="white" stroke-width="1.5" opacity="0.35" fill="none"/>
<!-- base foot -->
<ellipse cx="380" cy="935" rx="112" ry="16" fill="#BFC6CF" stroke="#1a1a1a" stroke-width="1.5"/>
<path d="M268 918 L268 928 Q268 935 380 935 Q492 935 492 928 L492 918" fill="#A8B0BA" stroke="#1a1a1a" stroke-width="1.4"/>
<!-- HANDLE on right side -->
<g id="handle">
<path d="M492 732 C525 737 543 752 543 782 L543 858 C543 884 525 896 492 902
L492 884 C514 879 523 868 523 858 L523 782 C523 762 514 748 492 742 Z"
fill="#2B2B2B" stroke="#1a1a1a" stroke-width="1.6" stroke-linejoin="round"/>
<!-- handle inner highlight -->
<path d="M528 785 L528 860" stroke="white" stroke-width="1" opacity="0.15" fill="none"/>
</g>
<!-- frame collar at top holding handle -->
<rect x="260" y="688" width="240" height="10" rx="4" fill="#2B2B2B" stroke="#1a1a1a" stroke-width="1.3"/>
</g>
<!-- Leader lines & Labels -->
<g id="labels" font-family="Helvetica, Arial, sans-serif">
<!-- 1 knob -->
<line x1="408" y1="105" x2="560" y2="105" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="570" cy="105" r="10" fill="#1a1a1a"/><text x="570" y="109" class="num">1</text>
<text x="560" y="100" text-anchor="end" class="label">PLUNGER KNOB</text>
<text x="560" y="114" text-anchor="end" class="label-sub">threaded, heat-resistant</text>
<!-- 2 rod -->
<line x1="386" y1="215" x2="560" y2="185" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="570" cy="185" r="10" fill="#1a1a1a"/><text x="570" y="189" class="num">2</text>
<text x="560" y="180" text-anchor="end" class="label">PLUNGER ROD</text>
<text x="560" y="194" text-anchor="end" class="label-sub">stainless steel</text>
<!-- 3 lid -->
<line x1="488" y1="365" x2="560" y2="268" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="570" cy="268" r="10" fill="#1a1a1a"/><text x="570" y="272" class="num">3</text>
<text x="560" y="263" text-anchor="end" class="label">LID</text>
<text x="560" y="277" text-anchor="end" class="label-sub">with pour spout & rod guide</text>
<!-- Left side labels for filter -->
<line x1="308" y1="462" x2="130" y2="442" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="120" cy="442" r="10" fill="#1a1a1a"/><text x="120" y="446" class="num">4</text>
<text x="130" y="463" class="label">TOP PLATE</text>
<text x="130" y="477" class="label-sub">cross plate — perforated</text>
<line x1="302" y1="548" x2="130" y2="535" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="120" cy="535" r="10" fill="#1a1a1a"/><text x="120" y="539" class="num">5</text>
<text x="130" y="555" class="label">MESH FILTER</text>
<text x="130" y="569" class="label-sub">fine stainless screen</text>
<line x1="312" y1="625" x2="130" y2="620" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="120" cy="620" r="10" fill="#1a1a1a"/><text x="120" y="624" class="num">6</text>
<text x="130" y="640" class="label">SPIRAL PLATE</text>
<text x="130" y="654" class="label-sub">bottom support — holds mesh</text>
<line x1="268" y1="815" x2="130" y2="800" stroke="#1a1a1a" stroke-width="1"/>
<circle cx="120" cy="800" r="10" fill="#1a1a1a"/><text x="120" y="804" class="num">7</text>
<text x="130" y="790" class="label">GLASS CARAFE</text>
<text x="130" y="804" class="label-sub">heat-resistant borosilicate</text>
<text x="130" y="818" class="label-sub">with handle & frame</text>
</g>
<!-- exploded movement arrows (small) -->
<g stroke="#888" stroke-width="0.8" fill="none" marker-end="none" opacity="0.5">
<line x1="380" y1="135" x2="380" y2="148" stroke-dasharray="3 3"/>
<line x1="380" y1="333" x2="380" y2="345" stroke-dasharray="3 3"/>
<line x1="380" y1="398" x2="380" y2="440" stroke-dasharray="3 3"/>
<line x1="380" y1="492" x2="380" y2="520" stroke-dasharray="3 3"/>
<line x1="380" y1="575" x2="380" y2="600" stroke-dasharray="3 3"/>
<line x1="380" y1="650" x2="380" y2="678" stroke-dasharray="3 3"/>
</g>
<!-- footer -->
<line x1="120" y1="965" x2="680" y2="965" stroke="#ccc" stroke-width="0.8"/>
<text x="400" y="978" text-anchor="middle" font-size="7.5" letter-spacing="1" fill="#888">1 KNOB · 2 ROD · 3 LID · 4 TOP PLATE · 5 MESH · 6 SPIRAL PLATE · 7 CARAFE — SANDWICH MESH BETWEEN PLATES ON ROD, INSERT THROUGH LID INTO CARAFE</text>
</svg>round 1 of 2

Exploded French press: Muse Spark Open
modelmeta/muse-spark-opentasksvg-french-press@v2, checks c1, harness h1date2026-10-16rounds2 of 8 allowed, 12 minutes on the clockcost$0.1212thinkingmediumtokens65,695 in, 9,199 out, of which 1,637 reasoningtime2 min 3 sfailedStack order: false, relation transposed, critical
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
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.3409same 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.