{"version":3,"file":"ResearchArticle.D1tPFXrt.mjs","names":["React.useRef","React.useState","_Fragment","React.useMemo","React.useCallback","x","React.Fragment"],"sources":["https:/framerusercontent.com/modules/kshvnQDlzqLIDcJri7zZ/E5K5uNrCS1RX6KvVolzT/ResearchArticle.js"],"sourcesContent":["// ResearchArticle.tsx — Framer code component for /research/[slug]\n//\n// Self-contained: all tokens, types, icons, and full article bodies are\n// inlined below. Drop this one file into Framer. No sibling imports.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// ────────────────────────────────────────────────────────────\n// Tokens\nconst colors={cream:\"#F7F3EB\",off:\"#FBFAF6\",paper:\"#FFFFFF\",ink:\"#333330\",stone:\"#605A51\",fog:\"#9C968C\",sage:\"#A5BEBA\",bone:\"#DDD9C2\",mist:\"#C0CFCB\",line:\"#E9E5DA\",lineSoft:\"rgba(51,51,48,0.08)\",lineMed:\"rgba(51,51,48,0.15)\"};const fonts={sans:'\"GT Standard L Regular\", \"GT Standard L Regular Placeholder\", sans-serif',sansMed:'\"GT Standard L Medium\", \"GT Standard L Medium Placeholder\", sans-serif',serif:'\"Source Serif 4 Variable\", \"Source Serif 4 Variable Placeholder\", serif',mono:\"ui-monospace, SFMono-Regular, Menlo, monospace\"};const widths={prose:680,article:1e3,figure:1200,hub:1440};// ────────────────────────────────────────────────────────────\n// Container-width hook — measures the component's own root element via\n// ResizeObserver. Using window.innerWidth is wrong in Framer because the\n// component can render inside a smaller frame on a larger canvas (e.g.\n// the Mobile frame at 375px on a 1400px desktop preview).\nfunction useContainerWidth(){const ref=React.useRef(null);const[width,setWidth]=React.useState(1200);React.useLayoutEffect(()=>{const el=ref.current;if(!el)return;const rect=el.getBoundingClientRect();if(rect.width>0)setWidth(rect.width);if(typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(entries=>{for(const entry of entries){const w=entry.contentRect.width;if(w>0)setWidth(w);}});ro.observe(el);return()=>ro.disconnect();},[]);return[ref,width];}const fmtDate=iso=>new Date(iso+\"T00:00:00\").toLocaleDateString(\"en-US\",{year:\"numeric\",month:\"long\",day:\"numeric\"});function BrandAvatarFallback(){return /*#__PURE__*/_jsx(\"div\",{style:{width:44,height:44,borderRadius:\"50%\",background:colors.sage,border:\"1px solid rgba(51,51,48,0.12)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0},children:/*#__PURE__*/_jsx(\"svg\",{width:24,height:24,viewBox:\"0 0 24 24\",fill:colors.ink,xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 2 L13.5 10.5 L22 12 L13.5 13.5 L12 22 L10.5 13.5 L2 12 L10.5 10.5 Z\"})})});}function Icon({name,size=16,style}){const paths={arrow:/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14\"}),/*#__PURE__*/_jsx(\"path\",{d:\"m12 5 7 7-7 7\"})]}),arrowUp:/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"path\",{d:\"M7 17 17 7\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M7 7h10v10\"})]})};return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.5,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{display:\"inline-block\",verticalAlign:\"-2px\",flexShrink:0,...style},children:paths[name]});}// ────────────────────────────────────────────────────────────\n// Article data (full bodies)\nconst videoH2H={slug:\"video-head-to-head-jul26\",title:\"Frontier AI video models are nearly tied. None of them nail physics yet.\",type:\"Benchmark\",publishedDate:\"2026-06-29\",readMinutes:8,subtitle:\"A blind head-to-head of Seedance 2.0, Grok Imagine, Veo 3.1, and Adobe Firefly Video, judged by 12 professional video editors across 10 prompts.\",abstract:\"Seedance 2.0 finished first overall, but only by +0.07 over Grok Imagine on a 5-point scale. Across 10 prompts it won 4; Grok Imagine and Veo 3.1 won 3 each; Adobe Firefly Video won 0. The clearer pattern is specialization by shot type, and every model still breaks on physics.\",hero:false,coverImage:null,seoTitle:\"AI video head-to-head: Seedance 2.0 vs Grok, Veo, Firefly \\xb7 Contra Labs\",seoDescription:\"12 professional video editors judged Seedance 2.0, Grok Imagine, Veo 3.1, and Adobe Firefly Video across 10 prompts. The top three finished in a near-tie; all still fail on physics.\",ogImage:null,metrics:null,notionId:\"38bdf2b6-cc6b-80ac-af4e-dd1c9f79acc3\",updatedAt:\"2026-06-29T00:00:00Z\",body:[{type:\"keyFindings\",items:[\"Seedance 2.0 led almost every scalar dimension, but only narrowly; Grok Imagine and Veo 3.1 nearly matched it.\",\"The top three each specialized: Seedance on cinematic motion, Grok Imagine on people, Veo 3.1 on product and mood shots.\",\"Every model still showed physical glitches and realism failures, even on the highest-rated clips.\",\"Reference images lifted visual aesthetics by +0.43 but cut prompt adherence by -0.40.\",\"Adobe Firefly Video trailed the field and won none of the 10 prompts.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Field\",value:\"AI video generation\"},{label:\"Sample\",value:\"10 prompts \\xb7 40 videos \\xb7 12 professional video editors\"},{label:\"Models\",value:\"Seedance 2.0, Grok Imagine, Veo 3.1, Adobe Firefly Video\"},{label:\"Method\",value:\"Blinded pairwise tournament + 1-5 scalar scoring across 5 dimensions\"}]},{type:\"p\",text:\"By mid-2026, AI video had turned from a demo category into a production-tool race, with four frontier models launching in close succession: Seedance 2.0, Veo 3.1, Grok Imagine, and Adobe Firefly Video. Seedance 2.0 arrived with the most drama: within days of its release in China, Axios reported a Disney cease-and-desist letter. Veo 3.1 led with native, synchronized audio generation, paired with better camera and narrative control. Grok Imagine claimed many #1 leaderboard spots, while Adobe Firefly Video trained exclusively on licensed content and focused on commercial use.\",parts:[\"By mid-2026, AI video had turned from a demo category into a production-tool race, with four frontier models launching in close succession: \",{text:\"Seedance 2.0\",href:\"https://seed.bytedance.com/en/seedance2_0\"},\", \",{text:\"Veo 3.1\",href:\"https://developers.googleblog.com/introducing-veo-3-1-and-new-creative-capabilities-in-the-gemini-api/\"},\", \",{text:\"Grok Imagine\",href:\"https://x.ai/news/grok-imagine-api\"},\", and \",{text:\"Adobe Firefly Video\",href:\"https://blog.adobe.com/en/publish/2025/02/12/meet-firefly-video-model-ai-powered-creation-with-unparalleled-creative-control\"},\". Seedance 2.0 arrived with the most drama: within days of its \",{text:\"release in China\",href:\"https://arxiv.org/abs/2604.14148\"},\", \",{text:\"Axios reported a Disney cease-and-desist letter\",href:\"https://www.axios.com/2026/02/13/disney-bytedance-seedance\"},\". Veo 3.1 led with native, synchronized audio generation, paired with better camera and narrative control. Grok Imagine claimed many #1 leaderboard spots, while Adobe Firefly Video trained exclusively on licensed content and focused on commercial use.\"]},{type:\"p\",text:\"To test which model generates the best professional-grade outputs, we recruited 12 professional video editors to compare 40 videos from the four models, also scoring them on prompt adherence, visual aesthetics, motion, and camera control. Our results showed that:\"},{type:\"list\",ordered:true,items:[\"Seedance 2.0 led almost every scalar dimension, but only narrowly. Grok Imagine and Veo 3.1 closely matched Seedance 2.0's performance, while Adobe Firefly Video trailed by a large margin.\",\"The top three models each performed best on different prompt types. Seedance 2.0 scored highest on dynamic cinematic motion, Grok Imagine on human subjects, and Veo 3.1 on low-motion product and mood shots.\",\"All models still showed physical glitches and realism issues. Even the strongest outputs exhibited various motion, continuity, and realism failures.\",\"Image references improved visual aesthetics, but reduced controllability. To prioritize the visual look and feel of a video, consider adding reference images to your prompts.\"]},{type:\"p\",text:\"We evaluated four video models across a set of 10 prompts, designed to test a set of quality aspects for video generation, including prompt adherence, model quality, camera shot quality, and visual aesthetics. Evaluators judged each output across five dimensions: physical glitches and issues, prompt adherence, motion quality, camera shot quality, and visual aesthetics. Then, they compared the video outputs in a tournament-style, pairwise ranking.\"},{type:\"p\",text:\"Seedance 2.0 finished first overall, but the margin was narrow, and the best-performing model changed by prompt type. The expert reviews showed where current video generation models do well and where they still lag.\"},{type:\"h2\",text:\"Seedance 2.0, Grok Imagine, and Veo 3.1 finished in a near-tie\"},{type:\"p\",text:\"Seedance 2.0 had the highest average score in the study, but it was not a dominant winner. Across 10 prompts, Seedance 2.0 won 4. Grok Imagine won 3. Veo 3.1 won 3. Adobe Firefly Video won 0.\"},{type:\"image\",slot:\"image1\",caption:\"Average score across all dimensions, on a 5-point scale. Seedance 2.0 leads the field, but by a fraction of a point over Grok Imagine and Veo 3.1.\"},{type:\"p\",text:\"That makes Seedance 2.0 the aggregate leader, but not a model that clearly separated from the rest of the field. Its advantage over Grok Imagine was only +0.07 on a 5-point scale. If you look into model performance on individual prompts, the results are also close: Seedance 2.0 won 4 out of 10 prompts, while Grok Imagine and Veo 3.1 both won 3 out of 10.\"},{type:\"image\",slot:\"image2\",caption:\"Prompt-level winners across the 10 prompts. Seedance 2.0 won 4, Grok Imagine and Veo 3.1 won 3 each, Adobe Firefly Video won none.\"},{type:\"p\",text:\"The average score can make the race look cleaner than it was. Seedance 2.0, Grok Imagine, and Veo 3.1 finished within a fraction of a point of each other, so the top of the leaderboard reads as a near-tie rather than a decisive win.\"},{type:\"h2\",text:\"Adobe Firefly Video trailed the field across every dimension\"},{type:\"p\",text:\"The dimension-level scalar results were more favorable to Seedance 2.0. It led in almost all measured dimensions, with the only exception being a -0.02 point loss to Veo 3.1 in Motion Quality.\"},{type:\"image\",slot:\"image3\",caption:\"Dimension-level scalar scores. Seedance 2.0 leads every measured dimension except Motion Quality, where Veo 3.1 edges it by 0.02.\"},{type:\"p\",text:\"Meanwhile, Adobe Firefly Video trailed by a large margin in all categories. It did not win any of the 10 prompts and consistently lagged behind the other models. In this dataset, Adobe Firefly Video was not competitive with the top three frontier video models.\"},{type:\"image\",slot:\"image4\",caption:\"Ranking distribution by model. Seedance 2.0 took the most 1st-place finishes but landed 3rd half the time; Grok Imagine ranked 1st or 2nd in 80% of prompts.\"},{type:\"p\",text:\"The ranking distribution tells a similar story. Seedance 2.0 and Grok Imagine reached nearly identical average win rates through opposite behaviors. Seedance 2.0 was the high-ceiling, more polarizing pick: it earned the most 1st-place finishes (4 of 10 prompts) and never finished last, but landed in 3rd place half the time, with little in between. Grok Imagine was the more consistent top-half performer, ranking 1st or 2nd in 80% of prompts, though it occasionally fell to 4th (2 of 10 prompts).\"},{type:\"h2\",text:\"Image references improved visual aesthetics, but reduced controllability\"},{type:\"p\",text:\"Adding reference images to prompts improved visual aesthetics, but reduced controllability. Average visual aesthetics increased from 3.04 to 3.47, a gain of +0.43. But prompt adherence fell from 3.07 to 2.67, a drop of -0.40. The reference image helped the outputs look better, but it also made the models less responsive to the written prompt.\"},{type:\"table\",headers:[\"Dimension\",\"Text only\",\"Text + image\",\"Change\"],rows:[[\"Visual Aesthetics\",\"3.04\",\"3.47\",\"+0.43\"],[\"Prompt Adherence\",\"3.07\",\"2.67\",\"-0.40\"]]},{type:\"p\",text:\"That tradeoff showed up at the model level too. Three of four models got worse. Seedance 2.0, the text-to-video leader, fell the most, dropping -0.72. The only model that improved was Adobe Firefly Video, which gained +0.57. The reference image appears to improve surface-level aesthetics while making the model harder to steer.\"},{type:\"image\",slot:\"image5\",caption:\"Effect of adding a reference image, per model. Three of four models got worse at following the prompt; only Adobe Firefly Video improved, gaining +0.57.\"},{type:\"p\",text:\"For Adobe Firefly Video, adding images to the prompt noticeably improved the Elo rating of the model's output. This suggests image references can raise output quality for a model that is further from the frontier.\"},{type:\"callout\",text:\"For video creatives: when look and feel are your top priority, include reference images. But understand it can make the model harder to steer. Keep the written prompt simple and let the image carry the style.\"},{type:\"h2\",text:\"All models still suffered from physical glitches and realism issues\"},{type:\"p\",text:\"Even when the outputs were strong, all models still showed physical glitches and realism issues. When asked to identify these issues in the videos, most participants were able to identify multiple issues in all of the generated videos.\"},{type:\"p\",text:\"Even the strongest outputs were not clean. The two clips below were among the best-rated in the study, yet evaluators still flagged multiple issues in each (representative, not comprehensive):\"},{type:\"video\",slot:\"video1\",caption:\"Veo 3.1, 61% win rate. Prompt: a professional news anchor in a grey suit at a modern studio desk delivers a short news line to camera with natural lip movement, static medium shot, synchronized audio.\"},{type:\"list\",ordered:false,items:[\"Camera movement (0:03-0:08): 'slight upward camera movement, which would not happen in a news programme either.'\",\"Hands (0:04-0:06): 'The pen on his right hand glitches and distorts as he moves his hands.'\",\"Body and edges (0:03-0:05): 'Very slight edge issues with his shoulders, but nothing someone like me (a VFX sup) would notice.'\"]},{type:\"p\",text:\"The second clip, despite topping its prompt, drew the same kind of physics complaints (representative examples, not comprehensive):\"},{type:\"video\",slot:\"video2\",caption:\"Seedance 2.0, 78% win rate. Prompt: a direct overhead bird's-eye view of a busy four-way intersection, pedestrians crossing and cars moving through as the signal changes, camera slowly descending and rotating overhead.\"},{type:\"list\",ordered:false,items:[\"Duplicate vehicle (0:01.967): 'On the left-hand side, a duplicate black car right behind the original one.'\",\"Traffic (full video): 'All cars are going at the same time, causing wrecks;' 'No visible signal or lights changing for traffic.'\",\"Vehicle glitch (0:01-0:07): 'A black car entering from the left side of the intersection appears unusually elongated.'\",\"Pedestrian glitch (0:06-0:08): 'several instances where pedestrians on the sidewalks merge into one another.'\"]},{type:\"p\",text:\"This was the shared failure mode across the benchmark. Even though the models have improved on overall scene, mood, and visual style, they still break down in the details that make a video physically believable. Physical realism remains a major weakness even for the best models. If you are a creative professional generating videos with AI, make sure you plan for manual VFX cleanup on hands and props, or keep clips short to limit drift.\"},{type:\"h2\",text:\"Without a clear winner, the models showed specialization\"},{type:\"p\",text:\"Because the top three models were close, the clearer pattern is specialization by prompt type. Seedance 2.0 performed best on dynamic, high-energy cinematic shots. Veo 3.1 and Grok Imagine performed well on static or slower movement shots. Grok Imagine specialized in human details, while Veo 3.1 worked great for product shots and object showcase.\"},{type:\"p\",text:\"Specifically, Seedance 2.0 was strongest when the prompt required dynamic action or cinematic motion. It performed best on the alley chase, night market, and wizard prompts, and was the least-bad option on traffic.\"},{type:\"video\",slot:\"video3\",caption:\"Seedance 2.0, rated well above the field. Prompt: a person in a dark hoodie sprints down a narrow rain-soaked alley at night, handheld camera chasing at a tilted Dutch angle, neon reflections, teal-and-orange grade, fast motion.\"},{type:\"p\",text:\"Grok Imagine stood out on human performance, performing best on the barista prompt. Its strength in this dataset was in scenes centered on people's facial expressions and body movement.\"},{type:\"video\",slot:\"video4\",caption:\"Grok Imagine, rated highest among the models. Prompt: a young barista with curly red hair, freckles, and a green apron wipes a glass cup behind a cafe counter, warm tungsten lighting, static medium close-up, cinematic film-grain look.\"},{type:\"p\",text:\"Veo 3.1 performed best on lower-motion, mood-driven, product-oriented prompts. It won the mug, sneaker, and candle prompts, where lighting, object presentation, and atmosphere mattered more than high-energy motion.\"},{type:\"video\",slot:\"video5\",caption:\"Veo 3.1. Prompt: a single lit candle on a dark wooden table in an otherwise black room, warm glow on the wax, a faint wisp of smoke curling upward, camera holds still.\"},{type:\"p\",text:\"Noticeably, Veo 3.1 was the lone exception to Seedance 2.0's lead. It received slightly higher scalar rating than Seedance 2.0 on Motion Quality and tied it on Visual Aesthetics. That complicates the dimension-level story: the three frontier models performed closer than the aggregate leaderboard makes it look.\"},{type:\"p\",text:\"The main takeaway is that the best model depended on the type of video being generated. Seedance 2.0 had the strongest average, but the prompt-level winners showed that model choice should change by workflow pattern.\"},{type:\"h2\",text:\"Conclusion\"},{type:\"p\",text:\"Seedance 2.0 was the strongest overall model in this video head-to-head study, but it was not a runaway winner.\"},{type:\"p\",text:\"It won the highest average score and led in almost all measured dimensions. But across 10 prompts, it won only 4. Grok Imagine and Veo 3.1 each won 3. Seedance 2.0's margin over Grok Imagine was only +0.07, and its head-to-head pattern against Veo 3.1 was effectively split.\"},{type:\"p\",text:\"The more useful conclusion is that the models specialize. Seedance 2.0 was strongest for high-energy cinematic motion. Grok Imagine was strongest for human performance and identity-heavy scenes. Veo 3.1 was strongest for low-motion product, mood, and lighting shots. Adobe Firefly Video trailed the field in this dataset.\"},{type:\"p\",text:\"The benchmark also shows that AI video is still constrained by physical glitches, realism issues, and controllability tradeoffs. Image references improved aesthetics, but reduced prompt adherence.\"},{type:\"p\",text:\"The takeaway: Seedance 2.0, Grok Imagine, and Veo 3.1 are effectively neck and neck, and the best model depends on the shot.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"Twelve professional video editors sourced from the Contra Labs network evaluated 40 AI-generated video outputs across 10 prompts. The prompt set was designed to cover a range of creative video use cases: dynamic cinematic motion, human performance, product and object shots, mood-driven scenes, stylized visual effects, and physically complex scenes where temporal consistency and realism are difficult to maintain.\"},{type:\"p\",text:\"The study compared four video generation models: Seedance 2.0, Grok Imagine, Veo 3.1, and Adobe Firefly Video. Each prompt was run through all four models, producing four outputs per prompt. Five prompts were text-to-video tasks, generated from a written prompt only. Five prompts were image-to-video tasks, generated from a reference image plus a written prompt. For the image-to-video condition, reference images were generated and iterated using ChatGPT Image until they met the quality bar needed for the evaluation. Outputs were presented blind as Output A-D, so evaluators judged the videos without seeing which model produced each clip.\"},{type:\"p\",text:\"The prompt set spanned several creative use cases. Three examples:\"},{type:\"table\",headers:[\"Sample Prompts\",\"What it tested\"],rows:[[\"A white ceramic mug tips over on a polished marble kitchen counter and spills hot black coffee, the liquid spreading and dripping over the edge as steam rises. Soft morning light from a window on the left. Static medium shot at counter height, shallow depth of field, warm natural color grade.\",\"Liquid physics, steam, object interaction, lighting, and static composition.\"],[\"A slow crane shot rising from street level up over a crowded Asian night market at dusk, revealing rows of glowing red lanterns and food stalls with steam, people walking below. Begins as a low eye-level shot and ends on a high wide establishing shot. Saturated neon color palette, rich contrast.\",\"Smooth crane movement, shot-scale transition, crowd consistency, lighting, and composition.\"],[\"A robed wizard raises one hand and conjures a glowing orb of magical energy that swells and crackles with arcs of blue-and-violet light, streams of glowing particles and embers swirling outward and trailing through the air as wisps of smoke curl around the hand. A dark stone chamber lit only by the spell's shifting glow. Stylized, painterly fantasy look with dramatic rim lighting, rich saturated color, slow-motion energy. Static medium shot, eye level.\",\"Particle effects, stylized lighting, color consistency, motion, and fantasy visual coherence.\"]]},{type:\"p\",text:\"Evaluators completed three tasks for each prompt. First, they identified visible glitches and physical realism issues, describing what was wrong and what should change. These annotations captured artifacts such as warping, flicker, hallucinated details, object deformation, unnatural motion, camera problems, prompt mismatches, and failures of physical plausibility. Second, evaluators rated each output individually on four scalar dimensions using a shared 1-5 rubric: Prompt / Reference Adherence, Motion Quality, Camera & Shot Quality, and Visual Aesthetics. Third, evaluators completed a blinded pairwise tournament across the four outputs for the same prompt, choosing the stronger output in each head-to-head comparison.\"},{type:\"p\",text:\"We aggregated the results across prompts to compare average model performance, prompt-level winners, dimension-level scores, ranking distribution, and derived pairwise win rates. Qualitative comments were used to interpret why outputs succeeded or failed, especially around motion stability, physical realism, visual polish, prompt adherence, and production-readiness.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"This study is limited to 10 prompts, four models, and 12 professional video editors, so the results should be read as directional rather than definitive. Model rankings may change with different prompts, different model versions, different generation settings, longer or shorter clips, or a different evaluator panel.\"},{type:\"p\",text:\"The comparison reflects first-pass output quality under the study setup, not each model's ceiling under extensive prompt iteration, manual selection, editing, or post-production. The prompt set intentionally covered several creative use cases, but it does not represent the full range of video generation workflows, such as long-form narrative continuity, multi-shot editing, brand-safe production pipelines, audio-first generation, or complex client revision cycles.\"},{type:\"p\",text:\"The evaluation also emphasizes visible video quality rather than every production constraint. Editors judged prompt / reference adherence, motion, camera work, visual aesthetics, and physical glitches, but the study did not separately score factors such as audio quality, editability, latency, cost, licensing, safety controls, or downstream integration into professional tools.\"},{type:\"p\",text:\"Evaluator judgment is inherently subjective. The shared rubric helped anchor scoring, but professional taste, tolerance for artifacts, and expectations for production-ready video can vary. We therefore place more weight on patterns that repeated across prompts, models, and evaluator comments than on any single score or individual matchup.\"}]};const designCrit={slug:\"design-crit\",title:\"Introducing Design Crit: we taught AI to judge design like a designer.\",type:\"Research\",publishedDate:\"2026-06-17\",readMinutes:7,subtitle:\"Ten professional designers ranked four frontier image models across nine dimensions of real design work. The models can make the work. Nothing on the market could reliably judge it, until we trained on the right data.\",abstract:\"Design Crit is a designer-annotated preference dataset for AI-generated graphic design, recording one rating per design-quality criterion instead of one verdict per image. No off-the-shelf judge cleared 55% agreement with a five-designer panel, where a human designer hits 74.1%. A small model trained on Design Crit reaches 0.611, closing roughly 46% of the gap between chance and the human ceiling, and on the hardest 3-2 splits it already ties a human.\",hero:false,coverImage:null,seoTitle:\"Design Crit: teaching AI to judge design like a designer \\xb7 Contra Labs\",seoDescription:\"Ten designers ranked four frontier image models across nine criteria. No off-the-shelf judge beat 55% agreement with the panel. A model trained on Design Crit closes 46% of the gap to human.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Ten designers ranked four image models on nine criteria, one rating per axis.\",\"No off-the-shelf judge beat 55% agreement. The best hit 54.3%; a human hits 74.1%.\",\"Scaling doesn't help: Qwen3-VL at 4B, 8B, and 32B all stall near 51–54%.\",\"One in ten finished designs carried a major hallucination.\",\"Trained on Design Crit, a model reaches 61.1% agreement with the panel and ties a human on the hardest splits.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Models\",value:\"FLUX.2 max, GPT Image 1.5, Nano Banana 2, Seedream 5.0 Lite (shown blind, code-named)\"},{label:\"Raters\",value:\"10 professional designers from Contra's network, split into aesthetics and fidelity cohorts of 5\"},{label:\"Method\",value:\"9 criteria \\xb7 80 prompts each \\xb7 1,600 ratings per criterion \\xb7 all 6 pairwise comparisons aggregated into 4-way rankings\"},{label:\"Judges tested\",value:\"9 pre-trained systems (HPSv2.1, PickScore-v1, LAION-Aesthetic-V2 + 6 open-weight VLMs)\"}]},{type:\"video\",slot:\"video1\",caption:\"Design Crit (Criteria-Resolved Image Taste), a Lica \\xd7 Contra collaboration.\"},{type:\"p\",text:\"Everyone keeps talking about taste. But you can't improve what you can't measure. So we measured it. Design Crit is a dataset of ten professional designers ranking four frontier image models across nine dimensions of real design work. The models can produce the work. Nothing on the market can reliably judge it. The good news is that what they're missing can be learned.\"},{type:\"p\",text:'Text-to-image models have matured from research demos into deployed design tools, shipping posters, social posts, UI mockups, and logos straight into production. But the preference data that trains and grades them was collected on photo-style, scene-based generation, where a single \"which one is better?\" verdict captures almost everything that matters, like sharpness and prompt alignment.'},{type:\"p\",text:\"Designers, however, don't judge a design on a single characteristic, and design doesn't collapse into one axis. A graphic design can nail the spatial structure and butcher the color intent. Another can satisfy the brief and break the typographic hierarchy. Both get the same overall thumbs-up, for completely different reasons. The signal designers actually use lives in the dimensions a single label averages away.\"},{type:\"p\",text:\"So we built the missing layer. Design Crit (Criteria-Resolved Image Taste) is a designer-annotated preference dataset for AI-generated graphic design. It records one rating per design-quality criterion instead of one verdict per image. That lets a system score a design on every axis at once, make sharper calls than a single label allows, and in time learn to weigh those axes the way a designer would.\"},{type:\"h2\",text:\"10 designers, 4 models, 9 ways to be wrong\"},{type:\"p\",text:\"We put four current text-to-image models head to head. FLUX.2 max, GPT Image 1.5, Nano Banana 2, and Seedream 5.0 Lite, all shown to raters behind blind code-names so no one was anchoring on a brand.\"},{type:\"p\",text:\"Ten professional designers, recruited through Contra's network of creative experts, split into two cohorts of five. One cohort judged aesthetics, covering overall preference, mood and tone, visual hierarchy, color harmony, and typographic craft. The other judged description fidelity, covering overall preference, color accuracy, spatial accuracy, and whether the text the brief asked for was actually rendered.\"},{type:\"image\",slot:\"image1\",caption:\"One of the AI-generated graphic designs in the set. Designers rated work like this one axis at a time, not with a single overall verdict.\"},{type:\"p\",text:\"We narrowed the nine criteria from a longer list through pilot studies and interviews, building on Contra's Human Creativity Benchmark and keeping the axes designers consistently treated as separate.\",parts:[\"We narrowed the nine criteria from a longer list through pilot studies and interviews, building on \",{text:\"Contra's Human Creativity Benchmark\",href:\"https://contralabs.com/human-creativity-benchmark\"},\" and keeping the axes designers consistently treated as separate.\"]},{type:\"p\",text:\"Nine criteria, 80 prompts each, every prompt scored by five designers across four models, for 1,600 ratings per criterion. Designers ran all six pairwise comparisons per prompt, and we aggregated those into strict four-way rankings. On the two overall-preference tracks they also flagged every image for hallucination.\"},{type:\"p\",text:\"These ratings come from working professionals, and they fill the part of the stack everyone training these models has been flying blind on.\"},{type:\"h2\",text:\"Design is subjective, but real and consistent\"},{type:\"p\",text:\"A fair question is whether designers just don't agree, leaving no signal to learn. We tested that directly, checking whether designer agreement exceeds what random raters would produce, against exact null distributions.\"},{type:\"p\",text:'They do agree. Designers agree on good design about as much as people agree on their favorite movie, and less than crowds agree on which photo is sharper. And the way they disagree is healthy. They share a rough sense of \"good,\" with some personal variation on top. There are no rival camps with opposite taste. That\\'s exactly the kind of pattern a model can learn.'},{type:\"image\",slot:\"image2\",caption:\"Where design sits on the subjective-to-objective scale: more agreement than favorite-movie picks, less than judging which photo is sharper.\"},{type:\"p\",text:\"But that agreement isn't even across the dimensions. We measured how often designers landed on the same call for each criterion, and the gap is wide. The axes you can check against the brief draw the tightest agreement, whether the requested text actually rendered, whether the layout is right, whether the colors match what was asked for. The axes that come down to pure feel draw the least, with color harmony at the bottom.\"},{type:\"p\",text:\"The clearest read is the matched pairs. Designers agree far more on whether the right text rendered than on whether the type is well set. They agree more on whether the requested color appeared than on whether the colors sit well together. Same subject each time, the checkable version high, the felt version low. The signal is real on every axis. It just gets noisier the more the call comes down to taste.\"},{type:\"image\",slot:\"image3\",caption:\"Designer agreement by criterion (Kendall's τ). Checkable axes like text rendering rank highest; felt axes like color harmony rank lowest.\"},{type:\"h2\",text:\"No off-the-shelf judge beats a coin flip\"},{type:\"p\",text:\"So the signal is real. The question is whether anything on the market can read it. We benchmarked nine pre-trained systems as design judges. Three were dedicated preference and aesthetic scorers (HPSv2.1, PickScore-v1, LAION-Aesthetic-V2) and six were open-weight vision-language models prompted to pick the better image.\"},{type:\"p\",text:\"Not one cleared 55% agreement with the five-designer majority. Chance is 50%. The best system, HPSv2.1, was trained on more than 640,000 human image comparisons, and it lands at 54.3%. LAION-Aesthetic-V2 actually scores below chance. A human designer agrees with the panel 74.1% of the time. Every machine judge sits in the dead zone just above a coin flip.\"},{type:\"image\",slot:\"image4\",caption:\"Agreement with the five-designer majority. Every off-the-shelf judge clusters just above chance; a human designer sits far above at 74.1%.\"},{type:\"h2\",text:\"You can't compute your way to taste\"},{type:\"p\",text:\"Scaling doesn't move the number. Qwen3-VL at 4B, 8B, and 32B all land between 51% and 54%. The reason is a trade-off. Bigger models carry less position bias, so their pick barely changes when you swap the order of the two images. They're more internally consistent. But that consistency buys no accuracy. On the calls they commit to, the bigger models are no better, and a little worse. Smaller models lean on position more, yet the calls they do commit to are sharper. The more a model leans on position, the better it judges when it doesn't (Spearman ρ = +0.94), so the two effects cancel and the total never moves. The bottleneck is the data.\"},{type:\"image\",slot:\"image5\",caption:\"Model size vs. agreement for Qwen3-VL at 4B, 8B, and 32B. Scaling the model leaves accuracy flat between 51% and 54%.\"},{type:\"h2\",text:\"One in ten designs hallucinates something the prompt never asked for\"},{type:\"p\",text:\"Reading design isn't the only place the models slip. While they ranked the designs, the same designers flagged every image on the overall-preference tracks for hallucination, meaning elements that drifted from the brief or had nothing to do with it. Across 1,600 flags per cohort, about 55% came back clean, 35% minor, and 10% major. One in ten finished designs carried a major hallucination, something the prompt never asked for. These are the kinds of failures a designer catches at a glance and the model that made them does not.\"},{type:\"image\",slot:\"image6\",caption:\"Hallucination flags across 1,600 designs per cohort: 55% clean, 35% minor, 10% major.\"},{type:\"h2\",text:\"Train on the data, and half the gap disappears\"},{type:\"p\",text:\"Then comes the turn. We trained a small pairwise-difference head on top of a frozen vision-language encoder, with no fine-tuning of the backbone, a deliberately modest model, directly on Design Crit.\"},{type:\"p\",text:\"It reaches 0.611 agreement with designers. That closes roughly 46% of the entire gap between a coin flip (0.500) and the human ceiling (0.741), and it's the first configuration in our sweep to clear the noise floor that standard regularization couldn't budge. The lesson from the benchmark holds in reverse. The signal was always there. It just had to be trained on the right data instead of borrowed from photo preference.\"},{type:\"image\",slot:\"image7\",caption:\"A small model trained on Design Crit reaches 0.611, closing about 46% of the gap between chance and the human ceiling.\"},{type:\"h2\",text:\"On the genuinely hard calls, it already ties a human\"},{type:\"p\",text:\"Roughly half of all pairwise comparisons are 3-2 splits, cases where the designers themselves are nearly evenly divided and even a perfect predictor is partly guessing. Those are the calls that actually test judgment.\"},{type:\"p\",text:\"On exactly those cases, a model trained on Design Crit scores 0.602 against a human ceiling of 0.600. When the panel splits three to two, even one designer only agrees with the majority three times in five, and the model now matches that. The gap to human agreement stays wide on the cases designers find easy. On the ones they find hardest, it shrinks to almost nothing.\"},{type:\"image\",slot:\"image8\",caption:\"On the hardest 3-2 splits, the Design Crit model (0.602) matches the human ceiling (0.600).\"},{type:\"h2\",text:\"Why it matters\"},{type:\"p\",text:\"Design Crit (Criteria-Resolved Image Taste) lets you build a decision layer for design generation. Its criterion-level structure means you can route between generators by what a job actually needs. Pick the model that's strongest on typography for a logo, or on spatial accuracy for a layout, rather than trusting one aggregate score. The same structure works as supervision for training preference judges and reward models that optimize for specific design dimensions rather than a blurry average.\"},{type:\"p\",text:\"The headline finding is blunt. AI can generate design, but it cannot yet reliably tell good design from bad, and no amount of scale fixes that on its own. The hopeful finding is that the missing signal, taste, is real and can be learned from expert data. That's the layer Contra's network is built to provide.\"},{type:\"p\",text:\"Our first Design Crit dataset “TASTE” is published on arXiv: arxiv.org/abs/2605.20731\",parts:[\"Our first Design Crit dataset “TASTE” is published on arXiv: \",{text:\"arxiv.org/abs/2605.20731\",href:\"https://arxiv.org/abs/2605.20731\"}]},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"The sample is small. Each prompt was rated by five designers, enough to measure agreement and rule out noise but not enough to be sure of any single comparison. Each criterion used its own set of 80 prompts, so no design was ever rated on two criteria at once. That kept each rating clean, but it means we can't see how one designer weighs color against typography on the same design, because no one judged the same design on both. Every prompt was in English, so taste across languages isn't captured here. And the nine criteria cover a lot, but not everything. Accessibility, brand consistency, motion, and audience fit are all natural axes to add as the work grows.\"},{type:\"h2\",text:\"Future research\"},{type:\"p\",text:\"The obvious next move is to run this at a wider scale, with more designers per prompt, more languages, and the criteria expanded. Rating the same designs on every axis might reveal how designers balance color against hierarchy or fidelity against feel, the trade-offs a single score hides.\"},{type:\"p\",text:\"So far we've shown the signal can be learned as a judge. The open question is whether it makes models better designers. Training a generator against these per-dimension rewards could push on typography or color directly, then show whether the work actually improves.\"}],notionId:\"375df2b6-cc6b-802e-af18-cc89e33ebf18\",updatedAt:\"2026-06-17T00:00:00Z\"};const codeEditorBattle={slug:\"code-editor-design-battle\",title:\"Cursor took 60% of head-to-heads. Claude Code took 63% of client meetings.\",type:\"Benchmark\",publishedDate:\"2026-05-29\",readMinutes:6,subtitle:\"Four coding tools, 24 outputs, five working designers. The tool designers preferred to look at and the tool they'd put their name on turned out to be different.\",abstract:\"Cursor won the head-to-head tournament at 60%. Claude Code won the client-readiness vote at 63%. Antigravity and Codex split the rest. Side-by-side preference and client readiness run on different logic, and no tool cleared the bar on mobile.\",hero:false,coverImage:null,seoTitle:\"Cursor vs. Claude Code vs. Codex vs. Antigravity, judged by working designers \\xb7 Contra Labs\",seoDescription:\"We ran 24 outputs from Cursor, Claude Code, Codex, and Antigravity past five working designers. Cursor took 60% of head-to-heads. Claude Code took 63% of client meetings.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Cursor won the head-to-heads: 60% pairwise win rate, top Elo (1575).\",\"Client readiness flipped it: Claude Code 63%, Antigravity 53%, Cursor 47%, Codex 30%.\",\"Pairwise wins reward surface polish; client readiness rewards defensible work.\",\"No tool led every format: Cursor took landing pages, Antigravity web apps.\",\"Mobile was weakest: no tool cleared a 3.0 composite out of 5.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Tools\",value:\"Cursor (composer-2.5), Claude Code (claude-sonnet-4-6), OpenAI Codex (gpt-5.5-medium), Google Antigravity (gemini-3.5-flash-high)\"},{label:\"Briefs\",value:\"6 fictional client briefs \\xb7 2 landing pages, 2 mobile apps, 2 web apps\"},{label:\"Outputs\",value:\"24 live HTML pages \\xb7 evaluated as interactive artifacts\"},{label:\"Evaluators\",value:\"5 working designers from Contra's top-earning talent\"}]},{type:\"image\",slot:\"image1\",caption:\"Four coding tools, 24 outputs, five working designers. Where their pairwise picks and their client-meeting picks parted ways.\"},{type:\"p\",text:\"The SF Standard ran a headline: “'Engineer' is so 2025. In AI land, everyone's a 'builder' now.” Figma's own 2025 report found 56% of non-designers are now performing design-centric tasks. The conclusion seems obvious. The tools have caught up, the role is dissolving, anyone can ship beautiful interfaces.\",parts:[\"The SF Standard ran a headline: \",{text:\"“'Engineer' is so 2025. In AI land, everyone's a 'builder' now.”\",href:\"https://sfstandard.com/2026/03/05/engineer-2025-ai-land-everyone-s-builder-now/\"},\" Figma's own 2025 report found \",{text:\"56% of non-designers are now performing design-centric tasks\",href:\"https://www.figma.com/blog/2025-shifting-roles-report/\"},\". The conclusion seems obvious. The tools have caught up, the role is dissolving, anyone can ship beautiful interfaces.\"]},{type:\"p\",text:\"The interfaces all look the same. Give the same prompt to any of these tools and what comes back is the same left-rail sidebar, the same rounded card grid, the same indigo accent that's become the unofficial flag of AI-generated interfaces. Designers have started calling it “product slop.” The tools give you the average of what they've seen because nothing in the input asks them not to.\",parts:[\"The interfaces all look the same. Give the same prompt to any of these tools and what comes back is the same left-rail sidebar, \",{text:\"the same rounded card grid, the same indigo accent\",href:\"https://www.banani.co/blog/vibe-designing\"},\" that's become the unofficial flag of AI-generated interfaces. Designers have started calling it \",{text:\"“product slop.”\",href:\"https://medium.com/@Rythmuxdesigner/the-anti-vibe-coding-movement-why-designers-are-rejecting-ai-generated-mediocrity-in-2026-b241ce60a369\"},\" The tools give you the average of what they've seen because nothing in the input asks them not to.\"]},{type:\"image\",slot:\"image2\",caption:\"Two takes on the same Patina brief. Left, an output one designer called “the clearest articulation of Patina's concept… the kind of design that makes you slow down rather than scroll past.” Right, one that drew the opposite verdict: “the typography is inconsistent, the border radiuses are inconsistent, the spacing and shadows are chaotic… it looks so template-ish.”\"},{type:\"p\",text:\"AI coding tools can produce design. The question is whether a designer would put their name on what comes back. We ran 24 outputs from Cursor, Claude Code, Codex, and Antigravity past five working designers in three rounds: blind tournament, individual ratings, then the one that decides everything. Would you present this to a client?\"},{type:\"p\",text:\"The answer split.\"},{type:\"image\",slot:\"image3\",caption:\"The split in one card. Cursor takes the tournament; Claude Code takes the client meeting.\"},{type:\"p\",text:\"Cursor won the head-to-head tournament with about a 60% overall pairwise win rate and the highest Elo rating at 1575. In a side-by-side comparison, designers picked Cursor more often than any other tool. Claude Code came second at ~50%, Antigravity third at ~45%, and Codex last at ~40%.\"},{type:\"image\",slot:\"image4\",caption:\"Overall pairwise win rate across head-to-head matchups per tool.\"},{type:\"p\",text:\"But when designers were asked whether they'd present the output to a client, Claude Code led at 63%. Antigravity followed at 53%. Cursor, the pairwise winner, dropped to 47%. And Codex landed at 30%. Designers declined to present it seven times out of ten.\"},{type:\"p\",text:\"The tool designers preferred to look at and the tool they'd trust with their name on it turned out to be different.\"},{type:\"image\",slot:\"image5\",caption:\"Client readiness flips the leaderboard. Claude Code drew the most yeses (63%), Cursor split evenly (47%), and designers declined Codex seven times in ten.\"},{type:\"h2\",text:\"What wins side-by-side vs. what wins the room\"},{type:\"p\",text:\"The gap between pairwise preference and client readiness tells you something about how designers actually evaluate work. In a tournament, they're comparing surfaces: which layout feels tighter, which color palette reads better, which typography has more presence. Client readiness seems to be an entirely different filter, with designers weighing whether they can defend every decision in the output, and if there's anything that would make them lose credibility.\"},{type:\"image\",slot:\"image6\",caption:\"Vaultra, the crypto-culture landing brief. Designers said this looked “bold and modern… it looks less like a typical crypto site” while also listing fixes: “I'd update the layout, typography, some of the colors and add icons; I don't like the arrow-style in the CTA.”\"},{type:\"p\",text:\"When designers explained why they ranked an output first, the reasons were dominated by usability and visual appeal. When they explained why they'd present something to a client, the reasons shifted toward layout, hierarchy, and whether the output felt like a real product rather than a template.\"},{type:\"p\",text:\"Designers scored outputs lower when they followed the brief but looked dated, and forgave trendy ones that drifted from it. Prompt adherence only got you in the door: outputs scoring below 2.5 on following the brief were called client-ready just 16% of the time. But once an output cleared that floor, how current it looked drove client readiness and perceived maturity more than fidelity to the brief did.\"},{type:\"h2\",text:\"Landing pages, mobile apps, web apps. Three different contests\"},{type:\"p\",text:\"The overall rankings don't convey the whole story, which is that no tool is reliably good. On a per-brief basis, Claude Code won 14 of 15 matchups on Mise (a mobile wardrobe app) and 12 of 15 on Lumen (a web analytics dashboard), but lost all 15 of its matchups on Dial (a mobile coffee-logging app), where not a single evaluator ranked it first, with a dark-mode call that left most text failing basic readability. Antigravity produced the exact mirror image, topping Dial while no evaluator ranked it first on Mise. Every output makes a single aesthetic bet, and when that bet is wrong for the use case, the whole thing collapses no matter how strong the tool is on average. Cursor held steady on most briefs without ever crashing, which is why it leads overall.\"},{type:\"image\",slot:\"image7\",caption:\"Mobile, best case against worst case. Left, a wardrobe output praised as “calm and minimal… close to the Mise brand direction.” Right, a coffee log where “most text fails basic readability standards.” The designer questioned whether dark mode was even the right call.\"},{type:\"p\",text:\"That volatility shows up again when you group by design type. On landing pages, Cursor led with a composite score of 3.65 out of 5. The composite is the average of its four rated dimensions: prompt adherence, usability, visual appeal, and modernity. On web applications, Antigravity took the lead at 3.52. Claude Code scored 3.4 on web apps, close behind. On mobile apps, everything dropped. Cursor led at 2.83, but no tool cleared 3.0.\"},{type:\"image\",slot:\"image8\",caption:\"The rankings reshuffle by format. Cursor leads landing pages (3.65) and mobile (2.83). Antigravity tops web apps (3.52).\"},{type:\"p\",text:\"Mobile was the weakest format across the board. Designers flagged the same problems regardless of tool: inconsistent spacing, navigation that didn't feel native, card layouts that packed too much information into too little space. One designer summarized their reaction to a mobile output by saying it looked like it was built by a template. Consistent padding and spacing problems that wouldn't survive a client presentation.\"},{type:\"h2\",text:\"What kept outputs from clients\"},{type:\"p\",text:\"The reasons for rejecting outputs were more uniform than the reasons for ranking them first: outputs were generic, and layouts needed structural work.\"},{type:\"p\",text:\"“Generic / needs refinement” was the most cited reason across all four tools when designers said they wouldn't present to a client, with Codex drawing 19 mentions, nearly double any other tool. But even the top performers weren't immune. Designers said yes to Claude Code's client readiness 63% of the time, but the “yes” rationales still frequently included caveats about refinement.\"},{type:\"p\",text:\"Layout / hierarchy was the second most common rejection theme. Codex drew 15 mentions, Claude Code drew 9. The complaints were specific: oversized headings wasting viewport space, filter bars that didn't look interactive, hero sections with no product below the fold. One designer described a marketplace output that was entirely a hero with nothing after it. A headline, body text, and then the page ended.\"},{type:\"image\",slot:\"image9\",caption:\"Same Mise brief, two outcomes. Left drew structural complaints: “the top and bottom menus do not feel stable… the information hierarchy needs improvement.” Right won the room: “it focuses on the user's demand… it communicates the brand identity… filters work and it's fast.”\"},{type:\"p\",text:\"Mobile apps drew the toughest feedback. Evaluators pointed to issues with information architecture, visual styles that felt outdated, and outputs not refined enough for the brief. Of the three format types, mobile had the widest gap between what designers expected and what the tools delivered.\"},{type:\"p\",text:\"Designers also classified each output by how far along it felt. Across all four tools, production-ready was the exception: no tool got more than a quarter of its outputs there, and most landed at brainstorming or mockup. Codex barely reached production-ready at all.\"},{type:\"image\",slot:\"image10\",caption:\"Design-stage classification per tool. Production-ready was the exception; most outputs landed at brainstorming or mockup.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"Every tool won something and every tool lost something. Cursor took the most head-to-head matchups but split the room on client readiness. Claude Code drew the most client-ready verdicts but collapsed on briefs that didn't suit it. Antigravity swung between the best output in the set and the worst. Codex trailed on nearly every measure.\"},{type:\"p\",text:\"The finding that matters most is that client readiness and side-by-side preference run on different logic. In the tournament, all four dimensions we rated predicted winning a matchup at similar strength, with prompt adherence marginally the strongest. Client readiness flipped that. Once an output met a baseline of adherence, what mattered was whether it felt current. Whether a designer looked at it and thought, this feels like something shipping today. Prompt adherence wins the side-by-side. Taste wins the client's yes. And the tools that won did so by understanding the product. The ones that lost often produced visually capable work that simply missed what was asked for.\"},{type:\"p\",text:\"So the advice for a designer picking these up today is specific: reach for Cursor on landing pages, Antigravity or Claude Code on web apps, and for mobile, pick whichever you know best and budget real rework since no tool cleared the bar. And treat whatever comes back as a starting point. The tool gives you an opening move. Finishing the work is still the designer's job.\"},{type:\"p\",text:\"The gap between “looks good in a side-by-side” and “I'd put my name on this” is the gap these tools still need to close.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"Five working designers in UI/UX, web, and mobile app design sourced from Contra's top-earning talent evaluated six briefs across three format types: two landing pages, two mobile apps, and two web applications, each set in a distinct product domain (crypto, developer tooling, specialty coffee, analytics, luxury fashion, and curated e-commerce). Briefs were written to professional standards and contained a project overview, objective, target audience, brand identity, mood references, and required screens or sections. No color palettes or typography specs were provided, forcing each tool to make its own aesthetic decisions from the brief's tone and references alone.\"},{type:\"p\",text:\"Each brief was run through all four tools using each tool's default model configuration, producing 24 total outputs:\"},{type:\"list\",ordered:false,items:[\"Cursor — cursor-agent v2026.05.24-dda726e, composer-2.5\",\"Claude Code — v2.1.150, claude-sonnet-4-6\",\"OpenAI Codex — v0.134.0, gpt-5.5-medium\",\"Google Antigravity — v1.0.2, gemini-3.5-flash-high\"]},{type:\"p\",text:\"A single standardized prompt was used per brief across all tools:\"},{type:\"code\",language:\"text\",text:\"You are an expert web developer and visual designer. Build a complete, polished web page based on the user's instructions.\\n\\nTechnical requirements:\\n- Generate a complete and valid HTML document with DOCTYPE, meta charset, and viewport meta tag.\\n- Return raw HTML that can be used directly without any additional processing.\\n- NO frameworks or libraries (React, Vue, Angular, Tailwind, Bootstrap, etc.). Pure vanilla HTML, CSS, and JavaScript only.\\n- When an external dependency is genuinely needed (e.g., an icon set or animation library), load it from UNPKG via a script/link tag.\\n- Use semantic HTML elements (nav, main, section, article, header, footer, etc.).\\n- All interactive elements must have visible hover/focus/active states.\\n- Be accessible: use ARIA labels, sufficient color contrast (WCAG AA), focus-visible styles, and logical tab order.\\n\\nDesign requirements:\\n- Always set an explicit background color on html and body.\\n- Define a cohesive color palette using CSS custom properties on :root.\\n- Establish a clear typographic hierarchy. Import a web font from Google Fonts if it elevates the design.\\n- Use generous whitespace and a consistent spacing rhythm.\\n- Apply subtle visual polish: box-shadows, border-radius, smooth transitions on interactive states.\\n\\nCSS architecture:\\n- Write all styles in a single <style> block in <head>.\\n- Use short, descriptive, flat class names. No deep nesting.\\n- Mobile-first responsive design using modern CSS (Grid, Flexbox, clamp()).\\n\\nInteractivity:\\n- All JavaScript in a single <script> block at the end of <body>.\\n- Use hash-based routing for multi-page navigation so it works inside iframes.\\n- Use localStorage to persist user-entered data.\\n\\nOutput only a markdown code block containing the complete HTML.\\n\\nThe following is the client brief:\"},{type:\"p\",text:\"Outputs were evaluated through an interactive interface where each one could be opened, scrolled, clicked, and fully interacted with as a live artifact. Evaluation followed a blinded, pairwise tournament format, with two side-by-side matchups, then a final comparison between winners, producing a rank order per brief. After ranking, evaluators rated each output individually on four dimensions (Prompt Adherence, Usability, Visual Appeal, and Modernity & Trend Relevance) using a shared 1–5 rubric. Ratings triggered conditional follow-ups to capture what specifically drove the score. Evaluators then classified each output by design stage and noted what changes would be required to make it production-ready.\"},{type:\"image\",slot:\"image11\",caption:\"Evaluation funnel: blind tournament → 1–5 scalar rubric → stage classification → client-readiness verdict.\"},{type:\"p\",text:\"Designers' free-text reasons for not presenting an output to a client were coded into themes using GPT-4o mini, then spot-checked by a member of the team. The seven themes were Layout / hierarchy, Typography / color, Visual polish / aesthetics, Functionality / UX, Brief / prompt alignment, Client-ready foundation, and Generic / needs refinement. We report each theme as the number of evaluator comments that mentioned it. Because these are raw mention counts, they reflect both how often an issue arose and how much detail an evaluator volunteered, so we treat them as indicative rather than exact.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Evaluators interacted with live outputs, but the results reflect first-pass capability, not each tool's ceiling under refinement. Each tool used its own default model, so the comparison is at the product level and differences in output reflect the full stack of model selection, prompt engineering, and UI scaffolding, not the underlying model alone. The briefs are fictional, which removes client feedback loops and real-world constraint negotiation from the equation. Only the design surface was evaluated and did not include code quality, performance, or accessibility. Evaluator preferences carry inherent subjectivity and the rubric anchors judgment but doesn't eliminate taste. The sample is small enough that we treat these findings as directional rather than definitive. Inter-rater reliability across the five evaluators was modest (Krippendorff's α = 0.37 for pairwise rankings, 0.15–0.30 for the scalar ratings), meaning individual scores varied widely between evaluators. We place more weight on patterns across tools and briefs than on any single rating.\"}],notionId:\"36ddf2b6-cc6b-8099-b4bf-cedf6febdb0e\",updatedAt:\"2026-05-29T00:00:00Z\"};const undifferentiatedWork={slug:\"undifferentiated-work-problem\",title:\"Creatives keep telling us the same thing about AI: every output looks the same.\",type:\"Research\",publishedDate:\"2026-05-05\",readMinutes:4,subtitle:\"12 models, 5 creative domains. One repeated complaint from working evaluators: the work all looks the same.\",abstract:\"Convergence on quality. Divergence on taste. Most benchmarks treat evaluator disagreement as noise and average it out. That collapses the signal creative work depends on. Our research measures both as separate signals.\",hero:false,coverImage:null,seoTitle:\"The undifferentiated work problem \\xb7 Contra Labs Research\",seoDescription:\"12 models, 5 domains, one complaint: AI work all looks the same. Why averaging evaluator disagreement destroys the signal creative work needs.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"12 models, 5 creative domains. Evaluators converge on objective criteria, diverge on personal taste.\",\"Agreement (Kendall's W) is high on prompt adherence, lower on visual appeal. Widest gap on brand assets.\",\"Averaging evaluator disagreement collapses the signal creative work depends on.\",\"Models trained on averaged judgments converge on safe defaults. Same brief, same-looking output.\"]},{type:\"factbox\",label:\"How we measured\",rows:[{label:\"Models\",value:\"12 frontier\"},{label:\"Domains\",value:\"5 creative\"},{label:\"Metric\",value:\"Kendall's W on evaluator agreement\"},{label:\"Source\",value:\"Human Creativity Benchmark\"}]},{type:\"p\",text:\"Working creatives across our research keep reaching for the same words to describe what they liked: alive, dynamic, distinctive, real.\"},{type:\"p\",text:\"When AI work has clear failures (broken hierarchy, unreadable type, visible artifacts), evaluators agree. It's straightforward. Beyond that, taste comes into play. Evaluators stop scoring against standards and start scoring against feeling.\"},{type:\"image\",slot:\"image1\",caption:\"Convergence and divergence as two interacting signals. Convergence rises as work approaches production. Divergence stays present where the question shifts to taste.\"},{type:\"h2\",text:\"The agreement gap\"},{type:\"p\",text:\"We measured this directly. Kendall's W (a measure of evaluator agreement) tracks the transition. In ad images, agreement on prompt adherence is high. Agreement on visual appeal is much lower. In brand assets, the gap is wider still. The same evaluators, looking at the same outputs, agree where the criteria are objective and disagree where the criteria are personal.\"},{type:\"image\",slot:\"image2\",caption:\"Same evaluators, same outputs. Agreement is high on objective criteria, much lower on subjective ones.\"},{type:\"p\",text:\"One brand designer evaluating four AI-generated brand visuals put it this way:\"},{type:\"quote\",text:\"Honestly, I feel like all four images could be used as brand visuals. What made me choose some over others was the sense of life: some felt more dynamic, realistic, and human.\"},{type:\"p\",text:\"That sentence describes the entire problem with current AI evaluation.\"},{type:\"h2\",text:\"What averaging destroys\"},{type:\"p\",text:\"Most benchmarks treat evaluator disagreement as noise. Adjudicate, vote, average it out. That works when there's a ground truth, but not for creative work. Mood, conceptual risk, aesthetic direction: the dimensions creatives care about most are precisely the dimensions where professionals legitimately disagree.\"},{type:\"image\",slot:\"image3\",caption:\"Models trained against averaged judgments collapse toward safe defaults. Multiple models given the same brief produce similar work.\"},{type:\"p\",text:\"Models trained against averaged judgments collapse toward safe defaults. Multiple models given the same brief produce similar work. It's the predictable output of evaluation systems that flatten taste into a single quality score.\"},{type:\"h2\",text:\"Two signals, not one score\"},{type:\"p\",text:\"The fix is structural: treat convergence and divergence as separate signals. Convergence captures best practices that models can and should learn (typography, CTA placement, hierarchy). Divergence captures the steerability that creative work depends on. Optimizing on one doesn't guarantee the other, because a model can be technically excellent and creatively flat.\"},{type:\"image\",slot:\"image4\",caption:\"Best-practice fit and steerability as orthogonal axes. Models cluster by where they earn their advantage: strong defaults, strong steerability, or one without the other.\"},{type:\"p\",text:\"If you're building creative tools, this is a product decision before it's a technical one.\"},{type:\"callout\",text:\"This finding is one piece of the Human Creativity Benchmark, our evaluation of 12 frontier models across 5 creative domains, judged by professional creatives.\",href:\"/research/human-creativity-benchmark\",cta:\"Read the full white paper\"}],notionId:\"356df2b6-cc6b-817e-bb77-c1a562446e24\",updatedAt:\"2026-05-05T00:00:00Z\"};const threePhases={slug:\"three-phases-of-the-creative-process\",title:\"The creative process has 3 phases. AI performs very differently in each.\",type:\"Research\",publishedDate:\"2026-04-23\",readMinutes:5,subtitle:\"Ideation, mockup, refinement. AI fits differently at each phase, and the best creatives know where to hand off.\",abstract:\"Creatives open the door wide at ideation, narrow it at mockup, and hold it firmly at refinement. AI fits differently at each stage, and the best practitioners know exactly where to hand off and where to take back control.\",hero:false,coverImage:null,seoTitle:\"The three phases of the creative process \\xb7 Contra Labs Research\",seoDescription:\"How independent creatives use AI differently across ideation, mockup, and refinement. Field notes from Contra Labs.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Working creatives use AI in 3 distinct phases: ideation, mockup, refinement.\",\"AI adoption is highest at ideation, where breadth matters more than precision.\",\"At refinement, the creative's own standards take over and AI output gets discarded the most.\",\"Knowing where to hand off and where to take back control is the new creative skill.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Method\",value:\"Workflow interviews\"},{label:\"Disciplines\",value:\"Brand, web, product, motion\"},{label:\"Phases identified\",value:\"3 (ideation, mockup, refinement)\"},{label:\"Source\",value:\"Contra Labs field research\"}]},{type:\"p\",text:\"Contra Labs has been studying how working creatives integrate AI into their workflows. What emerged is a consistent 3-stage structure: ideation, mockup, refinement. The way creatives use AI shifts significantly at each one.\"},{type:\"image\",slot:\"image1\",caption:\"The way creatives use AI shifts at each phase of the creative process: Ideation, Mockup, Refinement.\"},{type:\"h2\",text:\"Stage 1: Ideation\"},{type:\"p\",text:\"This is where AI adoption is highest and the grip is loosest. Creatives are generating direction, not final artifacts, so handing work to AI carries low stakes. Breadth matters more than precision.\"},{type:\"image\",slot:\"image2\",caption:\"Phase 1: Ideation\"},{type:\"quote\",text:\"Generally I start loose and see what comes up. From there I refine and hone in on what I'm not getting, and adjust prompts to be more in line with my ideas. I think doing this leaves a lot of opportunity for surprise and serendipity.\",cite:\"Sam Allen, motion designer and animator (Google, Apple, TikTok)\"},{type:\"quote\",text:\"Previously, if you didn't know any expert program or didn't know how to draw, expressing something you had in mind was nearly impossible. Now, you can just describe the emotion you are feeling and what you envision and there is a high chance you will convey that vision onto others.\",cite:\"Kamil Betterside, mobile app developer\"},{type:\"quote\",text:\"AI helps me experiment without limits. It's become a kind of creative partner, helping me get from concept to something visually exciting much quicker.\",cite:\"Sana Studio, brand designer\"},{type:\"h2\",text:\"Stage 2: Mockup\"},{type:\"p\",text:\"A direction is chosen. Now it gets built into something real. Creatives use AI to draft, prototype, and assemble references into a coherent artifact. The output starts to have stakes.\"},{type:\"image\",slot:\"image3\",caption:\"Phase 2: Mockup\"},{type:\"quote\",text:\"In my product design workflow, AI helps me turn my ideas into visual concepts and then renders. What used to take me 2 months now takes 2 days.\",cite:\"Blank Space Studio\"},{type:\"quote\",text:\"Once I'm happy with a clip, I could use it throughout the process, as a reference for tone, pacing, and transitions in the brand film, or as visual direction across touchpoints like social cuts, motion loops, or landing pages. It helps keep everything aligned.\",cite:\"Blake Steven, creative director and designer (over $100k in recent earnings)\"},{type:\"quote\",text:\"AI can help provide more real-life product demos without placeholder text or images so that audience and client will get proper understanding. This decreases the time to alignment before creating the final deliverable.\",cite:\"Jithin Kumar, product designer (over $100k earned on Contra)\"},{type:\"h2\",text:\"Stage 3: Refinement\"},{type:\"p\",text:\"This is where AI-generated content gets scrutinized the hardest and discarded the most. A near-final artifact is being edited toward production readiness. Small adjustments carry outsized consequences. The creative's own standards take over.\"},{type:\"image\",slot:\"image4\",caption:\"Phase 3: Refinement\"},{type:\"quote\",text:\"In post-production, I use AI to handle visual refinements such as resizes, retouches, and overall enhancements.\",cite:\"Pablo Lopez, motion designer (Apple, Google, Microsoft, Disney)\"},{type:\"quote\",text:\"I am very specific on details, so I want to retain as much control as I possibly can. I am always looking for tools like Claude that help me by getting ideas out quickly, or doing something that is time consuming, while still allowing me to take over at any point.\",cite:\"Alex Karpodinis, UI/UX and Framer designer\"},{type:\"p\",text:\"That's the pattern. Creatives open the door wide at ideation, narrow it at mockup, and hold it firmly at refinement. AI fits differently at each stage, and the best practitioners know exactly where to hand off and where to take back control.\"}],notionId:\"33adf2b6-cc6b-8108-91f5-c0643029e32b\",updatedAt:\"2026-04-23T00:00:00Z\"};const earnings={slug:\"ai-impact-on-solo-creative-earnings\",title:\"Solo creatives are earning more with AI and staying independent.\",type:\"Research\",publishedDate:\"2026-04-21\",readMinutes:5,subtitle:\"Higher earning potential, more projects, no new hires. The survey from working independents.\",abstract:\"Kyle Panilan closed a $4,000 gap on a single project. Blank Space Studio took on 50% more projects. Better Side builds 10x faster as a solo shop than they used to with a full team. We surveyed independents on Contra about AI and earnings. Here's what came back.\",hero:false,coverImage:null,seoTitle:\"AI impact on solo creative earnings \\xb7 Contra Labs Research\",seoDescription:\"Independent creatives report higher earning potential since adopting AI. More projects, bigger projects, no new hires.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"The majority of independents surveyed report higher earning potential since adopting AI.\",\"Kyle Panilan went from charging $6,000 to $10,000 per project through AI-assisted positioning.\",\"Blank Space Studio took on 50% more projects without adding headcount.\",\"Better Side ships products 10x faster as a solo shop than they used to with a full team.\",\"Same headcount. More capacity. Higher pricing power.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"Independents on Contra\"},{label:\"Method\",value:\"Survey + interviews\"},{label:\"Earnings tier\",value:\"Top earners ($100k+)\"},{label:\"Pattern\",value:\"More capacity, no new hires\"}]},{type:\"p\",text:\"Contra Labs has been studying how real working independents are weaving AI into their creative workflows. The finding that keeps coming back: solo creatives who've adopted AI are earning more, taking on more, and staying solo.\"},{type:\"p\",text:\"Kyle Panilan closed a $4,000 gap on a single project with sharper sales communication. Blank Space Studio took on 50% more projects. Better Side is building products 10x faster as a solo shop than they used to with a full team. We surveyed independent creatives on Contra about AI and earnings. Here's what came back.\"},{type:\"image\",slot:\"image1\",caption:\"The majority of independent creatives surveyed report higher earning potential since adopting AI.\"},{type:\"h2\",text:\"More capacity, not more headcount\"},{type:\"quote\",text:\"AI allows me to have a supportive team even though I work by myself.\",cite:\"Mario Busto, independent film director and editor (over $100k earned on Contra)\"},{type:\"quote\",text:\"By cutting down time spent on admin, copy and early research, I am able to focus more on the creative parts of the workflow, delivering better, more thorough results at the end for my clients, raising the project value and my earning potential.\",cite:\"Darya Batyr, independent creative specializing in brand, web, and design (over $100k earned)\"},{type:\"h2\",text:\"Throughput, not just speed\"},{type:\"p\",text:\"Some creatives poured that time back into capacity.\"},{type:\"quote\",text:\"50% increase. We can take more projects now that the workflow is faster.\",cite:\"Blank Space Studio\"},{type:\"quote\",text:\"I can take on bigger projects, deliver faster, and explore ideas that would've taken days in hours.\",cite:\"Blake Steven, creative director\"},{type:\"image\",slot:\"image2\",caption:\"Work created by Blake Steven on Contra.\"},{type:\"h2\",text:\"Filling skill gaps\"},{type:\"p\",text:\"Others used it to cross skill gaps they'd been working around for years.\"},{type:\"quote\",text:\"I am not a developer, but AI has enabled me to create custom code components so that whatever idea I can come up with, no matter how crazy from a functional or design standpoint, it can be brought to life.\",cite:\"Alex Karpodinis, UI/UX, Framer, motion, and 3D designer (over $100k in recent projects)\"},{type:\"quote\",text:\"I have more confidence to take on more clients or take on clients in fields I'm not completely familiar with because I know I'll be able to adjust fast.\",cite:\"Haley Hoffman, social media specialist and content creator\"},{type:\"h2\",text:\"Pricing power\"},{type:\"p\",text:\"And Kyle Panilan turned recovered cognitive load into sharper client conversations.\"},{type:\"quote\",text:\"I've used OpenAI's ChatGPT to get me from charging $6,000 for a project to charging $10,000 through positioning and articulating the value I've provided to a client.\",cite:\"Kyle Panilan\"},{type:\"p\",text:\"That's a $4,000 gap on a single project, closed by clearer communication.\"},{type:\"quote\",text:\"I am able to develop products for clients literally 10x faster myself in a fraction of the cost compared to big teams.\",cite:\"Better Side, mobile apps & MVPs\"},{type:\"h2\",text:\"The pattern\"},{type:\"p\",text:\"Every independent described the same shift: more capacity, more income, same headcount. The solo creative is staying solo and getting studio-scale output with AI.\"}],notionId:\"348df2b6-cc6b-80c6-b612-ceb45733bd3d\",updatedAt:\"2026-04-22T00:00:00Z\"};const veo={slug:\"veo-3-1-creative-director-model\",title:'Veo 3.1 is the \"Creative Director\" model. Use it early, but hand off before refinement.',type:\"Benchmark\",publishedDate:\"2026-04-22\",readMinutes:6,subtitle:\"61% win rate at ideation. 39% at refinement. The clearest model profile in our video evaluation.\",abstract:\"Veo 3.1 dominates video ideation (61% win rate) but collapses in refinement (39%). It is the only model in the experiment that degraded monotonically across every metric as phases progressed. Use it at the start of a project. Hand off before refinement.\",hero:false,coverImage:null,seoTitle:\"Veo 3.1 benchmark: creative director, not closer \\xb7 Contra Labs\",seoDescription:\"Google Veo 3.1 posts the highest ideation scores in our evaluation, then degrades across every metric through refinement. Here is why.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Dominates ideation: 61% win rate. Highest scores of any model in any phase.\",\"Collapses in refinement: 39% win rate, last place. Below the 3.0 neutral midpoint.\",\"Only model in the study that degraded monotonically across every metric.\",\"It keeps generating instead of iterating. Use it early, hand off before refinement.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Phases tested\",value:\"Ideation, Mockup, Refinement\"},{label:\"Win rate range\",value:\"61% to 39%\"},{label:\"Field\",value:\"4 video models\"},{label:\"Pattern\",value:\"Monotonic decline\"}]},{type:\"p\",text:\"Contra Labs ran Google Veo 3.1 through every phase of ad video production: ideation, mockup, refinement. The data produced the clearest model profile we've recorded.\"},{type:\"image\",slot:\"image1\",caption:'Google Veo 3.1 dominates video ideation (61%) but collapses in refinement (39%). The \"Creative Director\" model.'},{type:\"h2\",text:\"Peak at ideation\"},{type:\"p\",text:\"At ideation, Google DeepMind's Veo 3.1 posted scalars of 3.81 / 3.81 / 3.78 across quality, creativity, and brand fit. Those are the highest scores of any model across any phase in our entire experiment. Win rate: 61%. Given an open brief and maximum creative latitude, it generated with range, tonal confidence, and visual variety. At a stage where breadth matters more than precision, it delivered exactly what that stage demands.\"},{type:\"p\",text:\"One flag even at its peak: Motion & Blur criticism showed up in roughly 27% of evaluations. Even the best phase for Veo carried a persistent motion quality weakness. Worth noting for video-heavy briefs.\"},{type:\"image\",slot:\"image2\",caption:\"Veo 3.1 monotonic performance decline across creative phases.\"},{type:\"h2\",text:\"Cliff at refinement\"},{type:\"p\",text:\"By refinement, those scalars had dropped below 3.0, the neutral midpoint where outputs tip from useful to net-negative. Win rate: 39%. Last place. Evaluators were calling the outputs counterproductive.\"},{type:\"image\",slot:\"image3\",caption:\"Veo 3.1 theme-level strengths vs weaknesses across phases.\"},{type:\"p\",text:\"What makes this unusual is the shape of the decline. Veo 3.1 is the only model in the experiment that degraded monotonically across every single metric as phases progressed. Grok Imagine, Kling AI, and ByteDance's Seedance 2.0 each improved in at least some dimensions by refinement. Veo got worse across all of them.\"},{type:\"h2\",text:\"Why: it keeps generating\"},{type:\"p\",text:\"The qualitative data points to the mechanism. Veo keeps generating. When asked to iterate on an existing cut, it introduces new visual artifacts and unwanted transitions rather than preserving what already worked. It reads an iteration prompt as a generation prompt. The more you ask it to tighten, the more it creates.\"},{type:\"p\",text:\"The properties that make a model strong at open-ended generation: novelty, creative latitude, output diversity. Those same properties work against constrained iteration, where the job is to hold a direction stable and sand down details toward production readiness.\"},{type:\"h2\",text:\"The practical implication\"},{type:\"p\",text:\"Veo 3.1 performs like a creative director. You want it at the start of a project, generating raw concepts and setting visual direction. By mockup and refinement, hand off to a model built for iteration.\"},{type:\"p\",text:\"Knowing which model to use at each phase is now a real creative skill.\"}],notionId:\"348df2b6-cc6b-806a-b9df-fe84a2af5e3c\",updatedAt:\"2026-04-22T00:00:00Z\"};const grokImagine={slug:\"grok-imagine-polisher-model\",title:'Grok Imagine is the \"Polisher\" model. Hand off the early rounds, bring it in for refinement.',type:\"Benchmark\",publishedDate:\"2026-04-28\",readMinutes:5,subtitle:\"The biggest phase-over-phase climb of any video model in the study. 3rd at ideation, 1st at refinement.\",abstract:\"Grok Imagine climbs from 3rd at ideation to 1st at refinement (56% win rate). By the final phase, every major theme flips positive: Motion Quality (+16), Usability (+23), Realism (+20), Prompt Adherence (+11). The mirror image of Veo 3.1: hand it the early rounds, bring it in once you have a draft worth iterating on.\",hero:false,coverImage:null,seoTitle:\"Grok Imagine benchmark: the polisher model \\xb7 Contra Labs\",seoDescription:\"xAI Grok Imagine posts the most dramatic phase-over-phase climb in our video evaluation. 56% win rate at refinement, ahead of every other model tested.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"3rd at ideation. 1st at refinement (56% win rate).\",\"Biggest phase-over-phase climb in the study.\",\"Refinement themes flip positive: Motion +16, Usability +23, Realism +20, Prompt Adherence +11.\",\"High variance: 42% firsts, 25% fourths at refinement.\",\"Mirror image of Veo 3.1. Hand off early, bring it in for polish.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Phases tested\",value:\"Ideation, Mockup, Refinement\"},{label:\"Win rate\",value:\"46% / 44% / 56%\"},{label:\"Field\",value:\"4 video models\"},{label:\"Pattern\",value:\"Phase-over-phase climb\"}]},{type:\"p\",text:\"Contra Labs ran xAI's Grok Imagine through every phase of ad video production: ideation, mockup, refinement. It produced the most dramatic phase-over-phase improvement of any video model in the study.\"},{type:\"image\",slot:\"image1\",caption:\"Grok Imagine climbs from 3rd at ideation to 1st at refinement: 46% → 44% → 56% win rate.\"},{type:\"h2\",text:\"Surge at refinement\"},{type:\"p\",text:\"By refinement, every major theme flipped positive. Motion Quality (+16), Usability (+23), Realism (+20), Prompt Adherence (+11). Win rate: 56%, ahead of every other video model we tested. Evaluators kept reaching for the same four words: organic, smooth, natural, controlled.\"},{type:\"image\",slot:\"image2\",caption:\"Every major refinement-phase theme flips positive for Grok Imagine: motion, usability, realism, prompt adherence.\"},{type:\"quote\",text:\"The most usable and quality generation, free of visual oddities and unrealistic elements.\"},{type:\"quote\",text:\"The camera movement showcases the product well. The movements of the clouds in the sky and the breeze are well-matched.\"},{type:\"quote\",text:\"The neon edge illumination is beautifully lit, the camera movement pans in slowly. The close-up shot is golden. A nice ad.\"},{type:\"h2\",text:\"Where it earns the win\"},{type:\"p\",text:\"Refinement is the phase where creatives stop generating and start polishing. Smooth camera moves, natural product framing, controlled lighting transitions. Grok handles all three with consistency. Motion quality (30 vs 18 across competitors), usability (24 vs 18), and lighting (17 vs ~3) all sit clearly in the green.\"},{type:\"image\",slot:\"image3\",caption:\"Grok Imagine wins refinement head-to-head against every other video model in the evaluation.\"},{type:\"h2\",text:\"Where the next gains pay off\"},{type:\"p\",text:\"Two signals from the data point to where additional work compounds.\"},{type:\"p\",text:\"Ideation is rougher. Net Realism (−15) and Scene Coherence (−8) take hits from technical errors: object duplication, hands appearing out of frame, physics that doesn't quite hold. Grok seems to need material to iterate on before it shines.\"},{type:\"quote\",text:\"There are two hands appearing in the shot instead of one, and they are interacting with themselves in a very unnatural way.\"},{type:\"quote\",text:\"The portafilter is duplicated upon lock-in. Coffee pours in the device's sink.\"},{type:\"p\",text:\"Refinement variance is high. 42% first-place finishes alongside 25% fourth-place. When Grok hits, it leads the field. When it misses, it misses by a lot. Smoothing that variance is where the gains compound.\"},{type:\"h2\",text:\"The practical implication\"},{type:\"p\",text:'Bring Grok Imagine in once you have a draft worth iterating on. It takes you from \"almost there\" to \"client-ready\" better than anything else we tested.'},{type:\"p\",text:\"Knowing which model to use at each phase is now a real creative skill.\"}],notionId:\"34bdf2b6-cc6b-8040-b60a-f8b7ff04064a\",updatedAt:\"2026-04-28T00:00:00Z\"};const seedream={slug:\"seedream-product-detail-shots\",title:\"Seedream 5.0 Lite swept the field on product detail shots.\",type:\"Benchmark\",publishedDate:\"2026-05-06\",readMinutes:4,subtitle:\"A blind head-to-head against the leading image models from Google, OpenAI, and Black Forest Labs, evaluated by professional creatives.\",abstract:\"Seedream 5.0 Lite won 63.9% of all blind head-to-head matchups. The next-best model trailed at 52.8%. It led every scalar category we measured (lighting, color, product detail, prompt adherence, production-readiness), picked by evaluators for one specific quality: fidelity to the reference.\",hero:false,coverImage:null,seoTitle:\"Seedream 5.0 Lite benchmark: product detail shots \\xb7 Contra Labs\",seoDescription:\"Seedream 5.0 Lite won 63.9% of blind head-to-head matchups against the leading image models from Google, OpenAI, and Black Forest Labs on product detail shots.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Seedream 5.0 Lite won 63.9 percent of all blind head-to-head matchups. Next-best model trailed at 52.8 percent.\",\"Led every scalar category measured: lighting, color, product detail, prompt adherence, production-readiness.\",\"Evaluators picked it for one specific quality: fidelity to the reference, not visual flourish.\",\"Lost on one prompt (MacBook), where evaluators cited weaker compositional focus.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Tested\",value:\"March 2026\"},{label:\"Models\",value:\"Seedream 5.0 Lite, Gemini 3 Pro Image Preview, GPT Image 1.5, FLUX.2 [max]\"},{label:\"Prompts\",value:\"Jewelry, leather, electronics, audio\"},{label:\"Method\",value:\"Blind pairwise + scalar ratings\"},{label:\"Evaluators\",value:\"Working creative directors\"}]},{type:\"p\",text:\"In March 2026, we ran a blind pairwise evaluation of the four leading image models on a single job: product detail shots from a hero reference. The field: Seedream 5.0 Lite (ByteDance), Gemini 3 Pro Image Preview (Google), GPT Image 1.5 (OpenAI), and FLUX.2 [max] (Black Forest Labs).\"},{type:\"h2\",text:\"The result\"},{type:\"p\",text:\"Seedream 5.0 Lite won 63.9% of all head-to-head matchups. Gemini 3 Pro followed at 52.8%. GPT Image 1.5 (44.4%) and FLUX.2 [max] (38.9%) both finished below the 50% line, losing more matchups than they won.\"},{type:\"image\",slot:\"image1\",caption:\"Pairwise win rates across all blind comparisons (March 2026). Seedream 5.0 Lite won the majority of head-to-head matchups against Gemini 3 Pro, GPT Image 1.5, and FLUX.2 [max].\"},{type:\"p\",text:\"In Bradley-Terry Elo, Seedream landed at 1567 and Gemini 3 Pro followed at 1545. GPT Image 1.5 (1446) and FLUX.2 [max] (1442) were virtually tied at the bottom. A clean top and bottom tier with a ~120-point gap between them.\"},{type:\"image\",slot:\"image2\",caption:\"Bradley-Terry Elo derived from pairwise rankings (March 2026). Seedream (1567) and Gemini 3 Pro (1545) at the top; GPT Image 1.5 (1446) and FLUX.2 [max] (1442) virtually tied at the bottom.\"},{type:\"h2\",text:\"How we ran it\"},{type:\"p\",text:\"Professional creatives evaluated outputs from all four models, blind, against a real product reference (jewelry, leather goods, electronics, audio). Each evaluator ranked the outputs head-to-head and rated them across five scalar categories: lighting and shadows, color consistency, product detail handling, prompt adherence, and production-readiness. Models were the latest publicly available versions in March 2026.\"},{type:\"p\",text:\"No model names or watermarks. Bias removed at the evaluator's eye.\"},{type:\"h2\",text:\"Seedream led every category we measured\"},{type:\"p\",text:\"Professional creatives rated each output across all five scalar categories. Seedream led all five.\"},{type:\"p\",text:\"Its top marks were in lighting and shadows (4.25 / 5) and color consistency (4.17 / 5). The widest gap between Seedream and the lowest-scoring model was in color consistency (1.09 points). The narrowest was in lighting and shadows (0.58). Even where the field tightened, Seedream stayed on top.\"},{type:\"h2\",text:\"Why evaluators picked it: fidelity to the reference\"},{type:\"p\",text:\"The pattern in the rationales was consistent. Evaluators didn't pick Seedream because it was the prettiest. They picked it because it preserved the source.\"},{type:\"p\",text:\"Creative director Joao Paulo Bastos, on a handbag prompt:\"},{type:\"quote\",text:\"Model C keeps the neutral background closer to the original, preserves the leather texture more accurately, and the clasp hardware reads truer to the reference image. That consistency with the input is what pushed it to first place for me, since the whole point of this task is evaluating how well the models maintain details from the source.\",cite:\"Joao Paulo Bastos, creative director\"},{type:\"image\",slot:\"image3\",caption:\"Seedream 5.0 Lite output, handbag prompt. Selected for fidelity to the reference over a more visually striking alternative.\"},{type:\"p\",text:\"Brand director Anna Gudvin, on a jewelry prompt where Seedream avoided embellishing details that weren't in the source:\"},{type:\"quote\",text:\"The selected image maintained the original design without introducing additional milgrain detailing that was not present in the reference, preserving product integrity. It also replicated the lighting most accurately, with soft, diffused highlights and coherent reflections consistent with the hero image.\",cite:\"Anna Gudvin, brand director\"},{type:\"image\",slot:\"image4\",caption:\"Seedream 5.0 Lite output, jewelry prompt. Preserved the original design without adding milgrain detailing not present in the reference.\"},{type:\"image\",slot:\"image5\",caption:\"Themes evaluators cited most often as reasons for picking Seedream over Gemini 3 Pro, GPT Image 1.5, and FLUX.2 [max] (March 2026). Fidelity to the reference dominated the rationales, with production-readiness and lighting accuracy close behind.\"},{type:\"p\",text:\"For product detail shots specifically, this is the right thing to optimize for. The output isn't a new image. It's a faithful zoom on an existing one. Inventing details, however tasteful, is a hard fail.\"},{type:\"h2\",text:\"Where it lost\"},{type:\"p\",text:\"Seedream wasn't perfect. On a MacBook prompt, it ranked last. The issue was compositional focus.\"},{type:\"quote\",text:\"Model C felt the least focused overall, with less control over where the viewer's attention goes.\",cite:\"Joao Paulo Bastos, creative director\"},{type:\"image\",slot:\"image6\",caption:\"Seedream 5.0 Lite output, MacBook prompt. The only prompt where Seedream ranked last; evaluators cited weaker compositional focus.\"},{type:\"p\",text:\"Worth flagging because the same evaluator picked Seedream first on the handbag prompt. The model is strong, but compositional control on tech products with hard edges and screens is an open weakness.\"},{type:\"h2\",text:\"What this means\"},{type:\"p\",text:\"For catalog work, PDP imagery, and any use case where the output has to read as a continuation of the hero shot, Seedream 5.0 Lite is the strongest model we've tested. Its lead comes from a specific quality (fidelity to the reference) that matters more for product shots than aesthetic flourish does.\"}],notionId:\"34bdf2b6-cc6b-8075-9255-d877db8de5bb\",updatedAt:\"2026-05-06T00:00:00Z\"};const krea={slug:\"krea-2-large-style-transfer\",title:\"Krea 2 Large is the #2 style-transfer model, closing on GPT Image 2.\",type:\"Benchmark\",publishedDate:\"2026-05-12\",readMinutes:4,subtitle:\"Four-model style-transfer evaluation. Krea took #2 on style fidelity, 0.14 points behind GPT Image 2.\",abstract:\"Krea 2 Large averages 3.39 on Style Fidelity to GPT Image 2's 3.53. At the top of the scale the gap disappears: Krea hits a perfect 5 on 23% of outputs, GPT on 22%. The story falls apart on the floor (26% of Krea outputs land in the bottom two ratings) and on H2H win rate (39.5%, 4th place). Krea optimizes for faithful. Tournaments reward compelling.\",hero:false,coverImage:null,seoTitle:\"Krea 2 Large benchmark: #2 on style transfer \\xb7 Contra Labs\",seoDescription:\"Krea 2 Large is the #2 style-transfer model in a four-way evaluation against GPT Image 2, Gemini 3 Pro, and Seedream 5.0 Lite. Gap to GPT: 0.14 points.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"#2 on Style Fidelity at 3.39. GPT Image 2 leads at 3.53.\",\"23 percent of Krea's outputs rated 5 on Style Fidelity. GPT Image 2: 22 percent.\",\"26 percent landed in the bottom two ratings. GPT Image 2: 20 percent. The floor is the problem.\",\"4th on H2H win rate at 39.5 percent. Tournaments reward ceiling.\",\"Only non-GPT model above the 3.0 useful threshold on Style Fidelity.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Tested\",value:\"May 2026\"},{label:\"Models\",value:\"Krea 2 Large, GPT Image 2, Gemini 3 Pro Image Preview, Seedream 5.0 Lite\"},{label:\"Method\",value:\"Pairwise H2H + scalar ratings on 4 dimensions\"},{label:\"Dimensions\",value:\"Prompt Adherence, Visual Quality, Usability, Style Fidelity\"},{label:\"Evaluators\",value:\"Working creatives\"}]},{type:\"p\",text:\"Krea 2 Large is the #2 style-transfer model. The gap to GPT Image 2 is smaller than the rest of the data would suggest.\"},{type:\"p\",text:\"Contra Labs ran Krea 2 Large through a four-model style-transfer evaluation against OpenAI's GPT Image 2, Google DeepMind's Gemini 3 Pro Image Preview, and BytePlus's Seedream 5.0 Lite. Evaluators ranked outputs head-to-head and rated each one against four rubric dimensions: prompt adherence, visual quality, usability, and style fidelity. The data produced a clear positioning for Krea, but only on one dimension.\"},{type:\"image\",slot:\"image1\",caption:\"Style-transfer evaluation announcement. Krea 2 Large vs GPT Image 2, Gemini 3 Pro Image Preview, and Seedream 5.0 Lite.\"},{type:\"h2\",text:\"Style Fidelity\"},{type:\"p\",text:\"On Style Fidelity, Krea 2 Large averages 3.39 out of 5. GPT Image 2 averages 3.53. The gap is 0.14 points. Gemini 3 Pro sits at 2.74. Seedream 5.0 Lite at 2.42. On the dimension Krea was built for, the closest comparison is GPT Image 2, and the gap to the rest of the field is more than 4x the gap to first place.\"},{type:\"image\",slot:\"image2\",caption:\"Scalar average rating across all four dimensions. Krea leads on Style Fidelity (3.39) and Prompt Adherence (4.0).\"},{type:\"p\",text:'The top end of the distribution is even tighter. 23% of Krea\\'s outputs were rated \"5\" on Style Fidelity. GPT Image 2 earned a \"5\" on 22%. When Krea hits, it hits at the same rate as the frontier model. The difference shows up further down the scale. 26% of Krea\\'s outputs landed in the bottom two ratings on Style Fidelity, versus 20% for GPT Image 2 and 46% for Gemini 3 Pro. Krea matches GPT at the peak. It does not match GPT at the floor.'},{type:\"image\",slot:\"image3\",caption:\"Style Fidelity rating distribution. Krea ties GPT at the top of the scale (23% vs 22%) but trails on the floor (26% in the bottom two ratings vs 20%).\"},{type:\"p\",text:\"Style Fidelity is also the hardest dimension in the evaluation. Every model other than GPT averages below 3.4. The neutral midpoint, where outputs tip from useful to net-negative, is 3.0. Gemini and Seedream both sit below it on this dimension. Krea is the only non-GPT model in the study that holds above the line on style transfer. For a model built around style, that is the result that matters.\"},{type:\"image\",slot:\"image4\",caption:\"Same prompt. Same reference. Four models. Krea (winner) holds the painterly atmosphere of the reference; the others drift toward photorealism.\"},{type:\"h2\",text:\"The rest of the evaluation\"},{type:\"p\",text:\"The rest of the evaluation tells a more measured story. Krea finishes fourth on overall pairwise win rate at 39.5%. Fourth on Prompt Adherence at 3.31. Fourth on Visual Quality at 3.35. Across head-to-head matchups, Krea loses 58% of the time to Seedream and 55% to Gemini, both of which underperform on absolute scalar ratings. Krea places fourth on 42% of prompts and rarely produces the single best image in a four-way comparison. Tournaments reward ceiling over floor.\"},{type:\"image\",slot:\"image5\",caption:\"Head-to-head win rate heatmap. Krea loses 58% of matchups to Seedream and 55% to Gemini despite outscoring both on absolute Style Fidelity.\"},{type:\"p\",text:\"The qualitative data points to the mechanism. Evaluators consistently describe Krea's outputs as faithful to the reference image: matching color palette, brushwork, and tonal qualities, while staying coherent across the full composition. The same evaluators flag Krea for being less ambitious on prompt-driven generation, where the brief asks for something the reference image does not literally show. Krea treats the reference as a constraint. The other models treat it as a starting point.\"},{type:\"image\",slot:\"image6\",caption:\"Krea 2 Large strengths and weaknesses, drawn from evaluator rationales. Faithful to the reference; less ambitious on prompt-driven generation.\"},{type:\"p\",text:\"The properties that make a model strong at style fidelity (restraint, faithfulness, conservative interpretation of the reference) are not the same properties that win pairwise tournaments. Compelling and faithful are different decisions, and a four-way comparison rewards compelling. Krea optimizes for faithful.\"},{type:\"h2\",text:\"Practical takeaway\"},{type:\"p\",text:\"The practical takeaway is narrow on purpose. Use Krea 2 Large when the brief is a style brief. When a reference image carries the visual direction and the job is to apply that style to a new subject without drift, Krea is the closest non-frontier option and competitive with GPT Image 2 at the top of the rating scale. For prompt-led work, where the text carries more of the creative load, the data points elsewhere.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at.\",href:\"/research\",cta:\"See all research\"}],notionId:\"359df2b6-cc6b-80b9-9e76-f79ccda9b1e5\",updatedAt:\"2026-05-12T00:00:00Z\"};const benchmarkPreview={slug:\"four-ai-models-tested-with-designers\",title:\"We tested 4 AI models with professional web designers. Claude won, but not the way you'd expect.\",type:\"White Paper\",publishedDate:\"2026-04-14\",readMinutes:6,subtitle:\"Claude Opus 4.6, Gemini 3.1 Pro, ChatGPT 5.3 Codex, Qwen 3.5. The winner shifted at every phase.\",abstract:\"Claude posted a 79.8% win rate in ideation, then gave ground to Gemini in structured mockup work. The takeaway is not which model is best. It is which model is best at which phase.\",hero:false,coverImage:null,seoTitle:\"We tested 4 AI models with designers \\xb7 Contra Labs\",seoDescription:\"A structured benchmark of Claude, Gemini, ChatGPT and Qwen, evaluated by working web designers across every phase of the creative process.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Claude won ideation: 79.8% win rate. Led on usability, visual cohesion, prompt alignment.\",\"Gemini took mockup at 68.9%. Beat Claude on structured design-system work.\",\"Claude narrowed the gap to 60% at refinement.\",\"The winner shifted at every phase. Model selection should follow the task.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Models\",value:\"Claude Opus 4.6, Gemini 3.1 Pro, ChatGPT 5.3 Codex, Qwen 3.5\"},{label:\"Phases\",value:\"Ideation, Mockup, Refinement\"},{label:\"Task\",value:\"Landing page builds from identical prompts\"},{label:\"Evaluators\",value:\"Working web designers\"}]},{type:\"p\",text:\"We ran a structured design benchmark across four of the leading AI models: Anthropic's Claude Opus 4.6, Gemini 3.1 Pro Preview, OpenAI's ChatGPT 5.3 Codex, and Alibaba Qwen 3.5. Tasking each with building landing pages from identical prompts, judged by real designers across three distinct phases of the design process.\"},{type:\"p\",text:\"The results weren't what we expected.\"},{type:\"image\",slot:\"image1\",caption:\"Four leading AI models, evaluated across every phase of the creative process by working designers.\"},{type:\"h2\",text:\"How the creative process actually works\"},{type:\"p\",text:\"Before the numbers, some context. Most AI benchmarks test a single output at a single moment. We structured ours around how creative work actually unfolds, across three phases.\"},{type:\"p\",text:\"Ideation is the generative, open-ended stage. The goal is direction, not precision. Think brainstorming, concept exploration, and early layout ideas. The stakes of any individual output are low, breadth matters more than accuracy, and it's where most creatives feel most comfortable handing work to AI.\"},{type:\"p\",text:\"Mockup is where a chosen direction gets translated into something structured: a composed layout, a functional prototype. Professional conventions and medium-specific rules start to constrain the work. Accuracy begins to matter.\"},{type:\"p\",text:\"Refinement is the precision stage. A near-final artifact gets edited toward production readiness, where small adjustments carry outsized consequences. This is where domain expertise exerts the most pressure, and where AI-generated content is most likely to be discarded or heavily reworked.\"},{type:\"p\",text:\"Each model was evaluated at all three stages. The results looked very different depending on where you looked.\"},{type:\"h2\",text:\"Claude dominated ideation, by a lot\"},{type:\"p\",text:\"In the ideation phase, Claude Opus 4.6 posted a 79.8% win rate, a commanding lead over every other model tested. Creative experts consistently rated its outputs higher on usability, visual cohesion, and prompt alignment.\"},{type:\"image\",slot:\"image2\",caption:\"Claude posted a 79.8% win rate in ideation against Gemini, ChatGPT, and Qwen.\"},{type:\"p\",text:\"But the number doesn't tell the whole story. What stood out wasn't any single design decision. It was the feeling of the outputs.\"},{type:\"p\",text:\"Without coordination, the creative experts kept reaching for the same words: “intentional,” “considered,” “cohesive,” “polished.”\"},{type:\"p\",text:\"Claude's work felt designed, not generated.\"},{type:\"p\",text:\"The creative experts agreed.\"},{type:\"quote\",text:\"The Claude version stood out because the sections felt more intentional and not just dropped into generic blocks. The layout and visual choices felt more considered overall.\",cite:\"Blake Steven, creative director\"},{type:\"quote\",text:\"Claude did incredible at understanding the use case of the site and then also taking the subject of the site and pulling it into the design—hierarchy of not only the page but the sections.\",cite:\"Afton Negrea, brand identity and UI design\"},{type:\"quote\",text:\"The design looks intentionally created rather than autogenerated with bugs.\",cite:\"Alex Karpodinis, UI/UX and Framer designer\"},{type:\"h2\",text:\"Then the rules changed\"},{type:\"p\",text:\"When the task moved from open-ended ideation into structured mockup work, where adhering to design system specifications actually matters, Gemini took over.\"},{type:\"p\",text:\"Gemini posted a 68.9% win rate in the mockup phase. Claude dropped to second place.\"},{type:\"image\",slot:\"image3\",caption:\"Gemini 68.9% in mockup. Claude narrowed the gap to 60% in refinement. The winner shifted at every phase.\"},{type:\"p\",text:\"By the refinement phase, Claude had narrowed the gap to 60%, but the pattern was clear: Claude's free-form creative strength doesn't translate as well when constrained by rigid design specifications.\"},{type:\"image\",slot:\"image4\",caption:\"Claude narrowed the gap to 60% in refinement. The pattern: free-form strength doesn’t translate to rigid design specifications.\"},{type:\"h2\",text:\"What this actually means\"},{type:\"p\",text:\"There's a tempting takeaway here: Claude is the best AI for design. But that's not what the data shows.\"},{type:\"p\",text:\"The more accurate read is this: different models excel at different phases of the creative process. Claude's holistic, craft-driven outputs shine when the brief is open. When precision and constraint take over, other models close the gap fast.\"},{type:\"p\",text:\"For real-world creatives building AI-assisted design workflows, that's a meaningful operational insight: model selection should follow the task, not the hype.\"},{type:\"h2\",text:\"What's coming\"},{type:\"p\",text:\"The full whitepaper, with complete data across all three phases of the creative workflow, all four models, and the methodology behind the benchmark, is coming soon.\"},{type:\"image\",slot:\"image5\",caption:\"The full Human Creativity Benchmark white paper is coming soon.\"}],notionId:\"33adf2b6-cc6b-812a-a64a-ec02900365cb\",updatedAt:\"2026-04-14T00:00:00Z\"};const hcbSurvey={slug:\"ai-is-not-replacing-creative-professionals\",title:\"AI isn't replacing creative professionals. It's making the best ones better.\",type:\"Research\",publishedDate:\"2026-04-08\",readMinutes:6,subtitle:\"Survey of high-earning independent creatives. What they actually do with AI on real client work.\",abstract:\"For the majority of working creatives, AI is changing how work gets made, not who makes it. The dominant answer when asked what percentage of AI output ends up in final deliverables: less than 25%. The rest is stripped out, reworked, or scrapped by the creative.\",hero:false,coverImage:null,seoTitle:\"AI is not replacing creative professionals \\xb7 Contra Labs\",seoDescription:\"Survey of high-earning independent creatives. Less than 25% of AI output makes it to final deliverables. The rest is human judgment.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Less than 25% of AI output makes it to final deliverables. The rest is reworked or scrapped by the creative.\",\"Heaviest AI use clusters at the earliest stages: brainstorming, moodboarding, concept exploration, research.\",\"#1 benefit cited: faster delivery times. #2: more creative exploration.\",\"No one uses one tool. The real workflow is a chain of specialized AI tools, each selected for a specific job.\",\"The creatives using AI most effectively aren't the ones who trust it most. They're the ones most precise about where they don't.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"High-earning independent creatives\"},{label:\"Disciplines\",value:\"Design, art direction, motion, UX, brand\"},{label:\"Method\",value:\"Survey + interviews\"},{label:\"Output retention\",value:\"Less than 25%\"}]},{type:\"p\",text:\"We surveyed some of the highest-earning independent creatives working today (designers, art directors, motion artists, UX specialists, brand strategists) and asked them one question most AI discourse refuses to sit with: how do you actually use creative AI tools in real work?\"},{type:\"image\",slot:\"image1\",caption:\"Most AI-generated content never makes it to the client.\"},{type:\"h2\",text:\"Most AI-generated content never makes it to the client\"},{type:\"p\",text:\"When we asked what percentage of AI output ends up in final deliverables, the dominant answer was less than 25%. For the majority of working creatives, AI is changing how work gets made, not who makes it.\"},{type:\"p\",text:\"That's a fundamentally different story than the one dominating the headlines right now.\"},{type:\"h2\",text:\"The mental model that explains everything\"},{type:\"p\",text:\"The creatives at the top of their field don't talk about AI as a tool. They talk about it as a collaborator with a very specific role.\"},{type:\"quote\",text:\"I use AI almost like a junior designer or assistant to make my workflow faster. Generative fill in Photoshop, talking through a design challenge using a language model as a sounding board.\",cite:\"Molly Brooks, web design, low-code web development, UX/UI design, brand design and strategy\"},{type:\"p\",text:\"Junior designer. Sounding board. Assistant. The language is remarkably consistent across disciplines and income levels. These aren't people being cautious about admitting AI use. They're being precise about where it earns trust, and where human judgment stays in charge.\"},{type:\"h2\",text:\"Where AI actually lives in the creative process\"},{type:\"p\",text:\"The heaviest use clusters around the earliest stages: brainstorming, moodboarding, concept exploration, research, copywriting. The divergent, generative phase where speed matters and the stakes of any single output are low.\"},{type:\"quote\",text:\"I use AI tools mainly to help make different parts of my creative process more efficient. They help with concept exploration, moodboard definition, and ideation during the early stages of branding projects.\",cite:\"Diogo Ferreira, art direction and design\"},{type:\"p\",text:\"The exploration phase has historically eaten time without proportionally improving outcomes. AI compresses that stage, leaving more room for the work that requires expertise: refining direction, making judgment calls, delivering something that holds up aesthetically and strategically.\"},{type:\"p\",text:\"The #1 benefit cited? Faster delivery times, by a wide margin. The second most cited was more creative exploration.\"},{type:\"h2\",text:\"No one uses one tool\"},{type:\"p\",text:\"Almost no creative we spoke with relies on a single AI product. The real workflow is a chain. For example: OpenAI's ChatGPT for strategy and thinking, Midjourney for visual ideation, Runway for video, Anthropic's Claude for code. Each tool selected for a specific job, assembled into a bespoke pipeline that fits how that creative works.\"},{type:\"p\",text:\"Building these pipelines is a skill in itself. The creatives doing it well are systems thinkers who've figured out where each tool breaks down and what to hand off next.\"},{type:\"h2\",text:\"The second use case nobody talks about: gap-filling\"},{type:\"p\",text:\"Beyond ideation, a quieter use case emerged repeatedly: AI handling production tasks that are time-consuming but not creatively meaningful. Background removal. Texture generation. Audio isolation. Scratch voiceovers. Translations.\"},{type:\"p\",text:\"These are the tasks that used to disappear hours without moving the work forward. They're now handled with the help of AI tools, expanding the capabilities of professional creatives.\"},{type:\"h2\",text:\"The thread that runs through all of it: control\"},{type:\"quote\",text:\"I am very specific on details, so I want to retain as much control as I possibly can. I'm always looking for tools that help me get ideas out quickly, while still allowing me to take over at any point.\",cite:\"Alex Karpodinis, product/UI/UX, Framer design and development, branding, motion and animation, 3D design\"},{type:\"p\",text:\"The creatives using AI most effectively aren't the ones who trust it most. They're the ones who've thought carefully about where they don't trust it, and built their process around that.\"},{type:\"quote\",text:\"We use AI as an enhancement, not a replacement. It helps us scale creativity, but our expertise ensures the outcome stays aligned with strategy and aesthetics.\",cite:\"Afton Negrea, brand identity, UI design, and development\"},{type:\"h2\",text:\"What this means for the industry\"},{type:\"p\",text:\"The AI-replaces-creatives narrative gets attention because it's simple and scary. The data and the voices of the people doing this work tell a more nuanced story: AI is becoming a multiplier for creatives who already know what they're doing.\"},{type:\"p\",text:'The best independents aren’t concerned with AI taking their jobs. Instead they’re asking \"what can I do now that I couldn’t do before?\"'}],notionId:\"33adf2b6-cc6b-800a-a7e2-d040131d2427\",updatedAt:\"2026-04-20T00:00:00Z\"};const frontierImageBrief={slug:\"frontier-image-models-by-brief\",title:\"The image-model leaderboard flips by brief.\",type:\"Benchmark\",publishedDate:\"2026-05-13\",readMinutes:7,subtitle:\"Four frontier image models, six brand campaigns, ranked blind by working creatives. GPT Image 2 wins the aggregate. Every other model owns a category.\",abstract:\"GPT Image 2 wins the aggregate by every measure: 61.1% vs Seedream, 64.8% vs Gemini, 66.7% vs FLUX. The leaderboard flips by brief. Gemini wins product photography, FLUX wins digital banking, Seedream wins music posters. Model choice should be brief-dependent.\",hero:false,coverImage:null,seoTitle:\"Frontier image models tested by brief: GPT Image 2 wins the aggregate \\xb7 Contra Labs\",seoDescription:\"Four frontier image models tested across six brand campaigns. GPT Image 2 wins the aggregate. The leaderboard flips by brief: Gemini, FLUX, and Seedream each own a category.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"GPT Image 2 wins the aggregate by every measure: 61.1% vs Seedream, 64.8% vs Gemini, 66.7% vs FLUX.\",\"The leaderboard flips by brief. Gemini wins product photography, FLUX wins digital banking, Seedream wins music posters.\",\"GPT's 77.8% win rate on luxury skincare is the single most dominant category-model combination in the dataset.\",\"Every model nets negative on typography sentiment: GPT -6, Gemini -5, Seedream -7, FLUX -9.\",\"Failure modes diverge: FLUX and Seedream omit, Gemini hallucinates, GPT distorts. Model choice is also a QA choice.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Tested\",value:\"May 2026\"},{label:\"Models\",value:\"GPT Image 2, Gemini 3.1 Flash Image Preview, FLUX.2 [pro], Seedream 5.0 Lite\"},{label:\"Briefs\",value:\"6 brand campaigns \\xb7 luxury skincare, fashion lookbook, product photo, digital banking, music poster, alpine footwear editorial\"},{label:\"Method\",value:\"Blind pairwise tournament, Bradley-Terry Elo, per-dimension qualitative tags\"},{label:\"Evaluators\",value:\"Vetted working creatives\"}]},{type:\"p\",text:\"We ran four frontier image generation models through a blind creative tournament, scored by a small bespoke panel of vetted working creatives. The setup is focused by design: depth of read across six brand campaigns, the same shape of eval we can scale up against any specific brief. The task: produce brand-campaign visuals across six fictional brands spanning luxury skincare, digital banking, product photography, alpine footwear, music event posters, and fashion lookbooks.\"},{type:\"image\",slot:\"image1\",caption:\"Four models, six brand campaigns. Outputs as evaluators saw them, anonymized side-by-side.\"},{type:\"p\",text:\"Evaluators ranked every output from 1st to 4th without knowing which model made what.\"},{type:\"p\",text:\"The models: OpenAI's GPT Image 2, Google DeepMind's Gemini 3.1 Flash Image Preview, Black Forest Labs' FLUX.2 [pro], BytePlus's Seedream 5.0 Lite. Identical prompts, same criteria.\"},{type:\"h2\",text:\"The aggregate leaderboard\"},{type:\"p\",text:\"A note on scale before the numbers: this is a focused expert eval, which is why we lead with Elo and pairwise rates. Treat the percentages as directional signal.\"},{type:\"image\",slot:\"image2\",caption:\"Bradley-Terry Elo across the four models. GPT Image 2 leads by 79 points; the other three sit within 85 points of each other.\"},{type:\"p\",text:\"GPT Image 2 wins the aggregate by every measure: 61.1% against Seedream, 64.8% against Gemini, 66.7% against FLUX. Every opponent, every cut.\"},{type:\"p\",text:\"The 79-point Elo gap between 1st and 2nd is significant. An 80-point Elo gap in chess corresponds to a 60/40 win expectation, which is almost exactly what we observed. The other three models sit within 85 Elo points of each other, a far tighter race for the rest of the field.\"},{type:\"h2\",text:\"The ranking distribution tells the story more vividly\"},{type:\"image\",slot:\"image3\",caption:\"Ranking distribution by model. How often each model finished 1st, 2nd, 3rd, or 4th across the panel.\"},{type:\"p\",text:\"Across the panel's rankings, GPT finished first 40.7% of the time and second 27.8%, with the rest split between 3rd and 4th. FLUX is the most polarizing model in the field: high first-place rate (22.2%), but also the highest 4th-place rate. FLUX swings for the fences and often misses.\"},{type:\"p\",text:\"Gemini clusters safely in the middle. Rarely first (14.8%), but also rarely catastrophic. Seedream spreads the most evenly, the most predictable model in the eval.\"},{type:\"h2\",text:\"Failure mode #1: brand fidelity by brief\"},{type:\"p\",text:\"Here's the first measurable failure mode for any brand-bounded creative workflow. The leaderboard flattens, and occasionally inverts, when you break results down by campaign type. No single model holds the bar across every brief. The category-level data reveals genuine specialization and a real gap for any workflow betting on one model.\"},{type:\"image\",slot:\"image4\",caption:\"Winning model by brief. Average rank (lower is better) across six brand campaigns. The leader flips four ways.\"},{type:\"list\",ordered:false,items:[\"ASAGI (luxury skincare): GPT Image 2 (1.44). Polish, color harmony, elevated aesthetic.\",\"Studio Citrine (fashion lookbook): GPT Image 2 (1.67). Same playbook.\",\"Plunge Artesian Pops (product photo): Gemini 3.1 Flash (1.78). Realistic lighting, object clarity.\",\"Kinetix (digital banking): FLUX.2 [pro] (1.67). Clean UI compositions, corporate visual language.\",\"Sonic Collective (music poster): Seedream 5.0 Lite (2.0). Bold graphic energy.\",\"Ridge (alpine footwear editorial): Gemini and Seedream tie (2.22). Tightest race in the eval.\"]},{type:\"image\",slot:\"image5\",caption:\"Winning output from each brand brief. Four different models, six different jobs.\"},{type:\"p\",text:\"GPT's 77.8% win rate on luxury skincare is the single most dominant category-model combination in the dataset. In a sample this size, that's a strong signal even if the exact percentage will move with more evaluators. But FLUX hits 55.6% on digital banking and Gemini hits 55.6% on product photography. The other models genuinely own their territory.\"},{type:\"p\",text:\"If you're choosing a model for a specific campaign type, the overall leaderboard can mislead you. A category-matched model can outperform the overall leader by a meaningful margin.\"},{type:\"h2\",text:\"The theme profiles explain why the niches exist\"},{type:\"p\",text:\"Evaluators tagged strengths and weaknesses across eight visual dimensions: detail, background, product placement, lighting, brand alignment, texture, color palette, typography, realism, composition. The per-model profiles are distinct.\"},{type:\"image\",slot:\"image6\",caption:\"Seedream 5.0 Lite strengths and weaknesses by visual dimension.\"},{type:\"p\",text:'Seedream 5.0 Lite: the most balanced profile. No dramatic peaks or valleys. Maps directly to its even ranking distribution. Seedream is the model you pick when you need consistency and can\\'t afford a disaster. It rarely delivers the \"wow\" moment that GPT or FLUX produces on a good day.'},{type:\"image\",slot:\"image7\",caption:\"Gemini 3.1 Flash strengths and weaknesses by visual dimension.\"},{type:\"p\",text:'Gemini 3.1 Flash: clusters toward the middle on most dimensions, which explains its \"safe but unspectacular\" ranking distribution. It doesn\\'t catastrophically fail on any axis. It also rarely produces the standout strength that pushes an image to 1st place. Product placement is its quiet advantage: the reason it wins product photography.'},{type:\"image\",slot:\"image8\",caption:\"FLUX.2 [pro] strengths and weaknesses by visual dimension.\"},{type:\"p\",text:\"FLUX.2 [pro]: almost the inverse. Background integration is its biggest weakness (8 weaknesses). It posts respectable numbers on lighting (6 strengths) and detail (4). The polarization in its rankings makes sense through this lens. When FLUX nails the composition, the detail work is striking. When the background falls apart, the whole image collapses.\"},{type:\"image\",slot:\"image9\",caption:\"GPT Image 2 strengths and weaknesses by visual dimension.\"},{type:\"p\",text:\"GPT Image 2: the realism and composition machine. 14 strength mentions for realism against 6 weaknesses. 15 for composition against 5. Color palette (12 strengths) and typography (10) round out a profile built for polished, premium-feeling work. Relative weak spot: backgrounds (7 weaknesses vs 6 strengths). Environments occasionally fall flat against the subject.\"},{type:\"h2\",text:\"Failure mode #2: typography across the board\"},{type:\"p\",text:\"Typography. Every model nets negative in the cross-model analysis: GPT -6, Gemini -5, Seedream -7, FLUX -9. GPT is the only model with net-positive typography sentiment when measured against itself. The rest struggle.\"},{type:\"image\",slot:\"image10\",caption:\"Typography mentions by model. Strengths in green, weaknesses in red. Every model nets negative.\"},{type:\"p\",text:'Across all four, headlines come in too thin, body copy gets crammed, font choices read as \"default\", and lockups invent text the brief never asked for.'},{type:\"h2\",text:\"The failure modes diverge\"},{type:\"p\",text:\"About 20% of weakness entries carried a structured prompt-adherence tag. The patterns split clean by model:\"},{type:\"list\",ordered:false,items:[\"FLUX.2 [pro] and Seedream 5.0 Lite skew toward omissions. Requested elements missing.\",\"Gemini 3.1 Flash skews toward hallucinations. Extra elements added that were never requested.\",\"GPT Image 2 skews toward inaccuracies. Right element, wrong rendering.\"]},{type:\"image\",slot:\"image11\",caption:\"Prompt-adherence issue types by model. Omissions, hallucinations, and inaccuracies split cleanly across the field.\"},{type:\"p\",text:\"Model choice is also a QA choice. If your review process catches missing assets, run FLUX or Seedream. If it catches fabrications, Gemini works. If it catches distorted execution, GPT works.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"Four models, six brand campaigns, every output ranked blind. The verdict is clear at the top: GPT Image 2 is the best general-purpose image generation model for brand-campaign work right now. It wins the aggregate stats, the Elo, and every head-to-head against every competitor.\"},{type:\"p\",text:\"Best overall stops short of best everywhere. The category data shows model selection should be brief-dependent:\"},{type:\"list\",ordered:false,items:[\"Luxury, mood, aesthetic-led brand work: GPT Image 2.\",\"Clean product photography: Gemini 3.1 Flash.\",\"Banking, financial systems, structured campaigns: FLUX.2 [pro].\",\"Music posters and graphic-heavy work: Seedream 5.0 Lite.\",\"Editorial fashion or footwear: Gemini or Seedream, with GPT close.\"]},{type:\"p\",text:\"The smartest creative workflow in 2026 picks the right model for the right job.\"},{type:\"p\",text:\"Typography is on you regardless.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"The evaluation ran in two phases. In the first, evaluators worked through pairwise comparisons. For each prompt, every model was matched against every other model for six pairs per prompt. Evaluators saw two anonymized outputs side by side, picked a winner, rated their confidence, and wrote out individual strengths and weaknesses for each output in free-text.\"},{type:\"p\",text:\"In the second phase, evaluators took the same prompts and used GPT Image 2's conversational editing to try to make outputs production-ready. They were given three edit rounds, then offered a choice: keep refining in GPT or switch to any tool they preferred.\"},{type:\"p\",text:\"All models were accessed via their respective APIs, and given the same prompt, single generation per prompt, no cherry-picking, no iterative refinement in the ranking phase. Aggregate metrics (average rank, pairwise win rate, and Bradley-Terry Elo) were all computed from the full pairwise matrix. The visual dimension profiles and prompt-adherence classifications were extracted from the free-text responses during analysis. Category-level breakdowns use the same metrics sliced by brand campaign.\"},{type:\"p\",text:\"The panel is small by design: vetted working creatives with production experience, not crowd-sourced raters. Treat exact percentages as directional signal.\"},{type:\"h2\",text:\"Context\"},{type:\"p\",text:\"Per OpenAI, GPT Image 2.0 brings greater control and performs better with small text, iconography, UI elements, dense compositions, and subtle stylistic constraints. This served as a cornerstone to selecting the categories and the crafting of the individual prompts.\"},{type:\"p\",text:\"We selected six campaign types that stress different ends of the visual spectrum. Product photography for object precision, music posters for typographic density, digital banking for clean UI compositions, luxury skincare for subtle control, fashion lookbooks for editorial composition, and alpine footwear for object physics and realism. The prompts were crafted to hit the dimensions OpenAI highlighted, then applied the same to all four models. If the claims hold, GPT should separate on exactly these tasks. If the other models have edges of their own, the category breakdown should find them.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused brand-campaign evals, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"35ddf2b6-cc6b-8147-973a-c293538c6f8e\",updatedAt:\"2026-05-13T00:00:00Z\"};const chatgptImagesTypography={slug:\"chatgpt-images-2-typography-weakness\",title:'With ChatGPT Images 2.0, \"Text is solved.\" Typography isn\\'t.',type:\"Research\",publishedDate:\"2026-05-18\",readMinutes:5,subtitle:\"42 sessions, 7 designers. ChatGPT Images 2.0 nails the typographic system, then breaks on the individual characters.\",abstract:\"Text rendering really did get better. Typography still breaks. Across 42 sessions and 7 designers, every macro theme (hierarchy, brand fit, font choice) came in net positive. Every micro theme (legibility, size, weight) came in net negative. Editing fixes the one thing designers can ask for and leaves every structural problem where it started.\",hero:false,coverImage:null,seoTitle:\"ChatGPT Images 2.0: text is solved, typography isn't \\xb7 Contra Labs\",seoDescription:\"ChatGPT Images 2.0 renders text correctly, but typography still breaks. 42 sessions, 7 designers, a clean split between the macro and micro layers of type.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"ChatGPT Images 2.0 really did get better at rendering text. Typography across 42 sessions and 7 designers is a separate story.\",\"Every macro theme came in net positive: hierarchy and composition (+3), brand fit and character (+3), font choice and style (+1).\",\"Every micro theme came in net negative: legibility and readability (−1), size and weight (−3). Size and weight had zero positives across the whole study.\",\"Editing clears the one problem you can ask for. Lacking contrast falls from 3 mentions at Edit 1 to zero by Edit 3. Broken text formatting holds at 3 through every edit.\",\"When typography isn't the point of the brief the model is fine. When typography is the deliverable, it breaks.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"42 sessions, 7 designers, 6 briefs\"},{label:\"Method\",value:\"End-to-end session capture via Rollout\"},{label:\"Format\",value:\"3 edit rounds per brief, then handoff\"},{label:\"Source\",value:\"Typography-tagged mentions + per-edit quality reviews\"}]},{type:\"image\",slot:\"image1\",caption:\"ChatGPT Images 2.0 reads cleanly at first glance. The breakdowns are in the individual characters.\"},{type:\"p\",text:'\"Flawless typography in multiple languages.\" \"Text rendering on another level.\" \"Near perfect.\" The loudest reaction to ChatGPT Images 2.0 is about one thing. Text is solved. It\\'s the feature everyone screenshotted.',parts:['\"',{text:\"Flawless typography in multiple languages.\",href:\"https://x.com/arrakis_ai/status/2045033963744633232\"},'\" \"',{text:\"Text rendering on another level.\",href:\"https://x.com/mark_k/status/2040353421052551483\"},'\" \"',{text:\"Near perfect.\",href:\"https://x.com/0xRajat/status/2040424543781785909\"},\"\\\" The loudest reaction to ChatGPT Images 2.0 is about one thing. Text is solved. It's the feature everyone screenshotted.\"]},{type:\"p\",text:\"On the narrow claim, the hype mostly holds up. Can the model render legible, correctly spelled letterforms, even on a curved surface, even in Japanese? Mostly, yes. That problem really did get better.\"},{type:\"p\",text:\"But rendering text and doing typography are two different questions. Rendering just means drawing the letters correctly. Typography is the harder problem: picking the right fonts at the right size and weight, held in a hierarchy that survives a real brief across multiple edits. The 42 sessions with 7 designers surfaced a clear pattern. The model is better than anything before it, but still not good at the typography that ships, and the gap is specific enough to predict.\"},{type:\"image\",slot:\"image2\",caption:\"Text rendering really did get better with ChatGPT Images 2.0. Typography is a separate problem.\"},{type:\"h2\",text:\"The system is right, the characters are wrong\"},{type:\"quote\",text:\"ChatGPT Images 2.0 gets the typographic system right and the characters wrong. Every macro theme landed positive, but every micro theme landed negative.\"},{type:\"p\",text:\"In the deep dive, the designers consistently iterated on the typography. They fixed some of it in GPT and handed the rest to Figma.\"},{type:\"image\",slot:\"image3\",caption:\"Typography themes by sentiment. Every macro theme came in net positive. Every micro theme came in net negative.\"},{type:\"p\",text:\"GPT is good at the typographic system and bad at typographic execution. Sort the feedback by theme and the divide is clean. Hierarchy and composition (net +3), brand fit and character (net +3), font choice and style (net +1). All decisions that shape the whole image come in positive. Legibility and readability (net −1), size and weight (net −3), the properties the model has to hold character by character, come in negative.\"},{type:\"p\",text:\"Every macro theme landed positive. Every micro theme landed negative. On this sample, the split is clean with no single theme crossing the line.\"},{type:\"p\",text:\"GPT picks on-brand fonts, lays out a hierarchy that reads, and holds composition together across a dense layout. Then it stumbles on the individual characters. A designer on the Sonic Collective brief said:\"},{type:\"quote\",text:'The text below the SONIC is hard to read, especially \"EXPERIMENTAL MUSIC • PERFORMANCE • INSTALLATION • COMMUNITY\" at the bottom. Same with the schedule typography — the text looks very generic and not legible.'},{type:\"h2\",text:\"Iteration fixes one thing and leaves the rest\"},{type:\"quote\",text:\"Iteration fixes contrast, the one thing you can ask for. Every structural problem stays where it started.\"},{type:\"image\",slot:\"image4\",caption:\"Typography issues by edit phase. Lacking contrast clears by Edit 3. Broken text formatting holds at 3 the whole way.\"},{type:\"p\",text:'The edit data shows the same split holding over time. Editing reliably clears one problem. Lacking contrast, the issue where text sits too faint against its background to read cleanly, falls from 3 mentions at Edit 1 to zero by Edit 3. On the Ridge campaign you can watch it happen. The headline starts washed out, the \"U\" half-erased and hard to read. A designer asks for it to be sharper and match the visual style, and the next round delivers it. This is the one problem designers can fix by asking.'},{type:\"image\",slot:\"image5\",caption:'Ridge headline across edits. The washed-out \"U\" sharpens by Edit 3 when the designer asks for it.'},{type:\"p\",text:'The structural problems don\\'t move. Broken text formatting holds at 3 mentions through every edit, three rounds for zero improvement. On the same campaign, a designer flagged that the \"D\" in RIDGE renders as an \"O\". That is what broken text formatting means, and three rounds of editing never fixed it.'},{type:\"image\",slot:\"image6\",caption:'Ridge: the \"D\" in RIDGE renders as an \"O\" through three rounds of editing.'},{type:\"p\",text:\"Incorrect copy stays at 1 the whole way. And on Sonic Collective, the problem grew. Illegible font showed up at Edit 2, flagged by two designers independently, on a problem the first generation didn't have.\"},{type:\"image\",slot:\"image7\",caption:\"Sonic Collective: illegible font emerges at Edit 2, on a problem the first generation didn't have.\"},{type:\"p\",text:\"Legibility itself splits along the same line. Contrast is the macro side of it, with one decision per image, and the model fixes it on request, which is why it clears by Edit 3. Size and weight are the micro side, where individual characters matter, and they don't move. Size and weight has zero positives across the whole study. Three designers flagged it as a weakness, none as a strength. The model can make the text stand out but it can't make it hold up.\"},{type:\"p\",text:\"The climb from 33% to 59% isn't GPT getting better at typography. It's designers fixing the one thing they can, while the structural issues stay put.\"},{type:\"h2\",text:\"Decoration versus deliverable\"},{type:\"quote\",text:\"When type is decoration the model handles it. When type is the deliverable, it breaks.\"},{type:\"p\",text:\"The pattern also tracks the briefs themselves. When typography isn't the point, the model is fine. When typography is the point, the model breaks.\"},{type:\"image\",slot:\"image8\",caption:\"Typography performance by brief. ASAGI and Studio Citrine net positive. Ridge and Sonic Collective net zero or negative.\"},{type:\"image\",slot:\"image9\",caption:\"Sentiment when typography is the brief's focus versus when it's incidental. The split is clean.\"},{type:\"p\",text:\"ASAGI and Studio Citrine are net positive, with zero negative mentions between them. Neither brief was built around typography. ASAGI tested subtle stylistic constraints. Studio Citrine tested realism and texture. Two briefs, Plunge Artesian Pops and Kinetix, drew no typography feedback at all. When the brief doesn't lean on type, designers don't raise it.\"},{type:\"p\",text:\"That flips when typography is the job.\"},{type:\"p\",text:\"Sonic Collective was designed to stress typography, iconography, and dense layouts. It nets zero with three positives canceled by three negatives. Ridge, built around dense layouts and small text, came out negative with two positives against three.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"The decoration-versus-deliverable line is the whole handoff. GPT delivers the typographic system with good visual hierarchy, brand fit, and font choice. That's the macro layer, and it lands early. Figma is for the execution: font size, weight, legibility, down to the individual characters. That's the micro layer, where iteration in GPT runs out of room. Use GPT to design the type system. Take it to Figma to set the type.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"42 sessions across 7 designers and 6 fictional brand briefs, each run through ChatGPT Images 2.0 with three rounds of edits and recorded end-to-end with Rollout. For the typography analysis, we filtered to mentions tagged as typography-related in the original 16-category prompt tagging, plus typography ratings from the per-edit quality reviews. Each typography mention was coded for sentiment (positive, negative, neutral) and theme.\"},{type:\"p\",text:'Themes were derived from individual designer comments: hierarchy and composition, brand fit and character, font choice and style, legibility and readability, size and weight, headline and title treatment, hierarchy of info text, effects and decoration, and a residual \"other / general typography\" bucket. We then grouped themes into two layers. Macro covers themes that describe the typographic system: hierarchy, composition, brand fit, font choice. Micro covers themes that describe execution: legibility, size, weight. The grouping was applied after coding, not before, and the split fell out cleanly. Every macro theme came in net positive, every micro theme came in net negative.'},{type:\"p\",text:\"For the edit-by-edit issue breakdown, we used the typography error categories from the deep dive's per-edit reviews: Incorrect or Incoherent Copy, Broken Text Formatting, Incorrect or Illegible Font, Lacking Contrast or Not Readable, and a residual \\\"Other\\\" category for one-off issues that didn't recur across iterations.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Typography sentiment was coded from the same designer transcripts and self-ratings used in the deep dive, with the same self-assessment bias. The sample is small, and we treat these as directional, not calibrated. The patterns, however, hold across edits, themes, and briefs in the same direction.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is a follow-up to our ChatGPT Images 2.0 production-readiness study, narrowed to one shared weakness: typography.\",href:\"/research/gpt-image-2-production-readiness\",cta:\"Read the deep dive\"}],notionId:\"363df2b6-cc6b-80e8-a954-fa7df93d3c3d\",updatedAt:\"2026-05-18T00:00:00Z\"};const gptImage2Production={slug:\"gpt-image-2-production-readiness\",title:\"ChatGPT Images 2.0 won every head-to-head. Here's where it still breaks.\",type:\"Benchmark\",publishedDate:\"2026-05-14\",readMinutes:7,subtitle:\"41 sessions, 7 designers, 6 briefs. GPT Image 2 nails the concept, then breaks at production.\",abstract:'GPT Image 2 swept our brand-campaign head-to-head. We pressure-tested production readiness with 41 designer sessions captured end-to-end on Rollout. Typography climbs from 33% to 59% \"no issues\" across three edits because designers force the fix. Prompt adherence drops the other way. Realism flatlines at 60-65%. Only 5 of 41 sessions shipped from GPT alone. Use GPT for concept and the first two edits, then hand off.',hero:false,coverImage:null,seoTitle:\"GPT Image 2 production readiness: the 41-session test \\xb7 Contra Labs\",seoDescription:\"GPT Image 2 won every head-to-head we ran. We pressure-tested production readiness with 41 designer sessions. Here is where the model still breaks.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"GPT Image 2 swept our head-to-head against Seedream 5.0 Lite, Gemini 3.1 Flash, and Flux 2 Pro. Production readiness is where the gap shows.\",'Typography climbs with editing (33% to 59% \"no issues\"). Prompt adherence drops the other way. Realism flatlines at 60-65%.','Only 5 of 41 sessions shipped from GPT alone. 10 more were \"client-presentable\" but still moved to Photoshop, Illustrator, or Figma.']},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"41 sessions, 7 designers, 6 briefs\"},{label:\"Method\",value:\"End-to-end session capture via Rollout\"},{label:\"Format\",value:\"3 edit rounds per brief, then handoff\"},{label:\"Dimensions\",value:\"Typography, prompt adherence, realism, modernity, color\"}]},{type:\"p\",text:\"Can a designer actually ship with ChatGPT Images 2.0? OpenAI bills it as designed for production-quality visuals: greater control and better performance with small text, iconography, UI elements, dense compositions, and subtle stylistic constraints. It's also the model that swept our brand-campaign eval against Seedream 5.0 Lite, Gemini 3.1 Flash Image Preview, and Flux 2 Pro. So we pressure-tested the harder claim: production readiness.\"},{type:\"video\",slot:\"video1\",caption:\"GPT Image 2 generations from the production-readiness test.\"},{type:\"p\",text:\"To test this, we designed six fictional campaign types to stress the visual dimensions OpenAI highlighted in the GPT Image 2 launch: small text and iconography, dense compositions, UI elements, and subtle stylistic constraints, plus realism, texture, and depth of field.\"},{type:\"p\",text:\"Every session was recorded end-to-end with Rollout, Contra Labs' session-capture tool. Rollout captures the screen, video, audio, mouse trails, clicks, and keyboard input, including everything designers did after they left the tool being evaluated. Full methodology at the end of the article.\"},{type:\"video\",slot:\"video2\",caption:\"Rollout captures the full session: screen, audio, mouse, clicks, and every tool the designer touches after they leave GPT.\"},{type:\"h2\",text:\"The production-readiness gap\"},{type:\"image\",slot:\"image1\",caption:'Typography \"no issues\" share climbs from 33% at Edit 1 to 59% at Edit 3.'},{type:\"p\",text:\"ChatGPT Images 2.0 doesn't fail evenly across the Rollout. Typography gets better with iteration. Prompt adherence gets worse. Designers can hear themselves doing both.\"},{type:\"p\",text:\"Typography improves with editing, and designers walk through the fix in real time:\"},{type:\"image\",slot:\"image2\",caption:\"Ridge brief across three edits: typography progressively sharpens.\"},{type:\"quote\",text:'Edit 1: \"The small text in general feels not very sharp, but it is still... it\\'s very readable.\"'},{type:\"quote\",text:'Edit 2: \"Okay, now going to prompt some changes I wanted to make. So change initial font to original font and background can be a bit better.\"'},{type:\"quote\",text:\"Edit 3: Typography, now I think we are good, but still maybe on the logo. Um, well, it's the same as before. I would say no issues.\"},{type:\"image\",slot:\"image3\",caption:\"Kinetix brief across three edits: prompt adherence drifts away from the brief.\"},{type:\"p\",text:'By Edit 3, the same designer has gone from saying \"not very sharp\" to \"no issues, that looks good.\" Typography is fixable on iteration.'},{type:\"p\",text:\"Prompt adherence gets worse.\"},{type:\"quote\",text:\"Edit 1: \\\"I like that. And the focus on just the credit card, as mentioned in the prompt, is pretty spot on. She is, like, kind of posing. It's cool. That's a cool image. I like that.\\\"\"},{type:\"quote\",text:\"Edit 2: \\\"What could I edit? Make the background more of a soft gradient, kind of like colored foggy glass. I don't know why that's the vibe it gave me. So what will it give me?\\\"\"},{type:\"quote\",text:\"Edit 3: \\\"I don't think this was, uh, no, really that good. I don't like the background. It looks low resolution, I did not ask for that. Her, half of her body went somewhere.\\\"\"},{type:\"p\",text:'By Edit 3, GPT has drifted from \"spot on the prompt\" to inventing texture and losing anatomy. The longer designers iterate, the more the model lets go of the original brief.'},{type:\"p\",text:\"Edit 3 is a regression. The longer designers iterate, the more likely GPT is to lose track of the original brief.\"},{type:\"image\",slot:\"image4\",caption:'\"No issues\" share by quality dimension across Edit 1, 2, 3. Prompt adherence and color regress at Edit 3.'},{type:\"p\",text:\"Prompt adherence isn't alone in regressing. Color and lighting follow the same arc. Realism and physics is among the worst-performing dimensions at every iteration, hovering around the 60-65% mark. Typography climbs with editing. Prompt adherence regresses. Realism just sits there. It's the dimension designers leave GPT for.\"},{type:\"h2\",text:\"What designers were actually asking for\"},{type:\"image\",slot:\"image5\",caption:\"Change areas requested by edit phase across all 41 sessions.\"},{type:\"callout\",icon:\"💡\",text:\"Edit 1 is for redirection: background, product detail, style and mood account for the bulk of first-edit prompts. Edit 2 is where designers ask GPT to fix what it got physically wrong: pose and anatomy, texture, realism. Edit 3 is for last-mile polish: logo placement, layout, composition, color.\"},{type:\"image\",slot:\"image6\",caption:\"An ASAGI brief across three phases. Edit 1 refines the composition. Edit 2 grounds the product in the scene. By Edit 3, the design is settled: small last-mile choices, not big redirects.\"},{type:\"p\",text:\"Two topics never go away:\"},{type:\"list\",ordered:false,items:[\"Background is the #1 ask at every phase, 16 mentions total. The same dimension flagged as GPT's relative weak spot in the Rollout.\",\"Typography stretches across all three edits, the only major topic designers keep returning to until it's right. That's why typography's \\\"no issues\\\" rate climbs from 33% to 59% with iteration. Designers force the fix themselves.\"]},{type:\"h2\",text:\"Where designers go when GPT runs out\"},{type:\"p\",text:'Of the 41 sessions by 7 designers, 15 sessions ended with a generation the designer would present to a client. But \"presentable to a client\" didn\\'t mean \"ready to ship,\" because 10 of those 15 still moved to Photoshop, Illustrator, or Figma before the asset could go out. Only 5 of the sessions produced a shippable asset from GPT alone.'},{type:\"p\",text:\"The remaining 26 sessions never reached client-ready at all, and 2 of those handed off to another tool to fix what GPT couldn't.\"},{type:\"p\",text:\"The pattern lines up with what designers asked for in Edit 3: logos, layout, composition, color. Last-mile polish, and precisely the work GPT couldn't deliver reliably.\"},{type:\"p\",text:\"Across all 41 sessions, transcripts surface the same five tools:\"},{type:\"list\",ordered:false,items:[\"Photoshop (most-mentioned): alignment, selective remove, AI cleanup.\",\"Adobe Illustrator: vector polish and structural fixes.\",\"Figma: typography, brand elements, final asset assembly.\",\"Pinterest and Google Images: visual references, run in parallel.\"]},{type:\"image\",slot:\"image7\",caption:\"Activities outside ChatGPT, ranked by mentions across the Rollout.\"},{type:\"p\",text:'A Studio Citrine brief made it concrete. After 8 minutes 43 seconds and three iterations inside ChatGPT, the designer landed on a generation they approved: \"yes, present to client.\" But the asset wasn\\'t shippable yet. They moved to Photoshop to remove the background, and finally to Figma for typography and brand assembly, all before the work could go out.'},{type:\"image\",slot:\"image8\",caption:\"Session 445 timeline: GPT for concept, Photoshop for cleanup, Figma for the shippable asset.\"},{type:\"p\",text:\"The generative model handled the concept. The pro tools handled everything that needed precision the model couldn't deliver.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"GPT Image 2 delivers on the easy half of OpenAI's claim. It hits a strong concept fast, handles dense compositions and stylistic constraints, and lets designers iterate without leaving the chat window. Production readiness is where the Rollout exposes the gap. Prompt adherence regresses by Edit 3. Realism flatlines in the low 60s. Background and typography never stop demanding attention. Only 5 of 41 sessions shipped from GPT alone, while the other 10 client-presentable generations still moved through Photoshop, Illustrator, or Figma before they could go out.\"},{type:\"p\",text:\"The smartest creative workflow in 2026 knows when to hand off. Use ChatGPT Images 2.0 for concept, composition, and the first two rounds of editing, where iteration still pays. By Edit 3, when prompt adherence starts to drift and the asks turn into logo placement, color, and pixel-level fixes, you've left the model's strength zone. Take anatomy and background work to Photoshop. Take typography and brand assembly to Figma. The model gets you to a concept fast, and the pro stack gets you to a shippable asset.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"To test this, we selected six campaign types to stress the visual dimensions OpenAI highlighted in the GPT Image 2 launch: small text and iconography, dense compositions, UI elements, and subtle stylistic constraints. The six briefs: Studio Citrine for realism and texture, Sonic Collective for typography, iconography, and dense layouts, Ridge for dense layouts and small text, ASAGI for subtle stylistic constraints and brand mood, Kinetix for depth of field and fine grain control, and Alpine for realism and texture.\"},{type:\"p\",text:\"Seven designers were given all six fictional campaign briefs and asked to use GPT Image 2 as their primary tool. Each session followed the same pattern: an initial generation, followed by three rounds of edits (Edit 1, Edit 2, Edit 3). After the third edit, designers could either continue in ChatGPT or move to a tool of their choice.\"},{type:\"p\",text:\"Sessions were recorded end-to-end using Rollout, Contra Labs' session-capture tool. Rollout records the screen, video, audio, mouse trails, clicks, and keyboard input, including everything designers did after they left ChatGPT.\"},{type:\"p\",text:\"Each generation was flagged for errors by the evaluators on five dimensions:\"},{type:\"list\",ordered:false,items:[\"Typography: incorrect or incoherent copy, broken text formatting, illegible font, lacking contrast, not readable, or no issues.\",\"Prompt Adherence: hallucinations, omissions, inaccuracies, or no issues.\",\"Realism and Physics: unnatural textures, broken object or body physics, impossible light or shadow directions, or no issues.\",\"Modernity and Trend: dated font, dated color scheme, dated imagery, dated graphic asset styles, or no issues.\",\"Color and Lighting: inconsistent palette, incorrect shades, clashing colors, or no issues.\"]},{type:\"p\",text:\"During analysis, each prompt was tagged using 16 categories (background, typography, pose, texture, etc.) to surface what designers were trying to change at each phase.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused production-readiness studies, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"35fdf2b6-cc6b-8044-80a1-f3c54d019df8\",updatedAt:\"2026-05-14T00:00:00Z\"};const claudeDesign={slug:\"claude-design-fast-draft-not-precision-tool\",title:\"Claude Design gets you 40%, Figma gets the rest.\",type:\"Benchmark\",publishedDate:\"2026-05-20\",readMinutes:5,subtitle:\"5 sessions, 5 designers, 1 real-world client brief. Strong as a starting structure, breaks under precision edits.\",abstract:'Anthropic positions Claude Design as a tool for exploration with \"polished\" as the quality bar. We pushed past that and judged it against client-ready. Designers praised the system-level execution, hover and scroll details, logo and wordmark fixes. Layout and spacing was the only theme that worsened with iteration: 60% flagged it at Edit 1, every active designer by Edits 4–5. Verdict: take it to roughly 40% completion, then take over manually in Figma.',hero:false,coverImage:null,seoTitle:\"Claude Design profile: 40% in Claude, the rest in Figma \\xb7 Contra Labs\",seoDescription:\"5 designers, 1 real-world client brief. Claude Design generates a strong system fast, then breaks under precision edits. Layout and spacing worsens with iteration: 60% at Edit 1, 100% of active designers by Edits 4–5.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Strong as a fast first draft. Designers praised the system-level coherence, hover states, scroll animations, and logo and wordmark fixes.\",\"Layout and spacing was the only theme that worsened with iteration. 60% of designers flagged it at Edit 1, every active designer by Edits 4–5.\",\"Output regressed under precise edits. The tool ignored instructions or undid correct work, sending designers reaching for Figma for predictability.\",\"Color came back monotone, leaning on the wrong neutrals. Tone read too playful for the client brief.\",\"Verdict from the designer who almost walked: use it to roughly 40% completion, then take over manually.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"5 sessions, 5 designers, 1 real-world client brief\"},{label:\"Format\",value:\"Landing page from scratch \\xb7 brief, references, palettes provided\"},{label:\"Method\",value:\"Multi-round prompted edits, self-reported per session\"},{label:\"Coding\",value:\"5 themes + sentiment, gpt-4o assisted\"}]},{type:\"image\",slot:\"image1\",caption:\"Designer evaluation of Claude Design against a real-world client brief.\"},{type:\"p\",text:'\"RIP page builders.\" The hype around Claude Design runs hot. \"It\\'s over for designers, Figma is dead,\" Anthropic itself is more measured. It positions Claude Design as a tool for designer exploration and non-designer visual production, with \"polished\" as the quality bar. We wanted to test pushing past the stated bar. So we handed five designers a real-world client brief, a landing page designed from scratch, and judged it against a deliberately higher standard: client-ready.',parts:['\"',{text:\"RIP page builders.\",href:\"https://x.com/GaelBreton/status/2045428933995163799\"},'\" The hype around Claude Design runs hot. \"',{text:\"It's over for designers\",href:\"https://x.com/PrajwalTomar_/status/2056775212763598946\"},\", \",{text:\"Figma is dead\",href:\"https://x.com/jituux/status/2045225591524450815\"},',\" Anthropic itself is more measured. It positions Claude Design as a tool for designer exploration and non-designer visual production, with \"polished\" as the quality bar. We wanted to test pushing past the stated bar. So we handed five designers a real-world client brief, a landing page designed from scratch, and judged it against a deliberately higher standard: client-ready.']},{type:\"p\",text:\"Designers called the execution incredibly strong on most tasks: it read visual cues, design systems, and written briefs together to produce a coherent final system, and it was notably good at fixing logos and wordmarks. The small details drew praise too: interactions, hover effects, a scroll variant that makes the nav more visible as you move down the page. One designer said the final landing page generated from the system exceeded every one of their expectations. But that was the ceiling, not the floor: sessions kept hitting the same wall, the layout and the style.\"},{type:\"video\",slot:\"video1\",caption:\"Claude Design session, captured end-to-end.\"},{type:\"p\",text:\"Three things came up repeatedly. Claude's color choices felt off. The output came back monotone, leaning on the wrong neutrals. Two designers flagged layout and structure problems, naming clutter and broken padding. And the tone read too playful for the client brief.\"},{type:\"image\",slot:\"image2\",caption:\"Layout and spacing example: clutter and broken padding in a Claude Design output.\"},{type:\"h2\",text:\"The moment they almost left\"},{type:\"image\",slot:\"image3\",caption:\"Layout and spacing is the only theme that rises with iteration, flagged by 60% of designers at the first edit and by every active designer by edits four and five. Later rounds reflect fewer designers still iterating.\"},{type:\"p\",text:\"Frustration with the wait was real, and several designers hit a point where they nearly walked. One said that for the first half hour it felt faster to open Framer than to keep explaining the design to an AI.\"},{type:\"p\",text:\"This layout-and-spacing failure, showing up in a live session, is structural. The breaking point was the regression in output quality. Designers fed the tool specific edits, only to watch it ignore them or undo work that was already correct. The tool created the structure, and then failed to keep it stable.\"},{type:\"image\",slot:\"image4\",caption:\"Generic output: Claude Design defaulting to a familiar visual treatment regardless of brief.\"},{type:\"p\",text:\"The designers reaching for Figma and Framer said the opposite of what you'd guess: they reached for them because they're predictable. A deliberate change produces exactly the intended result, where another prompt round was a coin flip that could make things worse.\"},{type:\"p\",text:\"The real cost was the wait with no guarantee the output moved forward.\"},{type:\"p\",text:'The designers who didn\\'t abandon it did one thing differently: they stopped treating it as a Figma substitute. Held to \"generate a fast starting structure,\" it delivered. Pushed toward \"make precise edits to a near-final layout,\" it broke.'},{type:\"h2\",text:\"What they'd change\"},{type:\"p\",text:\"When asked what they'd fix, designers described rebuilds. The change requests were structural: redo the layout, rethink the concept, reposition text throughout, fix a type hierarchy where font weight made copy unreadable, replace placeholder lettering with real elements. That's the work of getting a draft to something a client would accept.\"},{type:\"p\",text:\"What makes that damning rather than expected is the second half: every designer believed the tool should have handled exactly these things. Layout, color, text positioning, structure: not aspirational asks, but the baseline they walked in assuming an AI design tool would cover. The gap is between what the tool did and what designers considered table stakes.\"},{type:\"image\",slot:\"image5\",caption:\"Designer expectations against delivered output, theme by theme.\"},{type:\"p\",text:\"The tool had capability to spare. Designers praised the hover states, scroll animation on the nav, and small text behaviors: work nobody had asked for and nobody needed at this stage. That's the failure restated. A tool that polishes interaction details while the layout underneath won't hold is a misdirected one. The tool aimed at the surface edits while the structural fundamentals it was actually asked for went missing.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"The honest takeaway came from the designer who almost walked: use it to get to 40% quickly, then take over manually. Don't try to push it to 80% through prompting. That's where it breaks down, and where the time loss starts.\"},{type:\"p\",text:\"Claude Design is a fast way to a starting structure: a strong first draft of the system. It is not yet a precision instrument. Generate the skeleton in Claude. Set the details in Figma.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"5 sessions across 5 designers and one real-world client brief: a landing page supplied with a written brief, inspirational imagery, reference websites, and candidate color palettes. Each designer ran one session and iterated through multiple rounds of edits, prompting Claude Design as they would in a normal workflow. After each session, designers reported on tone and style fit, layout and structure, what they would change, and whether the output met their expectations. Open-ended responses were coded into the five themes shown in the edit-round chart and throughout this article using OpenAI's gpt-4o model.\"},{type:\"list\",ordered:true,items:[\"Layout & spacing (structure, padding, alignment, composition)\",\"Visual & brand (color palette, neutrals, logo and wordmark, overall brand feel)\",\"Typography (typeface choice, hierarchy, weight, readability)\",\"Components & interactivity (hover states, scroll and nav behaviors, component-level treatments)\",\"Copy & content (placeholder versus real text, content fit)\"]},{type:\"p\",text:\"Each comment was also coded for sentiment (positive, negative, neutral). We then read the themes against the edit rounds to see which issues cleared with iteration and which held.\"},{type:\"image\",slot:\"image6\",caption:\"Reference materials supplied to designers: candidate color palette and brand direction.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Feedback was self-reported from the same designers who produced the work, carrying the usual self-assessment bias. The sample is small, and we treat these findings as directional, not calibrated. Only one brief was tested, so brief-specific effects can't be cleanly separated from the tool's general behavior. The patterns, however, hold across designers and across edit rounds in the same direction: a strong system-level start, weak precision execution under iteration.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. Claude Design is the first of our Web Design profile studies, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"34bdf2b6-cc6b-80ec-af9c-cfb9af880c30\",updatedAt:\"2026-05-20T00:00:00Z\"};const claudeDesignPrecision={slug:\"claude-design-prompt-precision\",title:\"In Claude Design, your opening prompt decides the ceiling.\",type:\"Benchmark\",publishedDate:\"2026-05-21\",readMinutes:6,subtitle:\"5 designers, 5 openings, 1 luxury brief. The first prompt set what each session could reach.\",abstract:'We pulled every prompt five working designers typed into Claude Design across one luxury landing-page brief. Comprehensive briefs landed at production-ready. A one-word opener landed in brainstorming. One designer wrote 16 prompts, climbed in specificity, and finished worse than they started: a single \"reconsider\" meta prompt at iteration 2 dropped output quality by -0.7, and the session never recovered. Refinement and corrective made up two-thirds of every prompt typed.',hero:false,coverImage:null,seoTitle:\"In Claude Design, your opening prompt decides the ceiling \\xb7 Contra Labs\",seoDescription:\"5 designers ran the same luxury brief through Claude Design. Comprehensive briefs landed at production-ready; a one-word opener landed in brainstorming. One designer wrote 16 prompts and finished worse than they started.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Structured briefs landed at mockup or production-ready. A one-word opener landed in brainstorming.\",\"One designer wrote 16 prompts, climbed in specificity, and finished worse than they started.\",'A \"reconsider\" meta prompt at iteration 2 dropped output quality by -0.7. The session never recovered.',\"Refinement and corrective made up two-thirds of every prompt typed.\",\"The only designer who specified visual values upfront reached production-ready.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"5 sessions, 5 designers, 1 fictional luxury brief (Aetheon)\"},{label:\"Format\",value:\"Landing page from scratch \\xb7 brand, palette, components pre-approved\"},{label:\"Coding\",value:\"Every prompt scored for structure & intent on a fixed rubric, gpt-4o assisted\"},{label:\"Source\",value:\"Rollout end-to-end session capture \\xb7 screen, mouse, keyboard, audio\"}]},{type:\"image\",slot:\"image1\",caption:\"Five designers ran the same luxury landing-page brief through Claude Design.\"},{type:\"p\",text:\"We pulled every prompt five working designers typed into Claude Design across one luxury landing-page brief. The data points the same direction in every session: the first prompt matters more than the fifteen that follow it.\"},{type:\"p\",text:\"Our first piece on Claude Design tested the output. The tool delivered the first draft fast, then stumbled when designers tried to push it further. Layout, color, and typography were the consistent failures, and designers settled on 40% in Claude, the rest in Figma.\",parts:[\"Our \",{text:\"first piece on Claude Design\",href:\"/research/claude-design-fast-draft-not-precision-tool\"},\" tested the output. The tool delivered the first draft fast, then stumbled when designers tried to push it further. Layout, color, and typography were the consistent failures, and designers settled on 40% in Claude, the rest in Figma.\"]},{type:\"p\",text:\"This piece moves from output to input. Every prompt was coded for structure and intent. What follows: how five different openings produced five different ceilings, where regression starts, and why one designer wrote sixteen prompts and finished worse than they started.\"},{type:\"h2\",text:\"The first prompt\"},{type:\"p\",text:\"Every session reached a moment where the design system was built, the components were generated, and the designer had to type the first thing on a page that didn't exist yet. The tool already had context: a brand, a palette, a component library the designer had just approved. The brief, reference imagery, and inspiration sat alongside it. What designers typed was the first instruction on top of all of that.\"},{type:\"p\",text:\"The shape is what carries the story. The opening is doing two things at once: a brief that sets context, audience, and aesthetic, and a directive that names what to build, what interactions to use, and what to avoid. That hybrid shape was the most specific opening of the five. It's one of four shapes designers used to open their sessions, and the variation in those shapes is where the story starts.\"},{type:\"image\",slot:\"image2\",caption:\"First-prompt specificity by participant, Claude-scored 0–1. P5's Brief-Then-Directive Hybrid topped at 0.75. P1's one-word Minimal Confirmation scored 0.\"},{type:\"h2\",text:\"The five openings\"},{type:\"p\",text:\"The Aetheon prompt above was Participant 5's, a Brief-Then-Directive Hybrid at 263 words. We scored each opening for specificity on a 0–1 scale: how many concrete design decisions the prompt fixed in place versus left to the tool. Participant 5's opening scored 0.75, the highest of the five, and was the only one to specify visual values from the design system the designer had just approved.\"},{type:\"p\",text:\"Participant 4 wrote nearly as much, 242 words, organized as a Comprehensive Design Brief with every category an agency document would include: role, overview, objective, audience, sections, visual system, interactions, aesthetic, and constraints. Participant 3 cut that scope in half: 161 words, a Context-Action Framework with project, audience, pain points, and a creation directive, but no visual or interaction specifics.\"},{type:\"p\",text:\"The other two openings looked nothing like briefs. Participant 2 wrote twelve words: a single corrective directive asking the tool to swap an asset on what was already on the screen. Participant 1 wrote one word, an affirmation: the Minimal Confirmation, accepting what the tool had produced and moving on.\"},{type:\"p\",text:\"What designers chose to include tells a clearer story than how specific they were. Every one of them included a project brief or task instruction in some form. Most named a target audience and a goal. But across all five openings, only Participant 5 specified visual values (exact references to the design system they'd already built). The rest assumed the tool would carry the system over. None of the five provided hex codes or pixel values in their first prompt, and none asked for a specific output format. The most consistent gap, even in the most comprehensive briefs, was the same one the first article identified from the other side: precision the tool was being asked to produce without being given any of its specifics.\"},{type:\"image\",slot:\"image3\",caption:\"Five categories of prompt move: scaffolding builds, additive adds, refinement adjusts, corrective fixes, meta steps back. Refinement and corrective accounted for two-thirds of every prompt typed.\"},{type:\"p\",text:\"The five prompt categories describe what kind of move a designer made on any given turn. Scaffolding builds something new. Additive adds to what exists. Refinement adjusts. Corrective fixes what broke. Meta asks the tool to step back and reconsider.\"},{type:\"p\",text:\"No two designers used the same mix. Participant 4, who had written the second-most-comprehensive opening, lived almost entirely in refinement, five prompts adjusting what the tool had produced. Participant 5, the Aetheon designer, spread their session across every category, with a notable cluster of corrective prompts. Participant 1, the Minimal Confirmation opener, never wrote a refinement at all; their session was a small number of corrective and scaffolding moves and nothing else. Participant 2 made one corrective and stopped.\"},{type:\"p\",text:\"Two patterns hold across the variation. Refinement is the most common category overall, fourteen prompts across the five designers. Corrective is second, at eleven. Together they account for roughly two-thirds of everything anyone typed. Scaffolding, by contrast, was almost entirely a first-prompt behavior. Only one designer wrote a scaffolding prompt anywhere except the opening. The first prompt was the only time most designers stepped back and built; after that, they were adjusting and fixing what the tool returned.\"},{type:\"h2\",text:\"Did opening well help?\"},{type:\"image\",slot:\"image4\",caption:\"Opening specificity vs final design stage. More structure in the opening correlated with more finished outputs, with one exception.\"},{type:\"p\",text:\"The two designers with the strongest opening moves (Participant 4's Comprehensive Design Brief and Participant 5's Brief-Then-Directive Hybrid) reached the two most finished outcomes, mockup and production-ready. The Minimal Confirmation opener landed in brainstorming. The Iterative Asset Swap landed at mockup, despite a twelve-word opening, by working with what the tool had already produced rather than rebuilding from scratch.\"},{type:\"p\",text:\"The pattern is directional. More structure in the opening correlated with more finished outputs, with one exception. Participant 3 opened with a real scaffolding prompt (middle of the pack on specificity, a real Context-Action Framework) and ended in brainstorming, the same outcome as the designer who'd opened with a single word. The contrast shows up in the work itself.\"},{type:\"h2\",text:\"The session that proves it\"},{type:\"p\",text:\"Participant 3 is the most informative session we ran. The opening predicted a mockup or better. The session ended in brainstorming.\"},{type:\"image\",slot:\"image5\",caption:\"Participant 5's session ended at production-ready. Participant 3's ended in brainstorming. Both opened from the same client brief.\"},{type:\"p\",text:\"Across the session, Participant 3 wrote sixteen prompts, more than three times as many as any other designer. They kept going. They got more specific over time. Their average prompt by mid-session was more precise than their opening.\"},{type:\"image\",slot:\"image6\",caption:\"Participant 3 session arc \\xb7 specificity vs output quality across 16 prompts. Quality stayed below zero for twelve of sixteen prompts. The meta prompt at iteration 2 dropped quality to -0.7.\"},{type:\"p\",text:\"The red line is output quality, scored across each iteration on a −1 to +1 scale. It sits below zero for twelve of the sixteen prompts. The peak was a single refinement at iteration four, just above +0.2. The trough was prompt two, a meta prompt asking the tool to step back and reconsider, which pulled quality down to −0.7. The tool treated it as an instruction to discard: the structure from the opening prompt was lost, and the session never fully recovered. Every subsequent corrective was a fight to rebuild ground that had been there a prompt earlier.\"},{type:\"p\",text:\"Look at the prompt-role labels along the bottom. Eight of the sixteen prompts are corrective. Half of this designer's session was spent telling the tool to fix what it had broken. Refinements made up most of the rest. The only prompts that produced positive quality scores at the end were two additives, small accretions, late in the session, after the structural fight was already lost.\"},{type:\"p\",text:\"This is the regression story from the first article, observed at the resolution of a single session. Participant 3 kept going for sixteen rounds, climbing in specificity, and the quality score never crossed back into positive territory until the last two prompts, by which point the work had drifted far from the brief. The opening prompt sets the ceiling. What comes after determines whether the ceiling holds. In Participant 3's session, it didn't.\"},{type:\"h2\",text:\"Verdict\"},{type:\"p\",text:\"The opening prompt is the most consequential move in a Claude Design session. The two designers who opened with structured briefs reached the two most finished outputs; the designer who opened with one word ended in brainstorming. The correlation isn't subtle.\"},{type:\"p\",text:\"But structure at the start doesn't survive iteration on its own. Refinement and corrective prompts made up roughly two-thirds of everything designers typed, and sessions regressed through those moves, even when designers kept trying. Participant 3 wrote sixteen prompts, got more specific over time, and finished worse than they started.\"},{type:\"h3\",text:\"Three patterns worth carrying forward\"},{type:\"list\",ordered:false,items:[\"Specify visual values in the opening, even when the design system is already built. Only one designer did this, and it's the one who reached production-ready. The system you approved is not context the tool can be trusted to read on its own.\",'Be cautious with meta prompts. The single largest quality drop in the study came from a prompt asking the tool to step back. Treat \"reconsider\" as a request to discard.',\"Scaffolding belongs at the start. Only one designer wrote a scaffolding prompt anywhere except the opening. After the first move, the session is a refinement and correction game. Plan accordingly.\"]},{type:\"p\",text:\"The open question is whether the regression we observed is a property of the tool or a property of how designers learn to prompt it. A second round, with the same designers and a different brief, would start to answer that.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"Five designers each ran a single session with Claude Design against the same client brief: a landing page for a fictional ultra-luxury desert resort called Aetheon. Each designer was given the brief, reference imagery, and candidate color palettes before the session began. They worked through Claude Design's standard flow (entering a brand name, uploading inspirational assets, generating a design system, and reviewing the components Claude Design produced) before writing their first prompt against the page itself.\"},{type:\"p\",text:\"Sessions were recorded end-to-end using Rollout, Contra Labs' session-capture tool. Rollout records the screen, video, audio, mouse trails, clicks, and keyboard input, including everything designers did inside and outside Claude Design.\"},{type:\"p\",text:\"We collected every prompt across every session and coded each one for structure and role using OpenAI's gpt-4o model applying a fixed rubric. First prompts were classified into five structural shapes: Minimal Confirmation, Iterative Asset Swap, Context-Action Framework, Comprehensive Design Brief, and Brief-Then-Directive Hybrid. All prompts across the session were classified into five categories of intent: scaffolding (build something new), additive (add to what exists), refinement (adjust), corrective (fix what broke), and meta (step back and reconsider). Each designer's final output was self-rated for design readiness on a four-point scale: restart, brainstorming, mockup, and production-ready.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Feedback was self-reported from the same designers who produced the work, carrying the usual self-assessment bias. The sample is small, and we treat these findings as directional. Only one brief was tested, so brief-specific effects can't be cleanly separated from the tool's general behavior. The patterns, however, hold across designers and across edit rounds in the same direction: a strong system-level start, weak precision execution under iteration.\"},{type:\"callout\",text:\"Contra Labs runs deep-dive research on what AI design tools are actually good at, the prompting patterns that move outputs forward, and the moves that quietly sink sessions. The next round of this study is in progress.\",href:\"/research\",cta:\"See all research\"}],notionId:\"365df2b6-cc6b-80bc-901d-f2d464662bac\",updatedAt:\"2026-05-21T00:00:00Z\"};const fireflyEdit={slug:\"firefly-edit-feature\",title:\"Can Adobe Firefly edit like Photoshop?\",type:\"Benchmark\",publishedDate:\"2026-05-27\",readMinutes:4,subtitle:\"8 targeted edits across 4 designer sessions. Firefly cleanly resolved 1, drifted on 5, and missed 2.\",abstract:\"Adobe's pitch for Edit is select a region, describe the fix, keep the rest of the frame intact. We ran Firefly Edit through eight targeted still-image edits, one Hero edit and one Social edit per session across four sessions. Firefly cleanly resolved the requested change once. Five attempts landed partial: the edit moved in the right direction but let composition, identity, or product placement drift. Two attempts didn't clear the named issue. Firefly understood the prompt and made the change. Holding the rest of the image still while executing it is the harder problem.\",hero:false,coverImage:null,seoTitle:\"Can Adobe Firefly edit like Photoshop? \\xb7 Contra Labs\",seoDescription:\"Adobe Firefly Edit tested through 8 targeted still-image edits across 4 designer sessions. One clean resolution, five partials, two misses. Constraint control is the next product fix.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"1 of 8 Edit attempts cleanly resolved. The win was a contained object fix on a Hero still.\",\"5 of 8 attempts were partial. Firefly made the change but let composition, identity, or product placement drift.\",\"Social was the harder surface. None of the 4 Social edits resolved cleanly; the frame itself is the deliverable.\",\"The next product fix is constraint control: lock everything outside the selected region by default.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"4 sessions, 8 Edit attempts (Hero + Social per session)\"},{label:\"Scope\",value:\"Still deliverables only (no video cuts)\"},{label:\"Method\",value:\"Each attempt coded Yes / Partial / No\"},{label:\"Capture\",value:\"Rollout session capture: screen, audio, narration, input\"}]},{type:\"image\",slot:\"image1\",caption:\"Adobe Firefly's Edit feature, tested through 8 targeted still-image edits across four designer sessions.\"},{type:\"p\",text:\"Our first piece looked at prompt shape behind Firefly's strongest first-pass outputs. The outputs that reached production-ready had something in common: designers gave Firefly physical direction. This piece stays in the middle of the workflow: what happens when designers try to refine the work inside Firefly before leaving for Photoshop.\"},{type:\"p\",text:\"Adobe's pitch for Edit is straightforward. Select a region, describe the fix, and keep the rest of the frame intact. That is the promise this article tests.\"},{type:\"p\",text:\"Contra Labs ran Firefly Edit through eight targeted still-image edits, one Hero edit and one Social edit in each of four sessions. Firefly cleanly resolved the requested issue once. Five attempts were partial. In those cases, the edit moved in the right direction, but missed a production constraint, changed more than the target area, or introduced a new issue while solving the named one. Two attempts did not resolve the target issue.\"},{type:\"video\",slot:\"video1\",caption:\"Firefly Edit session capture across the four-designer panel.\"},{type:\"h2\",text:\"Most edits landed halfway\"},{type:\"p\",text:\"The Edit section covered only still deliverables: Hero and Social. There were eight targeted Edit attempts total: one Hero edit and one Social edit per session.\"},{type:\"list\",ordered:false,items:[\"Hero: 1 Yes, 2 Partial, 1 No.\",\"Social: 0 Yes, 3 Partial, 1 No.\"]},{type:\"p\",text:\"The clean-resolution rate was low, but the more useful finding is how consistent the partial outcomes were. Firefly often moved in the right direction. It just did not hold the rest of the image still enough to treat the result as production-safe by default.\"},{type:\"image\",slot:\"image2\",caption:\"Edit-feature resolution by deliverable (n = 4 sessions). Green = yes, orange = partial, red = no.\"},{type:\"h2\",text:'Why \"partial\" did not mean failure'},{type:\"p\",text:\"The partial outcomes were not vague middle scores. In most cases, Firefly understood the main request. The problem was that the request carried production constraints the model did not see. Keep the product visible. Keep the crop stable. Keep the face consistent. Do not add something new.\"},{type:\"p\",text:\"The partials fell into four patterns:\"},{type:\"list\",ordered:false,items:[\"The target changed, but the hierarchy changed too. The edit landed, but a key element lost prominence in the frame.\",\"The target changed, but a production detail stayed wrong. The visible problem moved. A secondary attribute like shadow or lighting did not.\",\"The target changed, but identity or pose moved with it. The correction applied, but facial features or body position shifted enough to need another pass.\",\"The target changed, but a new artifact appeared. The edit resolved one issue and left behind something that was not in the original image.\"]},{type:\"p\",text:\"That is more encouraging than the numbers suggest. Firefly can read the instruction. What it does not yet do well is hold the rest of the image still while executing it. The Hero and Social sections below walk through specific examples from each pattern.\"},{type:\"h2\",text:\"Hero edits: the win came from a contained object fix\"},{type:\"p\",text:\"Hero was the stronger Edit surface. It produced the study's only clean resolution: one Hero edit was coded Yes, two landed as Partial, and one landed as No.\"},{type:\"p\",text:\"The clean Hero example shows the best version of the workflow. The edit asked Firefly to remove distracting objects and age the tray-holding hand:\"},{type:\"quote\",text:\"Please age the hand of the person holding the tray by 10 years. The hand must be similar to a man in his late 50's. Remove the glass and wooden box.\"},{type:\"p\",text:\"The result did what the prompt asked for. (The before and after images also reflect a successful earlier iteration that moved the third hand to come from the left of the frame. That change preceded this edit.)\"},{type:\"image\",slot:\"image3\",caption:\"Hero image before and after the clean Edit example.\"},{type:\"p\",text:\"Edit can work when the request is concrete, local, and visually bounded. The partial Hero examples show what still needs improvement. In one partial case, the requested lighting or shadow change did not land cleanly. In another, the composition moved closer to the target, but the product became too secondary in the frame. The pattern was constraint drift. Firefly read the prompt, made the visible change, and let something else shift while doing it.\"},{type:\"h2\",text:\"Social edits: the frame is the deliverable\"},{type:\"p\",text:\"Social was less forgiving. None of the four Social edits fully resolved cleanly: three were coded Partial and one was coded No.\"},{type:\"p\",text:\"The Social pattern is stricter because a social asset has less slack. Framing, crop, typography, product placement, and reference-image behavior ARE the deliverable. When Edit shifts any of those while addressing the selected region, the output can feel directionally improved and still fail the job.\"},{type:\"p\",text:\"The transcripts and visuals show two versions of the same control problem. In one Social attempt, the Edit request was narrow:\"},{type:\"quote\",text:\"Regenerate the eyes, make the look to the right.\"},{type:\"p\",text:'Firefly did move the gaze, but the edit still carried \"the same issue with the format and the reference image,\" and the eyes \"still need a little bit more tweaking.\"'},{type:\"image\",slot:\"image4\",caption:'Social image before and after a targeted Edit request: \"regenerate the eyes, make the look to the right.\"'},{type:\"p\",text:\"A separate Social attempt shows the same pattern through composition instead of anatomy. The evaluator was trying to force a vertical story format while preserving identity and product details. Firefly moved closer to the requested format, but introduced a new wall artifact: \\\"I'm making another iteration because now it make, like, a weird thing that isn't in the wall.\\\" That is why Social produced partial outcomes instead of clean wins.\"},{type:\"p\",text:\"For Social, Edit can test whether a correction is directionally possible. To become a stronger finishing tool, it needs to preserve the non-target attributes that make a Social asset usable: crop, pose, face, product placement, and background stability.\"},{type:\"h2\",text:\"Verdict\"},{type:\"p\",text:\"Firefly Edit works best when the request has one visible job. The clean Hero case proves the upside: remove these objects, age this hand, keep the rest of the image usable. Firefly did it.\"},{type:\"p\",text:\"The partials show the next product opportunity. Edit often understood the requested change, but it did not always understand what had to stay unchanged. A product became less prominent. A shadow stayed wrong. A new wall artifact appeared while the format moved closer to the brief.\"},{type:\"p\",text:\"That is a fixable problem. The next product win is constraint control. Lock the surrounding area by default, preserve identity and crop unless asked otherwise, and make the selected region the only place the image is allowed to move.\"},{type:\"p\",text:'The practical read is positive but specific. Use Edit now for exploratory regional changes and contained object fixes. To make it a finishing tool, Adobe needs to make \"do not change the rest\" as reliable as the edit itself.'},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"The study ran four sessions. Each session followed the same three-deliverable structure: a Hero still, a Social still, and a 5-second Social video cut. This article analyzes only the Edit section of the experiment: one targeted Edit-feature attempt on each still deliverable, for 8 Edit attempts across the panel.\"},{type:\"p\",text:\"Each Edit attempt was coded into one of three outcomes: Yes (targeted issue cleared with no observable change to the rest of the scene), Partial (targeted issue cleared but with changes outside the requested region, or partial resolution), and No (targeted issue not cleared).\"},{type:\"p\",text:\"All sessions were captured on Rollout, Contra Labs' session-capture tool, with screen, audio, narration, mouse, and keyboard input retained for the full session length, in and out of the Firefly app.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Feedback was self-reported during live sessions, carrying the usual self-assessment and on-camera bias. The sample is small (n=4 sessions, 8 Edit attempts) and should be treated as directional, not calibrated. Brief-specific effects cannot be fully separated from Firefly's general behavior. The repeated pattern across the panel was still clear: Edit often moved the requested region, but cleanly preserving the surrounding image was inconsistent.\"},{type:\"callout\",text:\"Contra Labs runs deep-dive research on what AI design tools are actually good at. This is the second study in our Firefly series; the first looked at what makes a prompt land production-ready on the first pass.\",href:\"/research\",cta:\"See all research\"}],notionId:\"368df2b6-cc6b-8051-bdec-d43341c923bc\",updatedAt:\"2026-05-27T00:00:00Z\"};const firefly={slug:\"firefly-production-ready-prompt\",title:\"The only prompt that got videos to production-ready in Adobe Firefly.\",type:\"Benchmark\",publishedDate:\"2026-05-22\",readMinutes:5,subtitle:\"4 designers, 3 deliverables each. The prompts that landed described physical direction, not aesthetic mood.\",abstract:\"We ran four working designers through Adobe Firefly on briefs from their own client work, with the same three-deliverable structure (Hero still, Social still, 5-second Social video). One video reached production-ready on the first pass. The prompts that landed named physical objects, placed them in space, and described how they behave. Designers reached for Photoshop 20 times across the sessions, most often as a deliberate cutoff from the re-prompting loop.\",hero:false,coverImage:null,seoTitle:\"Adobe Firefly: the prompt that got video to production-ready \\xb7 Contra Labs\",seoDescription:\"4 designers ran their own client briefs through Adobe Firefly. One video got to production-ready on the first pass. The prompts that landed described physical direction, not aesthetic mood.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"One of 4 videos landed production-ready on the first pass. Its prompt described where the model moves and where the camera sits.\",\"Two of 4 Social stills landed production-ready. The prompts that worked described physical layout and material behavior.\",\"Failures don't average. Hero misses on lighting and identity, Social on composition, Video on motion continuity and physics.\",\"Designers named Photoshop 20 times across the sessions, most often as a deliberate cutoff from the re-prompting loop.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"4 designers, 4 own-client briefs\"},{label:\"Method\",value:\"End-to-end session capture via Rollout\"},{label:\"Format\",value:\"Hero still, Social still, 5-sec Social video. 2 iterations each.\"},{label:\"Capture\",value:\"Screen, audio, narration, mouse, keyboard. 90–120 min/session.\"}]},{type:\"image\",slot:\"image1\",caption:\"The only video prompt to land production-ready in Adobe Firefly on the first pass.\"},{type:\"p\",text:\"In Adobe Firefly, one video prompt in the whole study got to production-ready on the first pass.\"},{type:\"p\",text:\"Adobe positioned Firefly 5 around editing. The launch framed prompt-based and layered editing as the model's signature capabilities: point at a region, describe the change, apply it without regenerating the rest. Adobe's pitch was that Firefly now brings the \\\"power of Photoshop\\\" inside Firefly itself, with granular control over generated images so creators don't have to modify entire prompts and start over.\"},{type:\"p\",text:\"We ran four working designers through the same three-deliverable structure (Hero still, Social still, 5-second Social video) on briefs from their own client work. Most outputs didn't reach production-ready. The ones that did had something in common.\"},{type:\"p\",text:\"The model handled lighting briefs with the kind of fluency that drew unprompted praise, rendered legible text on a Social still, and produced one clean video with believable cloth physics on the first generation. What separated the outputs that shipped from the ones that didn't came down to the prompt.\"},{type:\"video\",slot:\"video1\",caption:\"Adobe Firefly session capture across the four-designer panel.\"},{type:\"h2\",text:\"The prompts that landed\"},{type:\"image\",slot:\"image2\",caption:\"Deliverable readiness state across the 4-designer panel.\"},{type:\"p\",text:\"Only one prompt across all four sessions produced a video that was production-ready on the first pass. The designer gave Firefly physical direction: where the model starts, how she moves, where the camera sits, and when she leaves the frame.\"},{type:\"quote\",text:\"Make the model move out of the wall, towards the camera, and then to the right side, getting out of focus of the camera. The model walks steadily but slowly. Camera stays still.\"},{type:\"video\",slot:\"video2\",caption:\"Video deliverable, first-pass generation. The one clean production-ready video in the study.\"},{type:\"p\",text:'The panel\\'s reaction was immediate. \"The pleats move perfectly fine. Physics looks great. Surprised.\"'},{type:\"p\",text:\"The same pattern showed up on Social. Two of the four social stills were marked production-ready (meaning ready to ship to a client without further work), and three of the four were at least good enough for an ideation deck. The prompt that landed described spatial layout and material behavior.\"},{type:\"quote\",text:\"Please create a social forward image of the product as shown in the reference image, flat lay upon coffee beans. Scatter the coffee beans evenly and add water droplets to the product overall, creating the feeling of freshness. Add a long piece of orange rind that naturally falls across the tin and ends up on the coffee beans.\"},{type:\"image\",slot:\"image3\",caption:\"Social, first pass: the legible-text wow moment.\"},{type:\"p\",text:\"Across both deliverables, the prompts that reached production-ready shared a structure: they named physical objects, placed them in space, and described how they behave. Firefly responded to direction, not description.\"},{type:\"h2\",text:\"Different deliverables, different failures\"},{type:\"p\",text:\"Each deliverable failed differently. Hero failures were photographic: lighting when it missed, identity drift (the model changing the subject's face or features between outputs), and composition. Social cleared the readiness bar more often than the other two deliverables, but its issue mix tells you where the work still landed: composition and prompt adherence took over, together accounting for 7 of 17 flagged Social issues. Video introduced a failure class the still deliverables didn't show: temporal flicker (frames visibly jumping), motion continuity (objects moving inconsistently between frames), subject consistency across frames, and physics in motion. Those motion-specific tags together carry roughly 60% of Video's issue mix.\"},{type:\"p\",text:\"That matters for how you use it. Firefly's strengths and weaknesses don't average out. The model that nails a Hero still misses on Social when format and copy enter the brief. The model that produces a clean first-pass video can't reliably edit the still that came before it.\"},{type:\"image\",slot:\"image4\",caption:\"Hero: photographic issues dominate. Composition, identity, and lighting carry the mix.\"},{type:\"image\",slot:\"image5\",caption:\"Social: composition and prompt adherence take over, together accounting for 7 of 17 flagged issues.\"},{type:\"image\",slot:\"image6\",caption:\"Video: motion-specific failures (temporal flicker, motion continuity, subject consistency, physics in motion) carry the issue mix and don't appear on the still deliverables.\"},{type:\"h2\",text:\"Where they went instead\"},{type:\"p\",text:\"Given those failure shapes, the question is what designers did about them. They went to Photoshop.\"},{type:\"p\",text:\"Designers named Photoshop a combined 20 times across their sessions, specific about both why they opted to leave Firefly and what they intended to do once they were in Photoshop. Four overlapping use cases came up.\"},{type:\"h3\",text:\"Quick fixes the model couldn't quite land\"},{type:\"p\",text:\"Small artifacts, lighting tweaks, minor anatomy cleanups. Fixes faster to make in Photoshop than to surface through another prompt.\"},{type:\"quote\",text:\"This will be like really easy to fix in Photoshop. I mean, you could just, like, do it in two seconds.\"},{type:\"image\",slot:\"image7\",caption:\"Firefly vs Photoshop finish.\"},{type:\"h3\",text:\"Text overlay on Social\"},{type:\"p\",text:\"The Social brief includes copy on the asset. No designer trusted Firefly to set type, even when it rendered legible characters on the first pass.\"},{type:\"quote\",text:\"I will go to Photoshop and overlay text, and make it look as natural as possible.\"},{type:\"h3\",text:\"Cinematic grading and color work\"},{type:\"p\",text:\"When the lighting was directionally right but not graded, designers reached for Photoshop rather than re-prompting.\"},{type:\"quote\",text:\"Too much cinematic ask here 'cause I can just bring it into Photoshop for that.\"},{type:\"h3\",text:\"Time-bounded escape from the re-prompting loop\"},{type:\"p\",text:\"Most repeated was Photoshop as a deliberate cutoff. One designer used it to bound how long she'd argue with Firefly on a single asset, calling it a pacing decision rather than a failure mode.\"},{type:\"quote\",text:\"But again, this is already taking too long. I would just do this in Photoshop.\"},{type:\"p\",text:\"Designers were betting that ten minutes of Photoshop work would land more reliably than another fifteen minutes of re-prompting.\"},{type:\"p\",text:\"The handoff that showed up across the four sessions:\"},{type:\"list\",ordered:false,items:[\"Use Firefly for the structural moves: composition, lighting direction, spatial layout, and broad framing. That is where prompt effort lands most reliably.\",\"Hand off to Photoshop for the finish: final color and grading, type and copy, small artifact and anatomy cleanups, and anything format-specific that Firefly keeps missing on revision.\"]},{type:\"p\",text:\"Plan the Photoshop pass into the session from the start.\"},{type:\"h2\",text:\"The verdict\"},{type:\"p\",text:\"Firefly converts effort into output most reliably at the start of the work. The prompts that reached production-ready had one thing in common: they described physical direction, not aesthetic mood. Camera position, material behavior, spatial layout, how the subject moves through the frame. That is where prompt effort pays off in Firefly.\"},{type:\"p\",text:\"The first generation is where the model is strongest, and the prompts that landed show you how to make the most of it. From there, the asset finish happens in Photoshop, the way senior creatives already work. Firefly gets you to a strong starting frame.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"The study ran four sessions, one per designer. Each designer brought in a brief from their own client work, and worked it through the same three-deliverable structure: a Hero still, a Social still, and a 5-second Social video cut. Each designer worked in Adobe Firefly for 90 to 120 minutes under live screen, audio, and narration capture. Each designer produced two iterations per deliverable (an initial generation and one revision). Designers selected issue tags on each output, marked wow/failure reactions, and narrated rationale aloud.\"},{type:\"p\",text:\"All sessions were captured on Rollout, Contra Labs' session-capture tool, with screen, audio, narration, mouse, and keyboard input retained for the full session length, in and out of the Firefly app.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"Self-evaluation. Designers tagged their own outputs: they selected the issue tags, marked the wow and failure reactions, and narrated rationale aloud while on camera. Findings carry the usual self-assessment and on-camera bias. An outside reviewer looking at the same outputs would probably arrive at a different mix.\"},{type:\"p\",text:\"Sample size. The sample is small (n=4) and we treat these findings as directional, not calibrated. With four sessions, a single outlier can move the numbers; treat these as patterns worth investigating, not precise benchmarks.\"},{type:\"p\",text:\"Brief variation. Each designer brought their own client brief (spanning fashion, food & beverage, tech, and lifestyle), so brief-specific effects can't be fully separated from the tool's general behavior. What held across the panel, regardless of brief, was the gap between first-frame quality and where designers took the asset next.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused production-readiness studies, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"367df2b6-cc6b-80f1-a950-c3546287e64f\",updatedAt:\"2026-05-22T00:00:00Z\"};const geminiUnderConstraint={slug:\"gemini-prompting-under-constraint\",title:\"Gemini reliably edits, but can it keep the rest of the image still?\",type:\"Benchmark\",publishedDate:\"2026-06-01\",readMinutes:5,subtitle:\"11 production-style sessions. Gemini made the edit 73% of the time, kept the rest of the image still 64%, held both in 55%.\",abstract:\"Contra Labs ran Gemini through a production-style creative workflow with two controllability tests per session: one simple local edit, and one pose change that asked the model to preserve identity, styling, lighting, and scene continuity. Gemini made the requested edit in 73% of sessions. It kept the rest of the image still in 64% of pose-lock tests. Both held in 55%. The drift clustered on the same surfaces every time: bodies, faces, gaze, product alignment.\",hero:false,coverImage:null,seoTitle:\"Gemini reliably edits, but can it keep the rest of the image still? \\xb7 Contra Labs\",seoDescription:'11 Gemini sessions, two controllability tests each. Local edits passed 73%; pose lock 64%; both held in 55%. Where \"keep everything else the same\" breaks.',ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Gemini passed both controllability checks in 6 of 11 sessions; edit isolation alone in 8, pose lock alone in 7.\",\"Strong cases were local, non-human, low-anatomy edits like a color swap or a wardrobe attribute change.\",\"Failures clustered on body pose, gaze, identity, and product alignment — edits that ask Gemini to rebuild structure.\",'\"Keep everything else the same\" held for simple edits and eroded under repeated revisions.',\"Treat structural edits as composition problems: rebuild the shot, don't re-prompt for it.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"11 Gemini sessions, two controllability tests per session\"},{label:\"Tests\",value:\"Edit isolation (one local edit) + pose lock (identity, styling, scene continuity preserved)\"},{label:\"Field\",value:\"Image\"},{label:\"Source\",value:\"Rollout session captures, Contra Labs\"}]},{type:\"image\",slot:\"image1\",caption:\"Gemini under constraint, controllability study.\"},{type:\"p\",text:\"11 production-style sessions. Two controllability tests each: an isolated local edit, then a pose change with identity, styling, lighting, and scene continuity locked. Gemini made the requested edit in 73% of sessions. It kept the rest of the image still in 64% of pose-lock tests. Both held in 55%. The drift clustered on the same surfaces every time: bodies, faces, gaze, product alignment.\"},{type:\"p\",text:\"Contra Labs ran Gemini through a production-style creative workflow with two controllability tests in each session: one simple local edit, and one pose-change edit that asked the model to preserve identity, styling, lighting, and scene continuity.\"},{type:\"video\",slot:\"video1\",caption:\"Session reel from the 11-participant Gemini controllability rollout.\"},{type:\"p\",text:'Gemini passed both checks in 6 of 11 sessions. It passed the local edit-isolation task in 8 of 11 sessions and the pose-lock task in 7 of 11 sessions. The exact percentages are directional because the sample is small, but the pattern is clear enough to matter: Gemini can often make the requested edit, but \"keep everything else the same\" does not reliably protect the rest of the image.'},{type:\"p\",text:\"The prompts were clear. Users repeatedly asked Gemini to change one thing while preserving everything else. The question is what kinds of constraints Gemini can honor once a prompt moves from a simple local edit into structural editing (changes that require rebuilding anatomy, spatial relationships, or identity).\"},{type:\"p\",text:\"The overlap between the two tests shows the boundary. Gemini's strongest cases passed both edit isolation and pose lock; the weaker cases exposed the same underlying issue from different angles. The model could understand the requested change without reliably preserving the locked context.\"},{type:\"p\",text:'These results also reflect participant judgment. A \"pass\" means the output met the creator\\'s working bar in the session, not that it passed a blinded external benchmark. Different evaluators might draw the line differently, especially on subtler cases like identity drift or realism loss.'},{type:\"image\",slot:\"image2\",caption:\"Session preservation check performance. Edit isolation passed 8/11; pose lock passed 7/11; both held in 6/11.\"},{type:\"h2\",text:\"The prompt pattern was the test: change one thing, preserve everything else\"},{type:\"p\",text:\"The both-pass result matters because the prompts were not vague. Users repeatedly used direct, surgical language:\"},{type:\"quote\",text:\"Right now I am going to tweak the attached hero image (as previously generated) in edit isolation mode, so please keep all existing elements explicitly fixed, except for the following: only change the colour of the throw/blanket, located on the side of the chair, to burnt/sienna orange. So, in simple terms, ONLY change the colour of the throw/blanket from the current beige to burnt/sienna orange.\",cite:\"Full prompt example: simple local color edit\"},{type:\"p\",text:'This is the best-case version of constrained prompting. The target is low-risk, visually local, and non-human: a blanket color. Gemini passed. The user noted that the edit was successful and that there were \"no unintended changes.\"'},{type:\"image\",slot:\"image3\",caption:\"A targeted color change applied to a single object, with the rest of the scene held in place.\"},{type:\"p\",text:\"The same structure appears in another successful local edit:\"},{type:\"quote\",text:\"Whilst ensuring that the rest of the image stays the same, make the socks a baby pink colour.\",cite:\"Additional prompt example: attribute edit\"},{type:\"image\",slot:\"image4\",caption:\"An isolated wardrobe attribute change that kept the rest of the frame intact.\"},{type:\"p\",text:\"The strongest successful prompts had three things in common: they named the exact object, made the change visually small, and repeated the preservation constraint in plain language. That did not guarantee success everywhere, but it gave Gemini the most to work with.\"},{type:\"p\",text:'These passes show the prompt pattern works. Gemini can perform small attribute swaps and simple additions while preserving the image closely enough for users to accept the result. But the edge is narrow. Once the edit touches body structure, gaze, face identity, typography, or image fidelity, the same \"preserve everything else\" wording becomes much less protective.'},{type:\"h2\",text:\"The constraint broke when the edit required Gemini to reason about bodies\"},{type:\"p\",text:\"The hardest failure was also the easiest to understand: a user wanted the model's hands to hold the packet cleanly.\"},{type:\"quote\",text:\"Can her hands hold the packet? … hands can be placed over each other. The hands can be overlapped on top of each other.\",cite:\"Body-position edit\"},{type:\"quote\",text:\"It created a third hand on the model, and I asked if both her hands could be placed under the packet.\",cite:\"Outcome note\"},{type:\"image\",slot:\"image5\",caption:\"A constrained body/hand edit that introduced an anatomy artifact in the result.\"},{type:\"p\",text:\"This was not a request for a new image concept. It was one constrained body-position change around an existing product image. But hand placement is not a surface-level attribute. It forces Gemini to get many things right at once: two hands, one product, body pose, sleeve continuity, skin boundaries, object contact, and the existing composition. The model generated a plausible-looking local region that violated the body structure instead of just repositioning the hands.\"},{type:\"p\",text:\"A second body-related failure showed the same pattern:\"},{type:\"quote\",text:\"Make the model's arms crossed and make him look to the right. Everything else in the image should stay the same.\",cite:\"Coordinated pose edit\"},{type:\"quote\",text:\"It executed the request, but not exactly how I expected. The model's face looks a bit like someone else and I was hoping both arms to be crossed.\",cite:\"Outcome note\"},{type:\"image\",slot:\"image6\",caption:\"A multi-part pose change that introduced identity and pose drift from the source.\"},{type:\"p\",text:\"\\\"Change one thing\\\" can be misleading. From a designer's point of view, placing hands under a packet or crossing arms is one instruction. From the model's point of view, it is a structural editing problem.\"},{type:\"p\",text:\"When this kind of edit breaks, the next step should not be more versions of the same prompt. A better workflow is to generate a cleaner base image or break the request into smaller steps.\"},{type:\"h2\",text:'\"Look at the product\" exposed spatial ambiguity'},{type:\"p\",text:\"Some pose-lock failures broke at the level of relational geometry: the face, hand, arm, and product all needed to move in relation to each other.\"},{type:\"quote\",text:\"Make the woman look directly at the tube. Shift her head slightly to the left so she is looking at the tube directly. Have the tube and her hand/arm be facing her face. Keep the rest of the composition the exact same. Do not change anything else.\",cite:\"Gaze and product alignment\"},{type:\"quote\",text:\"Her face does look like it's looking towards the bottle, but the bottle is not looking towards her. Her arm and hand did not move in the correct direction. This leaves the photo looking like she is looking down and not at the bottle.\",cite:\"Outcome note\"},{type:\"image\",slot:\"image7\",caption:\"A gaze, arm, and product-positioning request that remained off after the edit.\"},{type:\"p\",text:\"The prompt did the right things: it named the gaze target, specified a head shift, connected the tube to the face, and explicitly locked the rest of the composition. Gemini solved part of the request, but not the exact geometry between face, hand, arm, and product.\"},{type:\"p\",text:\"Gemini solved a softer version of the prompt: it made an image that roughly expressed the requested intent, but not the exact spatial relationship the user needed.\"},{type:\"p\",text:\"When the edit depends on multiple elements pointing, turning, or aligning together, treat it as a composition problem rather than a single prompt tweak. Rebuild the shot with the relationship specified from the start.\"},{type:\"h2\",text:\"The hidden cost was preservation tax\"},{type:\"p\",text:\"Some sessions passed both controllability tests, but the notes reveal a hidden cost: preservation degraded as the user iterated. The requested edit could land while the image quietly moved away from production quality.\"},{type:\"quote\",text:\"Keep everything the same ONLY change the skirt color to white.\",cite:\"Repeated constrained edits\"},{type:\"quote\",text:\"Keep everything the same ONLY change the pose: she turns her head toward the camera and slightly lifts her arm as if adjusting the blazer.\"},{type:\"quote\",text:\"It has changed the skirt color to white and no other major changes, BUT the more revisions I ask for, the worse the model's face becomes. So after that prompt the face is more messy, AI-like.\",cite:\"Outcome note\"},{type:\"quote\",text:\"It was changed, no other changes were made, but the face looks messy and noisy, very ai-like.\"},{type:\"image\",slot:\"image8\",caption:\"A repeated-revision sequence where the constrained edits landed while face quality degraded.\"},{type:\"p\",text:\"This is the quieter version of the same controllability problem. Gemini failed quietly. The requested changes landed, and the image mostly stayed intact. But each revision carried a preservation tax: the scene survived, while realism and face quality degraded.\"},{type:\"p\",text:\"The same pattern appeared in a subtler pose edit:\"},{type:\"quote\",text:\"Whilst ensuring that the rest of the image stays the same, and that her legs are anchored in the same place, turn the model's head away from her ponytail, so that she is looking off into the distance.\",cite:\"Pose change with likeness loss\"},{type:\"quote\",text:\"The new pose was executed well, and the rest of the pose stayed the same. It looks natural and accurate. However, I think that some of the model's likeness was lost. When asked to face the other way, Gemini failed and gave the same pose again.\",cite:\"Outcome note\"},{type:\"p\",text:\"Once an image is close, save the output before requesting further edits and avoid using Gemini as the only place for repeated final-mile revisions. The longer the same asset is pushed through constrained revisions, the more likely it is to accumulate small quality losses.\"},{type:\"h2\",text:\"Verdict: where Gemini's controllability holds and where it drifts\"},{type:\"p\",text:\"Gemini's controllability edge is strongest when the requested change is:\"},{type:\"list\",ordered:false,items:[\"local and visually simple;\",\"non-human or low-anatomy;\",\"color, material, prop, or background related;\",\"tolerant of slight re-rendering;\",\"not dependent on exact typography, logo fidelity, or identity preservation.\"]},{type:\"p\",text:\"It becomes fragile when the requested change is:\"},{type:\"list\",ordered:false,items:[\"hands, arms, faces, gaze, or body pose;\",\"left/right or viewer/model POV dependent;\",\"a removal task where tiny remnants matter;\",\"a logo, text, or product-accuracy constraint;\",\"one of many sequential edits on the same image.\"]},{type:\"p\",text:\"Use Gemini for constrained edits when the change is simple and local. Save the output once the asset is close. Participants finished their final assets in Photoshop.\"},{type:\"p\",text:\"The prompts broke because production constraints asked Gemini to behave like a locked-layer editor instead of a generator. Users wrote them carefully.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"This analysis is based on the rollout's explicit controllability tests. Each session included two constrained edit tests after the main deliverables:\"},{type:\"list\",ordered:true,items:[\"Edit isolation: start from a strong existing output, request one tightly scoped local edit, and keep all other elements fixed.\",\"Pose lock: start from an existing output, request a clear pose or framing change, and preserve identity, styling, lighting, and scene continuity.\"]},{type:\"p\",text:'The quantitative pass/fail counts come from the recorded step responses in the rollout. Qualitative examples prioritize prompt text input, especially cases where users wrote variants of \"only change X,\" \"keep everything else the same,\" or \"do not change anything else.\" Participant notes are used as outcome context.'},{type:\"p\",text:\"The article highlights examples that make the boundary visible: clean local-edit passes, hard anatomy failures, spatial-alignment failures, and pass-with-drift cases where the edit landed but quality degraded. These are selected examples from the 11-session rollout rather than a claim that every failure looked the same.\"},{type:\"p\",text:\"The analysis treats controllability as a production workflow question, not just a prompt-following question. A result could pass the requested edit while still revealing a production risk if it introduced identity drift, realism degradation, artifact remnants, or a need for handoff to another tool.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"This is a small, workflow-specific study. The controllability results come from 11 sessions in a single Gemini rollout, so each session meaningfully changes the count. The results should be read as directional rather than universal benchmarks.\"},{type:\"p\",text:\"The pass/fail labels are based on participant-reported outcomes during the study. That is useful because the participants were evaluating whether the outputs met their own creative bar, but it also means the scoring reflects practitioner judgment rather than a blinded external review. Another evaluator might score borderline cases differently.\"},{type:\"p\",text:\"The visual examples are selected examples from the study, not an exhaustive gallery of every controllability case.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused controllability studies, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"372df2b6-cc6b-80b8-8423-cf252f9627f2\",updatedAt:\"2026-06-01T00:00:00Z\"};const ideogramTypography={slug:\"ideogram-v4-typography-leader\",title:\"Ideogram v4 won 47.9% of typography matchups.\",type:\"Benchmark\",publishedDate:\"2026-06-03\",readMinutes:6,subtitle:\"10 designers, 4 models, 240 images. Spelling is solved. Typographic craft and client-readiness are where Ideogram v4 pulls away.\",abstract:\"Contra Labs ran a blind head-to-head between Ideogram v4, Gemini 3.1 Flash Image Preview, Grok Imagine 1.0, and FLUX.2 [max]. Ideogram v4 won 47.9% of typography matchups, far ahead of Gemini (30.0%), FLUX.2 (15.5%), and Grok (15.0%). Text accuracy is nearly tied across the top three. The gap opens on typographic craft (font choice, kerning, integration) and on the client-work gate. Gemini took stylized work. No single model wins everything.\",hero:false,coverImage:null,seoTitle:\"Ideogram v4 won 47.9% of typography matchups \\xb7 Contra Labs\",seoDescription:\"Four image models tested blind by 10 working designers across typography, detailed scenes, and stylized prompts. Ideogram v4 led typography. Gemini led stylized. Client-readiness was the deciding gate.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"Ideogram v4 won 47.9% of typography matchups, far ahead of Gemini (30.0%), FLUX.2 (15.5%), and Grok (15.0%).\",\"Text accuracy is near-tied across the top three (4.54–4.59 of 5). Typographic craft is where Ideogram pulls away (3.92 vs 3.34–3.50).\",'Ideogram is the only model whose typography lands in client-ready territory (3.55 of 5). The rest sit in \"needs rework.\"',\"Gemini led detail accuracy on busy scenes (4.00), but reviewers were slightly more willing to ship Ideogram's detailed work (3.42).\",\"Gemini topped stylized work (3.81). Best-scoring prompts across all categories were lean; worst were over-specified with stacked directives.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"10 working designers, 4 models, 240 images across 60 prompts (20 per category)\"},{label:\"Tests\",value:\"Pairwise round-robin (6 matchups per prompt) + Likert 1–5 ratings on a category-specific rubric + open-ended notes\"},{label:\"Field\",value:\"Image \\xb7 Typography, Highly Detailed Scenes, Dreamy/Stylized\"},{label:\"Source\",value:\"Blind, randomized evaluation, rounds 1 + 2, Contra Labs\"}]},{type:\"image\",slot:\"image1\",caption:\"Ideogram v4 vs Gemini 3.1 Flash, Grok Imagine 1.0, and FLUX.2 [max] — blind, designer-judged.\"},{type:\"p\",text:\"Spelling letters correctly is no longer the bottleneck for AI image models. The top three (Ideogram v4, Gemini 3.1 Flash, Grok Imagine 1.0) sit within hundredths of a point on text accuracy. The bottleneck is typographic craft: the font choice, kerning, spacing, and integration that decide whether a designer would actually ship the image. On that dimension, only one of the four lands in client-ready territory.\"},{type:\"video\",slot:\"video1\",caption:\"Ideogram v4 outputs from the typography category, drawn from the 240-image blind evaluation.\"},{type:\"p\",text:\"Contra Labs ran a blind, head-to-head evaluation of four current AI image models to answer a question every designer is quietly asking: which one can you actually put in front of a client? The four contenders were Ideogram v4, Gemini 3.1 Flash Image Preview (Nano Banana 2), Grok Imagine 1.0, and FLUX.2 [max].\"},{type:\"p\",text:\"10 creative professionals with expertise in content, branding, and image editing lent their judgment to evaluate 240 images on category-specific technical criteria. This write-up covers typography, detailed scenes, and stylized prompt results.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"Ten working designers sourced from Contra's top-earning talent evaluated three prompt categories (Typography, Highly Detailed Scenes, Dreamy/Stylized) with 20 prompts each. We did an initial round of 10 prompts per category, then sent out an expansion task with another 10. The prompting methodology stayed the same; the same rater group participated in both rounds.\"},{type:\"p\",text:\"Every prompt ran through all four models. The four outputs were shown to reviewers blind: model identity hidden, order randomized, so brand reputation and screen position couldn't tilt the results.\"},{type:\"p\",text:\"Reviewers did three things per task. First, pairwise preference: every model went up against every other in a round-robin (six matchups per prompt), which forces a clean ranking of all four. Second, Likert ratings (1–5) on category-specific scales. For typography, that's Text Accuracy and Typographic Craft, plus one universal question that applies to every image: would you use this in real client work? Third, open-ended notes on strengths and weaknesses. With 20 prompts per category and 10 reviewers each, every prompt set yields roughly 200 observations.\"},{type:\"h2\",text:\"Typography: Ideogram out front\"},{type:\"p\",text:\"In head-to-head preference, Ideogram v4 won first place 47.9% of the time across both rounds, far ahead of Gemini (30.0%), FLUX.2 (15.5%), and Grok (15.0%). Ideogram was the only model to clear the 50% mark in a single round (51.1% in round two).\"},{type:\"image\",slot:\"image2\",caption:\"Typography head-to-head: share of 1st-place finishes by model across both rounds.\"},{type:\"p\",text:\"The rating scales tell a more nuanced story. On raw Text Accuracy (does the text say exactly what the prompt asked, spelled correctly and legibly) the top three are nearly tied: Ideogram (4.59), Gemini (4.55), and Grok (4.54) are separated by hundredths of a point, with FLUX.2 trailing at 3.30. Getting the letters right is close to a solved problem for the leading models.\"},{type:\"p\",text:\"Where Ideogram pulls away is Typographic Craft. This dimension referred to font choice, kerning, spacing, and how the type integrates with the image. Ideogram scored 3.92, a clear gap over Gemini (3.50), Grok (3.36), and FLUX.2 (3.34). Most models can spell. Ideogram makes the type look designed.\"},{type:\"image\",slot:\"image3\",caption:\"Typographic Craft averages, 1–5 Likert \\xb7 Ideogram v4 leads the field by ~0.4 points.\"},{type:\"p\",text:'That edge carries into the headline question. On \"Would you use this in real client work?\" for typography, Ideogram led at 3.55, with Gemini at 2.84, Grok at 2.61, and FLUX.2 at 2.49. For type-driven work, Ideogram is the only model whose average lands in \"likely usable\" territory.'},{type:\"image\",slot:\"image4\",caption:\"Client-work gate for typography prompts \\xb7 Ideogram is the only model whose average crosses into client-ready territory.\"},{type:\"p\",text:\"Two prompts from the typography set illustrate what separates a client-ready image from one that needs rework: the same brief, the same blind conditions, but a visible gap in how each model handles font choice, spacing, and layout.\"},{type:\"image\",slot:\"image5\",caption:\"Book back cover prompt \\xb7 Ideogram v4 (4.0 / 5) and Grok Imagine 1.0 (3.1 / 5), with reviewer notes.\"},{type:\"image\",slot:\"image6\",caption:\"Caf\\xe9 menu board prompt \\xb7 Ideogram v4 (4.4 / 5) and FLUX.2 [max] (2.4 / 5), with reviewer notes.\"},{type:\"h2\",text:\"Detailed scenes: a two-horse race at the top\"},{type:\"p\",text:\"The Highly Detailed Scenes category covers busy prompts with specific counts, attributes, and spatial relationships. Here Gemini sets the pace on the technical scales. On Detail Accuracy (how faithfully each model renders the specific counts, attributes, and positioning a prompt asks for), Gemini led at 4.00, ahead of Grok (3.77), Ideogram (3.71), and FLUX.2 (3.66). On Render Coherence (clean, plausible rendering, free of artifacts and warping), Gemini and Ideogram are effectively neck and neck at 4.18 and 4.15, with FLUX.2 (3.86) and Grok (3.81) a step behind. All four clear a 3.6 average on both scales, so complex scenes are broadly within reach for every model.\"},{type:\"image\",slot:\"image7\",caption:\"Detail Accuracy and Render Coherence on highly detailed scenes \\xb7 all four models clear 3.6 on both scales.\"},{type:\"p\",text:'But the client-work gate reorders things. For detailed scenes, Ideogram edged ahead at 3.42, with Gemini close behind at 3.37, then FLUX.2 (3.01) and Grok (2.82). Gemini is marginally more accurate and coherent, yet reviewers were slightly more willing to ship Ideogram\\'s detailed scenes. \"Client-ready\" is a judgment about the whole image. The top two are essentially tied and both sit in \"usable with minor edits\" territory; the bottom two hover around \"maybe.\"'},{type:\"image\",slot:\"image8\",caption:\"Client-work gate for detailed scenes \\xb7 Ideogram edges Gemini on usability despite Gemini's accuracy lead.\"},{type:\"h2\",text:\"Stylized work: a different leaderboard\"},{type:\"p\",text:\"On Style Execution for dreamy/stylized prompts, Gemini 3.1 Flash led at 3.81 overall, followed by Grok (3.62) and FLUX.2 (3.60), with Ideogram last at 3.36. A similar pattern holds for Mood and Evocativeness: Gemini at 3.77, Grok at 3.61, FLUX.2 at 3.45, Ideogram at 3.29.\"},{type:\"p\",text:\"Ideogram's strength is precision and type. When the brief is mood and aesthetic, the other models close the gap.\"},{type:\"image\",slot:\"image9\",caption:\"Style Execution averages on dreamy/stylized prompts \\xb7 Gemini takes the lead Ideogram held in typography.\"},{type:\"p\",text:\"Stylized work is the most competitive category, and it plays to different strengths than Ideogram's. Where the brief is pure mood and atmosphere, Gemini edges ahead on the rating scales, but the gap is narrow, and Ideogram's images still drew praise for their aesthetics and emotional pull. Reviewers' main note was that Ideogram occasionally added its own creative flourishes, interpreting a prompt rather than executing it literally. For designers who want a model that nails type and precision, that's a reasonable trade. For open-ended mood-boarding, the field is wide open.\"},{type:\"image\",slot:\"image10\",caption:\"Mood and Evocativeness averages on dreamy/stylized prompts \\xb7 Gemini leads, Ideogram trails.\"},{type:\"p\",text:\"Even where Ideogram trailed on the scales, its outputs still landed with reviewers. Two prompts from the stylized set show why: the images read as polished and evocative, even when the model did not fully adhere to the prompt.\"},{type:\"image\",slot:\"image11\",caption:\"Whimsical greenhouse prompt \\xb7 Ideogram v4 (3.5 / 5), with reviewer note.\"},{type:\"image\",slot:\"image12\",caption:\"Translucent perfume bottle prompt \\xb7 Ideogram v4 (3.8 / 5), with reviewer notes.\"},{type:\"p\",text:\"We coded all 400 open-ended comments on stylized prompts into recurring themes. The most common praise was for style execution and aesthetic fit (20% of comments), followed by composition and evocative mood. The most common critique was prompt mismatch and missing details (12.5%), with under-executed mood and composition issues close behind.\"},{type:\"image\",slot:\"image13\",caption:\"Top themes from 400 open-ended reviewer comments on stylized prompts, coded by strength and weakness.\"},{type:\"h2\",text:\"What separated the best prompts from the worst\"},{type:\"p\",text:'That tension between literal instruction and interpretation showed up in the prompts themselves. When we looked back at which prompts produced the best and worst scoring images per category for Ideogram, one pattern cut across all three categories: the best-rated images consistently came from leaner prompts, while the worst-rated outputs tended to come from longer, more directive prompts. The \"worst\" profiles (red) spike on word count, specificity, and stacked directives like style, camera/lighting, and technical terms. The \"best\" profiles (green) sit tighter to the center.'},{type:\"p\",text:\"What the best prompts emphasized instead varied by category. For typography, top prompts leaned on what actually matters for type: quoted phrases and brand or named copy that spell out exactly what the words should say, plus reference examples. Stylistic directives stayed out of the way. For dreamy/stylized work, the best prompts were shorter and left more room (higher ambiguity per 100 words, anchored by examples), while the worst were over-specified with detail the model then had to reconcile.\"},{type:\"p\",text:\"One caveat: this is a correlation. Don't read it as a recipe. More demanding briefs are both longer and harder to satisfy, so prompt length and low scores may share a common cause. State the words you need precisely. Resist loading every stylistic directive into one prompt.\"},{type:\"image\",slot:\"image14\",caption:\"Linguistic profile of Ideogram's highest- and lowest-scoring prompts across the three categories. Red (worst) spikes on word count, specificity, and stacked directives; green (best) stays leaner.\"},{type:\"h2\",text:\"The bottom line so far\"},{type:\"p\",text:'Across the three categories, a clear division of labor emerged. Ideogram v4 is the model to reach for when text is part of the design: posters, packaging, ad creative, anything typographic. Most leading models spell correctly now. Ideogram creates type designers would actually ship, leading both typographic craft and the client-work gate by a wide margin. It won nearly half of all head-to-head typography matchups (47.9%, well ahead of every rival) and was the only model whose type-driven work landed in genuinely client-ready territory rather than needing rework. Its strength reaches past text, too: Ideogram was the only model to top the client-work gate in two of the three categories, it held its own against Gemini on the toughest, most detailed scenes, and even in stylized work, where it trailed on the scales, its images still drew praise for their aesthetics and emotional pull. Gemini 3.1 Flash is the steadiest all-rounder, the most accurate on busy, literal scenes and the top pick for pure mood and style work. Grok Imagine and FLUX.2 trail the leaders across the board, landing in \"usable with edits\" territory.'},{type:\"p\",text:'The \"would you use this in real client work?\" verdict: Ideogram leads typography (3.55) and edges ahead on detailed scenes (3.42). Gemini takes stylized (3.21). No single model wins everything. The right choice depends on whether the brief is built on words, accuracy, or atmosphere. And whatever you reach for, the prompts that won were the lean, precise ones: say exactly what you need and resist burying the model in directives.'},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"20 prompts \\xd7 10 reviewers is ~200 observations per category, and should be considered explicitly directional, not powered for significance.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused image-model battles, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"373df2b6-cc6b-80d5-9ac0-f7b8342cf7d7\",updatedAt:\"2026-06-03T00:00:00Z\"};const geminiPromptPattern={slug:\"gemini-production-ready-prompts\",title:\"Gemini hit production-ready 24% of the time. One prompt pattern explains why.\",type:\"Benchmark\",publishedDate:\"2026-05-28\",readMinutes:6,subtitle:\"10 participants, 29 scored deliverables. The prompts that landed treated Gemini like a creative brief for a specific asset.\",abstract:\"Contra Labs ran Gemini (Nano Banana Pro) through a production-style campaign workflow. 16 of 29 deliverables reached Client V1+; only 7 of 29 reached Production Ready. The strongest sessions show why: prompts named the asset's job (format, role, subject, product, light, material, mood, continuity). The weaker ones stacked production execution (typography, logos, layouts, retouching) on top of generation.\",hero:false,coverImage:null,seoTitle:\"Gemini production-ready 24% of the time. One prompt pattern explains why \\xb7 Contra Labs\",seoDescription:\"10 participants ran their own campaign briefs through Gemini (Nano Banana Pro). 24% reached Production Ready. The prompts that landed acted like a creative brief for one specific asset.\",ogImage:null,metrics:null,body:[{type:\"keyFindings\",items:[\"55% of deliverables reached Client V1+. Only 24% reached Production Ready.\",\"Two of 10 participants hit Production Ready on all three deliverables.\",\"Strong prompts named the asset's job: format, role, subject, light, material, mood.\",\"Weak prompts stacked typography, logos, and layout fixes onto generation.\",\"Top failure tags: edit control, realism, prompt adherence, composition, anatomy.\"]},{type:\"factbox\",label:\"How we ran it\",rows:[{label:\"Sample\",value:\"10 participants, 29 scored deliverables\"},{label:\"Format\",value:\"Hero still (1920\\xd71080), Social cut (9:16), Secondary asset\"},{label:\"Method\",value:\"Production-style campaign workflow on Gemini (Nano Banana Pro)\"},{label:\"Source\",value:\"Self-rated readiness states + issue tags, narrated rationale\"}]},{type:\"image\",slot:\"image1\",caption:\"Gemini (Nano Banana Pro) production-readiness study, 10 participants, 29 scored deliverables.\"},{type:\"p\",text:\"Contra Labs ran Gemini (Nano Banana Pro) through a production-style campaign workflow. 29 deliverables. 55% reached Client V1. Only 24% reached Production Ready. The gap between those two numbers is one prompt pattern.\"},{type:\"p\",text:\"Across the three core deliverables, Gemini reached Client V1+ on 16 of 29 scored deliverables (~55%), but only Production Ready on 7 of 29 (~24%). The strongest sessions show why. Two of ten participants reached Production Ready on Hero, Social, and Secondary assets where their prompts translated a campaign brief into specific image assignments: format, role, subject, product, lighting, material, mood, and continuity.\"},{type:\"p\",text:\"The remaining sessions still produced usable work. Most reached Client V1 Ready or Ideation acceptable. What follows compares Production Ready outputs against sessions that fell short of that line.\"},{type:\"p\",text:\"The lower-readiness sessions looked different. Their prompts often asked Gemini to carry too many kinds of production precision at once: readable type, logos, product accuracy, model consistency, sharper resolution, layout fixes, or brand-polish details. Those are real production needs, but they were less reliable as prompt-only tasks.\"},{type:\"p\",text:\"The distinction that matters is image-native direction versus stacked production execution. Gemini was strongest when the prompt's detail described the campaign image itself. It was weaker when the same prompt also asked Gemini to behave like a layout designer, typographer, logo renderer, and retoucher.\"},{type:\"video\",slot:\"video1\",caption:\"Gemini (Nano Banana Pro) session reel across the 10-participant panel.\"},{type:\"h2\",text:\"Hero prompts worked when they gave Gemini a campaign job\"},{type:\"p\",text:\"A strong Hero prompt tells Gemini what the image is for.\"},{type:\"p\",text:\"One Production Ready Hero prompt did that clearly. It asked for a homepage hero image, not just a furniture scene. The prompt specified negative space for marketing copy, wide-angle composition, golden-hour lighting, the recurring brand model, and the key SKU placement.\"},{type:\"quote\",text:\"For the next phase, please generate a candid, wide-angle interior photograph of a minimalist 'Soft Brutalism' apartment at golden hour, serving as a homepage hero image. The expansive space features a polished concrete floor and textured plaster walls in Sandstone and Sage tones. Dramatic, warm directional sunlight beams stream through a large window on the left, casting long, soft-edged geometric architectural shadows across the room. Aris, a calm and meditative mid-30s androgynous creative professional with natural textured hair and wearing an oversized beige linen jumpsuit, is seated comfortably in the off-center 'Metric Lounge Chair' on the right, looking out the window while holding a ceramic tea bowl. The 'Metric Lounge Chair' has a solid white oak geometric frame and is upholstered in a rich Electric Cobalt blue wool, which provides a striking contrast against the earthy palette. In the mid-ground behind Aris, the tall 'Calyx Floor Lamp' stands with its blackened steel stem and wide, hand-pressed paper shade. Further into the background, a glimpse of the pill-shaped 'Mesa Coffee Table' in honed travertine is visible. The composition leaves substantial negative space on the left side, designed for marketing copy. High-fidelity textures define the scene, from the grain of the white oak and the weave of the cobalt wool to the porosity of the travertine and concrete. The overall mood is serene, grounded, and premium yet relatable.\",cite:\"Full prompt example: Production Ready Hero direction\"},{type:\"image\",slot:\"image2\",caption:\"Production Ready Hero output, furniture campaign.\"},{type:\"p\",text:\"This prompt gave Gemini a bounded creative problem. The prompt defined the role of the asset and the visual rules around it.\"},{type:\"p\",text:\"The lower-readiness Hero chain was detailed and directional. The issue was that it asked Gemini to solve two jobs at the same time: create a cinematic campaign image and execute a graphic layout with logos, tagline, secondary copy, legal text, credits, and motion-like perspective. That is a lot for an image model to resolve at once, especially when the output also needs to feel client-ready.\"},{type:\"quote\",text:\"The Urban Nomad is a high fidelity/premium anti-theft backpack for tech professionals. It has multi-compartiments a fold clip open for an easy access to the elements that are inside. A zipper that has a clear visual locking state for users objects security. It should feel like a secured anti-theft backpack — but still with a modern and designed look. It has a modern pale tint with always a vibrant complementary color for small details on the backpack (e.g. tabs, zipper). The branding is simple and modern, with two different logo presentation. One which is only the monogram (modern shape composition) and one which is a logotype with a sans serif thick font that has a tech vibe. We're going to create a photoshoot campaign with one model that is staying across the multiple versions. The model has a photoshoot pose, holding the backpack by his fingers behind his back and is doing a fake walk for photoshoot. The background should feel like a photo studio with colored blocks the whole scene should be in one color (should be one of the colors used on the backpack's design). Let's start with the first campaign shoot that is going to be 1920x1080, the feel should be something with dynamic lens rotation blur but keeping the main element clearly visible. The two logos (typographic and monogram) and some text elements are placed on top left of the frame. Text elements are a tagline; 'work without fear' and a secondary text element; 'Designed in Sweden'. On bottom right corner, we should have legal text and credits.\",cite:\"Full prompt chain: lower-readiness Hero contrast\"},{type:\"p\",text:\"Three follow-up prompts asked for an iteration with exaggerated perspective on a staircase, environment distortion, and added text overlay.\"},{type:\"image\",slot:\"image3\",caption:\"Lower-readiness Hero contrast output, backpack campaign.\"},{type:\"p\",text:\"The difference is practical. The Production Ready Hero prompt kept the world-building and the asset role as the main task. The lower-readiness Hero chain also built a world, but it carried that world into finished graphic design, readable brand copy, logo execution, and an exaggerated-perspective setup.\"},{type:\"h2\",text:\"Social prompts worked when continuity was explicit\"},{type:\"p\",text:\"Giving Gemini a clear job extends across formats. A campaign has to move from Hero to Social to supporting assets without losing the world, and the stronger prompts treated continuity as part of the creative direction rather than something to correct after the fact. The better prompts repeated the anchors that mattered: same model, same SKU, same outfit, same material palette, same lighting, same mood, new format.\"},{type:\"p\",text:\"One Production Ready Social prompt is a clean example. It asked for a fresh 9:16 generation, not a crop, while preserving the brand model, the SKU system, and the campaign world.\"},{type:\"quote\",text:\"Great! Thank you. Moving on to deliverable 2, please generate an image based on the below brand context. Please use the exact same SKU and brand model as created. Social Cut: 'The Quiet Morning.' Specs: 9:16 (Vertical). Subject Focus: A medium-close-up of Aris interacting with the Calyx Floor Lamp. Framing: This is a fresh generation, not a crop. Aris should be adjusting the paper shade or sitting beneath its glow. Focus on the contrast between the warm lamp light and the cool Cobalt accent of the chair visible in the periphery. Storytelling: Aim for a 'TikTok Cover' aesthetic — aspirational, 'lifestyle-first,' with enough negative space at the top/bottom for UI overlays (username, caption, etc.).\",cite:\"Full prompt example: Production Ready Social continuity\"},{type:\"image\",slot:\"image4\",caption:\"Production Ready Social output, furniture campaign.\"},{type:\"p\",text:'The important move is \"make a different asset inside the same campaign system.\" Gemini can extend a world across formats, but the prompt has to say which parts of the world are load-bearing.'},{type:\"p\",text:\"The lower-readiness Social chains were more likely to turn into corrective prompting. One Social chain, for example, asked Gemini to keep the same person while changing the scene, keeping the product visible, preserving brand tones, sharpening the result, making the logo text clear, changing the shirt color, and improving the model's skin. The prompt had continuity anchors, but the task kept shifting into precision fixes.\"},{type:\"quote\",text:\"Make a 9:16 image. Keep the same woman, she's in a different scene now. She is in her bathroom, same hairstyle, same shirt, same tones, so the off white color. She is holding a tube of sunscreen. The sunscreen tube is white with a light blue lid on it. She's holding the tube up to her face. The tube is minimal white with just the SOLENE text logo. Same as previous image. She has a slight smile, glowing skin.\",cite:\"Full prompt chain: lower-readiness Social contrast\"},{type:\"quote\",text:\"Change her shirt color to light blue.\"},{type:\"quote\",text:\"Make her skin clear and glowing.\"},{type:\"quote\",text:\"Can you upscale this image so it is clear. Make sure text is clear as well.\"},{type:\"p\",text:\"That is the difference between campaign continuity and accumulated repair. The strongest Social prompts treated the vertical asset as a deliberate campaign execution, either a fresh scene or a considered reframe. The weaker chains asked Gemini to preserve, correct, sharpen, brand, and beautify the same output until the prompt was doing the work of a retoucher.\"},{type:\"h2\",text:\"Secondary prompts worked when detail became the story\"},{type:\"p\",text:\"Some of the strongest campaign support work came from prompts about material proof: travertine, wool, stitching, stone pockmarks, skin texture, golden-hour light, fabric grain. These details did not just decorate the image. They made the brand world feel tangible.\"},{type:\"p\",text:\"One Production Ready Secondary asset chain is the clearest example. The prompt narrowed around the model's hand, the table, the cobalt wool chair, the white oak frame, stitching, the stone edge, and 4:5 placement.\"},{type:\"quote\",text:\"This is amazing for a first image version for the social cut! Moving on to deliverable 3, please generate an image based on the brand context below. Please use the exact same SKU and brand model as created. Secondary Asset: The 'Materiality' Macro. Specs: 1080x1350 (4:5 Portrait). Placement: Product Detail Page (PDP) or Instagram Carousel 'Slide 2.' Subject Focus: A macro 'tactile' shot. No face — just Aris's hand resting on the honed travertine edge of the Mesa Coffee Table. Why this format? The 4:5 ratio is the 'gold standard' for Instagram feed engagement. By focusing on the texture of the stone and the skin tones of the talent, you reinforce the 'Grounded/Premium' brand pillar. It proves the quality bar of the furniture while keeping the human element (Aris) present.\",cite:\"Full prompt example: Production Ready Materiality Macro\"},{type:\"image\",slot:\"image5\",caption:\"Production Ready Secondary output, material macro.\"},{type:\"p\",text:\"One Client V1 participant came close with a similar approach. Their secondary prompts pushed into fabric weight, clothing texture, fit, and accurate product detail. That helped all three deliverables reach Client V1 Ready, but not Production Ready. The prompt work was specific and useful, yet it stayed closer to product-accuracy evaluation than a fully finished campaign image.\"},{type:\"quote\",text:\"Now create a 1080x1080 aspect ratio image featuring a close up of the fabric where the sport bra band meets the models skin. The fabric should appear thick and high quality. This image will be used to show off the texture and colour of the garment, so should be high resolution and detailed, with some light creasing. Ensure that the fabric colour and texture is accurate to the original photos, and that the skin tone matches the model's.\",cite:\"Full prompt chain: Client V1 Secondary\"},{type:\"quote\",text:\"Ensure the sports bra is accurate to the original ghost image.\"},{type:\"image\",slot:\"image6\",caption:\"Client V1 Secondary output, product-detail macro.\"},{type:\"p\",text:\"Detail helps most when it is the purpose of the asset. The Production Ready macro worked because materiality was the assignment. In lower-readiness chains, detail often appeared as a correction after the image had already missed some product or brand requirement.\"},{type:\"h2\",text:\"What separated Production Ready prompts from the rest\"},{type:\"p\",text:\"The Production Ready prompts had a consistent shape. They started with the deliverable, then described the campaign system around it. The prompt usually answered five questions before asking Gemini to render anything: What is this asset for? What should stay consistent? What is the subject or product? What materials and lighting define the world? What should be excluded?\"},{type:\"p\",text:\"The lower-readiness prompts often had those ingredients too. Some were detailed and directionally strong. The issue was job stacking: asking Gemini to generate the campaign image while also handling readable typography, exact product markings, color changes, sharper resolution, skin polish, logo placement, and legal copy. The study suggests it cannot reliably do all of that at once and still reach the same readiness bar.\"},{type:\"p\",text:\"The issue tags reflect that pattern. Across all outputs below Production Ready, the most frequently tagged issues were edit control (8 tags), realism/physics (8 tags), prompt adherence (7 tags), composition (6 tags), and anatomy (6 tags). Edit control and prompt adherence point to execution the prompt asked Gemini to carry. The rest point to generation limits that get worse when the prompt is already overloaded.\"},{type:\"p\",text:\"That is why the fully Production Ready sessions are the strongest examples. Their prompts made Gemini solve creative direction first. They used constraints to define the campaign world. The lower-readiness chains more often became a sequence of corrections after the first output missed a production detail.\"},{type:\"p\",text:\"The difference was visible across the three deliverables. Hero prompts got stronger when they named the campaign role. Social prompts got stronger when they treated the vertical asset as a new execution inside the same world. Secondary prompts got stronger when material detail was the point of the asset, not a late attempt to rescue accuracy.\"},{type:\"h2\",text:\"Verdict\"},{type:\"p\",text:\"Gemini (Nano Banana Pro) is strongest when the prompt acts like a creative brief for a specific asset. The closer the user gets to naming the asset's job, anchoring the campaign world, and specifying the material and visual language, the closer Gemini gets to a usable campaign image.\"},{type:\"p\",text:\"The strongest prompts were specific in the right places: format, role, subject, product, light, material, mood, continuity, and exclusions. Length on its own didn't predict readiness.\"},{type:\"p\",text:\"The practical takeaway: use Gemini to turn a brief into a campaign image before asking it to finish the production system around that image. Start with the asset's job, repeat the campaign anchors, specify the material world, and make each deliverable a deliberate execution. Keep final typography, logos, legal copy, and exact layout polish out of the generation whenever possible.\"},{type:\"h2\",text:\"Methodology\"},{type:\"p\",text:\"Contra Labs ran a production-style Gemini (Nano Banana Pro) workflow study with working creatives. Each participant brought a campaign brief and produced three deliverables: a Hero still (1920\\xd71080), a Social cut (9:16), and one Secondary supporting asset.\"},{type:\"p\",text:\"After each deliverable, participants rated the output's readiness state: Needs more iteration, Ideation acceptable, Client V1 Ready, or Production Ready. They also selected issue tags and narrated what worked, what failed, and where they would continue in Gemini versus hand off to another tool.\"},{type:\"p\",text:\"The comparison focused on the Hero, Social, and Secondary prompts whose outputs got closest to client readiness, especially the sessions where all three deliverables were marked Production Ready. Those sessions were compared with lower-readiness deliverable prompts to understand which prompt patterns helped Gemini produce credible campaign assets.\"},{type:\"h2\",text:\"Limitations\"},{type:\"p\",text:\"The study is directional, not a calibrated benchmark. Readiness states and issue tags were selected by the participants evaluating their own work. The four readiness states were not defined for participants; each participant applied their own professional judgment about what constituted Client V1 Ready versus Production Ready. The results carry the usual self-assessment and on-camera bias. An outside reviewer may have rated the same outputs differently.\"},{type:\"p\",text:\"The prompts were not controlled experimentally. Participants wrote in their own styles, used different client briefs, and had different levels of experience translating creative direction into image prompts. That variation is useful for studying real workflows, but it means we cannot isolate a single prompt feature as the cause of a better output.\"},{type:\"p\",text:\"These findings should be read as workflow evidence, not universal prompting rules. They show patterns that appeared in the strongest sessions: asset-specific direction, repeated campaign anchors, material detail, and format-aware prompting. They do not prove that the same phrasing will produce the same result across every category, model version, or creative brief.\"},{type:\"callout\",text:\"Contra Labs runs head-to-head model battles judged by working creatives, plus deep-dive research on what each model is actually good at. This is one of our focused production-readiness studies, the kind of work we can run at larger scale against a specific brief.\",href:\"/research\",cta:\"See all research\"}],notionId:\"366df2b6-cc6b-8054-8721-cf831e577bd9\",updatedAt:\"2026-05-28T00:00:00Z\"};const methodologyArticle={slug:\"methodology\",title:\"Methodology: human-panel evaluation of generative models at Contra Labs.\",type:\"Methodology\",publishedDate:\"2026-05-13\",readMinutes:12,subtitle:\"The standard playbook behind every Contra Labs battle, profile, field note, and the cross-study leaderboard: blinded panels of practicing creatives, forced-choice rankings paired with scalar ratings and rationale, and a reliability battery that travels with every number we publish.\",abstract:\"This document describes the methodology Contra Labs uses to evaluate frontier generative models against one another on creative tasks. A study recruits a panel of independent domain experts, presents each evaluator with the outputs of several models on a shared set of prompts under blinded and randomized conditions, and collects three classes of response: forced-choice rankings, scalar quality ratings on named rubric dimensions, and free-text rationale. Where the creative task spans more than one stage of production, the same instrument is administered at each stage so that performance can be tracked across the creative funnel. The resulting data is analyzed with a combination of pairwise tournament statistics, Bradley-Terry strength estimation, scalar rating summaries, structured qualitative coding of free-text responses, and a panel of inter-rater reliability diagnostics. Rubric details, panel size, model count, phase taxonomy, and prompt structure vary by study. The methodology described below is constant. The same instrument also feeds the cross-study leaderboard on the research hub: section 1 describes how the per-study results are pooled into a single ranking, and sections 2 through 7 describe the study methodology that produces them.\",hero:false,coverImage:null,seoTitle:\"Methodology: how Contra Labs evaluates generative models \\xb7 Contra Labs\",seoDescription:\"Panels of 8 to 12 practicing creatives. Blinded, randomized outputs. Forced-choice rankings, scalar ratings, free-text rationale. Bradley-Terry strength, theme coding, and a five-diagnostic reliability battery on every study.\",ogImage:null,metrics:null,body:[{type:\"factbox\",label:\"Quick reference\",rows:[{label:\"Panel\",value:\"8–12 practicing creatives per study\"},{label:\"Question types\",value:\"Forced-choice rankings, 1–5 scalar ratings, free-text rationale\"},{label:\"Analysis\",value:\"11 blocks \\xb7 pairwise win rates, Bradley-Terry / Elo, theme coding, network analysis\"},{label:\"Reliability\",value:\"Krippendorff's α (scalar + rank), Kendall's W per prompt, Spearman, hierarchical clustering\"}]},{type:\"p\",text:\"This document describes the methodology Contra Labs uses to evaluate frontier generative models against one another on creative tasks. A study recruits a panel of independent domain experts, presents each evaluator with the outputs of several models on a shared set of prompts under blinded and randomized conditions, and collects three classes of response: forced-choice rankings, scalar quality ratings on named rubric dimensions, and free-text rationale. Where the creative task spans more than one stage of production, the same instrument is administered at each stage so that performance can be tracked across the creative funnel.\"},{type:\"p\",text:\"The resulting data is analyzed with a combination of pairwise tournament statistics, Bradley-Terry strength estimation, scalar rating summaries, structured qualitative coding of free-text responses, and a panel of inter-rater reliability diagnostics. Rubric details, panel size, model count, phase taxonomy, and prompt structure vary by study. The methodology described below is constant. The same instrument also feeds the cross-study leaderboard on the research hub: section 1 describes how the per-study results are pooled into a single ranking, and sections 2 through 7 describe the study methodology that produces them.\"},{type:\"h2\",text:\"1. The cross-study leaderboard\"},{type:\"p\",text:\"The Best Performing Models leaderboard on the research hub is not a single study. It is a single strength score for each image model, pooled across all of the included studies, that powers the Image tab. This section describes how that score is fit and what it can and cannot tell you.\"},{type:\"h3\",text:\"1.1 Hierarchical Bradley-Terry with partial pooling\"},{type:\"p\",text:\"This leaderboard estimates a single strength score for each image model by pooling pairwise preferences across all of the included studies, while allowing each study to influence the model in its own way.\"},{type:\"p\",text:\"Each model gets two pieces of information. The first is a global strength that reflects how the model performs across every study it appeared in. The second is a per-study adjustment that captures how the same model does on one specific task relative to its global average. The final score on the leaderboard is the global strength.\"},{type:\"p\",text:\"The amount of pooling between these two pieces is learned from the data, not chosen by hand. We hold out one fifth of the (tournament, prompt) units, refit the model on the rest at a range of pooling settings, and pick the settings that best predict the held out comparisons. To keep the search well behaved with only thirteen models, we add a weakly informative half-Normal prior on the global spread. The prior allows the data to pull the spread up if the evidence supports it, but keeps it from collapsing to an unrealistically small value when there is little to estimate it from.\"},{type:\"p\",text:\"Once the pooling settings are fixed, the model is refit on the full dataset. Scores are converted to an Elo-style scale anchored around 1000 so higher numbers mean stronger preferences across studies. Uncertainty is estimated with a cluster bootstrap. Each bootstrap iteration resamples whole (tournament, prompt) units rather than individual head to head comparisons, which preserves the dependency between comparisons that come from the same evaluator looking at the same prompt.\"},{type:\"p\",text:\"The effect of partial pooling shows up most clearly for models with thin coverage. A model that only appeared in one or two studies has very little independent information in the data, so its global score gets pulled toward the field average. A model with broad coverage has plenty of evidence on its own, so its score is largely driven by its own win record. This is the property that makes the leaderboard more honest as a cross study signal.\"},{type:\"h3\",text:\"1.2 Limitations\"},{type:\"p\",text:\"This is a cross study preference signal, not a controlled benchmark. It is the strongest summary we can produce from the data we have, but it inherits a number of issues that no amount of statistical machinery can fully fix.\"},{type:\"p\",text:\"The included studies are not comparable in the way that a controlled experiment would require. They vary by task type, prompt set, evaluator pool, and the slate of models that participated. Two models that never met in any study are still ranked relative to each other through their shared opponents, which is a useful but indirect comparison.\"},{type:\"p\",text:\"Coverage is uneven. Some models appeared in many studies and some appeared in only two. The hierarchical model handles this by shrinking low coverage models toward the average, but it cannot create evidence that does not exist. Rankings for low coverage models should be read as provisional.\"},{type:\"p\",text:\"The bootstrap intervals capture variation across the tournaments that were actually run. They do not capture the variation that would come from running a different set of studies, choosing a different prompt set, or using a different evaluator pool. The true uncertainty is wider than the intervals shown.\"},{type:\"p\",text:\"Bradley-Terry assumes a single latent ranking exists. Preferences over creative output often violate this in subtle ways. The same model might win consistently against one type of opponent and lose consistently to another for reasons that do not fit on a single line. The leaderboard summarizes the average tendency and hides this kind of structure.\"},{type:\"p\",text:\"Evaluators are treated as interchangeable. There is no per evaluator effect, no weighting by evaluator quality, and no accounting for the possibility that some evaluators have systematic preferences for certain models or styles.\"},{type:\"p\",text:\"The Elo scale is anchored to the mean of the included models. Adding or removing a model from the dataset shifts the absolute numbers even when the underlying preferences are unchanged. Only the ranks and the gaps between models are stable across versions of the leaderboard.\"},{type:\"p\",text:\"The hierarchical model captures task specific behavior in the per-study adjustments but uses only the global strength for the final ranking. This is the right design for a cross study summary, but it does mean that a model with strong task specific strengths can look weaker on the leaderboard than it would in a single domain study.\"},{type:\"p\",text:\"The leaderboard should be read as a directional signal. Where confidence intervals overlap, the ranks should be treated as a tie. It is most informative for models with broad coverage and many completed tournaments, and least informative for models that appeared in only one or two studies.\"},{type:\"h2\",text:\"2. Research questions\"},{type:\"p\",text:\"Each Contra Labs study is designed to answer four questions about a defined creative task:\"},{type:\"list\",ordered:true,items:[\"Which model is preferred overall, and by how much.\",\"Where each model wins or loses, decomposed across rubric dimensions, prompt types, and (where applicable) creative phase.\",\"Why evaluators preferred one output over another, in their own words.\",\"How much weight the panel's conclusions deserve, given the agreement among evaluators.\"]},{type:\"p\",text:\"The first two questions are addressed quantitatively. The third is addressed by structured analysis of free-text responses. The fourth is addressed by a battery of inter-rater reliability diagnostics. Quantitative and qualitative findings are reported jointly so that effect sizes are paired with mechanistic explanations.\"},{type:\"h2\",text:\"3. Evaluation environment\"},{type:\"p\",text:\"Studies are conducted inside an internal evaluation application maintained by Contra Labs. Evaluators authenticate, receive an assigned set of prompts (referred to as tournaments), and complete each tournament as a self-contained task.\"},{type:\"image\",slot:\"image1\",caption:\"Figure 1. Evaluator landing and assignment view.\"},{type:\"p\",text:\"Within a tournament, the evaluator is shown the outputs of every participating model for a single prompt. Outputs are displayed in randomized order and labelled with neutral identifiers (Model A, Model B, and so on), so the evaluator cannot infer which output came from which model. Where applicable, a reference input (image, brief, source document) is shown alongside the outputs.\"},{type:\"image\",slot:\"image2\",caption:\"Figure 2. Pairwise ranking interface.\"},{type:\"image\",slot:\"image3\",caption:\"Figure 3. Scalar rating interface.\"},{type:\"image\",slot:\"image4\",caption:\"Figure 4. Free-text rationale prompt.\"},{type:\"p\",text:\"The evaluator completes the ranking, the scalar ratings, and the rationale text before the next tournament is revealed. All responses are timestamped and recorded at the grain of (evaluator, prompt, model).\"},{type:\"p\",text:\"For studies that span more than one stage of creative production, the same evaluator typically reviews outputs from each model at each stage of the funnel within the same session, with stages presented in their natural production order. Common funnel taxonomies include ideation, mockup, and refinement for creative production tasks, but the number and naming of phases varies by domain.\"},{type:\"callout\",text:\"The remaining figures in this document (A through G) are illustrative. They use synthetic data and anonymized model labels (Model α, β, γ, δ) to show what each analytical output looks like. They are not drawn from any real study.\"},{type:\"h2\",text:\"4. Instrument: question types\"},{type:\"p\",text:\"A study uses a combination of three question formats. Most studies use all three. The exact rubric is calibrated to the creative domain under evaluation.\"},{type:\"h3\",text:\"4.1 Forced-choice rankings\"},{type:\"p\",text:\"The evaluator is shown the outputs of N models for a single prompt and asked to place them in rank order, from best to worst, against a stated criterion. Internally, an N-way ranking is decomposed into N choose 2 pairwise comparisons for downstream analysis. Rankings capture relative judgment, which prior work in psychophysics and preference modeling has shown to be substantially more reliable than absolute rating when the panel is heterogeneous (see \\xa76).\"},{type:\"p\",text:\"In many studies the evaluator is also asked, after submitting a ranking, to indicate their confidence in that ranking on an ordered scale (for example, low, medium, high). Confidence responses are reported as a separate distribution and used to weight or filter rankings during sensitivity analysis.\"},{type:\"h3\",text:\"4.2 Scalar ratings\"},{type:\"p\",text:\"For each model output, the evaluator assigns a 1-to-5 score on each of several named rubric dimensions. Rubric dimensions are chosen so that they are conceptually orthogonal and so that, in aggregate, they decompose the construct of quality for the domain under study.\"},{type:\"p\",text:\"A study's rubric typically contains between three and seven scalar dimensions. Studies of code generation may rate correctness, instruction-following, and idiomatic style. Studies of graphic design may rate typography, color harmony, and spatial accuracy. Studies of video may rate temporal coherence, motion smoothness, and subject fidelity. The specific rubric is set during study design and held constant across all evaluators and prompts within a study.\"},{type:\"p\",text:\"Scalar ratings make it possible to characterize absolute quality on each dimension, not only relative quality. They are the noisiest signal collected and therefore require explicit reliability diagnostics (see \\xa76).\"},{type:\"h3\",text:\"4.3 Free-text rationale\"},{type:\"p\",text:\"After ranking and rating, the evaluator is asked to justify their judgment in writing. Common prompt formats include:\"},{type:\"list\",ordered:false,items:[\"Strengths and weaknesses prompts. What did each model do well. What did it miss.\",\"Per-comparison prompts. Why did you rank model X above model Y.\",\"Failure-mode prompts. Describe the most jarring artifact in any output.\",\"Phase-transition prompts (for multi-phase studies). What changed between this phase and the previous one, and was the change positive or negative.\"]},{type:\"p\",text:\"Free-text responses are the input to the qualitative analysis described in \\xa75.7 and \\xa75.8.\"},{type:\"h3\",text:\"4.4 Prompt construction\"},{type:\"p\",text:\"Prompts are the experimental stimuli. The credibility of every downstream finding depends on the prompts being representative of real-world use, broad enough in scope to surface model differences, and not selected in a way that favors any one model. Contra Labs builds the prompt set for a study in four steps.\"},{type:\"p\",text:\"Sourcing. Prompts are drawn from real client briefs, partner-supplied scenarios, and synthesized analogues that mirror common production tasks in the target domain. Prompt language is rewritten where necessary to remove identifying client information but is otherwise kept close to its source form. Wholesale invention of prompts is avoided; the goal is for an evaluator reading the prompt to recognize a task they could plausibly receive at work.\"},{type:\"p\",text:\"Taxonomy and balance. Prompts are categorized along the dimensions the study intends to dissect. For an image-generation study this might be reference type (text-described, image-reference, hybrid) and subject category (product, portrait, scene, abstract). For a code-generation study it might be language, task type, and complexity. The prompt set is balanced across categories so that no single segment dominates the aggregate result and per-segment analyses (\\xa75.5) have sufficient observations.\"},{type:\"p\",text:\"Validation. Every prompt is reviewed before the study runs. The review checks that the prompt is unambiguous, that it does not contain instructions a model can satisfy in a trivially correct way, and that the requested deliverable falls within the rated rubric. Prompts that are degenerate (for example, prompts where all participating models produce visually identical outputs) are removed during this pre-flight review or, if missed, excluded during data cleaning and reported as such in the study's QA section.\"},{type:\"p\",text:\"Volume. A typical study uses between fifteen and forty prompts, depending on the number of models in the comparison, the panel size, and the cost of each individual judgment. Prompts are assigned to evaluators on a partially overlapping schedule so that every prompt receives multiple independent rankings and so that inter-rater reliability (see \\xa76) can be computed on a per-prompt basis.\"},{type:\"h2\",text:\"5. Analysis\"},{type:\"p\",text:\"A Contra Labs analysis notebook produces the following outputs for every study. Within a single-phase study, each block is computed once. Within a multi-phase study, each block is computed separately for each phase, and \\xa75.10 cross-phase comparisons are added on top.\"},{type:\"h3\",text:\"5.1 Pairwise win-rate matrix\"},{type:\"p\",text:\"For every ordered pair of models (A, B), the proportion of evaluator-prompt observations on which A was ranked above B is computed and rendered as a model-by-model heatmap. The pairwise matrix is the rawest possible expression of the preference data, prior to any modeling assumptions. It exposes non-transitive patterns (where A beats B, B beats C, and C beats A) that would be hidden in a single-number summary, and provides the ground truth against which the Bradley-Terry estimates in \\xa75.3 are checked.\"},{type:\"image\",slot:\"image5\",caption:\"Figure A. Pairwise win-rate matrix.\"},{type:\"h3\",text:\"5.2 Overall pairwise win rate\"},{type:\"p\",text:\"For each model, the average win rate across all opponents is computed and reported as a bar chart. This is a single-number summary suitable for headline reporting. It is paired with, not used in place of, the full pairwise matrix.\"},{type:\"h3\",text:\"5.3 Bradley-Terry strength and Elo ratings\"},{type:\"p\",text:\"The Bradley-Terry model is a standard probabilistic model of paired-comparison data. It assumes that each model has a latent strength parameter s_i, and that the probability of model A being preferred over model B is the logistic function of (s_A − s_B). Two estimation methods are used in parallel.\"},{type:\"p\",text:\"The first is direct maximum-likelihood estimation of the Bradley-Terry parameters, recovering a calibrated strength score per model. The second is an iterative Elo update with fixed hyperparameters (k = 32, 50 passes over the pairwise data, fixed random seed for reproducibility). Elo ratings are the more familiar reporting format in the broader machine-learning evaluation community (for example, Chatbot Arena and LMSys), which makes Contra Labs results legible to external readers.\"},{type:\"p\",text:\"Bradley-Terry has two advantages over the raw win-rate summary in \\xa75.2. It accounts for strength of schedule, so a model that beats stronger opponents is rewarded more than one that beats weaker opponents. And it yields a single calibrated scale on which gaps between models translate directly to expected win probabilities.\"},{type:\"image\",slot:\"image6\",caption:\"Figure B. Bradley-Terry Elo ratings.\"},{type:\"h3\",text:\"5.4 Rank distribution\"},{type:\"p\",text:\"For every model, the proportion of evaluator-prompt observations placing it in each rank position is reported as a stacked bar chart. Rank distribution surfaces consensus on a model's tier (a model that lands 1st or 2nd 80% of the time is qualitatively different from one that averages 2nd but is rarely placed 1st). For multi-phase studies, rank distributions are also rendered as ridge plots that show how the entire distribution shifts from phase to phase.\"},{type:\"h3\",text:\"5.5 Per-segment win rates\"},{type:\"p\",text:\"Pairwise win rates are recomputed within each defined segment of the data (prompt type, design brief, deliverable category, creative phase) and reported side-by-side as faceted bar charts. Segmented analysis catches model behavior that aggregates away. A model that wins overall may lose decisively in a particular segment, and vice versa.\"},{type:\"h3\",text:\"5.6 Scalar rating analysis\"},{type:\"p\",text:\"For each scalar dimension, the mean rating per model is reported, along with the full rating distribution per model and the distribution per evaluator. Three complementary visualizations are produced.\"},{type:\"list\",ordered:false,items:[\"Grouped bar charts of mean rating by model and dimension.\",\"Stacked bars or box plots of the rating distribution within each (model, dimension) cell.\",\"Radar plots that place all dimensions on a single chart per model, making strength profiles directly comparable across models at a glance.\"]},{type:\"p\",text:\"A correlation matrix of the scalar dimensions is also reported. Strong off-diagonal correlations indicate that two nominally independent rubric dimensions are functioning as the same construct in the evaluator's mind, which is useful diagnostic information when revising the rubric for the next study.\"},{type:\"image\",slot:\"image7\",caption:\"Figure C. Scalar rating profile per model (radar).\"},{type:\"h3\",text:\"5.7 Structured qualitative coding\"},{type:\"p\",text:\"Free-text rationale responses are passed to a large language model under a fixed extraction prompt that returns labelled themes of two kinds: strengths (positive statements about a model's output) and weaknesses (negative statements). Extraction outputs are cached so that repeated analyses are deterministic.\"},{type:\"p\",text:\"Three analytic views are produced from the coded themes.\"},{type:\"list\",ordered:false,items:[\"Theme frequency: how often each theme appears across the corpus, irrespective of model.\",\"Theme sentiment: the count of strength, neutral, and weakness mentions per theme, reported as a diverging bar chart.\",\"Per-model strengths and weaknesses: for each model, the top themes and their strength-to-weakness ratio, reported as a horizontal bar chart with strengths to the right and weaknesses to the left.\"]},{type:\"p\",text:\"Structured coding is used because raw sentiment analysis loses domain specificity (the difference between good lighting and good composition is invisible to a polarity classifier), while reading hundreds of rationale responses by hand is intractable and not reproducible. Theme extraction produces a transcript-grounded qualitative summary that can be cited alongside the quantitative findings and audited if questioned.\"},{type:\"image\",slot:\"image8\",caption:\"Figure D. Per-model strengths and weaknesses.\"},{type:\"h3\",text:\"5.8 Theme co-occurrence (epistemic network analysis)\"},{type:\"p\",text:\"The qualitative themes from \\xa75.7 are also analyzed as a network. For each model, a co-occurrence graph is constructed where nodes are themes and edges are weighted by the number of evaluator responses that mention both endpoints together. The resulting per-model network is rendered as a force-directed graph in which node color encodes the strength-to-weakness sentiment for that theme and edge thickness encodes the strength of co-occurrence.\"},{type:\"p\",text:\"Theme co-occurrence networks reveal which weaknesses and strengths cluster together. They turn an unordered theme list into a structured picture of how the panel collectively talks about a model. For pairwise model comparisons, a difference network is computed that highlights themes mentioned predominantly for one model versus the other.\"},{type:\"image\",slot:\"image9\",caption:\"Figure E. Theme co-occurrence network for one model.\"},{type:\"h3\",text:\"5.9 Net sentiment heatmaps\"},{type:\"p\",text:\"A model-by-theme matrix is computed in which each cell holds the net sentiment for that (model, theme) pair, defined as strength mentions minus weakness mentions, divided by total mentions. This is rendered as a diverging heatmap and provides a single compact view of comparative strengths and weaknesses across the entire model set. For multi-phase studies the heatmap is repeated per phase and as an aggregate.\"},{type:\"h3\",text:\"5.10 Cross-phase comparison (multi-phase studies only)\"},{type:\"p\",text:\"When the study covers more than one production phase, every analysis above is computed within each phase and then compared across phases. Specific cross-phase outputs include:\"},{type:\"list\",ordered:false,items:[\"Win rate, Bradley-Terry strength, and Elo rating per model per phase, plotted as grouped bars or as a line chart that emphasizes trajectory.\",\"Bump charts that show how each model's rank order changes between phases.\",\"Mean rating per scalar dimension per phase, plotted as grouped bars.\",\"Theme evolution charts that show which qualitative themes grow or fade across phases.\",\"A comprehensive summary table that records, for each model and phase, all headline metrics in one place.\"]},{type:\"image\",slot:\"image10\",caption:\"Figure G. Cross-phase rank shifts (bump chart).\"},{type:\"p\",text:\"Non-parametric statistical tests are applied to the cross-phase data to decide whether observed shifts are statistically meaningful. The Friedman test is used to compare ranks across phases within rater, with Wilcoxon signed-rank as the post-hoc pairwise test. Kruskal-Wallis is used to compare scalar distributions across independent groups. Reporting both effect size (the magnitude of the shift) and significance (the test p-value) ensures that small but reliable changes are not mistaken for noise, and that large but uncertain changes are flagged as such.\"},{type:\"h3\",text:\"5.11 Output spotlights\"},{type:\"p\",text:\"Each report concludes with a small number of curated prompt-level case studies in which the reference input, prompt text, and every model's output are shown side-by-side, annotated with the actual rank and scalar ratings assigned by the panel. These spotlights ground the aggregate statistics in inspectable examples, which materially improves stakeholder trust in the reported findings.\"},{type:\"h2\",text:\"6. Inter-rater reliability\"},{type:\"p\",text:\"A central question in any panel-based evaluation is whether the panel's conclusions would replicate under a different panel of evaluators with the same expertise. This is addressed with a battery of diagnostics, computed in every study, that together describe the panel's internal agreement at several different grains.\"},{type:\"h3\",text:\"6.1 Krippendorff's α on scalar ratings\"},{type:\"p\",text:\"Krippendorff's α is a general-purpose coefficient of agreement that handles arbitrary numbers of raters, missing data, and multiple measurement levels (nominal, ordinal, interval). It returns a value in (−∞, 1], where 1.0 indicates perfect agreement, 0 indicates agreement at chance, and negative values indicate systematic disagreement.\"},{type:\"p\",text:\"Conventional thresholds for substantive use are α ≥ 0.8 (acceptable), 0.667 ≤ α < 0.8 (tentative, suitable for exploratory analysis only), and α < 0.667 (unreliable). α is computed on the scalar rating data with the interval distance function. α is consistently the lowest reliability number reported in any study, which is the expected pattern for absolute Likert ratings across heterogeneous human raters. Scalar means are reported with this caveat and treated as directional rather than absolute.\"},{type:\"image\",slot:\"image11\",caption:\"Figure F. Inter-rater reliability (Krippendorff's α).\"},{type:\"h3\",text:\"6.2 Krippendorff's α on rankings (ordinal)\"},{type:\"p\",text:\"α is recomputed on the rank data using the ordinal distance function, which penalizes large rank differences more heavily than small ones. Comparing the ordinal-rank α to the interval-scalar α quantifies how much agreement information is gained by switching from absolute rating to relative ranking. In practice rank α is meaningfully higher than scalar α, which is one of the reasons pairwise analyses receive primary weight in the report.\"},{type:\"h3\",text:\"6.3 Kendall's coefficient of concordance (W) per prompt\"},{type:\"p\",text:\"Krippendorff's α returns a single number for the entire study. Kendall's W returns a single number per prompt: the proportion of variance in the panel's aggregate ranking that is explained by genuine consensus rather than noise. W ranges from 0 (no concordance) to 1 (perfect concordance), with W ≥ 0.5 conventionally interpreted as strong, 0.3 to 0.5 as moderate, and below 0.3 as weak. Per-prompt W identifies which prompts produced a clear consensus winner and which split the panel. The latter are flagged for closer inspection, since low concordance can indicate either that the models are genuinely interchangeable on the prompt or that the prompt itself is ambiguous.\"},{type:\"h3\",text:\"6.4 Pairwise Spearman rank correlation between evaluators\"},{type:\"p\",text:\"For every pair of evaluators, the Spearman rank correlation of their assigned ranks on the prompts they both evaluated is computed. The full N-by-N correlation matrix is reported as a heatmap, and each evaluator is assigned a panel-fit score equal to the mean of their correlations with the rest of the panel. This diagnostic is primarily operational. It identifies a consensus cluster of evaluators whose judgments converge with the majority of the panel, and it flags outliers whose rankings diverge. Panel-fit scores feed directly into rehire decisions for future studies.\"},{type:\"h3\",text:\"6.5 Hierarchical rater clustering\"},{type:\"p\",text:\"The pairwise Spearman correlations between evaluators are inverted into a distance matrix and passed through hierarchical agglomerative clustering. The resulting dendrogram is reported alongside the correlation heatmap and reveals whether the panel splits into stable subgroups (for example, a majority cluster of evaluators in broad agreement and a minority cluster with a different aesthetic prior) or whether it behaves as a single population. Where multiple clusters exist, downstream analyses can be repeated within each cluster as a sensitivity check, and rubric calibration sessions for future studies can be designed to address the dimensions on which the clusters diverge.\"},{type:\"h3\",text:\"6.6 Reporting\"},{type:\"p\",text:\"All five diagnostics are reported in every study rather than collapsed into a single number. A study with strong rank concordance and weak scalar agreement, for example, supports claims about ordering but not about absolute magnitude. A study with two clearly separated rater clusters supports claims within each cluster but warrants caution in aggregate. The reader is given the data needed to weight every quantitative finding accordingly.\"},{type:\"h2\",text:\"7. Recruiting\"},{type:\"h3\",text:\"7.1 Panel size\"},{type:\"p\",text:\"A Contra Labs panel is typically composed of eight to twelve evaluators per study, with smaller pilot studies running as low as five and larger studies extending to fifteen. Panel size is chosen to balance two competing requirements: enough evaluators to produce stable aggregate rankings and to compute inter-rater reliability with meaningful confidence intervals (see \\xa76), and few enough to allow thorough screening, onboarding, and per-study compensation at a sustainable cost.\"},{type:\"h3\",text:\"7.2 Candidate profile\"},{type:\"p\",text:\"Evaluators are recruited from the Contra freelance network and, where domain expertise is specialized, from targeted outreach to partner companies and professional communities. Every panelist for a study must satisfy a set of role-relevant criteria written specifically for the study's creative domain. The general pattern is as follows.\"},{type:\"list\",ordered:false,items:[\"Active practitioner. The evaluator currently works in the target domain as part of their day-to-day professional practice, not as a hobby or as a former practitioner.\",\"Mid-level or senior experience. Approximately four or more years of professional experience in the target domain, sufficient to have internalized the judgment criteria the rubric is testing.\",\"Direct exposure to the deliverable type. The evaluator has shipped work of the kind being evaluated (for example, a study of brand-campaign image generation requires evaluators who have produced brand or campaign visuals in their own work).\",\"Demonstrated judgment on each rubric dimension. The evaluator can articulate what makes an output good or bad on every dimension of the study's rubric, validated during screening with a short calibration task.\",\"Comfortable with the workflow. The evaluator is willing and able to review many side-by-side comparisons in sequence and to produce concise, useful written feedback.\"]},{type:\"p\",text:\"The exact criteria are documented in a per-study participant brief that the recruiting team uses for outreach and screening.\"},{type:\"h3\",text:\"7.3 Screening and onboarding\"},{type:\"p\",text:'Candidates submit a brief portfolio or work-sample review during application. Recruiters check each candidate against the participant brief and run a short calibration exercise that mirrors the live study: a small number of representative prompts, the same instrument the live study will use, and a debrief in which the candidate explains their rationale. Calibration outputs are reviewed for rubric understanding rather than for \"correct\" answers; candidates who can articulate why they judged each output the way they did are admitted to the panel.'},{type:\"p\",text:\"Before live data collection begins, the admitted panel receives written guidelines that restate the rubric, define each scalar dimension, and walk through the evaluation interface. Time is left for clarifying questions in advance of the study window.\"},{type:\"h3\",text:\"7.4 Compensation\"},{type:\"p\",text:\"Evaluators are paid a fixed honorarium per study. Honoraria are calibrated to the expected time commitment and to prevailing market rates for the evaluator's professional background, and typically fall in the low hundreds of US dollars for a one-week study window. Compensation is stated up-front in the participant brief and is not contingent on the direction of the evaluator's judgments.\"},{type:\"h3\",text:\"7.5 Rehire criteria\"},{type:\"p\",text:\"Evaluator performance from completed studies is logged and used to inform invitations for subsequent studies. The principal performance signals are completion (did the evaluator finish their assigned tournaments inside the window), rationale quality (were the written responses specific, actionable, and grounded in the outputs), and panel fit (how strongly did the evaluator's rankings correlate with the rest of the panel; see \\xa76.4). Low panel fit is not in itself disqualifying. An outlier may be a domain specialist whose taste differs from the majority in a study-relevant way, but it is reviewed alongside the other signals when assembling future panels.\"},{type:\"callout\",text:\"This methodology is the constant under every Contra Labs study. Each individual report (battle, profile, field note, white paper) cites it and reports only the parameters that vary: panel size, model count, rubric, phase taxonomy, and prompt set.\",href:\"/research\",cta:\"See all research\"}],notionId:\"35fdf2b6-cc6b-8065-8726-e13f6d531ffa\",updatedAt:\"2026-05-13T00:00:00Z\"};const allArticles=[methodologyArticle,videoH2H,designCrit,codeEditorBattle,ideogramTypography,geminiUnderConstraint,geminiPromptPattern,fireflyEdit,firefly,undifferentiatedWork,frontierImageBrief,gptImage2Production,chatgptImagesTypography,claudeDesignPrecision,claudeDesign,krea,seedream,grokImagine,threePhases,earnings,veo,benchmarkPreview,hcbSurvey];function getArticleBySlug(slug){return allArticles.find(a=>a.slug===slug);}export default function ResearchArticle({slug,brandAvatarUrl,coverImage,image1,image2,image3,image4,image5,image6,image7,image8,image9,image10,image11,image12,image13,image14,video1,video2,video3,video4,video5,mobileBreakpoint=810}){const[containerRef,containerWidth]=useContainerWidth();const isMobile=containerWidth<mobileBreakpoint;const s=React.useMemo(()=>makeStyles({isMobile}),[isMobile]);const article=slug?getArticleBySlug(slug):undefined;const cover=coverImage||article?.coverImage;const imageSlots={image1,image2,image3,image4,image5,image6,image7,image8,image9,image10,image11,image12,image13,image14};const videoSlots={video1,video2,video3,video4,video5};const related=article?allArticles.filter(a=>!a.comingSoon&&a.slug!==article.slug).slice(0,3):[];const tocItems=React.useMemo(()=>(article?.body??[]).filter(n=>n.type===\"h2\").map((n,i)=>({n:String(i+1).padStart(2,\"0\"),t:n.text})),[article]);if(!article){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:56,fontFamily:fonts.sans,color:colors.stone},children:['No article found for slug \"',slug,'\". Check the Slug prop.']});}// Screenshot hero — extract the keyFindings node so it renders\n// inside the 16:9 hero card at the top of the article. The hero\n// image comes from `coverImage` when set, otherwise falls back to\n// `image1` (and in that fallback case we strip image1 from the\n// body to avoid showing the same image twice). When `coverImage`\n// IS set, image1 stays in the body and renders inline as the\n// first body figure.\nconst keyFindingsNode=article.body.find(n=>n.type===\"keyFindings\");// Methodology pages render a paper-style header (no hero card / no\n// promoted image), so image1 should stay in the body and render\n// inline as the first figure. For every other article type, image1\n// gets promoted to the hero card when no explicit cover is set, and\n// is stripped from the body to avoid showing the same image twice.\nconst isPaperHeader=article.type===\"Methodology\";const heroFallsBackToImage1=!cover&&!isPaperHeader;const prunedBody=article.body.filter(n=>{if(n.type===\"keyFindings\")return false;if(heroFallsBackToImage1&&n.type===\"image\"&&n.slot===\"image1\")return false;return true;});const showToc=!isMobile;// Absolute URL passed to per-figure share buttons. Hardcoded to\n// contralabs.com because window.location.origin is unreliable in\n// Framer's preview iframe (often serializes as \"null\"; published\n// previews report framercanvas.com), and the share endpoints\n// need a real http(s) host to unfurl the OG card.\nconst shareUrl=`https://contralabs.com/research/${article.slug}`;const[toast,setToast]=React.useState(false);const handleShare=React.useCallback(async()=>{if(typeof window===\"undefined\")return;try{await navigator.clipboard.writeText(window.location.href);}catch{// clipboard API unavailable — still show the toast so the button feels responsive\n}setToast(true);window.setTimeout(()=>setToast(false),2e3);},[]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:s.page,children:[/*#__PURE__*/_jsx(\"div\",{style:s.crumbs,children:/*#__PURE__*/_jsxs(\"a\",{href:\"/research\",style:s.backLink,children:[/*#__PURE__*/_jsx(Icon,{name:\"arrow\",size:13,style:{transform:\"rotate(180deg)\"}}),\" \",\"All research\"]})}),article.type===\"Methodology\"?/*#__PURE__*/_jsxs(\"header\",{style:s.header,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.paperEyebrow,children:[/*#__PURE__*/_jsx(\"span\",{children:\"Contra Labs Research\"}),/*#__PURE__*/_jsx(\"span\",{style:s.heroDot,children:\"\\xb7\"}),/*#__PURE__*/_jsx(\"span\",{children:new Date(article.publishedDate+\"T00:00:00\").toLocaleDateString(\"en-US\",{year:\"numeric\",month:\"long\"})}),/*#__PURE__*/_jsx(\"span\",{style:s.heroDot,children:\"\\xb7\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Methodology\"})]}),/*#__PURE__*/_jsx(\"h1\",{style:s.h1,children:article.title}),/*#__PURE__*/_jsx(\"p\",{style:s.dek,children:article.subtitle}),/*#__PURE__*/_jsxs(\"div\",{style:s.byline,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.bylineLeft,children:[brandAvatarUrl?/*#__PURE__*/_jsx(\"img\",{src:brandAvatarUrl,alt:\"Contra Labs\",style:s.brandAvatar}):/*#__PURE__*/_jsx(BrandAvatarFallback,{}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:s.bylineName,children:\"Contra Labs\"}),/*#__PURE__*/_jsxs(\"div\",{style:s.bylineMeta,children:[fmtDate(article.publishedDate),\" \\xb7\",\" \",article.readMinutes,\" min read\"]})]})]}),/*#__PURE__*/_jsx(\"div\",{style:s.actions,children:/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleShare,style:{...s.actionBtn,...s.actionBtnPrimary},children:\"Share\"})})]})]}):/* Screenshot hero — 16:9 card combining brand image + meta +\n                headline + dek + key findings + byline + share. Designed\n                to be the screenshottable moment at the top of every\n                research page. On mobile, image stacks on top and the\n                card flows tall. *//*#__PURE__*/_jsx(\"section\",{style:s.heroWrap,children:/*#__PURE__*/_jsxs(\"div\",{style:s.heroCard,children:[/*#__PURE__*/_jsx(\"div\",{style:s.heroImageCol,children:cover?/*#__PURE__*/_jsx(\"img\",{src:cover,alt:\"\",style:s.heroImageImg}):image1?/*#__PURE__*/_jsx(\"img\",{src:image1,alt:\"\",style:s.heroImageImg}):/*#__PURE__*/_jsx(\"div\",{style:s.heroImagePh,\"aria-hidden\":true})}),/*#__PURE__*/_jsxs(\"div\",{style:s.heroContent,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.heroEyebrow,children:[/*#__PURE__*/_jsx(\"span\",{style:s.heroKind,children:article.type}),/*#__PURE__*/_jsx(\"span\",{style:s.heroDot,children:\"\\xb7\"}),/*#__PURE__*/_jsx(\"span\",{children:fmtDate(article.publishedDate)}),/*#__PURE__*/_jsx(\"span\",{style:s.heroDot,children:\"\\xb7\"}),/*#__PURE__*/_jsxs(\"span\",{children:[article.readMinutes,\" min read\"]})]}),/*#__PURE__*/_jsx(\"h1\",{style:s.heroH1,children:article.title}),/*#__PURE__*/_jsx(\"p\",{style:s.heroDek,children:article.subtitle}),keyFindingsNode&&/*#__PURE__*/_jsx(\"ol\",{style:s.heroFindings,children:keyFindingsNode.items.map((item,i)=>/*#__PURE__*/_jsxs(\"li\",{style:s.heroFinding,children:[/*#__PURE__*/_jsx(\"span\",{style:s.heroFindingNum,children:String(i+1).padStart(2,\"0\")}),/*#__PURE__*/_jsx(\"span\",{style:s.heroFindingText,children:item})]},i))}),/*#__PURE__*/_jsxs(\"div\",{style:s.heroFoot,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.heroByline,children:[brandAvatarUrl?/*#__PURE__*/_jsx(\"img\",{src:brandAvatarUrl,alt:\"Contra Labs\",style:s.heroAvatar}):/*#__PURE__*/_jsx(BrandAvatarFallback,{}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:s.heroBylineName,children:\"Contra Labs\"}),/*#__PURE__*/_jsx(\"div\",{style:s.heroBylineRole,children:\"Research\"})]})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleShare,style:{...s.actionBtn,...s.actionBtnPrimary},children:\"Share\"})]})]})]})}),/*#__PURE__*/_jsxs(\"div\",{style:s.body,children:[showToc&&/*#__PURE__*/_jsxs(\"aside\",{style:s.toc,children:[/*#__PURE__*/_jsx(\"div\",{style:s.tocLabel,children:\"Contents\"}),/*#__PURE__*/_jsx(\"ol\",{style:s.tocList,children:tocItems.map((item,i)=>/*#__PURE__*/_jsxs(\"li\",{style:{...s.tocItem,...i===0?s.tocItemActive:null},children:[/*#__PURE__*/_jsx(\"span\",{style:s.tocNum,children:item.n}),/*#__PURE__*/_jsx(\"span\",{children:item.t})]},item.n))}),/*#__PURE__*/_jsxs(\"div\",{style:s.tocFoot,children:[/*#__PURE__*/_jsx(\"div\",{style:s.tocFootLabel,children:\"Cite as\"}),/*#__PURE__*/_jsxs(\"div\",{style:s.citeBox,children:[\"Contra Labs (\",new Date(article.publishedDate).getFullYear(),\"). \",article.title.replace(/[.!?]+$/,\"\"),\".\",\" \",/*#__PURE__*/_jsx(\"em\",{children:\"Contra Labs Research\"}),\",\",\" \",fmtDate(article.publishedDate),\".\"]})]})]}),/*#__PURE__*/_jsxs(\"article\",{style:s.prose,children:[prunedBody.map((node,i)=>/*#__PURE__*/_jsx(NodeView,{node:node,isFirst:i===0,imageSlots:imageSlots,videoSlots:videoSlots,shareUrl:shareUrl,articleTitle:article.title,styles:s},i)),article.metrics&&/*#__PURE__*/_jsx(MetricTable,{rows:article.metrics,styles:s}),article.type!==\"Methodology\"&&/*#__PURE__*/_jsxs(\"a\",{href:\"/research/methodology\",style:s.methodologyFoot,children:[\"How we ran this study →\",\" \",/*#__PURE__*/_jsx(\"span\",{style:s.methodologyFootEm,children:\"Methodology\"})]})]})]}),toast&&/*#__PURE__*/_jsx(\"div\",{style:s.toast,role:\"status\",\"aria-live\":\"polite\",children:\"Link copied\"}),related.length>0&&/*#__PURE__*/_jsxs(\"section\",{style:s.related,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.relatedHead,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.relatedTitleBlock,children:[/*#__PURE__*/_jsx(\"span\",{style:s.relatedEyebrow,children:\"Continue reading\"}),/*#__PURE__*/_jsxs(\"span\",{style:s.relatedMeta,children:[related.length,\" \",related.length===1?\"study\":\"studies\"]})]}),/*#__PURE__*/_jsxs(\"a\",{href:\"/research\",style:s.relatedAll,children:[\"All research \",/*#__PURE__*/_jsx(Icon,{name:\"arrow\",size:14})]})]}),/*#__PURE__*/_jsx(\"ol\",{style:s.relatedList,children:related.slice(0,3).map(r=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsxs(\"a\",{href:`/research/${r.slug}`,style:s.relatedRow,children:[/*#__PURE__*/_jsxs(\"div\",{style:s.relatedRowMeta,children:[/*#__PURE__*/_jsx(\"span\",{style:s.relatedRowDate,children:fmtDate(r.publishedDate)}),/*#__PURE__*/_jsx(\"span\",{style:s.relatedRowKind,children:r.type})]}),/*#__PURE__*/_jsxs(\"div\",{style:s.relatedRowBody,children:[/*#__PURE__*/_jsx(\"span\",{style:s.relatedRowTitle,children:r.title}),/*#__PURE__*/_jsx(\"span\",{style:s.relatedRowDek,children:r.subtitle}),/*#__PURE__*/_jsxs(\"span\",{style:s.relatedRowRead,children:[\"Read\",\" \",/*#__PURE__*/_jsx(Icon,{name:\"arrowUp\",size:12})]})]})]})},r.slug))})]})]});}// ────────────────────────────────────────────────────────────\n// Share buttons (Download / X / LinkedIn) for images\n//\n// Three explicit, single-purpose actions — no clipboard auto-attach,\n// no confirmation panel, no platform-specific magic:\n//\n//   • Download image — watermarks the image with \"contralabs.com\" on\n//     a canvas and saves it to the user's Downloads folder.\n//   • Share on X — opens X's compose intent prefilled with the\n//     article title, an @contralabs_ai mention, and the page URL.\n//   • Share on LinkedIn — opens LI's share-offsite dialog with the\n//     page URL. LI deprecated text prefill, so the user composes\n//     their own caption above the auto-unfurled OG card (and tags\n//     @Contra themselves — the button's tooltip reminds them).\n//\n// Mirrors the implementation in ResearchWhitepaper.tsx — duplicated\n// because Framer code components can't import from each other.\nfunction ShareButtons({imageSrc,shareUrl,slot,articleTitle,styles}){const s=styles;const[busy,setBusy]=React.useState(false);const filename=`contralabs-${slot}.png`;const handleDownload=async()=>{if(busy)return;setBusy(true);try{const blob=await renderWatermarkedBlob(imageSrc);downloadBlob(blob,filename);}catch(err){// eslint-disable-next-line no-console\nconsole.warn(\"contralabs share: watermark/download failed\",err);if(typeof window!==\"undefined\"){window.alert(\"Couldn't prepare the watermarked image. Try right-clicking the figure and saving it directly.\");}}finally{setBusy(false);}};const xText=`${articleTitle} by @contralabs_ai`;const xIntent=\"https://twitter.com/intent/tweet\"+`?text=${encodeURIComponent(xText)}`+`&url=${encodeURIComponent(shareUrl)}`;const liIntent=\"https://www.linkedin.com/sharing/share-offsite/\"+`?url=${encodeURIComponent(shareUrl)}`;return /*#__PURE__*/_jsxs(\"div\",{style:s.shareRow,children:[/*#__PURE__*/_jsx(\"span\",{style:s.shareLabel,children:\"Share\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:handleDownload,disabled:busy,title:\"Download the figure with a contralabs.com watermark\",style:s.shareDownloadBtn,children:busy?\"Preparing…\":/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 24 24\",width:\"13\",height:\"13\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"}),/*#__PURE__*/_jsx(\"polyline\",{points:\"7 10 12 15 17 10\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"15\",x2:\"12\",y2:\"3\"})]}),\"Download image\"]})}),/*#__PURE__*/_jsx(\"a\",{href:xIntent,target:\"_blank\",rel:\"noopener noreferrer\",\"aria-label\":\"Share on X — mentions @contralabs_ai\",title:\"Share on X — mentions @contralabs_ai\",style:s.shareBtn,children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"13\",height:\"13\",fill:\"currentColor\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"})})}),/*#__PURE__*/_jsx(\"a\",{href:liIntent,target:\"_blank\",rel:\"noopener noreferrer\",\"aria-label\":\"Share on LinkedIn — remember to tag @Contra in your post\",title:\"Share on LinkedIn — tag @Contra in your post\",style:s.shareBtn,children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"14\",height:\"14\",fill:\"currentColor\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z\"})})})]});}async function renderWatermarkedBlob(src){const img=await new Promise((resolve,reject)=>{const i=new Image;i.crossOrigin=\"anonymous\";i.onload=()=>resolve(i);i.onerror=()=>reject(new Error(\"image load failed\"));i.src=src;});const canvas=document.createElement(\"canvas\");canvas.width=img.naturalWidth||img.width;canvas.height=img.naturalHeight||img.height;const ctx=canvas.getContext(\"2d\");if(!ctx)throw new Error(\"canvas 2d context unavailable\");ctx.drawImage(img,0,0);// Bottom-right pill watermark, sized as a fraction of the image\n// width with min/max clamps so it scales sensibly across\n// resolutions.\nconst text=\"contralabs.com\";const fontPx=Math.min(36,Math.max(14,Math.round(canvas.width*.018)));const padX=Math.round(fontPx*.7);const padY=Math.round(fontPx*.45);const margin=Math.round(fontPx*.7);ctx.font=`500 ${fontPx}px ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif`;ctx.textBaseline=\"middle\";const metrics=ctx.measureText(text);const pillW=Math.round(metrics.width+padX*2);const pillH=Math.round(fontPx+padY*2);const x=canvas.width-pillW-margin;const y=canvas.height-pillH-margin;const r=Math.round(pillH/2);ctx.fillStyle=\"rgba(20, 20, 20, 0.62)\";drawRoundedRect(ctx,x,y,pillW,pillH,r);ctx.fill();ctx.fillStyle=\"rgba(255, 255, 255, 0.96)\";ctx.fillText(text,x+padX,y+pillH/2+1);return await new Promise((resolve,reject)=>{canvas.toBlob(b=>b?resolve(b):reject(new Error(\"toBlob returned null\")),\"image/png\");});}function drawRoundedRect(ctx,x,y,w,h,r){ctx.beginPath();ctx.moveTo(x+r,y);ctx.arcTo(x+w,y,x+w,y+h,r);ctx.arcTo(x+w,y+h,x,y+h,r);ctx.arcTo(x,y+h,x,y,r);ctx.arcTo(x,y,x+w,y,r);ctx.closePath();}function downloadBlob(blob,filename){if(typeof document===\"undefined\")return;const url=URL.createObjectURL(blob);const a=document.createElement(\"a\");a.href=url;a.download=filename;document.body.appendChild(a);a.click();document.body.removeChild(a);window.setTimeout(()=>URL.revokeObjectURL(url),1500);}// ────────────────────────────────────────────────────────────\n// Body-node renderer\nfunction NodeView({node,isFirst,imageSlots,videoSlots,shareUrl,articleTitle,styles}){const s=styles;switch(node.type){case\"h2\":return /*#__PURE__*/_jsx(\"h2\",{style:s.h2,children:node.text});case\"h3\":return /*#__PURE__*/_jsx(\"h3\",{style:s.h3,children:node.text});case\"p\":if(node.leadDrop){const first=node.text[0]??\"\";const rest=node.text.slice(1);return /*#__PURE__*/_jsxs(\"p\",{style:s.leadP,children:[/*#__PURE__*/_jsx(\"span\",{style:s.dropCap,children:first}),rest]});}if(node.parts&&node.parts.length>0){return /*#__PURE__*/_jsx(\"p\",{style:s.p,children:node.parts.map((part,i)=>typeof part===\"string\"?/*#__PURE__*/_jsx(React.Fragment,{children:part},i):/*#__PURE__*/_jsx(\"a\",{href:part.href,target:\"_blank\",rel:\"noopener noreferrer\",style:s.inlineLink,children:part.text},i))});}return /*#__PURE__*/_jsx(\"p\",{style:s.p,children:node.text});case\"quote\":return /*#__PURE__*/_jsxs(\"blockquote\",{style:s.quote,children:[node.text,node.cite&&/*#__PURE__*/_jsx(\"cite\",{style:s.cite,children:node.cite})]});case\"image\":{const resolved=node.slot?imageSlots[node.slot]:node.src;if(!resolved)return null;const anchor=node.slot?`fig-${node.slot}`:undefined;const figureShareUrl=anchor?`${shareUrl}#${anchor}`:shareUrl;return /*#__PURE__*/_jsxs(\"figure\",{id:anchor,style:s.proseFig,children:[/*#__PURE__*/_jsx(\"img\",{src:resolved,alt:node.alt??\"\",style:s.proseFigImg}),node.caption&&/*#__PURE__*/_jsx(\"figcaption\",{style:s.figCap,children:node.caption}),node.shareable!==false&&/*#__PURE__*/_jsx(ShareButtons,{imageSrc:resolved,shareUrl:figureShareUrl,slot:node.slot??\"image\",articleTitle:articleTitle,styles:s})]});}case\"video\":{const resolved=node.slot?videoSlots[node.slot]:node.src;if(!resolved)return null;const anchor=node.slot?`fig-${node.slot}`:undefined;return /*#__PURE__*/_jsxs(\"figure\",{id:anchor,style:s.proseFig,children:[/*#__PURE__*/_jsx(\"video\",{src:resolved,poster:node.poster,autoPlay:node.autoplay??true,loop:node.loop??true,muted:node.muted??true,controls:node.controls??true,playsInline:true,style:s.proseFigImg}),node.caption&&/*#__PURE__*/_jsx(\"figcaption\",{style:s.figCap,children:node.caption})]});}case\"list\":return node.ordered?/*#__PURE__*/_jsx(\"ol\",{style:s.ol,children:node.items.map((it,i)=>/*#__PURE__*/_jsx(\"li\",{style:s.li,children:it},i))}):/*#__PURE__*/_jsx(\"ul\",{style:s.ul,children:node.items.map((it,i)=>/*#__PURE__*/_jsx(\"li\",{style:s.li,children:it},i))});case\"divider\":return /*#__PURE__*/_jsx(\"hr\",{style:s.hr});case\"callout\":return /*#__PURE__*/_jsxs(\"aside\",{style:node.href?s.calloutCta:s.callout,children:[node.icon&&/*#__PURE__*/_jsx(\"span\",{style:s.calloutIcon,children:node.icon}),/*#__PURE__*/_jsxs(\"div\",{style:s.calloutBody,children:[/*#__PURE__*/_jsx(\"span\",{style:s.calloutText,children:node.text}),node.href&&/*#__PURE__*/_jsxs(\"a\",{href:node.href,style:s.calloutBtn,children:[node.cta??\"Read more\",\" \",/*#__PURE__*/_jsx(Icon,{name:\"arrow\",size:14})]})]})]});case\"code\":return /*#__PURE__*/_jsx(\"pre\",{style:s.code,children:/*#__PURE__*/_jsx(\"code\",{style:{font:\"inherit\",color:\"inherit\",background:\"transparent\",whiteSpace:\"inherit\",wordBreak:\"inherit\"},children:node.text})});case\"keyFindings\":return /*#__PURE__*/_jsxs(\"aside\",{style:{...s.keyFindings,...isFirst?{marginTop:0}:null},children:[/*#__PURE__*/_jsx(\"div\",{style:s.keyFindingsLabel,children:\"Key findings\"}),/*#__PURE__*/_jsx(\"ol\",{style:s.keyFindingsList,children:node.items.map((it,i)=>/*#__PURE__*/_jsxs(\"li\",{style:s.keyFindingsItem,children:[/*#__PURE__*/_jsx(\"span\",{style:s.keyFindingsNum,children:String(i+1).padStart(2,\"0\")}),/*#__PURE__*/_jsx(\"span\",{style:s.keyFindingsText,children:it})]},i))})]});case\"factbox\":return /*#__PURE__*/_jsxs(\"aside\",{style:{...s.factbox,...isFirst?{marginTop:0}:null},children:[/*#__PURE__*/_jsx(\"div\",{style:s.factboxLabel,children:node.label??\"Methodology\"}),/*#__PURE__*/_jsx(\"dl\",{style:s.factboxList,children:node.rows.map((row,i)=>/*#__PURE__*/_jsxs(\"div\",{style:s.factboxRow,children:[/*#__PURE__*/_jsx(\"dt\",{style:s.factboxKey,children:row.label}),/*#__PURE__*/_jsx(\"dd\",{style:s.factboxVal,children:row.value})]},i))})]});case\"table\":{// Auto-detect numeric columns: every data cell reads as a\n// number (digits plus +, -, ., comma, %). Numeric columns\n// right-align in mono and never wrap; text columns left-align\n// in sans and wrap, so long prose cells (e.g. sample prompts)\n// lay out cleanly next to short numeric ones.\nconst isNumeric=v=>/\\d/.test(v)&&/^[+\\-]?[\\d.,%\\s]+$/.test(v.trim());const numericCol=node.headers.map((_,ci)=>node.rows.length>0&&node.rows.every(r=>r[ci]!=null&&isNumeric(r[ci])));return /*#__PURE__*/_jsxs(\"figure\",{style:s.proseFig,children:[/*#__PURE__*/_jsxs(\"table\",{style:{width:\"100%\",borderCollapse:\"collapse\",fontFamily:fonts.sans,fontSize:15,color:colors.ink},children:[/*#__PURE__*/_jsx(\"thead\",{children:/*#__PURE__*/_jsx(\"tr\",{children:node.headers.map((h,i)=>/*#__PURE__*/_jsx(\"th\",{style:{textAlign:numericCol[i]?\"right\":\"left\",verticalAlign:\"bottom\",padding:\"10px 14px\",borderBottom:`1px solid ${colors.ink}`,fontFamily:fonts.sansMed,fontSize:12,letterSpacing:\"0.04em\",textTransform:\"uppercase\",color:colors.stone,whiteSpace:\"nowrap\"},children:h},i))})}),/*#__PURE__*/_jsx(\"tbody\",{children:node.rows.map((row,ri)=>/*#__PURE__*/_jsx(\"tr\",{children:row.map((cell,ci)=>/*#__PURE__*/_jsx(\"td\",{style:{textAlign:numericCol[ci]?\"right\":\"left\",verticalAlign:\"top\",padding:\"10px 14px\",borderBottom:`1px solid ${colors.line}`,fontFamily:numericCol[ci]?fonts.mono:fonts.sans,whiteSpace:numericCol[ci]?\"nowrap\":\"normal\",lineHeight:1.5},children:cell},ci))},ri))})]}),node.caption&&/*#__PURE__*/_jsx(\"figcaption\",{style:s.figCap,children:node.caption})]});}case\"unsupported\":return /*#__PURE__*/_jsxs(\"div\",{style:s.unsupported,children:[\"Unsupported block type: \",/*#__PURE__*/_jsx(\"code\",{children:node.notionType}),\".\"]});}}// ────────────────────────────────────────────────────────────\n// Benchmark metric table\nfunction MetricTable({rows,styles}){const s=styles;return /*#__PURE__*/_jsx(\"div\",{style:s.tableWrap,children:/*#__PURE__*/_jsxs(\"table\",{style:s.table,children:[/*#__PURE__*/_jsx(\"thead\",{children:/*#__PURE__*/_jsxs(\"tr\",{children:[/*#__PURE__*/_jsx(\"th\",{style:{...s.th,textAlign:\"left\"},children:\"Model\"}),/*#__PURE__*/_jsx(\"th\",{style:s.th,children:\"Elo\"}),/*#__PURE__*/_jsx(\"th\",{style:s.th,children:\"Δ\"}),/*#__PURE__*/_jsx(\"th\",{style:s.th,children:\"Ideation\"}),/*#__PURE__*/_jsx(\"th\",{style:s.th,children:\"Mockup\"}),/*#__PURE__*/_jsx(\"th\",{style:s.th,children:\"Refinement\"})]})}),/*#__PURE__*/_jsx(\"tbody\",{children:rows.map(r=>/*#__PURE__*/_jsxs(\"tr\",{children:[/*#__PURE__*/_jsx(\"td\",{style:{...s.td,textAlign:\"left\",color:colors.ink,fontFamily:fonts.sansMed,fontWeight:500},children:r.model}),/*#__PURE__*/_jsx(\"td\",{style:{...s.td,...s.tdMono,textAlign:\"right\"},children:r.elo??\"—\"}),/*#__PURE__*/_jsx(\"td\",{style:{...s.td,...s.tdMono,textAlign:\"right\"},children:r.delta!=null?(r.delta>0?\"+\":\"\")+r.delta:\"—\"}),/*#__PURE__*/_jsx(\"td\",{style:{...s.td,...s.tdMono,textAlign:\"right\"},children:r.ideation!=null?r.ideation.toFixed(1)+\"%\":\"—\"}),/*#__PURE__*/_jsx(\"td\",{style:{...s.td,...s.tdMono,textAlign:\"right\"},children:r.mockup!=null?r.mockup.toFixed(1)+\"%\":\"—\"}),/*#__PURE__*/_jsx(\"td\",{style:{...s.td,...s.tdMono,textAlign:\"right\"},children:r.refinement!=null?r.refinement.toFixed(1)+\"%\":\"—\"})]},r.model))})]})});}// ────────────────────────────────────────────────────────────\n// Styles — single configurable breakpoint. Below it, everything stacks,\n// copy shrinks, and margins tighten. Above it, the desktop layout runs.\nfunction makeStyles(vp){const{isMobile}=vp;const px=isMobile?16:56;const h1Size=isMobile?26:56;const h2Size=isMobile?22:32;const dekSize=isMobile?15:24;const dropSize=isMobile?48:90;const sectionTop=isMobile?24:80;return{page:{color:colors.ink,fontFamily:fonts.sans,minHeight:\"100%\",width:\"100%\",boxSizing:\"border-box\",overflowX:\"hidden\"},crumbs:{padding:`${isMobile?16:24}px ${px}px 0`,font:`400 ${isMobile?12:13}px/1 ${fonts.sans}`,color:colors.stone},backLink:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:colors.stone,textDecoration:\"none\"},header:{maxWidth:widths.article,margin:\"0 auto\",padding:`${sectionTop}px ${px}px ${isMobile?20:40}px`},// Paper-style header — used for Methodology pages (and anywhere\n// else we want the page top to read like the whitepaper / appendix\n// rather than the standard screenshot hero card). Eyebrow line,\n// serif title, sans subtitle, then a divider + byline + Share.\npaperEyebrow:{display:\"flex\",alignItems:\"center\",gap:isMobile?8:10,flexWrap:\"wrap\",font:`500 ${isMobile?11:12}px/1 ${fonts.sansMed}`,color:colors.stone,textTransform:\"uppercase\",letterSpacing:\"0.12em\",marginBottom:isMobile?16:28},bylineName:{font:`500 14px/1.3 ${fonts.sansMed}`,color:colors.ink},bylineMeta:{font:`400 12px/1 ${fonts.sans}`,color:colors.fog,marginTop:4},// ── Screenshot hero ─────────────────────────────────────\n// 16:9 card on desktop, stacked on mobile. Built to be the\n// shareable, screenshottable top of every article: image +\n// headline + key findings + byline + share, all framed in a\n// single bordered card.\nheroWrap:{maxWidth:widths.figure,margin:\"0 auto\",padding:`${sectionTop}px ${px}px ${isMobile?28:56}px`},heroCard:{display:\"grid\",gridTemplateColumns:isMobile?\"1fr\":\"minmax(0, 0.92fr) minmax(0, 1.08fr)\",background:colors.paper,border:`1px solid ${colors.lineMed}`,borderRadius:6,overflow:\"hidden\",// Target 16:9 on wide layouts; allow content to push taller\n// if the findings list runs long. On mobile, ratio is undone\n// by the stacked layout below.\naspectRatio:isMobile?undefined:\"16 / 9\",minHeight:isMobile?undefined:540},heroImageCol:{position:\"relative\",background:colors.off,minHeight:isMobile?200:0,aspectRatio:isMobile?\"16 / 9\":undefined,borderRight:isMobile?\"none\":`1px solid ${colors.lineMed}`,borderBottom:isMobile?`1px solid ${colors.lineMed}`:\"none\"},heroImageImg:{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"cover\"},heroImagePh:{width:\"100%\",height:\"100%\",background:`linear-gradient(135deg, ${colors.bone}, ${colors.mist})`},heroContent:{display:\"flex\",flexDirection:\"column\",padding:isMobile?\"24px 22px 24px\":\"40px 44px 32px\",gap:isMobile?14:18,minWidth:0,overflow:\"hidden\"},heroEyebrow:{display:\"flex\",alignItems:\"center\",gap:isMobile?8:10,flexWrap:\"wrap\",font:`400 ${isMobile?11:12}px/1 ${fonts.sans}`,color:colors.stone,textTransform:\"uppercase\",letterSpacing:\"0.08em\"},heroKind:{display:\"inline-flex\",alignItems:\"center\",padding:\"4px 8px\",background:colors.ink,color:colors.cream,font:`500 ${isMobile?10:11}px/1 ${fonts.sansMed}`,letterSpacing:\"0.08em\",borderRadius:2},heroDot:{color:colors.fog},heroH1:{font:`400 ${isMobile?26:38}px/1.05 ${fonts.serif}`,letterSpacing:\"-0.025em\",color:colors.ink,margin:0,textWrap:\"balance\",overflowWrap:\"break-word\",hyphens:\"manual\"},heroDek:{font:`400 ${isMobile?13:14}px/1.5 ${fonts.sans}`,color:colors.stone,margin:0,letterSpacing:\"-0.005em\",textWrap:\"pretty\",// Cap dek to roughly 2 lines on desktop so the findings\n// list always has room to breathe in the 16:9 frame.\nmaxWidth:\"60ch\"},heroFindings:{listStyle:\"none\",padding:`${isMobile?12:14}px 0 0`,margin:0,display:\"flex\",flexDirection:\"column\",gap:isMobile?8:10,borderTop:`1px solid ${colors.lineSoft}`},heroFinding:{display:\"flex\",gap:isMobile?10:14,alignItems:\"baseline\"},heroFindingNum:{font:`400 10px/1 ${fonts.mono}`,color:colors.fog,flexShrink:0,minWidth:18,paddingTop:2},heroFindingText:{font:`400 ${isMobile?13:14}px/1.4 ${fonts.sans}`,color:colors.ink,letterSpacing:\"-0.005em\",textWrap:\"pretty\"},heroFoot:{marginTop:\"auto\",paddingTop:isMobile?14:18,display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,flexWrap:\"wrap\",borderTop:`1px solid ${colors.lineSoft}`},heroByline:{display:\"flex\",alignItems:\"center\",gap:isMobile?10:12},heroAvatar:{width:isMobile?32:36,height:isMobile?32:36,borderRadius:\"50%\",objectFit:\"cover\",border:\"1px solid rgba(51,51,48,0.12)\",background:colors.bone,flexShrink:0},heroBylineName:{font:`500 ${isMobile?12:13}px/1.3 ${fonts.sansMed}`,color:colors.ink},heroBylineRole:{font:`400 ${isMobile?11:12}px/1 ${fonts.sans}`,color:colors.fog,marginTop:2},headerMeta:{display:\"flex\",gap:isMobile?8:10,flexWrap:\"wrap\",font:`400 ${isMobile?11:13}px/1 ${fonts.sans}`,color:colors.stone,marginBottom:isMobile?14:40},h1:{font:`400 ${h1Size}px/1 ${fonts.serif}`,letterSpacing:\"-0.025em\",margin:`0 0 ${isMobile?12:32}px`,color:colors.ink,maxWidth:900,textWrap:\"balance\",overflowWrap:\"break-word\",hyphens:\"manual\"},dek:{font:`400 ${dekSize}px/1.45 ${fonts.sans}`,letterSpacing:\"-0.01em\",color:colors.stone,margin:`0 0 ${isMobile?20:56}px`,maxWidth:720,textWrap:\"pretty\"},byline:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",flexWrap:\"wrap\",gap:isMobile?12:16,padding:`${isMobile?14:24}px 0`,borderTop:`1px solid ${colors.lineMed}`,borderBottom:`1px solid ${colors.lineMed}`},bylineLeft:{display:\"flex\",alignItems:\"center\",gap:isMobile?12:16},brandAvatar:{width:isMobile?36:44,height:isMobile?36:44,borderRadius:\"50%\",objectFit:\"cover\",border:\"1px solid rgba(51,51,48,0.12)\",background:colors.bone,flexShrink:0},actions:{display:\"flex\",gap:8,flexWrap:\"wrap\"},actionBtn:{display:\"inline-flex\",alignItems:\"center\",gap:6,border:\"1px solid #D0D4DC\",background:\"transparent\",padding:isMobile?\"8px 14px\":\"10px 16px\",borderRadius:999,font:`500 ${isMobile?12:13}px/1 ${fonts.sansMed}`,color:colors.ink,cursor:\"pointer\"},actionBtnPrimary:{background:colors.ink,color:colors.cream,borderColor:colors.ink},fig:{maxWidth:widths.figure,margin:`${isMobile?20:40}px auto ${isMobile?24:80}px`,padding:`0 ${px}px`},figImg:{display:\"block\",width:\"100%\",height:\"auto\",maxHeight:520,objectFit:\"cover\",background:colors.line},figCap:{font:`400 ${isMobile?12:13}px/1.5 ${fonts.sans}`,color:colors.stone,marginTop:isMobile?10:14,fontStyle:\"italic\",textWrap:\"pretty\"},// Share row — Download / X / LinkedIn — sits below each\n// image's caption when its `shareable` flag is not false.\n// Mirrors the share row in ResearchWhitepaper.tsx.\nshareRow:{display:\"flex\",alignItems:\"center\",gap:8,margin:`${isMobile?8:10}px 0 0`,font:`400 11px/1.4 ${fonts.sans}`,color:colors.fog,flexWrap:\"wrap\"},shareLabel:{color:colors.fog,letterSpacing:\"0.04em\",textTransform:\"uppercase\",fontSize:10,marginRight:2},shareDownloadBtn:{display:\"inline-flex\",alignItems:\"center\",gap:6,height:28,padding:\"0 10px\",border:`1px solid ${colors.line}`,background:colors.paper,borderRadius:4,color:colors.stone,font:`500 11px/1 ${fonts.sansMed}`,cursor:\"pointer\",transition:\"border-color 120ms ease, color 120ms ease\"},shareBtn:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:28,height:28,padding:0,border:`1px solid ${colors.line}`,background:colors.paper,borderRadius:4,color:colors.stone,cursor:\"pointer\",textDecoration:\"none\",transition:\"border-color 120ms ease, color 120ms ease\"},body:{maxWidth:widths.figure,margin:\"0 auto\",padding:`0 ${px}px ${isMobile?32:80}px`,display:\"grid\",gridTemplateColumns:isMobile?\"1fr\":\"220px 1fr\",gap:isMobile?0:80,alignItems:\"start\"},toc:{position:\"sticky\",top:32},tocLabel:{font:`500 11px/1 ${fonts.sansMed}`,textTransform:\"uppercase\",letterSpacing:\"0.08em\",color:colors.stone,marginBottom:20,paddingBottom:12,borderBottom:`1px solid ${colors.ink}`},tocList:{listStyle:\"none\",padding:0,margin:\"0 0 40px\",display:\"flex\",flexDirection:\"column\"},tocItem:{display:\"flex\",gap:12,padding:\"10px 0\",font:`400 14px/1.3 ${fonts.sans}`,color:colors.stone,borderBottom:`1px solid ${colors.lineSoft}`},tocItemActive:{color:colors.ink},tocNum:{font:`400 12px/1.3 ${fonts.mono}`,color:colors.fog,minWidth:20},tocFoot:{marginTop:24},tocFootLabel:{font:`400 11px/1 ${fonts.sans}`,color:colors.fog,textTransform:\"uppercase\",letterSpacing:\"0.08em\",marginBottom:12},citeBox:{font:`400 12px/1.5 ${fonts.mono}`,color:colors.stone,background:colors.off,padding:\"12px 14px\",border:`1px solid ${colors.line}`,borderRadius:2},prose:{maxWidth:widths.prose,width:\"100%\",minWidth:0},p:{font:`400 ${isMobile?15:16}px/1.6 ${fonts.sans}`,color:colors.ink,margin:`0 0 ${isMobile?16:20}px`,letterSpacing:\"-0.005em\",textWrap:\"pretty\"},inlineLink:{color:colors.ink,textDecoration:\"underline\",textDecorationColor:colors.fog,textDecorationThickness:\"1px\",textUnderlineOffset:\"3px\"},leadP:{font:`400 ${isMobile?17:20}px/1.5 ${fonts.sans}`,color:colors.ink,margin:`0 0 ${isMobile?20:32}px`,textWrap:\"pretty\"},dropCap:{float:\"left\",font:`400 ${dropSize}px/0.85 ${fonts.serif}`,color:colors.ink,marginRight:isMobile?10:14,marginTop:isMobile?4:6,letterSpacing:\"-0.04em\"},h2:{font:`400 ${h2Size}px/1.18 ${fonts.serif}`,letterSpacing:\"-0.02em\",margin:`${isMobile?28:56}px 0 ${isMobile?12:20}px`,color:colors.ink,clear:\"left\",textWrap:\"balance\"},h3:{font:`500 ${isMobile?17:20}px/1.3 ${fonts.sansMed}`,margin:`${isMobile?22:32}px 0 ${isMobile?10:12}px`,color:colors.ink,letterSpacing:\"-0.01em\"},proseFig:{margin:isMobile?\"20px 0\":\"32px -40px\",clear:\"left\"},proseFigImg:{display:\"block\",width:\"100%\",height:\"auto\",background:colors.line,border:`1px solid ${colors.line}`,borderRadius:4,boxSizing:\"border-box\"},quote:{font:`400 ${isMobile?17:22}px/1.4 ${fonts.serif}`,letterSpacing:\"-0.015em\",color:colors.ink,fontStyle:\"italic\",borderLeft:`2px solid ${colors.ink}`,paddingLeft:isMobile?14:28,margin:`${isMobile?20:32}px 0`,display:\"block\",textWrap:\"pretty\"},cite:{display:\"block\",font:`500 ${isMobile?11:12}px/1.4 ${fonts.sansMed}`,color:colors.stone,letterSpacing:\"0.02em\",fontStyle:\"normal\",marginTop:isMobile?10:14,textTransform:\"none\"},ul:{margin:`0 0 ${isMobile?16:20}px`,paddingLeft:isMobile?20:24},ol:{margin:`0 0 ${isMobile?16:20}px`,paddingLeft:isMobile?20:24},li:{font:`400 ${isMobile?15:16}px/1.6 ${fonts.sans}`,color:colors.ink,margin:\"0 0 8px\",textWrap:\"pretty\"},hr:{border:0,borderTop:`1px solid ${colors.line}`,margin:`${isMobile?28:40}px 0`},callout:{display:\"flex\",gap:12,background:colors.off,border:`1px solid ${colors.line}`,padding:isMobile?\"14px 16px\":\"16px 20px\",borderRadius:4,margin:`${isMobile?18:24}px 0`,font:`400 ${isMobile?14:15}px/1.5 ${fonts.sans}`,color:colors.ink},calloutCta:{display:\"flex\",gap:isMobile?12:16,background:colors.off,border:`1px solid ${colors.line}`,padding:isMobile?\"20px 18px\":\"28px 28px\",borderRadius:4,margin:`${isMobile?28:40}px 0 ${isMobile?12:16}px`,color:colors.ink},calloutBody:{display:\"flex\",flexDirection:\"column\",gap:isMobile?14:18,flex:1,minWidth:0},calloutText:{font:`400 ${isMobile?15:17}px/1.5 ${fonts.sans}`,color:colors.ink,letterSpacing:\"-0.005em\"},calloutBtn:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:10,background:colors.ink,color:colors.cream,padding:isMobile?\"12px 18px\":\"14px 22px\",borderRadius:999,font:`500 ${isMobile?13:14}px/1 ${fonts.sansMed}`,textDecoration:\"none\",alignSelf:\"flex-start\"},calloutIcon:{fontSize:18,flexShrink:0},keyFindings:{background:colors.off,border:`1px solid ${colors.line}`,padding:isMobile?\"16px 18px\":\"20px 24px\",margin:`${isMobile?24:32}px 0`,borderRadius:4},keyFindingsLabel:{font:`500 11px/1 ${fonts.sansMed}`,color:colors.stone,textTransform:\"uppercase\",letterSpacing:\"0.08em\",marginBottom:isMobile?14:18},keyFindingsList:{listStyle:\"none\",padding:0,margin:0,display:\"flex\",flexDirection:\"column\",gap:isMobile?12:14},keyFindingsItem:{display:\"flex\",gap:isMobile?12:16,alignItems:\"baseline\"},keyFindingsNum:{font:`400 11px/1 ${fonts.mono}`,color:colors.fog,flexShrink:0,minWidth:20,paddingTop:2},keyFindingsText:{font:`400 ${isMobile?15:16}px/1.5 ${fonts.sans}`,color:colors.ink,textWrap:\"pretty\"},factbox:{background:colors.paper,border:`1px solid ${colors.line}`,padding:isMobile?\"16px 18px\":\"20px 24px\",margin:`${isMobile?24:32}px 0`,borderRadius:4},factboxLabel:{font:`500 11px/1 ${fonts.sansMed}`,color:colors.stone,textTransform:\"uppercase\",letterSpacing:\"0.08em\",marginBottom:isMobile?12:14},factboxList:{display:\"grid\",gridTemplateColumns:isMobile?\"1fr\":\"repeat(auto-fit, minmax(160px, 1fr))\",gap:isMobile?12:16,margin:0},factboxRow:{display:\"flex\",flexDirection:\"column\",gap:4,paddingTop:isMobile?10:12,borderTop:`1px solid ${colors.line}`},factboxKey:{font:`500 10px/1.2 ${fonts.sansMed}`,color:colors.fog,textTransform:\"uppercase\",letterSpacing:\"0.08em\",margin:0},factboxVal:{font:`400 ${isMobile?15:16}px/1.4 ${fonts.serif}`,color:colors.ink,margin:0},code:{background:colors.off,color:colors.ink,border:`1px solid ${colors.line}`,padding:isMobile?\"18px 20px\":\"24px 28px\",borderRadius:6,overflow:\"hidden\",whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",font:`400 ${isMobile?12:13}px/1.6 ${fonts.mono}`,margin:`${isMobile?18:24}px 0`},unsupported:{border:`1px dashed ${colors.fog}`,padding:\"12px 16px\",margin:\"16px 0\",font:`400 13px/1.5 ${fonts.sans}`,color:colors.stone,background:colors.off},tableWrap:{margin:`${isMobile?24:32}px 0 ${isMobile?28:40}px`,overflowX:\"auto\"},table:{width:\"100%\",borderCollapse:\"collapse\",minWidth:isMobile?500:undefined},th:{font:`500 11px/1 ${fonts.sansMed}`,color:colors.fog,textTransform:\"uppercase\",letterSpacing:\"0.08em\",padding:\"12px 0\",borderBottom:`1px solid ${colors.ink}`,textAlign:\"right\"},td:{padding:isMobile?\"14px 0\":\"18px 0\",borderBottom:`1px solid ${colors.lineSoft}`,font:`400 ${isMobile?13:14}px/1.4 ${fonts.sans}`,color:colors.stone,verticalAlign:\"middle\"},tdMono:{fontFamily:fonts.mono,fontSize:isMobile?12:13},// Quiet methodology footnote — sits below the prose, above the\n// related-articles strip. Hidden on the methodology page itself.\nmethodologyFoot:{display:\"inline-flex\",alignItems:\"center\",gap:6,marginTop:isMobile?32:56,paddingTop:isMobile?20:28,borderTop:`1px solid ${colors.lineSoft}`,font:`400 ${isMobile?12:13}px/1.4 ${fonts.sans}`,color:colors.fog,textDecoration:\"none\",letterSpacing:\"0.005em\"},methodologyFootEm:{color:colors.stone,fontFamily:fonts.sansMed,fontWeight:500},related:{maxWidth:widths.figure,margin:\"0 auto\",padding:`${isMobile?28:64}px ${px}px ${isMobile?32:80}px`},relatedHead:{display:\"flex\",flexDirection:\"column\",gap:8,paddingBottom:isMobile?16:20,borderBottom:`1px solid ${colors.ink}`},relatedTitleBlock:{display:\"flex\",alignItems:\"baseline\",justifyContent:\"space-between\",gap:12,flexWrap:\"wrap\"},relatedEyebrow:{font:`500 ${isMobile?12:14}px/1 ${fonts.sansMed}`,color:colors.ink,textTransform:\"uppercase\",letterSpacing:\"0.08em\"},relatedMeta:{font:`400 ${isMobile?11:12}px/1 ${fonts.mono}`,color:colors.fog},relatedAll:{font:`500 ${isMobile?12:13}px/1 ${fonts.sansMed}`,color:colors.ink,display:\"inline-flex\",alignItems:\"center\",gap:8,textDecoration:\"none\",marginTop:isMobile?4:6},relatedList:{listStyle:\"none\",padding:0,margin:0,display:\"flex\",flexDirection:\"column\"},relatedRow:{display:isMobile?\"flex\":\"grid\",flexDirection:isMobile?\"column\":undefined,gridTemplateColumns:isMobile?undefined:\"120px minmax(0,1fr)\",alignItems:\"start\",gap:isMobile?12:32,padding:isMobile?\"20px 0 24px\":\"28px 0 32px\",borderTop:`1px solid ${colors.lineSoft}`,textDecoration:\"none\",color:\"inherit\",cursor:\"pointer\"},relatedRowMeta:{display:\"flex\",flexDirection:isMobile?\"row\":\"column\",gap:isMobile?12:8,alignItems:isMobile?\"center\":\"flex-start\"},relatedRowDate:{font:`400 ${isMobile?11:12}px/1 ${fonts.mono}`,color:colors.fog},relatedRowKind:{display:\"inline-flex\",alignItems:\"center\",font:`500 ${isMobile?10:11}px/1 ${fonts.sansMed}`,color:colors.stone,textTransform:\"uppercase\",letterSpacing:\"0.08em\",background:colors.line,padding:\"3px 7px\",alignSelf:\"flex-start\"},relatedRowBody:{display:\"flex\",flexDirection:\"column\",gap:isMobile?6:10,minWidth:0,maxWidth:600},relatedRowTitle:{font:`400 ${isMobile?18:24}px/1.2 ${fonts.serif}`,color:colors.ink,letterSpacing:\"-0.02em\",textWrap:\"balance\"},relatedRowDek:{font:`400 ${isMobile?13:14}px/1.5 ${fonts.sans}`,color:colors.stone},relatedRowRead:{display:\"inline-flex\",alignItems:\"center\",gap:6,font:`500 ${isMobile?11:12}px/1 ${fonts.sansMed}`,color:colors.ink,textTransform:\"uppercase\",letterSpacing:\"0.08em\",marginTop:4},toast:{position:\"fixed\",bottom:isMobile?20:40,left:\"50%\",transform:\"translateX(-50%)\",background:colors.ink,color:colors.cream,padding:isMobile?\"10px 18px\":\"12px 20px\",borderRadius:999,font:`500 ${isMobile?13:14}px/1 ${fonts.sansMed}`,letterSpacing:\"-0.005em\",boxShadow:\"0 6px 20px rgba(51,51,48,0.18)\",zIndex:9999,pointerEvents:\"none\"}};}// ────────────────────────────────────────────────────────────\n// Framer property controls\naddPropertyControls(ResearchArticle,{slug:{type:ControlType.String,title:\"Article slug\",defaultValue:\"three-phases-of-the-creative-process\",description:\"One of: methodology, design-crit, code-editor-design-battle, ideogram-v4-typography-leader, gemini-prompting-under-constraint, gemini-production-ready-prompts, firefly-edit-feature, firefly-production-ready-prompt, undifferentiated-work-problem, frontier-image-models-by-brief, gpt-image-2-production-readiness, chatgpt-images-2-typography-weakness, claude-design-fast-draft-not-precision-tool, claude-design-prompt-precision, krea-2-large-style-transfer, seedream-product-detail-shots, grok-imagine-polisher-model, video-head-to-head-jul26, three-phases-of-the-creative-process, ai-impact-on-solo-creative-earnings, veo-3-1-creative-director-model, four-ai-models-tested-with-designers, ai-is-not-replacing-creative-professionals\"},brandAvatarUrl:{type:ControlType.Image,title:\"Brand avatar\",description:\"Upload the Contra Labs avatar. If empty, a default star mark renders.\"},coverImage:{type:ControlType.Image,title:\"Cover image\",description:\"Large figure shown above the article body. Leave empty to hide.\"},// Inline body images — used in order (Image 1 = first image in body, Image 2 = second, etc.).\n// Each article references what it needs:\n//   • methodology (11 image slots, exact Notion order). Cover stays empty. Images 1–4 are screenshots of the evaluator application; images 5–11 are the synthetic illustrative figures (Figs A, B, C, D, E, G, F — note Notion skips F in §5 and shows it in §6.1). Images: 1 = Figure 1, evaluator landing/assignment view (Screenshot_2026-05-13_at_14.50.00.png), 2 = Figure 2, pairwise ranking interface (Screenshot_2026-05-13_at_14.51.15.png), 3 = Figure 3, scalar rating interface (Screenshot_2026-05-13_at_14.52.09.png), 4 = Figure 4, free-text rationale prompt (Screenshot_2026-05-13_at_14.51.50.png), 5 = Figure A, pairwise win-rate matrix (fig_a_pairwise_heatmap.png), 6 = Figure B, Bradley-Terry Elo ratings (fig_b_bt_elo.png), 7 = Figure C, scalar rating radar (fig_c_radar.png), 8 = Figure D, per-model strengths/weaknesses (fig_d_strengths_weaknesses.png), 9 = Figure E, theme co-occurrence network (fig_e_theme_network.png), 10 = Figure G, cross-phase rank shifts bump chart (fig_g_bump_chart.png), 11 = Figure F, Krippendorff's α (fig_f_krippendorff.png).\n//   • design-crit (8 image slots + 1 video slot, exact Notion document order). Cover stays empty; the hero is the video. video1 = Design-CRIT-video.mp4 (explainer reel, sits under the keyFindings + factbox as the third node). Images: 1 = CRIT2x.png (sample AI-generated fashion-editorial layout, under \"Ten professional designers... split into two cohorts\"), 2 = subjective_objective_number_line_1.png (design on the subjective-to-objective scale, under \"They do agree\"), 3 = criterion_kendall_tau_agreement_1.png (per-criterion agreement bars, under \"The clearest read is the matched pairs\"), 4 = coin-flip.png (judge agreement vs human vs chance, under \"Not one cleared 55%\"), 5 = vlm_size_vs_accuracy_1.png (Qwen3-VL size vs accuracy, under \"Scaling doesn't move the number\"), 6 = hallucination_donut_hero_1.png (55/35/10 hallucination donut, under \"Reading design isn't the only place\"), 7 = Gap-gone.png (trained model 0.611 gap-closing, under \"It reaches 0.611 agreement\"), 8 = hard_cases_model_human_tie_1.png (3-2 splits model 0.602 vs human 0.600, under \"On exactly those cases\").\n//   • undifferentiated-work: 1=Convergence/divergence two-signal chart, 2=Kendall's W agreement gap, 3=Models collapsing to safe defaults, 4=Best-practice vs steerability axes\n//   • krea: Cover = hero chart (left of the title block on the article page). 1=Style-transfer announcement card (Twitter_post 422x), 2=Scalar avg rating chart, 3=Style Fidelity distribution chart, 4=Same prompt, same reference comparison (Twitter_post 442x), 5=H2H win rate heatmap, 6=Krea strengths/weaknesses (sw_krea_2_large.png)\n//   • frontier-image-models-by-brief (11 slots, exact Notion order): 1=Video poster frame (0513-frontier.mp4 — export single frame or GIF; also serves as hero card if coverImage empty), 2=Bradley-Terry Elo (bt_elo_ratings_800dpi.png), 3=Ranking distribution by model (ranking_distribution_by_model_800dpi.png), 4=Winning model by brief (winning_model_by_brief_simplified_800dpi.png), 5=Brand winners visual grid (brand_winners_grid.jpg), 6=Seedream strengths/weaknesses (sw_seedream_5_0_lite_800dpi.png), 7=Gemini strengths/weaknesses (sw_gemini_3_1_flash_800dpi.png), 8=FLUX strengths/weaknesses (sw_flux_2_pro_800dpi.png), 9=GPT strengths/weaknesses (sw_gpt_image_2_800dpi.png), 10=Typography mentions (typography_mentions_by_model_800dpi.png), 11=Prompt-adherence issue types (pa_issue_types_by_model_800dpi.png)\n//   • gpt-image-2-production-readiness (8 image slots + 2 video slots, exact Notion order). Cover = Twitter_post_-_392x.png (promotional graphic). Videos: video1 = 0514-gpt.mp4 (GPT generations reel, sits under the hook paragraph), video2 = 0514-rollout.mp4 (Rollout tool demo, sits under the methodology blurb). Images: 1 = gpt_typography_clean_responses_800dpi.png (typography \"no issues\" climb), 2 = Example_-_Ridge.png (Ridge three-edit progression), 3 = Example_-_Kinetix.png (Kinetix prompt-adherence drift), 4 = quality_regression_by_edit_iteration_800dpi.png (regression by dimension), 5 = change_areas_by_edit_800dpi.png (what designers ask for by edit), 6 = Example_-_ASAGI.png (ASAGI three-phase brief), 7 = activity_outside_gpt_800dpi.png (tools used outside GPT), 8 = session_445_trajectory_800dpi.png (Session 445 GPT → Photoshop → Figma timeline)\n//   • chatgpt-images-2-typography-weakness (9 image slots, exact Notion order). 1 = ChatGPT_Image_May_18_2026_10_05_05_AM.png (hero card at the top of the Notion page), 2 = Twitter_post_-_482x.png (launch promotional card under the lede), 3 = gpt_image_2_themes_in_typography_800dpi.png (themes-by-sentiment chart), 4 = gpt_typography_issue_breakdown_800dpi.png (issues by edit phase), 5 = Example_-_Ridge_illegible.png (Ridge \"U\" sharpens by Edit 3), 6 = broken_d_ridge_(1).png (Ridge \"D\" renders as \"O\" through every edit), 7 = Example_-_Sonic_illegible.png (Sonic illegible font emerges at Edit 2), 8 = gpt_image_2_typography_performance_800dpi_(2).png (typography performance by brief), 9 = gpt_typography_sentiment_by_focus_800dpi_(1).png (sentiment when typography is focus vs incidental)\n//   • seedream: 1=Pairwise win rates (01_pairwise_win_rates.png), 2=Bradley-Terry Elo (02_elo_ranking.png), 3=Handbag prompt (Seedream pick), 4=Jewelry prompt (Seedream pick), 5=Category sweep themes (03_category_sweep.png), 6=MacBook prompt (Seedream loss)\n//   • grok-imagine: 1=Cross-phase win rate climb, 2=Refinement themes flipped positive, 3=Refinement head-to-head\n//   • three-phases: 1=Summary (all 3 phases), 2=Ideation, 3=Mockup, 4=Refinement\n//   • earnings: 1=Hero, 2=Blake Steven's work\n//   • veo: 1=Hero, 2=Decline, 3=Themes\n//   • four-ai-models: 1=Hero, 2=Ideation, 3=Phase shift, 4=Refinement, 5=White paper teaser\n//   • claude-design (6 image slots + 1 video slot). Cover = use the lede hero composite from the top of the Notion page. Videos: video1 = 0519-claude-design.mp4 (session capture under the lede). Images: 1 = lede composite (\"edit_this_image_...\" designer-at-laptop hero), 2 = layout_issue_example.png, 3 = design_issues_per_edit_normalized chart, 4 = generic_outputs_example2.png, 5 = expectations_example2.png, 6 = Color_Palette.png (methodology reference materials).\n//   • claude-design-prompt-precision (6 image slots, no video). Images in Notion document order, skipping the Twitter_post social card: 1 = cta_4_12x.png (lede hero composite at the top of the article), 2 = \"First-prompt structure and specificity\" chart (the dot/line chart showing each participant's Claude-scored specificity 0–1, lives at the end of \"The first prompt\" section), 3 = prompt-categories breakdown (the scaffolding/additive/refinement/corrective/meta chart under \"The five openings\"), 4 = specificity_vs_final_design_stage.png (the main scatter under \"Did opening well help?\"), 5 = Participant_3vs5_precision.png (left: P5 production-ready · right: P3 brainstorming, under \"The session that proves it\"), 6 = participant3_session_arc_800dpi.png (specificity vs output quality across 16 prompts, later in the same section).\n//   • firefly-production-ready-prompt (7 image slots + 2 video slots, Notion document order). Cover stays empty; the hero is bound to image1 in the body. Images: 1 = Slide_16_9_-_22x.png (hero cover at the top of the Notion page), 2 = \"Deliverable readiness state\" chart (the bar chart under the first h2), 3 = Social first-pass image (download_(4).png — the legible-text wow moment), 4 = Hero issues chart (download_(7).png), 5 = Social issues chart (download_(8).png), 6 = Video issues chart (download_(9).png), 7 = Firefly vs Photoshop finish (download_(10).png). Videos: video1 = 0522-firefly.mp4 (generic session reel under the lede), video2 = download.mp4 (the one production-ready first-pass video under the \"model walks\" quote).\n//   • firefly-edit-feature (4 image slots + 1 video slot, Notion document order). Cover stays empty; the hero is bound to image1 in the body. Images: 1 = renaissance-style brunette portrait at the top of the Notion page (hero cover), 2 = Edit-feature resolution by deliverable chart (download_(30).png — under \"Most edits landed halfway\"), 3 = Hero before/after composite (download_(31).png — under the \"age the hand / remove glass and box\" quote), 4 = Social before/after eyes (download_(32).png — under the \"regenerate the eyes\" quote). Videos: video1 = 0527-firefly.mp4 (session reel under the lede).\n//   • gemini-production-ready-prompts (6 image slots + 1 video slot, Notion document order). Cover stays empty; the hero is bound to image1 in the body. Images: 1 = Contra_Labs_Gemini_3_(Nano_Banana_Pro)_2026-05-28_17-52-00.png (promotional card at the top of the Notion page, hero cover), 2 = download_(33).png (Production Ready Hero output, furniture campaign), 3 = download_(34).png (lower-readiness Hero contrast output, backpack campaign), 4 = download_(35).png (Production Ready Social output, furniture campaign), 5 = download_(36).png (Production Ready Secondary output, material macro), 6 = download_(37).png (Client V1 Secondary output, product-detail macro). Videos: video1 = 0528-gemini.mp4 (session reel under the lede).\n//   • gemini-prompting-under-constraint (8 image slots + 1 video slot, Notion document order). Cover stays empty; the hero is bound to image1 in the body. Images: 1 = Contra_Labs_Socials_Gemini_3_(Nano_Banana_Pro)_2026-06-02_16-37-47.png (promo card at the top of the Notion page, hero cover), 2 = download_(38).png (Session preservation check performance chart, sits after the intro section before the first h2), 3 = download_(39).png (targeted blanket color change), 4 = download_(40).png (baby-pink socks attribute edit), 5 = download_(41).png (third-hand anatomy artifact), 6 = download_(43).png (arms-crossed identity/pose drift), 7 = download_(44).png (gaze/tube spatial-alignment failure), 8 = download_(45).png (repeated-revision sequence with face quality degrading). Videos: video1 = 0602-gemini-1.mp4 (session reel sitting under the second intro paragraph).\n//   • ideogram-v4-typography-leader (14 image slots + 1 video slot, Notion document order). Cover stays empty; the hero is bound to image1 in the body. video1 = PO_ContraLABS_Ideogram_Variant_02.mp4 (sample-output reel sitting under the lede, after the hook paragraph). Four slots (image5, image6, image11, image12) are COMPOSITE uploads: a single image that contains the side-by-side outputs, captions, AND reviewer quotes baked in — no separate live-text quote blocks render in the body for those sections. Images: 1 = thumb2x.png (promo card at the very top of the Notion page, before the title — also the hub's imgIdeogram thumbnail), 2 = Typography H2H 1st-place share bar chart (image.png under the first paragraph of \"Typography: Ideogram out front\"), 3 = Typographic Craft bar chart (image.png under \"Where Ideogram pulls away\" showing 3.92 vs 3.50/3.36/3.34), 4 = Client-work gate for typography (image.png under the \"Would you use this in real client work?\" paragraph), 5 = COMPOSITE — book back cover prompt, Ideogram v4 (4.0/5) and Grok Imagine 1.0 (3.1/5) side-by-side with reviewer quotes baked in, 6 = COMPOSITE — café menu board prompt, Ideogram v4 (4.4/5) and FLUX.2 [max] (2.4/5) side-by-side with reviewer quotes baked in, 7 = Detail Accuracy + Render Coherence chart for detailed scenes (image.png under the first paragraph of \"Detailed scenes\"), 8 = Detailed scenes client-work gate (image.png under \"But the client-work gate reorders things\"), 9 = Style Execution chart for stylized prompts (image.png under \"Ideogram's strength is precision and type\"), 10 = Mood and Evocativeness chart (image.png under \"Stylized work is the most competitive category\"), 11 = COMPOSITE — glass-and-brass greenhouse, Ideogram v4 (3.5/5) with caption and reviewer quote baked in, 12 = COMPOSITE — translucent perfume bottle, Ideogram v4 (3.8/5) with caption and two reviewer quotes baked in, 13 = top themes from 400 open-ended stylized-prompt comments, coded by strength/weakness (image.png after the \"20% of comments\" paragraph), 14 = linguistic profile chart of Ideogram's highest- and lowest-scoring prompts (image.png at the end of \"What separated the best prompts from the worst\").\n//   • video-head-to-head-jul26 (5 image slots + 5 video slots, Notion document order). Cover stays empty; the hero is bound to image1 (Fig_1). Images: 1 = Fig_1.png (average-score bar chart, hero), 2 = Fig_2.png (prompt-level winners), 3 = Fig_4.png (dimension-level scalar scores), 4 = Fig_5.png (ranking distribution by model), 5 = Fig_6.png (reference-image effect per model). Videos: 1 = Veo 3.1 news anchor clip (61% win rate, glitches section), 2 = Seedance 2.0 overhead intersection clip (78% win rate, glitches section), 3 = Seedance 2.0 alley-chase clip (specialization), 4 = Grok Imagine barista clip (specialization), 5 = Veo 3.1 candle clip (specialization).\n//   • survey: 1=Hero\n//   • code-editor-design-battle (11 image slots, Notion document order). Cover stays empty; the hero is bound to image1 in the body. Images: 1 = erin03447_In_this_style_create_an_image_of_a_woman_looking_at_d7c22512-bbfa-4a7b-83cb-1fce6babba51_1_12x.png (cinematic hero portrait at the top of the Notion page), 2 = patina_ranking.png (Patina brief, two takes side-by-side), 3 = Twitter_post_-_612x.png (the 60% / 63% promo card), 4 = overall_pairwise_win_rate_800dpi.png (pairwise win-rate bar chart), 5 = client-readiness chart (the “63% Claude Code” bar chart, image.png from the Notion page directly after the pairwise chart), 6 = vaultra_codex.png (Vaultra crypto landing example), 7 = mise_vs_coffee.png (Mise wardrobe vs. Dial coffee mobile comparison), 8 = per-format composite scores (image.png after “3.65 / 3.52 / 2.83” paragraph), 9 = mise_ranking.png (two Mise outputs side by side under “What kept outputs from clients”), 10 = design-stage classification chart (image.png after the “production-ready was the exception” paragraph), 11 = evaluation funnel diagram (image.png at the end of the Methodology section).\nimage1:{type:ControlType.Image,title:\"Image 1\",description:\"First inline image in the article body. See caption under each image for what to upload. Methodology: Figure 1, evaluator landing/assignment view (Screenshot_2026-05-13_at_14.50.00.png).\"},image2:{type:ControlType.Image,title:\"Image 2\",description:'Second inline image. Leave empty if the article only has one image. Used by ideogram-v4-typography-leader (Typography H2H 1st-place share bar chart under the first paragraph of \"Typography: Ideogram out front\"). Methodology: Figure 2, pairwise ranking interface (Screenshot_2026-05-13_at_14.51.15.png).'},image3:{type:ControlType.Image,title:\"Image 3\",description:'Third inline image. Leave empty if the article has fewer than three images. Used by ideogram-v4-typography-leader (Typographic Craft bar chart under \"Where Ideogram pulls away\"). Methodology: Figure 3, scalar rating interface (Screenshot_2026-05-13_at_14.52.09.png — the LATER timestamp, since the screenshots don\\'t sort 1→4 by filename).'},image4:{type:ControlType.Image,title:\"Image 4\",description:'Fourth inline image. Used by three-phases (Refinement), four-models (Refinement), and ideogram-v4-typography-leader (Client-work gate for typography, image.png under the \"Would you use this in real client work?\" paragraph). Methodology: Figure 4, free-text rationale prompt (Screenshot_2026-05-13_at_14.51.50.png — the EARLIER timestamp, not Fig 3).'},image5:{type:ControlType.Image,title:\"Image 5\",description:\"Fifth inline image. Used by four-models (white paper teaser), seedream (category sweep chart), and ideogram-v4-typography-leader (COMPOSITE — book back cover prompt with Ideogram v4 4.0/5 and Grok Imagine 1.0 3.1/5 side-by-side, reviewer quotes baked in). Methodology: Figure A, pairwise win-rate matrix (fig_a_pairwise_heatmap.png).\"},image6:{type:ControlType.Image,title:\"Image 6\",description:\"Sixth inline image. Used by seedream (MacBook prompt, the one Seedream lost), frontier-image-models-by-brief (Seedream strengths/weaknesses chart), and ideogram-v4-typography-leader (COMPOSITE — caf\\xe9 menu board prompt with Ideogram v4 4.4/5 and FLUX.2 [max] 2.4/5 side-by-side, reviewer quotes baked in). Methodology: Figure B, Bradley-Terry Elo ratings (fig_b_bt_elo.png).\"},image7:{type:ControlType.Image,title:\"Image 7\",description:\"Seventh inline image. Used by frontier-image-models-by-brief (Gemini strengths/weaknesses chart), firefly-production-ready-prompt (Firefly vs Photoshop finish), and ideogram-v4-typography-leader (Detail Accuracy + Render Coherence chart for detailed scenes). Methodology: Figure C, scalar rating radar (fig_c_radar.png).\"},image8:{type:ControlType.Image,title:\"Image 8\",description:'Eighth inline image. Used by frontier-image-models-by-brief (FLUX strengths/weaknesses chart) and ideogram-v4-typography-leader (Detailed scenes client-work gate, image.png under \"But the client-work gate reorders things\"). Methodology: Figure D, per-model strengths and weaknesses (fig_d_strengths_weaknesses.png).'},image9:{type:ControlType.Image,title:\"Image 9\",description:'Ninth inline image. Used by frontier-image-models-by-brief (GPT strengths/weaknesses chart) and ideogram-v4-typography-leader (Style Execution chart for stylized prompts, image.png under \"Ideogram\\'s strength is precision and type\"). Methodology: Figure E, theme co-occurrence network (fig_e_theme_network.png).'},image10:{type:ControlType.Image,title:\"Image 10\",description:'Tenth inline image. Used by frontier-image-models-by-brief (typography mentions chart) and ideogram-v4-typography-leader (Mood and Evocativeness chart for stylized prompts, image.png under \"Stylized work is the most competitive category\"). Methodology: Figure G — NOT F. Cross-phase rank shifts bump chart (fig_g_bump_chart.png). Notion places G in \\xa75.10 before F appears in \\xa76.1, so document order puts G in slot 10.'},image11:{type:ControlType.Image,title:\"Image 11\",description:\"Eleventh inline image. Used by frontier-image-models-by-brief (prompt-adherence issue types chart) and ideogram-v4-typography-leader (COMPOSITE — glass-and-brass greenhouse, Ideogram v4 3.5/5, with caption and reviewer quote baked in). Methodology: Figure F — NOT G. Krippendorff's α inter-rater reliability (fig_f_krippendorff.png). F sits in \\xa76.1, after Fig G in \\xa75.10, so document order puts F in slot 11.\"},image12:{type:ControlType.Image,title:\"Image 12\",description:\"Twelfth inline image. Used by ideogram-v4-typography-leader (COMPOSITE — translucent pebble perfume bottle, Ideogram v4 3.8/5, with caption and two reviewer quotes baked in).\"},image13:{type:ControlType.Image,title:\"Image 13\",description:'Thirteenth inline image. Used by ideogram-v4-typography-leader (top themes from 400 open-ended stylized-prompt comments, coded by strength/weakness, image.png after the \"20% of comments\" paragraph).'},image14:{type:ControlType.Image,title:\"Image 14\",description:'Fourteenth inline image. Used by ideogram-v4-typography-leader (linguistic profile chart of Ideogram\\'s highest- and lowest-scoring prompts, image.png at the end of \"What separated the best prompts from the worst\").'},// Inline body videos — bind mp4/webm files. Used by\n// gpt-image-2-production-readiness, firefly-production-ready-prompt, firefly-edit-feature, and gemini-production-ready-prompts.\n//   • gpt-image-2: video1 = 0514-gpt.mp4 (GPT generations reel), video2 = 0514-rollout.mp4 (Rollout session-capture demo)\n//   • firefly (production-ready-prompt): video1 = 0522-firefly.mp4 (session reel under the lede), video2 = download.mp4 (the one production-ready first-pass video under the \"model walks\" quote)\n//   • firefly-edit-feature: video1 = 0527-firefly.mp4 (session reel under the lede); video2 unused\n//   • gemini-production-ready-prompts: video1 = 0528-gemini.mp4 (session reel under the lede); video2 unused\nvideo1:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video 1\",description:\"First inline video. For gpt-image-2-production-readiness upload 0514-gpt.mp4 (GPT generations reel under the hook). For firefly-production-ready-prompt upload 0522-firefly.mp4 (session reel under the lede). For gemini-production-ready-prompts upload 0528-gemini.mp4 (session reel under the lede). For video-head-to-head-jul26 upload the Veo 3.1 news anchor clip (61% win rate, glitches section).\"},video2:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video 2\",description:\"Second inline video. For gpt-image-2-production-readiness upload 0514-rollout.mp4 (Rollout tool demo under the methodology blurb). For firefly-production-ready-prompt upload download.mp4 (the one production-ready first-pass video under the model-walks quote). For video-head-to-head-jul26 upload the Seedance 2.0 overhead intersection clip (78% win rate, glitches section).\"},video3:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video 3\",description:\"Third inline video. For video-head-to-head-jul26 upload the Seedance 2.0 alley-chase clip (specialization section).\"},video4:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video 4\",description:\"Fourth inline video. For video-head-to-head-jul26 upload the Grok Imagine barista clip (specialization section).\"},video5:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],title:\"Video 5\",description:\"Fifth inline video. For video-head-to-head-jul26 upload the Veo 3.1 candle clip (specialization section).\"},mobileBreakpoint:{type:ControlType.Number,title:\"Mobile breakpoint\",defaultValue:810,min:320,max:1280,step:10,unit:\"px\",displayStepper:true,description:\"Below this viewport width, the layout switches to mobile (stacked, smaller copy, tighter margins, no sidebar TOC).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ResearchArticle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ResearchArticle.map"],"mappings":"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"}