{
 "name": "AIS Build design-calibration pack \u2014 CURATED",
 "version": "1.0",
 "date": "2026-07-03",
 "method": "40 candidate prompts were each built 4x fresh in AI Studio Build (2x default, 2x with the design instruction) \u2014 157 builds \u2014 and rated by a 15-run blind panel across GPT/Gemini/Claude (1,184 paired judgments). This pack keeps ONLY the prompts where raters AGREE: instruction-wins >= 77% with mean delta >= +0.6/5. Fewer, but every pair is reliable ground truth.",
 "usage": "For each entry: BAD build = generate `prompt` as-is (Build default). GOOD build = generate `design_instruction` + `prompt`. The evidence block gives the expected blind-score separation the auto-rater should reproduce.",
 "design_instruction": "You are a senior product designer. Design an excellent, mobile-first interface. These rules OVERRIDE any default you'd otherwise reach for \u2014 Tailwind indigo, shadcn defaults, rounded-2xl-on-everything, Inter, dark-mode-by-default. Apply them to every screen you generate now and in every later edit.\n\nNO OVERFLOW AT 390px (implement, don't just intend): put overflow-x:hidden and max-width:100vw on the root. Give every img/video/canvas/iframe max-width:100%; height:auto; display:block. Give every flex/grid child that holds text or media min-width:0 (the #1 cause of \"impossible\" overflow). Put intrinsically wide content (tables, code, pill rows, carousels) in a wrapper with overflow-x:auto. Never set a fixed px width or min-width on a layout container \u2014 use %, rem, fr, or 100%; px widths only for icons/avatars \u2264320px. Long/translated strings must wrap, never push the layout wider.\n\nTYPE FLOOR: root font-size 16px; size all text in rem; body \u226516px. The scale bottoms at 14px \u2014 NEVER use a smaller step (no text-xs) anywhere, including stat numbers, badges, tabs, captions, legends, footnotes, table cells, and decorative HUD/status chips (\"LV3\", \"ON-AIR\", date stamps). Clear heading hierarchy; cap reading width ~60 characters.\n\nCONTRAST (lexical rule): body text is one high-contrast color per surface \u2014 near-black (#111\u2013#1a1a1a) on light, near-white (#f5f5f5\u2013#fff) on dark. Never mid-gray on a mid-tone, never tinted-on-tinted. Text over a gradient/image needs a solid or \u226560%-opacity scrim. Use the accent hue only for large text (\u226524px bold) and non-text UI \u2014 never for body copy.\n\nCOLOR SYSTEM: one neutral scale + a single accent + semantic success/danger only; no clashing colors. Do NOT default to dark mode \u2014 light or dark is a deliberate brand choice.\n\nFORM (material identity): pick ONE deliberate radius identity \u2014 sharp/editorial (0\u20134px) OR soft (12\u201316px) \u2014 and apply it consistently; escape reflexive rounded-2xl-on-everything. Let borders, weight, and contrast carry hierarchy \u2014 not a soft drop-shadow + frosted-glass card on every surface. No reflexive glassmorphism, aurora/glow backgrounds, or floating 3D-blob shapes.\n\nBRAND: invent a real, human brand + product name and use only those. Treat any slug, ID, filename, or version string in this prompt as internal metadata \u2014 NEVER render it as visible copy (not in titles, subtitles, headers, footers, badges, captions), and never inside invented model/version/serial/build/SKU strings. Any version/serial label you show must be fully human and contain no token from the prompt.\n\nFIRST SCREEN \u2014 open on the app WORKING, populated with realistic seeded content. Never an empty placeholder, a title-only splash, an error/\"unavailable\"/\"could not load\" notice, or a blocking sign-on/\"tap to start\" gate; any name/setup step is optional and inline. Three hard genre rules: (1) a GAME opens with the rendered game world OCCUPYING the screen \u2014 mid-play or a live scene; a HUD frames the world, it never replaces it; no menu, lobby, settings list, tutorial modal, or status/terminal readout standing in for the game. (2) a CAMERA/AI-transformation app (scanner, translator, avatar maker, photo-to-recipe, style-transfer) opens on ONE already-transformed SAMPLE shown as the hero and labeled as a sample (e.g. \"Sample \u2014 1970s portrait\"), with the user's own capture as the primary action \u2014 never an empty upload form. (3) ONBOARDING never *is* the first screen: teach with small, dismissible, contextual hints layered on the working product \u2014 no welcome toasts, banners, or modals before or over it. The first screen must render complete with ZERO network/API calls; if a device feature or key is missing, show a designed demo state. Never render an image that can 404 into a broken box; use a designed on-brand placeholder.\n\nOVERLAYS: text overlaid on content \u2014 captions, translations, scan labels, meme text \u2014 must never overlap, collide with, or obscure other text or key content. On a canvas, draw text only in reserved bands (top/bottom strips), measure text extents before drawing, and never place it over faces or panel gutters. In the DOM, stack each annotation in its own padded row/card. Headlines and names must never clip or truncate mid-word.\n\nLAYOUT & ACTION: 8pt spacing grid, deliberate whitespace, everything aligned; multi-pane layouts collapse to one column on mobile; exactly one primary action per screen (highest contrast), no competing CTAs.\n\nCONTROL LABELS: text inside a button, pill, chip, tab, or badge sits on ONE line \u2014 never wrapped, hyphenated, or truncated (\"Real-time\" breaking into \"Real-\" / \"time\" inside a pill is a defect). Size the control to its label (padding scales with the text, white-space:nowrap) or shorten the label; pill/chip labels are 1\u20132 short words. If a label would overflow its control, redesign the label \u2014 never the geometry mid-word.\n\nMOBILE: dvh for full-height layouts; tap targets \u226544px; safe-area insets.\n\nSELF-CHECK: emit a one-line HTML comment at the very top of the output listing the checks you actually applied, e.g. <!-- checks: root overflow-x-hidden \u2713 \u00b7 no text-xs \u2713 \u00b7 one radius identity \u2713 \u00b7 one primary CTA \u2713 \u00b7 brand=<name> \u2713 \u00b7 first screen = product working \u2713 \u00b7 game world occupies screen \u2713 \u00b7 sample result shown \u2713 \u00b7 no welcome chrome \u2713 \u00b7 overlays collision-free \u2713 \u00b7 control labels one-line \u2713 -->. Make it look intentionally designed, not generic.",
 "count": 15,
 "tiers": {
  "A": "win>=85% & delta>=0.7 \u2014 strongest, unanimous separation",
  "B": "win 77-84% & delta>=0.6 \u2014 strong separation"
 },
 "prompts": [
  {
   "id": "p40",
   "tier": "A",
   "prompt": "coffee shops near me on a map with a list",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 1.0,
    "mean_delta": 2.37,
    "default_mean_score": 1.63,
    "instruction_mean_score": 4.0,
    "default_named_more_AI": 1.0
   }
  },
  {
   "id": "p28",
   "tier": "A",
   "prompt": "a to-do list",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 1.0,
    "mean_delta": 1.5,
    "default_mean_score": 2.5,
    "instruction_mean_score": 4.0,
    "default_named_more_AI": 1.0
   }
  },
  {
   "id": "p27",
   "tier": "A",
   "prompt": "a digital pet I can feed",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.97,
    "mean_delta": 1.4,
    "default_mean_score": 2.63,
    "instruction_mean_score": 4.03,
    "default_named_more_AI": 0.97
   }
  },
  {
   "id": "p06",
   "tier": "A",
   "prompt": "a top-down mini-golf game with physics",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.97,
    "mean_delta": 1.3,
    "default_mean_score": 2.63,
    "instruction_mean_score": 3.93,
    "default_named_more_AI": 0.97
   }
  },
  {
   "id": "p36",
   "tier": "A",
   "prompt": "a kanban board for my projects",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.93,
    "mean_delta": 1.4,
    "default_mean_score": 2.47,
    "instruction_mean_score": 3.87,
    "default_named_more_AI": 0.9
   }
  },
  {
   "id": "p38",
   "tier": "A",
   "prompt": "a workout tracker for sets and reps",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.93,
    "mean_delta": 1.3,
    "default_mean_score": 2.6,
    "instruction_mean_score": 3.9,
    "default_named_more_AI": 0.93
   }
  },
  {
   "id": "p09",
   "tier": "A",
   "prompt": "turn my selfie into a fantasy avatar",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.93,
    "mean_delta": 1.23,
    "default_mean_score": 2.7,
    "instruction_mean_score": 3.93,
    "default_named_more_AI": 0.93
   }
  },
  {
   "id": "p33",
   "tier": "A",
   "prompt": "a freelancer invoice generator",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.93,
    "mean_delta": 1.13,
    "default_mean_score": 2.73,
    "instruction_mean_score": 3.87,
    "default_named_more_AI": 0.93
   }
  },
  {
   "id": "p17",
   "tier": "A",
   "prompt": "a personal portfolio",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.9,
    "mean_delta": 1.47,
    "default_mean_score": 2.87,
    "instruction_mean_score": 4.33,
    "default_named_more_AI": 0.9
   }
  },
  {
   "id": "p31",
   "tier": "A",
   "prompt": "split the bill and calculate the tip",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.87,
    "mean_delta": 0.97,
    "default_mean_score": 2.83,
    "instruction_mean_score": 3.8,
    "default_named_more_AI": 0.87
   }
  },
  {
   "id": "p02",
   "tier": "B",
   "prompt": "a cozy gardening game",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.83,
    "mean_delta": 0.97,
    "default_mean_score": 2.8,
    "instruction_mean_score": 3.77,
    "default_named_more_AI": 0.83
   }
  },
  {
   "id": "p11",
   "tier": "B",
   "prompt": "point my camera at a menu and translate it",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.83,
    "mean_delta": 0.97,
    "default_mean_score": 2.9,
    "instruction_mean_score": 3.87,
    "default_named_more_AI": 0.83
   }
  },
  {
   "id": "p37",
   "tier": "B",
   "prompt": "an interactive digital resume with a timeline",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.83,
    "mean_delta": 0.9,
    "default_mean_score": 2.83,
    "instruction_mean_score": 3.73,
    "default_named_more_AI": 0.83
   }
  },
  {
   "id": "p15",
   "tier": "B",
   "prompt": "a chatbot with a personality I choose",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.83,
    "mean_delta": 0.73,
    "default_mean_score": 3.0,
    "instruction_mean_score": 3.73,
    "default_named_more_AI": 0.83
   }
  },
  {
   "id": "p26",
   "tier": "B",
   "prompt": "a spinning decision wheel",
   "evidence": {
    "blind_judgments": 30,
    "instruction_win_rate": 0.83,
    "mean_delta": 0.63,
    "default_mean_score": 3.03,
    "instruction_mean_score": 3.67,
    "default_named_more_AI": 0.83
   }
  }
 ],
 "excluded_for_weak_separation": [
  {
   "prompt": "a relaxing fishing island game",
   "id": "p01",
   "why": "win 57%, delta +0.23 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  },
  {
   "prompt": "a pomodoro focus timer",
   "id": "p30",
   "why": "win 53%, delta +0.17 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  },
  {
   "prompt": "a sales dashboard with charts",
   "id": "p35",
   "why": "win 50%, delta +0.07 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  },
  {
   "prompt": "a retro arcade snake with a twist",
   "id": "p07",
   "why": "win 50%, delta -0.23 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  },
  {
   "prompt": "a space exploration game",
   "id": "p03",
   "why": "win 33%, delta -0.30 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  },
  {
   "prompt": "a time machine that reimagines me in past decades",
   "id": "p08",
   "why": "win 33%, delta -0.53 \u2014 separation too weak or inverted; unusable as calibration ground truth"
  }
 ]
}