portafilter.svg · 125 lines
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 1000" font-family="Helvetica, Arial, sans-serif">
<defs>
<linearGradient id="steel" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#8a8f94"/>
<stop offset="0.25" stop-color="#d9dde0"/>
<stop offset="0.5" stop-color="#f4f6f7"/>
<stop offset="0.75" stop-color="#b7bcc1"/>
<stop offset="1" stop-color="#7d8287"/>
</linearGradient>
<linearGradient id="darksteel" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#5f6469"/>
<stop offset="0.3" stop-color="#a9aeb3"/>
<stop offset="0.55" stop-color="#d3d7da"/>
<stop offset="1" stop-color="#565b60"/>
</linearGradient>
<linearGradient id="black" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#2a2a2c"/>
<stop offset="0.35" stop-color="#59595e"/>
<stop offset="0.6" stop-color="#3a3a3e"/>
<stop offset="1" stop-color="#1d1d1f"/>
</linearGradient>
</defs>
<rect width="700" height="1000" fill="#f2f0eb"/>
<text x="350" y="46" text-anchor="middle" font-size="26" font-weight="bold" fill="#333">Espresso Machine Portafilter — Exploded Assembly</text>
<text x="350" y="70" text-anchor="middle" font-size="14" fill="#777">Double-spout portafilter with removable basket (58 mm)</text>
<!-- center axis -->
<line x1="350" y1="95" x2="350" y2="955" stroke="#b04a3a" stroke-width="1.5" stroke-dasharray="8 6"/>
<polygon points="350,960 344,946 356,946" fill="#b04a3a"/>
<text x="360" y="952" font-size="11" fill="#b04a3a">assembly axis</text>
<!-- ===== 1. Handle (top) ===== -->
<g>
<!-- handle shaft -->
<rect x="330" y="110" width="40" height="70" rx="6" fill="url(#steel)" stroke="#6d7276" stroke-width="1.5"/>
<!-- handle body: tapered, angled -->
<path d="M 322 178 L 378 178
C 430 195, 520 215, 570 245
C 596 262, 598 300, 566 318
C 520 344, 400 300, 330 268 Z"
fill="url(#black)" stroke="#111" stroke-width="1.5"/>
<path d="M 340 200 C 420 222, 500 248, 548 275" stroke="#6b6b70" stroke-width="3" fill="none" opacity="0.7"/>
<text x="150" y="215" font-size="15" fill="#333" font-weight="bold">1. Handle</text>
<text x="150" y="233" font-size="12" fill="#777">Ebony-textured grip,</text>
<text x="150" y="248" font-size="12" fill="#777">threads onto shaft</text>
</g>
<!-- ===== 2. Locking collar / lugs ===== -->
<g>
<ellipse cx="350" cy="430" rx="95" ry="26" fill="url(#darksteel)" stroke="#4a4f54" stroke-width="1.5"/>
<rect x="255" y="418" width="190" height="30" fill="url(#darksteel)" stroke="#4a4f54" stroke-width="1.5"/>
<ellipse cx="350" cy="448" rx="95" ry="26" fill="#8b9095" stroke="#4a4f54" stroke-width="1.5"/>
<!-- wing lug -->
<path d="M 260 430 L 200 426 Q 168 424 168 438 Q 168 452 200 452 L 260 448 Z" fill="url(#darksteel)" stroke="#4a4f54" stroke-width="1.5"/>
<!-- central bore -->
<ellipse cx="350" cy="430" rx="42" ry="12" fill="#33383c"/>
<text x="560" y="415" font-size="15" fill="#333" font-weight="bold">2. Locking collar</text>
<text x="560" y="433" font-size="12" fill="#777">Bayonet wings lock into</text>
<text x="560" y="448" font-size="12" fill="#777">group head; retains basket</text>
<line x1="445" y1="432" x2="552" y2="420" stroke="#999" stroke-width="1"/> </g>
<!-- ===== 3. Removable basket (top view, drops in) ===== -->
<g>
<!-- rim -->
<ellipse cx="350" cy="600" rx="96" ry="26" fill="url(#steel)" stroke="#6d7276" stroke-width="2"/>
<!-- body -->
<path d="M 254 600 A 96 26 0 0 0 446 600 L 436 660 A 86 22 0 0 1 264 660 Z" fill="url(#steel)" stroke="#6d7276" stroke-width="2"/>
<!-- inner cavity -->
<ellipse cx="350" cy="600" rx="78" ry="20" fill="#3c4044"/>
<ellipse cx="350" cy="604" rx="70" ry="17" fill="#55595e"/>
<!-- coffee bed -->
<ellipse cx="350" cy="606" rx="66" ry="15" fill="#6b4a2f"/>
<!-- bottom perforations -->
<ellipse cx="350" cy="663" rx="86" ry="21" fill="url(#steel)" stroke="#6d7276" stroke-width="1.5"/>
<g fill="#3c4044">
<circle cx="310" cy="660" r="2.2"/><circle cx="325" cy="666" r="2.2"/><circle cx="340" cy="660" r="2.2"/>
<circle cx="355" cy="667" r="2.2"/><circle cx="370" cy="660" r="2.2"/><circle cx="385" cy="666" r="2.2"/>
<circle cx="300" cy="653" r="2.2"/><circle cx="330" cy="652" r="2.2"/><circle cx="360" cy="652" r="2.2"/>
<circle cx="390" cy="653" r="2.2"/><circle cx="350" cy="672" r="2.2"/>
</g>
<text x="150" y="710" font-size="15" fill="#333" font-weight="bold">3. Basket (removable)</text>
<text x="150" y="728" font-size="12" fill="#777">Precision 58 mm, pressed into</text>
<text x="150" y="743" font-size="12" fill="#777">collar; coffee bed & filter holes</text>
<line x1="272" y1="680" x2="215" y2="705" stroke="#999" stroke-width="1"/>
</g>
<!-- ===== 4. Body with double spouts ===== -->
<g>
<!-- spout head plate -->
<ellipse cx="350" cy="790" rx="96" ry="26" fill="url(#darksteel)" stroke="#4a4f54" stroke-width="2"/>
<ellipse cx="350" cy="786" rx="80" ry="20" fill="#3c4044"/>
<!-- double spouts -->
<path d="M 315 804 C 304 834, 292 856, 276 882 L 326 890 C 338 862, 348 838, 356 812 Z"
fill="url(#darksteel)" stroke="#4a4f54" stroke-width="1.5"/>
<path d="M 385 804 C 396 834, 408 856, 424 882 L 374 890 C 362 862, 352 838, 344 812 Z"
fill="url(#darksteel)" stroke="#4a4f54" stroke-width="1.5"/>
<!-- spout outlets -->
<ellipse cx="301" cy="886" rx="26" ry="9" fill="#3c4044" stroke="#4a4f54" stroke-width="1.5"/>
<ellipse cx="399" cy="886" rx="26" ry="9" fill="#3c4044" stroke="#4a4f54" stroke-width="1.5"/>
<text x="560" y="835" font-size="15" fill="#333" font-weight="bold">4. Body + spouts</text>
<text x="560" y="853" font-size="12" fill="#777">Splits flow into</text>
<text x="560" y="868" font-size="12" fill="#777">two streams for</text>
<text x="560" y="883" font-size="12" fill="#777">two cups at once</text>
<line x1="412" y1="855" x2="553" y2="840" stroke="#999" stroke-width="1"/>
</g>
<!-- flow arrows between parts -->
<defs>
<marker id="arr" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
<path d="M0,0 L10,5 L0,10 z" fill="#b04a3a"/>
</marker>
</defs>
<g stroke="#b04a3a" stroke-width="2.5" fill="none" marker-end="url(#arr)">
<line x1="350" y1="352" x2="350" y2="390"/>
<line x1="350" y1="488" x2="350" y2="548"/>
<line x1="350" y1="704" x2="350" y2="744"/>
</g>
<g font-size="12" fill="#b04a3a">
<text x="364" y="375">screw on handle</text>
<text x="364" y="522">press in basket</text>
<text x="364" y="728">lock into collar</text>
</g>
</svg>round 1 of 3

Exploded portafilter: GLM 5.3 FlashX
modelz-ai/glm-5.3-flashxtaskexploded-portafilter@v1, checks c1, harness h1date2026-10-21rounds3 of 8 allowed, 12 minutes on the clockcost$0.0279thinkingmediumtokens67,097 in, 5,848 out, of which 220 reasoningtime1 min 13 sfailedAll five parts: incomplete, component missing, major · Two assembly axes: unreadable, geometry inconsistent, minor
All five partsdecided by looking · Pass if every listed part is drawn as a separate shape and each has a label naming it. A part only named in a label or a comment, with nothing drawn, fails it. The label must say what the part is, in any words: a name that only says where it sits ("top plate") or what it is made of, or a mention in another part's caption, does not count.fail
Stack orderdecided by a number, from the filen/d
Parts fitdecided by looking · Pass if each listed pair of mating parts looks as if it would go together as stated: the right angle, nested inside, or sitting on top. One pair that plainly could not fails it.pass
Two assembly axesdecided by looking · Pass if one line runs through the middle of every part on each listed axis, and every leader line leaves from the same side. One part pushed off its axis fails it.fail
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 · 1r · $0.0155
run 2 · 3r · $0.0197same prompt, other modelsall 22 runs on Exploded portafilter →
Draw an exploded assembly diagram of an espresso machine portafilter, as an SVG. Use a double-spout portafilter with a removable basket rather than a bottomless one.Frozen at v1. This model got this and nothing else.
On a vertical axis, top to bottom: filter basket, retaining spring, portafilter body, double spout. The handle is on a horizontal axis off the body, so this is the one member with two axes. Checked against parts sellers, since no maker's exploded diagram could be fetched: Espresso Parts and Zirkus Coffee on the spring that clips into a groove inside the body and grips the basket rim, Espresso Parts on the spout that screws onto the bottom of the body, and Nepo Coffee on handles that screw onto a stud on its side. How it is scored, and this run's files on GitHub.