Simon Willison used "draw a pelican riding a bicycle" to test LLMs' spatial imagination — LLMs shouldn't be able to draw, but SVG is code, so they can try; there's no standard answer for a pelican on a bike, so you can tell whether the model is "understanding" or just "making things up." We applied the same spirit to a more "serious" yet equally absurd subject: the Cardinal Movements of Labor — engagement, descent, flexion, internal rotation, extension, external rotation, expulsion, seven steps. Bottom line first: no one got it right.
The cardinal movements of labor describe the dynamic process of the fetal head passing through the pelvis in obstetrics: engagement, descent, flexion, internal rotation, extension, external rotation, expulsion — seven steps in total. This subject satisfies all the conditions of Simon Willison's test: LLMs shouldn't be able to draw, but SVG is code, so they can try; and it requires doing three things correctly simultaneously — medical knowledge (names and positions of anatomical structures), spatial imagination (the rotational movement of the fetal head within a three-dimensional pelvis), and sequential expression (the seven steps must have the correct order and sense of direction). The most crucial point: internal rotation and external rotation are purely spatial operations that require presenting both a sagittal view and a transverse plane top-down view in the same diagram to explain clearly — there is no "standard SVG diagram of the cardinal movements of labor" in any model's training data. That makes it a good test question.
The prompt was simple, standardized to this single English sentence: Generate SVG description of the process of "mechanism of labor". All API calls went through OpenRouter, while Chat versions involved opening each provider's web interface directly for conversation and screenshot rendering. We tested 8 models (Claude 4.7 Opus, Gemini 3 Pro, GPT-5.5 Thinking, Grok, Kimi K2.6 Thinking, GLM 5.1 Thinking, Doubao, MiniMax MAX), each in both Chat (web conversation) and API (OpenRouter direct call) versions, then had GPT-5.5 blind-score each rendered image across 7 metrics on a 1–5 scale, for a maximum score of 35. (Manus 1.6 MAX was also in the test but not scored — it output SVG source code text rather than a rendered image; as an AI agent rather than a pure LLM, it requires a specially designed prompt for fair comparison.)
| Model | Chat | API | Notes |
|---|---|---|---|
| GLM 5.1 Thinking | 24/30* | 21/30* | Only model to provide a top-down view (FROM ABOVE) |
| Gemini 3 Pro | 15/35 | 23/35 | Chat is a pure text infographic; Chat-API gap is the largest in the batch (8 points) |
| Claude 4.7 Opus | 18/35 | 22/35 | Chat SVG 40KB, largest in the batch |
| Kimi K2.6 (Fixed) | 21/30* | 16/35 | Original version had rendering failures in both versions, both scored 7 |
| ChatGPT 5.5 Thinking | 11/25* | 21/35 | API version had the best external rotation expression in the batch |
| MiniMax MAX | 21/35 | 16/35 | Chat version scored 5 points higher than API version |
| Grok | 16/35 | 15/35 | Both versions had the right side clipped by the viewBox |
| Doubao | 10/35 | 13/35 | Chat version had an XML parsing error |
* GPT-5.5 output was truncated; scores calculated only on available dimensions. Scoring methodology and raw data at the end of the article.
GLM 5.1 Thinking earned the highest score because it did something no one else thought of. Both the Chat and API versions added a top-down view in the internal rotation panel — a perspective looking down from the pelvic inlet, showing the fetal head rotating from the oblique diameter to the anteroposterior diameter. This is the only correct way to handle internal rotation, because it is fundamentally a rotation on the horizontal plane; a side view simply can't explain it. Across all 8 models in the batch, 7 tried to express internal rotation using curved arrows in a sagittal view; only GLM switched perspectives.
Gemini 3 Pro's Chat and API versions seem like two different models. The API version scored 23/35, the highest in the batch: dark background, blue fetal head moving within a pink pelvis, with yellow arrows for each step. The Chat version, however, was a perfect product-style timeline infographic — all seven steps named completely, layout tidy — but with zero anatomical graphics, no fetal head, no pelvis. The same model, two interpretations: one understood "draw a diagram," the other understood "design an infographic."
Claude 4.7 Opus Chat version used 40,993 bytes to write a diagram with the fewest movement directions. The largest SVG in the batch, a dark-background 2×3 six-panel grid, visually clean and refreshing, but with the lowest movement direction annotation score in the entire round — almost no arrows. The API version used only 6,559 bytes, less than one-sixth, yet its arrow score was two points higher. "Writing more code" does not equal "drawing a better diagram."
Kimi K2.6 Thinking is the most dramatic story. The original Chat version's SVG had <<svg on the first line — two angle brackets, making the XML invalid; the browser threw an error directly, scoring 1 on all 7 dimensions. The fix was simply deleting the extra <. After the fix, the score was 21/30*, roughly comparable to the GLM 5.1 API version — an error of one character, from 7 points to 21 points; this is not a capability failure, it's a code bug.
Grok drew both versions outside the frame. The SVG content width exceeded the viewBox in both versions, making the external rotation step invisible in both — the exact same error occurring twice suggests this is an inherent flaw in the model's layout calculation, not random generation noise.
The only version with a top-down view from the pelvic inlet for internal rotation, 8 panels covering all seven steps.
A product-grade infographic with zero anatomical graphics — beautiful layout, but no fetal head or pelvis.
Same model, different interface, like two different "people": has a fetal head, a pelvis, and directional arrows.
40KB SVG, largest in the batch; clean and refreshing, but with the fewest movement arrows in the entire round.
One extra angle bracket made the XML invalid, causing the browser to throw an error and rendering to fail.
After deleting that one extra character: 6 panels, red arrows, clear structure, score tripled instantly.
First: step knowledge and spatial capability are two different things. All models performed decently on "naming the steps" (average ~3.7/5) but poorly on "drawing the anatomy" (average ~1.9/5). Models know the names of the cardinal movements of labor, but translating the concept of "internal rotation" into "a top-down schematic in the same diagram showing the fetal head rotating from the oblique diameter to the anteroposterior diameter" — only 1 out of 8 models managed that. Second: the Chat vs. API gap is larger than you'd expect, and the direction isn't consistent. Gemini Chat scored 8 points lower than API (but the Chat version looked "nicer"); MiniMax Chat scored 5 points higher than API; Claude API scored 4 points higher than Chat — the "output style preference" of the same model under different interfaces varies significantly; you can't infer one version's performance from the other. Third: technical failures were more common than capability failures in this batch. Kimi's failure was one character, Grok's failure was a viewBox calculation, Doubao Chat's failure was XML syntax — these are not "the model doesn't understand the cardinal movements of labor," but rather "the model generated SVG code that doesn't work in a specific rendering environment."
Like duanwu-ai's sweet-vs-salty zongzi experiment and the-stall's restroom stall psychometrics, the value of this test isn't in "who won," but in how it honestly revealed one thing: LLMs know what parts a bicycle has, can name the "chain" and the "seat," but none of the bicycles they draw can actually be ridden. The same goes for the cardinal movements of labor — the model knows the term "pubic symphysis," but none could draw its shape even approximately correctly. As models update, three months from now a model that scored 7 today due to an SVG syntax error might jump to over 20 because its code is more stable; anatomical accuracy might change as medical training data increases. Or it might not change — it's been years since the pelican bicycle, and LLMs still can't draw a rideable bicycle.
First published 2026-07-24