SVG: exploded French press, by deepseek-v4.1-flash
deepseek-v4.1-flash · round 4 of 4 · seed 1$0.04SVGPNGpress.svg
press.svg · 255 lines
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
     viewBox="0 0 880 1320" font-family="Helvetica, Arial, sans-serif">
  <defs>
    <linearGradient id="metal" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#7f868d"/>
      <stop offset="0.12" stop-color="#dfe4e8"/>
      <stop offset="0.35" stop-color="#f7f9fa"/>
      <stop offset="0.52" stop-color="#c6cdd3"/>
      <stop offset="0.74" stop-color="#eef1f3"/>
      <stop offset="1" stop-color="#7f868d"/>
    </linearGradient>
    <linearGradient id="metalDark" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#6b7177"/>
      <stop offset="0.35" stop-color="#c2c8cd"/>
      <stop offset="0.6" stop-color="#9aa1a7"/>
      <stop offset="1" stop-color="#6b7177"/>
    </linearGradient>
    <linearGradient id="glass" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#a9c6d6" stop-opacity="0.55"/>
      <stop offset="0.12" stop-color="#eaf3f8" stop-opacity="0.35"/>
      <stop offset="0.30" stop-color="#ffffff" stop-opacity="0.18"/>
      <stop offset="0.55" stop-color="#dceaf2" stop-opacity="0.30"/>
      <stop offset="0.80" stop-color="#c2d7e3" stop-opacity="0.42"/>
      <stop offset="1" stop-color="#8fb0c4" stop-opacity="0.65"/>
    </linearGradient>
    <pattern id="mesh" width="9" height="9" patternUnits="userSpaceOnUse">
      <rect width="9" height="9" fill="#e6d9bc"/>
      <path d="M0 0H9M0 4.5H9M0 0V9M4.5 0V9" stroke="#ae9868" stroke-width="0.9"/>
    </pattern>
    <pattern id="holes" width="15" height="15" patternUnits="userSpaceOnUse">
      <circle cx="7.5" cy="7.5" r="2.3" fill="#6b7177"/>
    </pattern>
    <clipPath id="carafeClip">
      <path d="M180,870 L180,1128 Q180,1150 202,1150 L398,1150 Q420,1150 420,1128 L420,870 Z"/>
    </clipPath>
  </defs>

  <rect x="0" y="0" width="880" height="1320" fill="#ffffff"/>

  <!-- Title -->
  <text x="60" y="58" font-size="30" font-weight="bold" fill="#233142">French Press &#8212; Exploded Assembly</text>
  <text x="60" y="84" font-size="15" fill="#6b7885">Parts shown in order of disassembly along the plunger axis</text>
  <line x1="60" y1="96" x2="820" y2="96" stroke="#c9d2da" stroke-width="2"/>

  <!-- Central alignment axis (drawn behind the parts) -->
  <line x1="300" y1="150" x2="300" y2="1265" stroke="#b7c0c8" stroke-width="1.6"
        stroke-dasharray="7 7"/>

  <!-- ============ 1. PLUNGER KNOB ============ -->
  <g>
    <ellipse cx="300" cy="210" rx="36" ry="10" fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <path d="M264,210 L264,186 A36,10 0 0 0 336,186 L336,210 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="186" rx="30" ry="8.5" fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <path d="M270,186 C270,156 300,150 300,150 C300,150 330,156 330,186 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <path d="M281,178 C283,161 292,156 300,155" fill="none" stroke="#ffffff" stroke-opacity="0.7" stroke-width="3" stroke-linecap="round"/>
  </g>

  <!-- ============ 2. PLUNGER ROD ============ -->
  <g>
    <rect x="293" y="250" width="14" height="120" rx="7"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <line x1="300" y1="256" x2="300" y2="364" stroke="#ffffff" stroke-opacity="0.65" stroke-width="3" stroke-linecap="round"/>
    <!-- threaded end -->
    <rect x="290" y="358" width="20" height="14" rx="3" fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
  </g>

  <!-- ============ 3. LID ============ -->
  <g>
    <!-- rim band -->
    <path d="M176,430 L176,455 A124,18 0 0 0 424,455 L424,430 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="430" rx="124" ry="18" fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="430" rx="108" ry="14" fill="#e9edf0" stroke="#aab2b9" stroke-width="1.4"/>
    <!-- dome -->
    <path d="M200,430 C205,398 245,382 300,382 C355,382 395,398 400,430 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <path d="M214,424 C220,402 250,391 288,389" fill="none" stroke="#ffffff" stroke-opacity="0.65" stroke-width="4" stroke-linecap="round"/>
    <!-- center boss with rod hole -->
    <ellipse cx="300" cy="383" rx="34" ry="11" fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="381" rx="9" ry="4.5" fill="#3a3f45" stroke="#5b6167" stroke-width="1.5"/>
  </g>

  <!-- ============ 4. LOCKING NUT ============ -->
  <g>
    <polygon points="278,502 322,502 340,520 322,538 278,538 260,520"
             fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <polygon points="283,508 317,508 330,520 317,532 283,532 270,520"
             fill="none" stroke="#ffffff" stroke-opacity="0.5" stroke-width="2"/>
    <ellipse cx="300" cy="520" rx="9" ry="6" fill="#3a3f45" stroke="#5b6167" stroke-width="1.6"/>
  </g>

  <!-- ============ 5. UPPER FILTER PLATE ============ -->
  <g>
    <path d="M238,585 L238,595 A62,14 0 0 0 362,595 L362,585 Z"
          fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="585" rx="62" ry="14" fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="585" rx="62" ry="14" fill="url(#holes)" opacity="0.55"/>
    <ellipse cx="300" cy="585" rx="62" ry="14" fill="none" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="585" rx="11" ry="4" fill="#eef1f3" stroke="#5b6167" stroke-width="1.6"/>
  </g>

  <!-- ============ 6. FILTER SPRING ============ -->
  <g stroke="#6f767d" stroke-width="4" fill="none" stroke-linecap="round">
    <ellipse cx="300" cy="640" rx="55" ry="9"/>
    <ellipse cx="300" cy="652" rx="55" ry="9"/>
    <ellipse cx="300" cy="664" rx="55" ry="9"/>
    <ellipse cx="300" cy="676" rx="55" ry="9"/>
    <ellipse cx="300" cy="688" rx="55" ry="9"/>
    <path d="M245,640 Q238,646 245,652" stroke="#c3c9ce" stroke-width="3"/>
  </g>

  <!-- ============ 7. MESH SCREEN ============ -->
  <g>
    <path d="M242,725 L242,733 A58,13 0 0 0 358,733 L358,725 Z"
          fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="725" rx="58" ry="13" fill="url(#mesh)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="725" rx="58" ry="13" fill="none" stroke="#5b6167" stroke-width="2"/>
  </g>

  <!-- ============ 8. LOWER FILTER PLATE ============ -->
  <g>
    <path d="M238,785 L238,795 A62,14 0 0 0 362,795 L362,785 Z"
          fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="785" rx="62" ry="14" fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="785" rx="62" ry="14" fill="url(#holes)" opacity="0.55"/>
    <ellipse cx="300" cy="785" rx="62" ry="14" fill="none" stroke="#5b6167" stroke-width="2"/>
  </g>

  <!-- ============ 9. GLASS CARAFE ============ -->
  <g>
    <!-- body -->
    <path d="M180,870 L180,1128 Q180,1150 202,1150 L398,1150 Q420,1150 420,1128 L420,870 Z"
          fill="url(#glass)" stroke="#6b7c8a" stroke-width="2.5"/>
    <!-- glass highlights clipped to body -->
    <g clip-path="url(#carafeClip)">
      <rect x="203" y="880" width="15" height="262" rx="7" fill="#ffffff" opacity="0.45"/>
      <rect x="228" y="880" width="6" height="262" rx="3" fill="#ffffff" opacity="0.30"/>
      <rect x="392" y="880" width="16" height="262" fill="#7fa2b8" opacity="0.28"/>
    </g>
    <!-- graduation ticks -->
    <g stroke="#6b7c8a" stroke-width="2" opacity="0.75">
      <line x1="196" y1="960" x2="224" y2="960"/>
      <line x1="196" y1="1010" x2="224" y2="1010"/>
      <line x1="196" y1="1060" x2="224" y2="1060"/>
      <line x1="196" y1="1110" x2="224" y2="1110"/>
    </g>
    <!-- rim band -->
    <path d="M176,848 L176,870 A124,18 0 0 0 424,870 L424,848 Z"
          fill="url(#metal)" stroke="#6b7c8a" stroke-width="2.2"/>
    <ellipse cx="300" cy="848" rx="124" ry="18" fill="url(#glass)" stroke="#6b7c8a" stroke-width="2.2"/>
    <!-- pouring spout -->
    <path d="M177,845 C154,842 139,834 130,822 C150,820 171,827 190,838
             L190,856 C183,858 179,857 176,854 Z"
          fill="url(#glass)" stroke="#6b7c8a" stroke-width="2.2" stroke-linejoin="round"/>
    <!-- handle -->
    <path d="M418,905 C505,912 512,1000 502,1055 C494,1096 458,1120 420,1120
             C460,1106 480,1078 486,1046 C495,998 486,930 418,942 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2.2"/>
  </g>

  <!-- ground shadow -->
  <ellipse cx="300" cy="1266" rx="152" ry="15" fill="#dfe4e8" opacity="0.8"/>

  <!-- ============ 10. BASE / STAND ============ -->
  <g>
    <ellipse cx="300" cy="1180" rx="136" ry="20" fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
    <ellipse cx="300" cy="1180" rx="106" ry="14" fill="#565c62" stroke="#5b6167" stroke-width="1.6"/>
    <path d="M164,1180 L164,1240 A136,20 0 0 0 436,1240 L436,1180 Z"
          fill="url(#metal)" stroke="#5b6167" stroke-width="2"/>
    <line x1="200" y1="1184" x2="200" y2="1242" stroke="#ffffff" stroke-opacity="0.55" stroke-width="5"/>
    <ellipse cx="300" cy="1240" rx="136" ry="20" fill="url(#metalDark)" stroke="#5b6167" stroke-width="2"/>
  </g>

  <!-- ============ NUMBER BADGES + LEADER LINES ============ -->
  <g stroke="#9aa4ad" stroke-width="1.4" stroke-dasharray="5 5">
    <line x1="158" y1="196" x2="262" y2="196"/>
    <line x1="158" y1="310" x2="291" y2="310"/>
    <line x1="158" y1="443" x2="176" y2="443"/>
    <line x1="158" y1="520" x2="258" y2="520"/>
    <line x1="158" y1="585" x2="236" y2="585"/>
    <line x1="158" y1="640" x2="243" y2="640"/>
    <line x1="158" y1="725" x2="240" y2="725"/>
    <line x1="158" y1="785" x2="236" y2="785"/>
    <line x1="158" y1="1000" x2="178" y2="1000"/>
    <line x1="158" y1="1210" x2="162" y2="1210"/>
  </g>
  <g font-size="15" font-weight="bold" text-anchor="middle">
    <g fill="#2c3e50">
      <circle cx="140" cy="196" r="15"/><circle cx="140" cy="310" r="15"/>
      <circle cx="140" cy="443" r="15"/><circle cx="140" cy="520" r="15"/>
      <circle cx="140" cy="585" r="15"/><circle cx="140" cy="640" r="15"/>
      <circle cx="140" cy="725" r="15"/><circle cx="140" cy="785" r="15"/>
      <circle cx="140" cy="1000" r="15"/><circle cx="140" cy="1210" r="15"/>
    </g>
    <g fill="#ffffff">
      <text x="140" y="201">1</text><text x="140" y="315">2</text>
      <text x="140" y="448">3</text><text x="140" y="525">4</text>
      <text x="140" y="590">5</text><text x="140" y="645">6</text>
      <text x="140" y="730">7</text><text x="140" y="790">8</text>
      <text x="140" y="1005">9</text><text x="140" y="1215">10</text>
    </g>
  </g>

  <!-- ============ LEGEND ============ -->
  <g>
    <rect x="560" y="420" width="288" height="400" rx="14" fill="#f6f8fa" stroke="#d4dbe2" stroke-width="1.6"/>
    <text x="584" y="454" font-size="18" font-weight="bold" fill="#233142">Parts list</text>
    <line x1="584" y1="466" x2="824" y2="466" stroke="#d4dbe2" stroke-width="1.4"/>
  </g>
  <g font-size="15.5" fill="#33414f">
    <!-- each row: badge + text -->
    <g>
      <circle cx="590" cy="492" r="12" fill="#2c3e50"/><text x="590" y="497" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">1</text>
      <text x="612" y="497">Plunger knob</text>
    </g>
    <g>
      <circle cx="590" cy="524" r="12" fill="#2c3e50"/><text x="590" y="529" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">2</text>
      <text x="612" y="529">Plunger rod</text>
    </g>
    <g>
      <circle cx="590" cy="556" r="12" fill="#2c3e50"/><text x="590" y="561" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">3</text>
      <text x="612" y="561">Lid</text>
    </g>
    <g>
      <circle cx="590" cy="588" r="12" fill="#2c3e50"/><text x="590" y="593" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">4</text>
      <text x="612" y="593">Locking nut</text>
    </g>
    <g>
      <circle cx="590" cy="620" r="12" fill="#2c3e50"/><text x="590" y="625" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">5</text>
      <text x="612" y="625">Upper filter plate</text>
    </g>
    <g>
      <circle cx="590" cy="652" r="12" fill="#2c3e50"/><text x="590" y="657" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">6</text>
      <text x="612" y="657">Filter spring</text>
    </g>
    <g>
      <circle cx="590" cy="684" r="12" fill="#2c3e50"/><text x="590" y="689" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">7</text>
      <text x="612" y="689">Mesh screen</text>
    </g>
    <g>
      <circle cx="590" cy="716" r="12" fill="#2c3e50"/><text x="590" y="721" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">8</text>
      <text x="612" y="721">Lower filter plate</text>
    </g>
    <g>
      <circle cx="590" cy="748" r="12" fill="#2c3e50"/><text x="590" y="753" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">9</text>
      <text x="612" y="753">Glass carafe</text>
    </g>
    <g>
      <circle cx="590" cy="780" r="12" fill="#2c3e50"/><text x="590" y="785" font-size="13" font-weight="bold" fill="#fff" text-anchor="middle">10</text>
      <text x="612" y="785">Base / stand</text>
    </g>
  </g>
</svg>
round 1 of 4
Exploded French press, by DeepSeek 4.1 Flash, the render after round 1
1234What the model saw after each round. The picture above is the round that was scored, round 4.
gallery/Exploded French press/DeepSeek 4.1 Flash, run 1

The first press here assembled the right way up, for four cents, but its filter plates are half the width of the glass.

modeldeepseek/deepseek-v4.1-flashtasksvg-french-press@v1date2026-09-20rounds4 of 8 allowedcost$0.0401thinkingmediumtokens287,533 in, 22,277 out, of which 13,879 reasoningtime11 min 4 sfailurephysical-plausibility
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 filepass
Filter fits the glassdecided by a number, from the filefail
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.

same prompt
the prompt it was given
Draw an exploded assembly diagram of a French press, as an SVG.
Frozen at v1. This model got this and nothing else. The prompt has since moved to v2, on 2026-09-20, so this run is not directly comparable with one made after that date. Both wordings are on the task page.
ground truth

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.