portafilter.svg · 115 lines
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 760" width="1000" height="760" font-family="Helvetica, Arial, sans-serif">
<defs>
<linearGradient id="steel" x1="0" x2="1"><stop offset="0" stop-color="#8a9097"/><stop offset=".35" stop-color="#eef1f4"/><stop offset=".7" stop-color="#b9bfc6"/><stop offset="1" stop-color="#6f757c"/></linearGradient>
<linearGradient id="wood" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#2b2b2b"/><stop offset=".4" stop-color="#555"/><stop offset="1" stop-color="#151515"/></linearGradient>
<marker id="dot" viewBox="0 0 6 6" refX="3" refY="3" markerWidth="6" markerHeight="6"><circle cx="3" cy="3" r="2.5" fill="#222"/></marker>
</defs>
<rect width="1000" height="760" fill="#fbfaf7"/>
<text x="500" y="38" text-anchor="middle" font-size="24" font-weight="bold" fill="#222">Double-Spout Portafilter — Exploded Assembly</text>
<text x="500" y="60" text-anchor="middle" font-size="13" fill="#666">Side view, parts separated along the brew axis</text>
<!-- center axis -->
<line x1="400" y1="80" x2="400" y2="740" stroke="#c0392b" stroke-width="1" stroke-dasharray="14 4 3 4"/>
<!-- 1 Filter basket -->
<g stroke="#333" stroke-width="1.5">
<path d="M300,100 L500,100 L500,110 L482,112 L470,180 Q468,188 460,188 L340,188 Q332,188 330,180 L318,112 L300,110 Z" fill="url(#steel)"/>
<ellipse cx="400" cy="100" rx="100" ry="8" fill="#d9dde1"/>
<ellipse cx="400" cy="101" rx="82" ry="5" fill="#7b8087"/>
<path d="M322,125 L478,125" stroke="#555" stroke-width="1" fill="none"/>
</g>
<g fill="#333">
<circle cx="345" cy="184" r="1.6"/><circle cx="355" cy="184" r="1.6"/><circle cx="365" cy="184" r="1.6"/><circle cx="375" cy="184" r="1.6"/><circle cx="385" cy="184" r="1.6"/><circle cx="395" cy="184" r="1.6"/><circle cx="405" cy="184" r="1.6"/><circle cx="415" cy="184" r="1.6"/><circle cx="425" cy="184" r="1.6"/><circle cx="435" cy="184" r="1.6"/><circle cx="445" cy="184" r="1.6"/><circle cx="455" cy="184" r="1.6"/>
</g>
<!-- 2 Retaining spring clip -->
<ellipse cx="400" cy="245" rx="92" ry="9" fill="none" stroke="#333" stroke-width="3"/>
<ellipse cx="400" cy="245" rx="92" ry="9" fill="none" stroke="#cfd3d7" stroke-width="1"/>
<path d="M486,248 l10,-6" stroke="#333" stroke-width="3" fill="none"/>
<!-- 3 Portafilter body + handle -->
<g stroke="#333" stroke-width="1.5">
<!-- handle -->
<path d="M490,330 L560,322 L590,316 L590,350 L560,348 L492,356 Z" fill="url(#steel)"/>
<path d="M590,312 L880,290 Q912,290 914,316 Q912,342 880,346 L590,354 Z" fill="url(#wood)"/>
<rect x="584" y="310" width="12" height="46" rx="2" fill="url(#steel)"/>
<circle cx="896" cy="318" r="5" fill="#777"/>
<!-- bayonet ears -->
<path d="M290,300 L318,300 L318,318 L290,316 Z" fill="url(#steel)"/>
<path d="M510,300 L482,300 L482,318 L510,316 Z" fill="url(#steel)"/>
<!-- body cup -->
<path d="M308,296 L492,296 L492,312 L480,384 Q476,402 456,404 L344,404 Q324,402 320,384 L308,312 Z" fill="url(#steel)"/>
<ellipse cx="400" cy="296" rx="92" ry="7" fill="#d9dde1"/>
<ellipse cx="400" cy="297" rx="80" ry="5" fill="#555"/>
<path d="M318,332 L482,332" stroke="#666" stroke-width="1" fill="none"/>
<!-- spout boss -->
<rect x="380" y="404" width="40" height="14" fill="url(#steel)"/>
</g>
<!-- 4 Double spout -->
<g stroke="#333" stroke-width="1.5">
<!-- thread -->
<rect x="386" y="480" width="28" height="30" fill="url(#steel)"/>
<g stroke="#555" stroke-width="1"><line x1="386" y1="485" x2="414" y2="482"/><line x1="386" y1="491" x2="414" y2="488"/><line x1="386" y1="497" x2="414" y2="494"/><line x1="386" y1="503" x2="414" y2="500"/><line x1="386" y1="509" x2="414" y2="506"/></g>
<!-- hex nut -->
<path d="M366,510 L434,510 L438,530 L362,530 Z" fill="url(#steel)"/>
<line x1="384" y1="510" x2="384" y2="530"/><line x1="416" y1="510" x2="416" y2="530"/>
<!-- Y body -->
<path d="M372,530 L428,530 L428,545 L470,580 L470,600 L452,600 L452,588 L412,556 L388,556 L348,588 L348,600 L330,600 L330,580 L372,545 Z" fill="url(#steel)"/>
<!-- nozzle tips -->
<rect x="330" y="600" width="18" height="10" fill="#9aa0a6"/>
<rect x="452" y="600" width="18" height="10" fill="#9aa0a6"/>
</g>
<!-- coffee streams hint -->
<g stroke="#6b3f1f" stroke-width="2" stroke-dasharray="3 5" opacity=".6"><line x1="339" y1="616" x2="339" y2="660"/><line x1="461" y1="616" x2="461" y2="660"/></g>
<!-- leaders & labels -->
<g font-size="15" fill="#222" stroke="none">
<g stroke="#222" stroke-width="1" fill="none" marker-end="url(#dot)">
<polyline points="190,104 300,104"/>
<polyline points="190,160 326,160"/>
<polyline points="190,240 308,240"/>
<polyline points="190,306 292,308"/>
<polyline points="190,370 316,370"/>
<polyline points="190,494 386,494"/>
<polyline points="190,520 364,520"/>
<polyline points="190,580 336,580"/>
<polyline points="700,250 700,302"/>
<polyline points="560,270 540,334"/>
<polyline points="560,180 462,184"/>
</g>
<g text-anchor="end">
<text x="184" y="109"><tspan font-weight="bold">1</tspan> Basket rim / lip</text>
<text x="184" y="165"><tspan font-weight="bold">1</tspan> Double filter basket</text>
<text x="184" y="245"><tspan font-weight="bold">2</tspan> Basket retaining spring</text>
<text x="184" y="311"><tspan font-weight="bold">3</tspan> Bayonet lugs (ears)</text>
<text x="184" y="375"><tspan font-weight="bold">3</tspan> Portafilter body</text>
<text x="184" y="499"><tspan font-weight="bold">4</tspan> Threaded spout stem</text>
<text x="184" y="525"><tspan font-weight="bold">4</tspan> Hex collar</text>
<text x="184" y="585"><tspan font-weight="bold">4</tspan> Double spout</text>
</g>
<text x="566" y="185">Perforated base</text>
<text x="566" y="268">Steel handle shank</text>
<text x="700" y="243" text-anchor="middle">Insulated handle grip</text>
</g>
<!-- assembly arrows -->
<g stroke="#2c7fb8" stroke-width="2" fill="#2c7fb8">
<line x1="530" y1="196" x2="530" y2="230"/><path d="M524,228 L536,228 L530,240 Z"/>
<line x1="530" y1="256" x2="530" y2="282"/><path d="M524,280 L536,280 L530,292 Z"/>
<line x1="470" y1="470" x2="470" y2="432"/><path d="M464,434 L476,434 L470,422 Z"/>
</g>
<text x="482" y="455" font-size="12" fill="#2c7fb8">screws in</text>
<!-- parts list -->
<g font-size="13" fill="#333">
<rect x="640" y="470" width="320" height="150" fill="#fff" stroke="#999"/>
<text x="656" y="494" font-weight="bold">PARTS</text>
<text x="656" y="518">1 Filter basket (double, removable)</text>
<text x="656" y="540">2 Wire retaining spring</text>
<text x="656" y="562">3 Portafilter body with handle</text>
<text x="656" y="584">4 Double spout (threaded)</text>
<text x="656" y="606" fill="#777">Assembly order: 4 → 3 ← 2 ← 1</text>
</g>
</svg>Exploded portafilter: Opus 5.5
modelanthropic/claude-opus-5.5taskexploded-portafilter@v1, checks c1, harness h1date2026-10-21rounds1 of 8 allowed, 12 minutes on the clockcost$0.0151thinkingmediumtokens16,610 in, 4,693 out, of which 556 reasoningtime49 s
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.pass
Stack orderdecided by a number, from the filepass
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.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 · 1r · $0.0193
run 3 · 2r · $0.0235same 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.