SVG: exploded portafilter, by deepseek-v4.1-flash
deepseek-v4.1-flash · round 3 of 3 · seed 1$0.09SVGPNGportafilter.svg
portafilter.svg · 173 lines
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1120" width="1000" height="1120">
  <defs>
    <linearGradient id="steel" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#8f979f"/>
      <stop offset="0.18" stop-color="#e9edf1"/>
      <stop offset="0.42" stop-color="#c3cbd2"/>
      <stop offset="0.62" stop-color="#f4f6f8"/>
      <stop offset="0.82" stop-color="#aab3bb"/>
      <stop offset="1" stop-color="#7e868e"/>
    </linearGradient>
    <linearGradient id="steelDark" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#6f777f"/>
      <stop offset="0.2" stop-color="#c6ced5"/>
      <stop offset="0.5" stop-color="#9aa3ab"/>
      <stop offset="0.78" stop-color="#dde3e8"/>
      <stop offset="1" stop-color="#6b737b"/>
    </linearGradient>
    <linearGradient id="steelTop" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#f6f8fa"/>
      <stop offset="0.5" stop-color="#ccd4da"/>
      <stop offset="1" stop-color="#98a1a9"/>
    </linearGradient>
    <linearGradient id="handle" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#5b5b60"/>
      <stop offset="0.22" stop-color="#3a3a3e"/>
      <stop offset="0.5" stop-color="#202023"/>
      <stop offset="0.78" stop-color="#111113"/>
      <stop offset="1" stop-color="#2b2b2e"/>
    </linearGradient>
    <radialGradient id="cavity" cx="0.5" cy="0.35" r="0.7">
      <stop offset="0" stop-color="#3b4249"/>
      <stop offset="0.6" stop-color="#232a30"/>
      <stop offset="1" stop-color="#12171b"/>
    </radialGradient>
  </defs>

  <!-- background -->
  <rect x="0" y="0" width="1000" height="1120" fill="#ffffff"/>

  <!-- title -->
  <text x="500" y="52" text-anchor="middle" font-family="Helvetica, Arial, sans-serif"
        font-size="27" font-weight="bold" fill="#22272b" letter-spacing="0.5">Espresso Portafilter &#8212; Exploded Assembly</text>
  <text x="500" y="78" text-anchor="middle" font-family="Helvetica, Arial, sans-serif"
        font-size="14" fill="#7b848c">double-spout body with removable filter basket</text>

  <!-- ============ EXPLODED ALIGNMENT GUIDES ============ -->
  <g stroke="#aeb7bf" stroke-width="1.4" stroke-dasharray="7 7" fill="none">
    <line x1="556" y1="362" x2="556" y2="548"/>
    <line x1="724" y1="362" x2="724" y2="548"/>
    <line x1="608" y1="722" x2="608" y2="836"/>
    <line x1="672" y1="722" x2="672" y2="836"/>
  </g>
  <g stroke="#aeb7bf" stroke-width="1.2" stroke-dasharray="2 6" fill="none">
    <line x1="640" y1="120" x2="640" y2="1045"/>
  </g>

  <!-- ================= FILTER BASKET ================= -->
  <g>
    <!-- body -->
    <path d="M540,150 L556,330 Q556,356 582,356 L698,356 Q724,356 724,330 L740,150 Z"
          fill="url(#steel)"/>
    <!-- subtle inner shading toward the bottom -->
    <path d="M556,318 Q640,344 724,318 L724,330 Q724,356 698,356 L582,356 Q556,356 556,330 Z"
          fill="#9aa2aa" opacity="0.22"/>
    <!-- top rim outer -->
    <ellipse cx="640" cy="150" rx="104" ry="28" fill="url(#steelTop)"/>
    <!-- rim inner wall -->
    <ellipse cx="640" cy="150" rx="91" ry="24" fill="url(#steelDark)"/>
    <!-- opening cavity -->
    <ellipse cx="640" cy="151" rx="83" ry="21" fill="url(#cavity)"/>
    <!-- highlight on rim -->
    <path d="M556,142 Q640,110 724,142" fill="none" stroke="#ffffff" stroke-width="3" opacity="0.55"/>
    <!-- highlight on body -->
    <path d="M575,178 L566,320" stroke="#ffffff" stroke-width="6" opacity="0.28" stroke-linecap="round"/>
  </g>

  <!-- ================= PORTAFILTER HEAD / BODY ================= -->
  <g>
    <!-- locking lugs (ears) behind body -->
    <rect x="482" y="570" width="46" height="24" rx="12" fill="url(#steelDark)"
          transform="rotate(-12 505 582)"/>
    <rect x="752" y="570" width="46" height="24" rx="12" fill="url(#steelDark)"
          transform="rotate(12 775 582)"/>

    <!-- handle -->
    <path d="M520,620 L162,626 Q104,628 104,652 Q104,676 162,678 L520,684 Z" fill="url(#handle)"/>
    <path d="M512,628 L170,634" stroke="#ffffff" stroke-width="6" opacity="0.18" stroke-linecap="round"/>
    <path d="M508,676 L172,671" stroke="#000000" stroke-width="5" opacity="0.28" stroke-linecap="round"/>
    <!-- ferrule / metal collar -->
    <rect x="503" y="613" width="34" height="78" rx="9" fill="url(#steel)"/>
    <line x1="512" y1="617" x2="512" y2="687" stroke="#8b939b" stroke-width="1.4" opacity="0.7"/>

    <!-- head cylinder body -->
    <path d="M518,580 L518,690 Q640,740 762,690 L762,580 Z" fill="url(#steel)"/>
    <!-- top face -->
    <ellipse cx="640" cy="580" rx="122" ry="34" fill="url(#steelTop)"/>
    <!-- basket seat cavity -->
    <ellipse cx="640" cy="580" rx="106" ry="29" fill="url(#cavity)"/>
    <ellipse cx="640" cy="583" rx="96" ry="25" fill="#171d22"/>
    <!-- retaining spring inside the seat -->
    <ellipse cx="640" cy="583" rx="100" ry="26" fill="none" stroke="#c3ccd4"
             stroke-width="2.6" stroke-dasharray="3 4"/>
    <!-- rim highlight -->
    <ellipse cx="640" cy="580" rx="106" ry="29" fill="none" stroke="#f2f5f7" stroke-width="2.2" opacity="0.6"/>
    <!-- body highlight + shadow -->
    <path d="M536,606 L536,690" stroke="#ffffff" stroke-width="8" opacity="0.22" stroke-linecap="round"/>
    <path d="M744,606 L744,692" stroke="#000000" stroke-width="8" opacity="0.18" stroke-linecap="round"/>
  </g>

  <!-- ================= DOUBLE SPOUT ================= -->
  <g>
    <!-- threaded nipple -->
    <rect x="623" y="836" width="34" height="32" rx="4" fill="url(#steelDark)"/>
    <line x1="626" y1="845" x2="654" y2="845" stroke="#7d858d" stroke-width="1.4"/>
    <line x1="626" y1="855" x2="654" y2="855" stroke="#7d858d" stroke-width="1.4"/>
    <line x1="626" y1="864" x2="654" y2="864" stroke="#7d858d" stroke-width="1.4"/>

    <!-- two parallel spout teats -->
    <rect x="596" y="918" width="30" height="86" rx="7" fill="url(#steel)"/>
    <rect x="654" y="918" width="30" height="86" rx="7" fill="url(#steel)"/>

    <!-- cast housing over the spout roots -->
    <path d="M612,866 L668,866 L696,916 Q700,930 684,930 L596,930 Q580,930 584,916 Z"
          fill="url(#steelDark)"/>
    <line x1="606" y1="880" x2="674" y2="880" stroke="#79828a" stroke-width="1.3" opacity="0.7"/>
    <line x1="599" y1="893" x2="681" y2="893" stroke="#79828a" stroke-width="1.3" opacity="0.7"/>
    <line x1="591" y1="906" x2="689" y2="906" stroke="#79828a" stroke-width="1.3" opacity="0.7"/>
    <!-- top flange -->
    <ellipse cx="640" cy="866" rx="62" ry="17" fill="url(#steelTop)"/>
    <ellipse cx="640" cy="864" rx="53" ry="13" fill="#d7dde2"/>

    <!-- spout openings -->
    <ellipse cx="611" cy="1004" rx="15" ry="5.5" fill="url(#cavity)"/>
    <ellipse cx="611" cy="1004" rx="9" ry="3.2" fill="#050708"/>
    <ellipse cx="669" cy="1004" rx="15" ry="5.5" fill="url(#cavity)"/>
    <ellipse cx="669" cy="1004" rx="9" ry="3.2" fill="#050708"/>

    <!-- spout highlights -->
    <path d="M603,940 L603,992" stroke="#ffffff" stroke-width="4" opacity="0.32" stroke-linecap="round"/>
    <path d="M661,940 L661,992" stroke="#ffffff" stroke-width="4" opacity="0.32" stroke-linecap="round"/>
    <!-- shadow between the two spouts -->
    <path d="M640,930 L640,1000" stroke="#000000" stroke-width="5" opacity="0.1"/>
  </g>

  <!-- ================= ASSEMBLY DIRECTION ARROWS ================= -->
  <g stroke="#8f99a2" stroke-width="2" fill="none">
    <!-- basket moves down into the head -->
    <line x1="640" y1="392" x2="640" y2="500"/>
    <!-- spout threads up into the head -->
    <line x1="640" y1="816" x2="640" y2="746"/>
  </g>
  <g fill="#8f99a2">
    <polygon points="640,512 632,494 648,494"/>
    <polygon points="640,734 632,752 648,752"/>
  </g>

  <!-- ================= LABELS ================= -->
  <g font-family="Helvetica, Arial, sans-serif" font-size="17" fill="#2c3237">
    <g stroke="#9aa4ad" stroke-width="1.3" fill="none">
      <path d="M792,214 L742,188"/>
      <path d="M800,648 L764,622"/>
      <path d="M244,730 L244,684"/>
      <path d="M792,928 L716,940"/>
      <path d="M806,474 L730,566"/>
    </g>
    <text x="798" y="219">Filter basket</text>
    <text x="798" y="653">Portafilter body</text>
    <text x="180" y="750" text-anchor="start">Handle</text>
    <text x="798" y="933">Double spout</text>
    <text x="798" y="470">Retaining spring</text>
  </g>
</svg>
round 1 of 3
Exploded portafilter, by DeepSeek 4.1 Flash, the render after round 1
123What the model saw after each round. The picture above is the round that was scored, round 3.
gallery/Exploded portafilter/DeepSeek 4.1 Flash, run 1

Exploded portafilter: DeepSeek 4.1 Flash

modeldeepseek/deepseek-v4.1-flashtaskexploded-portafilter@v1, checks c1, harness h1date2026-10-21rounds3 of 8 allowed, 12 minutes on the clockcost$0.0853thinkingmediumtokens217,572 in, 21,533 out, of which 13,725 reasoningtime1 min 29 sfailedAll five parts: incomplete, component missing, major
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 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.n/d
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.

its other runs
the prompt it was given
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.
ground truth

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.