<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Emilia Veras</title>
    <description>The latest articles on Forem by Emilia Veras (@emilia_oqa).</description>
    <link>https://forem.com/emilia_oqa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883400%2Fd8c9b8c5-15e0-4751-9eff-451e294c9cad.png</url>
      <title>Forem: Emilia Veras</title>
      <link>https://forem.com/emilia_oqa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/emilia_oqa"/>
    <language>en</language>
    <item>
      <title>I Asked AI to Build a Design System. It Broke Its Own Rules in One Prompt.</title>
      <dc:creator>Emilia Veras</dc:creator>
      <pubDate>Wed, 06 May 2026 06:02:49 +0000</pubDate>
      <link>https://forem.com/emilia_oqa/i-asked-ai-to-build-a-design-system-it-broke-its-own-rules-in-one-prompt-4gg</link>
      <guid>https://forem.com/emilia_oqa/i-asked-ai-to-build-a-design-system-it-broke-its-own-rules-in-one-prompt-4gg</guid>
      <description>&lt;p&gt;Design systems exist to keep products consistent. So what happens when the system and the product are both AI-generated, in the same session.... by the same tool?&lt;/p&gt;

&lt;p&gt;I ran a three-prompt experiment in Figma Make. Generated a design system. Expanded it. Then asked it to build a dashboard using the system it just created.&lt;/p&gt;

&lt;p&gt;The AI broke its own rules immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0gdcdmewr6gbknkacxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0gdcdmewr6gbknkacxa.png" alt="Design System for SaaS Product"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt 1: "Generate a design system for a SaaS product"
&lt;/h2&gt;

&lt;p&gt;Figma Make returned a full page. Color palette, typography scale, buttons with six variants, form elements, feedback components, stats cards. Looked comprehensive.&lt;/p&gt;

&lt;p&gt;Then I actually looked at it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;4 colors total.&lt;/strong&gt; Primary, Secondary, Muted, Accent. No text colors, no borders, no hover states.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every heading is Medium weight.&lt;/strong&gt; H1 through H4, all at 500. No Bold anywhere. Your visual hierarchy is flat before you build a single page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same 1.5 line-height on everything.&lt;/strong&gt; A 32px heading with 1.5 line-height creates 48px of spacing. Headings need 1.1-1.2. This is a readability problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero spacing tokens.&lt;/strong&gt; No 4/8/16/24px scale. Nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No interactive states.&lt;/strong&gt; Buttons in resting state only. No hover, focus, active, or disabled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kinda looks complete until you try to build with it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60li0u6glin6y80nmlom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60li0u6glin6y80nmlom.png" alt="Expand Desgn System"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt 2: Make It Real
&lt;/h2&gt;

&lt;p&gt;I asked for the gaps to be filled:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Expand this design system to include: a full color palette with text, border, and background colors. Spacing scale from 4px to 64px. Elevation/shadow tokens. Dark mode palette. Hover, focus, and active states for all interactive components. Border radius tokens."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Figma Make delivered the structure I asked for. Spacing bars, border radius examples, elevation scale, interactive states, a Token Reference table, even an Implementation Guide with code snippets.&lt;/p&gt;

&lt;p&gt;But on publish, the color palette section broke. Background swatches rendered invisible. The section defining the foundation of the system couldn't display its implemented values on the published site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndn5sxyredub1b3gd6gn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndn5sxyredub1b3gd6gn.png" alt="Dashboard using Design System"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt 3: "Build me a dashboard using this design system"
&lt;/h2&gt;

&lt;p&gt;Full dashboard appeared. Sidebar nav, four stats cards, revenue chart, donut chart, transactions table, top products list. &lt;/p&gt;

&lt;p&gt;It also reused the exact same placeholder numbers from the design system's stats cards which makes sense. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Audit: System vs. Dashboard
&lt;/h2&gt;

&lt;p&gt;I opened the element inspector on the published dashboard and started clicking. &lt;/p&gt;

&lt;h3&gt;
  
  
  Colors it invented
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stats card icon backgrounds&lt;/strong&gt;: Pastel blue, green, peach circles which weren't in the palette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chart gradient&lt;/strong&gt;: Purple-to-pink fill. The system defines purple as Primary but didn't define a gradient or pink.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Donut chart&lt;/strong&gt;: Four new colors (dark purple, blue, coral, gold), none from the palette.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status badges&lt;/strong&gt;: Green "completed" and orange "pending." The system has Success/Warning colors in feedback components, but the dashboard used different values.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Typography it ignored
&lt;/h3&gt;

&lt;p&gt;System says every heading is Medium (500). Dashboard stats ($84,392, 12,483) render as Bold or Semibold. Section headers like "Revenue Overview" are heavier too. The AI promoted weights without updating the design system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Components it made up
&lt;/h3&gt;

&lt;p&gt;Sidebar nav, data table, charts, search bar. None existed in the design system which I guess is okay since youre asking it to build an entirely new dashboard. &lt;/p&gt;

&lt;h3&gt;
  
  
  One element, four violations
&lt;/h3&gt;

&lt;p&gt;I clicked the "completed" badge in the transactions table. Here's what the inspector found:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Element: .completed badge (79 x 22px)

font-family: ui-sans-serif        ← system font, not the defined font
background:  #10B981 (--chart-5)  ← chart token used as status color
color:       #FFFFFF (no token)   ← hardcoded white, no system reference
padding:     2px 8px              ← 2px not in the 4px spacing scale
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A chart color used as a status color. A system font instead of the custom font. Hardcoded white with no token. A spacing value the system never defined. One badge, four ways it ignored the design system.&lt;/p&gt;

&lt;h3&gt;
  
  
  The details
&lt;/h3&gt;

&lt;p&gt;The chart subtitle ("Revenue vs Expenses over the last 7 months") used &lt;code&gt;--muted-foreground&lt;/code&gt; correctly. That token maps to &lt;code&gt;#64748B&lt;/code&gt; and it's properly referenced.&lt;/p&gt;

&lt;p&gt;So the AI &lt;em&gt;sometimes&lt;/em&gt; uses its own tokens and &lt;em&gt;sometimes&lt;/em&gt; ignores them. It has access to the system, it just doesn't consistently follow it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The missing icon
&lt;/h3&gt;

&lt;p&gt;Four identical stats cards. Three have icons. Active Users has none. The AI forgot to render an icon in one of four identical cards, which I totally would have missed on first glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design Drift
&lt;/h2&gt;

&lt;p&gt;Traditional design system drift usually happens over months. A designer introduces new elements outside the design system or a developer uses &lt;code&gt;#3366FF&lt;/code&gt; instead of &lt;code&gt;var(--primary)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;AI design system drift is different as it can happen in one session, between two prompts, by the same tool and in the same chat window.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design System Enforcement
&lt;/h2&gt;

&lt;p&gt;The AI generated a Token Reference table and Implementation Guide, documented how to use the tokens and then it built a product that ignores most of its own rules.&lt;/p&gt;

&lt;p&gt;If you're using AI to generate design systems or product pages, the output needs verification against the system. Element-level inspection that checks computed CSS values against defined tokens, automated checks and general deep scan review to reduce design debt from compounding one prompt after another. &lt;/p&gt;




&lt;p&gt;&lt;em&gt;A version of this post was originally published on &lt;a href="https://overlayqa.com/blog/ai-design-system-drift/" rel="noopener noreferrer"&gt;overlayqa.com/blog/ai-design-system-drift&lt;/a&gt;. I used OverlayQA's element inspector to capture the CSS values shown in this article.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>design</category>
    </item>
  </channel>
</rss>
