v60.svg · 175 lines
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="1100" viewBox="0 0 800 1100">
<defs>
<linearGradient id="ceram" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#BFC5CB"/>
<stop offset="0.28" stop-color="#F3F5F7"/>
<stop offset="0.62" stop-color="#E6E9EC"/>
<stop offset="1" stop-color="#8F959C"/>
</linearGradient>
<linearGradient id="paperG" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#E9D8B8"/>
<stop offset="0.3" stop-color="#FBF3DF"/>
<stop offset="0.68" stop-color="#F2E6C8"/>
<stop offset="1" stop-color="#D3BE95"/>
</linearGradient>
<linearGradient id="glassG" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#A9C3C9" stop-opacity="0.55"/>
<stop offset="0.24" stop-color="#EAF4F5" stop-opacity="0.55"/>
<stop offset="0.52" stop-color="#C3D8DC" stop-opacity="0.4"/>
<stop offset="1" stop-color="#7FA0A8" stop-opacity="0.6"/>
</linearGradient>
<linearGradient id="coffeeG" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#8A5A32"/>
<stop offset="0.35" stop-color="#A9713F"/>
<stop offset="1" stop-color="#6E4626"/>
</linearGradient>
<linearGradient id="woodG" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#9C6F41"/>
<stop offset="0.3" stop-color="#C89B66"/>
<stop offset="0.7" stop-color="#B5884F"/>
<stop offset="1" stop-color="#82593B"/>
</linearGradient>
<radialGradient id="rimG" cx="0.5" cy="0.42" r="0.65">
<stop offset="0" stop-color="#F8FAFB"/>
<stop offset="1" stop-color="#C2C9CF"/>
</radialGradient>
<radialGradient id="holeG" cx="0.5" cy="0.42" r="0.65">
<stop offset="0" stop-color="#F7F9FA"/>
<stop offset="1" stop-color="#CBD2D8"/>
</radialGradient>
<marker id="arw" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7.5" markerHeight="7.5" orient="auto-start-reverse">
<path d="M0 0L10 5L0 10z" fill="#7B8794"/>
</marker>
</defs>
<!-- background -->
<rect width="800" height="1100" fill="#F7F5F0"/>
<ellipse cx="400" cy="1052" rx="330" ry="20" fill="#000" opacity="0.05"/>
<ellipse cx="400" cy="377" rx="110" ry="12" fill="#000" opacity="0.05"/>
<ellipse cx="400" cy="684" rx="170" ry="14" fill="#000" opacity="0.05"/>
<!-- ===================== titles ===================== -->
<text x="400" y="42" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif" font-size="25" letter-spacing="7" fill="#3A3F45">EXPLODED ASSEMBLY</text>
<text x="400" y="66" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif" font-size="14" letter-spacing="4.5" fill="#9AA0A6">V60 POUR-OVER · 02 DRIPPER</text>
<text x="400" y="84" text-anchor="middle" font-family="Georgia, 'Times New Roman', serif" font-size="11.5" letter-spacing="3" fill="#B8BDC2">CONE DRIPPER · PAPER FILTER · GLASS SERVER</text>
<!-- ===================== parts list ===================== -->
<g font-family="Helvetica, Arial, sans-serif">
<rect x="530" y="104" width="230" height="112" rx="6" fill="#FFFFFF" stroke="#E2DDD3"/>
<text x="546" y="127" font-size="10.5" letter-spacing="2.5" fill="#9AA0A6">PARTS LIST</text>
<g font-size="12.5" fill="#42474D">
<circle cx="555" cy="145" r="3.2" fill="#E4D2AA"/><text x="567" y="149.5">Paper filter (02)</text>
<circle cx="555" cy="170" r="3.2" fill="#5C6771"/><text x="567" y="174.5">Dripper cone (ceramic)</text>
<circle cx="555" cy="195" r="3.2" fill="#A9C6CB"/><text x="567" y="199.5">Glass server 600 ml</text>
</g>
</g>
<!-- ===================== stage labels ===================== -->
<g font-family="Helvetica, Arial, sans-serif" font-size="12" letter-spacing="2.5" fill="#98A0A8" text-anchor="middle">
<text x="400" y="125">01 — PAPER FILTER (02)</text>
<text x="400" y="424">02 — DRIPPER CONE</text>
<text x="400" y="1020">03 — GLASS SERVER</text>
</g>
<!-- ===================== stage 01 : paper filter ===================== -->
<g>
<!-- Thin, open paper cone; sealed seam runs to its point. -->
<path d="M282 220 L400 368 L518 220 Q400 272 282 220Z" fill="url(#paperG)" stroke="#BDA77F" stroke-width="1.6"/>
<ellipse cx="400" cy="220" rx="118" ry="29" fill="#E2CDA7" stroke="#BDA77F" stroke-width="1.6"/>
<path d="M284 220 Q400 174 516 220 Q400 206 284 220Z" fill="#F5EAD3"/>
<path d="M282 220 A118 29 0 0 0 518 220" fill="none" stroke="#FFF8E9" stroke-width="3"/>
<path d="M487 241 L400 368 L475 245" fill="#D9C295" stroke="#BDA77F" stroke-width="1"/>
<path d="M478 246 L403 361" fill="none" stroke="#AE956C" stroke-dasharray="2 3"/>
</g>
<!-- leader 01 -->
<path d="M204 269 H274 L318 267" fill="none" stroke="#7B8794" stroke-width="1.4"/>
<text x="286" y="254" text-anchor="end" font-family="Helvetica, Arial, sans-serif" font-size="12" fill="#5C6771">paper filter (02)</text>
<path d="M560 352 H508 L443 305" fill="none" stroke="#7B8794" stroke-width="1.4"/>
<text x="566" y="356" font-family="Helvetica, Arial, sans-serif" font-size="12" fill="#5C6771">folded seam</text>
<!-- ===================== stage 02 : dripper cone ===================== -->
<g>
<!-- Integral support saucer rests on the server mouth. -->
<path d="M268 642 A132 26 0 0 1 532 642 L532 651 A132 26 0 0 1 268 651Z" fill="url(#ceram)" stroke="#82888F" stroke-width="2"/>
<ellipse cx="400" cy="642" rx="132" ry="26" fill="url(#rimG)" stroke="#82888F" stroke-width="2"/>
<!-- Closed ceramic loop, attached at both ends. -->
<path d="M558 486 C646 463 643 590 496 561" fill="none" stroke="#82888F" stroke-width="18"/>
<path d="M558 486 C646 463 643 590 496 561" fill="none" stroke="#E5E8EB" stroke-width="13"/>
<!-- body cone -->
<path d="M224 474 L 376 640 A 24 10 0 0 0 424 640 L 576 474 Z" fill="url(#ceram)" stroke="#82888F" stroke-width="2" stroke-linejoin="round"/>
<!-- top opening wall (visible through rim opening) -->
<path d="M224 474 A 176 40 0 0 1 576 474 L 560 474 A 160 34 0 0 0 240 474 Z" fill="#A9AFB6" opacity="0.6"/>
<!-- flange rim -->
<path d="M224 474 A 176 40 0 0 0 576 474 A 176 40 0 0 0 224 474 Z" fill="url(#rimG)" stroke="#8A9097" stroke-width="2"/>
<ellipse cx="400" cy="474" rx="150" ry="33" fill="none" stroke="#AEB5BB" stroke-width="1"/>
<!-- Open mouth with raised spiral ribs on the interior. -->
<ellipse cx="400" cy="474" rx="161" ry="33" fill="#BAC3CA" stroke="#8D99A2"/>
<g fill="none" stroke="#E9EDF0" stroke-width="4" stroke-linecap="round">
<path d="M251 464 Q268 486 365 491"/>
<path d="M280 452 Q290 477 382 490"/>
<path d="M325 445 Q319 466 396 489"/>
<path d="M379 442 Q354 463 408 488"/>
<path d="M436 443 Q395 464 418 489"/>
<path d="M491 449 Q448 469 427 492"/>
<path d="M539 460 Q500 484 440 495"/>
</g>
<ellipse cx="400" cy="495" rx="20" ry="5" fill="#697782"/>
<path d="M239 474 A161 33 0 0 0 561 474" fill="none" stroke="#F7F9FA" stroke-width="4"/>
<g fill="none" stroke="#AFB8C0" stroke-width="2">
<path d="M284 535 Q325 598 384 637"/>
<path d="M319 533 Q337 595 393 639"/>
<path d="M374 541 Q382 599 404 638"/>
<path d="M433 535 Q427 597 415 637"/>
<path d="M492 516 Q468 587 424 635"/>
</g>
<!-- exit hole -->
<ellipse cx="400" cy="639.5" rx="24" ry="9.5" fill="url(#holeG)" stroke="#9AA1A8" stroke-width="1.6"/>
<path d="M400 631 A 24 9.5 0 0 0 424 639.5 A 24 9.5 0 0 0 400 648 A 24 9.5 0 0 0 376 639.5 A 24 9.5 0 0 0 400 631 Z" fill="#F2F4F6"/>
</g>
<!-- leader 02 -->
<path d="M204 612 H260 L322 558" fill="none" stroke="#7B8794" stroke-width="1.4"/>
<text x="266" y="604" text-anchor="end" font-family="Helvetica, Arial, sans-serif" font-size="12" fill="#5C6771">60° inner wall</text>
<path d="M640 453 H590 L491 462" fill="none" stroke="#7B8794" stroke-width="1.4"/>
<text x="646" y="457" font-family="Helvetica, Arial, sans-serif" font-size="12" fill="#5C6771">spiral ribs</text>
<!-- ===================== stage 03 : glass server ===================== -->
<g>
<!-- Glass loop joins the neck and shoulder. -->
<path d="M508 826 C608 804 624 941 534 931" fill="none" stroke="#7FA0A8" stroke-width="16"/>
<path d="M508 826 C608 804 624 941 534 931" fill="none" stroke="#D8E7E9" stroke-width="10"/>
<!-- body glass -->
<path d="M278 804 Q302 849 286 872 C255 914 251 966 291 984 Q400 1010 509 984 C549 966 545 914 514 872 Q498 849 522 804Z" fill="url(#glassG)" stroke="#7FA0A8" stroke-width="2" stroke-linejoin="round"/>
<!-- coffee -->
<path d="M276 925 C270 951 277 972 299 979 Q400 1000 501 979 C523 972 530 951 524 925Z" fill="url(#coffeeG)" opacity="0.8"/>
<ellipse cx="400" cy="925" rx="124" ry="20" fill="#B77E45" opacity="0.85"/>
<!-- Open rim includes a small pouring lip on the left. -->
<path d="M278 802 L250 786 L286 791 C330 772 480 774 513 794 C562 828 350 851 278 810Z" fill="#EAF4F5" fill-opacity="0.6" stroke="#7FA0A8" stroke-width="2" stroke-linejoin="round"/>
<path d="M289 805 C325 832 482 831 512 805" fill="none" stroke="#FFFFFF" stroke-width="3"/>
<path d="M292 851 Q400 877 508 851" fill="none" stroke="#8EAFB6" stroke-width="1.5" opacity="0.5"/>
<!-- glass highlights -->
<g stroke="#FFFFFF" stroke-linecap="round" fill="none" opacity="0.7">
<path d="M310 880 C 306 908, 310 942, 318 968" stroke-width="3"/>
<path d="M330 878 C 327 904, 330 940, 337 958" stroke-width="1.6"/>
</g>
<!-- ml scale -->
<g font-family="Helvetica, Arial, sans-serif" font-size="10" fill="#536D75" stroke="#536D75" stroke-width="1">
<path d="M442 875 H470 M450 891 H470 M442 907 H470"/>
<text x="478" y="879" stroke="none">600 ml</text>
<text x="478" y="911" stroke="none">400</text>
</g>
</g>
<!-- leader 03 -->
<path d="M216 948 H244 L280 906" fill="none" stroke="#7B8794" stroke-width="1.4"/>
<text x="210" y="952" text-anchor="end" font-family="Helvetica, Arial, sans-serif" font-size="12" fill="#5C6771">heatproof glass</text>
<!-- ===================== assembly axis & callout arrows ===================== -->
<line x1="400" y1="378" x2="400" y2="404" stroke="#7B8794" stroke-width="1.6" stroke-dasharray="5 4" marker-end="url(#arw)"/>
<text x="422" y="396" font-family="Helvetica, Arial, sans-serif" font-size="11" fill="#7B8794">fits inside cone</text>
<line x1="400" y1="685" x2="400" y2="770" stroke="#7B8794" stroke-width="1.6" stroke-dasharray="5 4" marker-end="url(#arw)"/>
<text x="416" y="723" font-family="Helvetica, Arial, sans-serif" font-size="11" fill="#7B8794">base rests on server rim</text>
</svg>round 1 of 5

Exploded V60 dripper: Pareto 26.10 Preview
modelunbiased/pareto-26.10-previewtaskexploded-v60@v1, checks c1, harness h1date2026-10-07rounds5 of 8 allowed, 12 minutes on the clockcost$0.2573thinkingmediumtokens347,709 in, 60,788 out, of which 0 reasoningtime6 min 15 s
All three 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
One assembly axisdecided 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 2 · 3r · $0.1256
run 3 · 3r · $0.1727same prompt, other modelsall 12 runs on Exploded V60 dripper →
Draw an exploded assembly diagram of a V60 pour-over dripper on its glass server, as an SVG. Use the cone dripper with a paper filter rather than a metal mesh filter.Frozen at v1. This model got this and nothing else.
Top to bottom: paper filter, dripper, server. The dripper is a 60 degree cone with spiral ribs and one large hole, and it sits directly on the server. Checked against Hario's V60 and Range Server pages. The server's lid is optional, so it is not required and not marked down. How it is scored, and this run's files on GitHub.