{
  "schemaVersion": 1,
  "models": [
    {
      "id": "gpt",
      "name": "GPT Image 2",
      "provider": "OpenAI",
      "configurationId": "gpt-image-2/low/3:4",
      "setting": "Low · 864 × 1152",
      "href": "/gpt-image-2"
    },
    {
      "id": "nano",
      "name": "Nano Banana 2",
      "provider": "Google",
      "configurationId": "nano-banana-2/1K/3:4",
      "setting": "1K · 3:4",
      "href": "/nano-banana-2"
    },
    {
      "id": "flux",
      "name": "FLUX.2 Pro",
      "provider": "Black Forest Labs",
      "configurationId": "flux-2-pro/1K/3:4",
      "setting": "1K · 768 × 1024",
      "href": "/flux-2"
    },
    {
      "id": "qwen",
      "name": "Qwen Image 2.1 Turbo",
      "provider": "Qwen",
      "configurationId": "qwen-image-2.1-turbo/2K/3:4",
      "setting": "2K · 1728 × 2304",
      "href": "/qwen-image-2-1-turbo"
    }
  ],
  "cases": [
    {
      "id": "color",
      "title": "Change only the color",
      "description": "Recolor a cotton T-shirt while keeping its cut, texture and folds.",
      "photo": "source.webp",
      "focus": "Watch the neckline, shirt folds and unchanged jeans.",
      "prompt": "Change only the T-shirt to forest green. Keep its original cut, material, seams and folds. Leave the rest of the outfit unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Change only the T-shirt to forest green. Keep its original cut, material, seams and folds. Leave the rest of the outfit unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/source.webp",
          "sha256": "29a894e952705d7f0c1c856e4ee44c43b6a711aae1431cf14d4a6c2d1ce3b0dc",
          "width": 960,
          "height": 1280,
          "bytes": 55230
        }
      ]
    },
    {
      "id": "linen",
      "title": "Swap one shirt",
      "description": "Replace a T-shirt with a pale-blue linen shirt, sleeves rolled up.",
      "photo": "source.webp",
      "focus": "Check the collar, sleeves and whether the jeans stay the same.",
      "prompt": "Replace only the T-shirt with a pale-blue linen button-up shirt, sleeves rolled to the elbows. Keep the jeans and shoes unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Replace only the T-shirt with a pale-blue linen button-up shirt, sleeves rolled to the elbows. Keep the jeans and shoes unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/source.webp",
          "sha256": "29a894e952705d7f0c1c856e4ee44c43b6a711aae1431cf14d4a6c2d1ce3b0dc",
          "width": 960,
          "height": 1280,
          "bytes": 55230
        }
      ]
    },
    {
      "id": "business",
      "title": "Build a business outfit",
      "description": "Add a tailored charcoal blazer and a white cotton shirt to a portrait.",
      "photo": "male-source.webp",
      "focus": "Compare the face, jacket lapels and layered shirt collar.",
      "prompt": "Replace the top with a tailored charcoal blazer over a white cotton button-up shirt. Keep the trousers unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Replace the top with a tailored charcoal blazer over a white cotton button-up shirt. Keep the trousers unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/male-source.webp",
          "sha256": "7484de373ed42b722ce7932a7a92a421d5fda0f4552e573148e1ddd5290c3925",
          "width": 1254,
          "height": 1254,
          "bytes": 121190
        }
      ]
    },
    {
      "id": "dress",
      "title": "Change a full outfit",
      "description": "Try a burgundy satin midi dress and black low-heeled shoes.",
      "photo": "dress-source.webp",
      "focus": "Check the hem, shoes, face and full-body proportions.",
      "prompt": "Replace the T-shirt and jeans with a burgundy satin midi dress with a modest square neckline, wide shoulder straps and a softly draped skirt. Add black low-heeled shoes. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Replace the T-shirt and jeans with a burgundy satin midi dress with a modest square neckline, wide shoulder straps and a softly draped skirt. Add black low-heeled shoes. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/dress-source.webp",
          "sha256": "edd7092f63e3fc76d9ca9b0643c7b5f8c433435f48759e259398427c740a59cd",
          "width": 960,
          "height": 1280,
          "bytes": 151536
        }
      ]
    },
    {
      "id": "street",
      "title": "Replace a jacket outdoors",
      "description": "Swap a denim jacket and top for a relaxed teal hoodie.",
      "photo": "street-source.webp",
      "focus": "Look for leftover jacket edges, hair overlap and background changes.",
      "prompt": "Replace the jacket and top with a relaxed teal hoodie. Keep the trousers and shoes unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Replace the jacket and top with a relaxed teal hoodie. Keep the trousers and shoes unchanged. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/street-source.webp",
          "sha256": "f08a21e597d870cd8dc483f003abc0ec2f427afe4e14aa37d1f4290ddf1bc948",
          "width": 1280,
          "height": 960,
          "bytes": 136666
        }
      ]
    },
    {
      "id": "reference",
      "title": "Match a particular garment",
      "description": "Use a second image to put a navy floral wrap dress on the same person.",
      "photo": "dress-source.webp",
      "reference": "garment.webp",
      "focus": "Compare the floral pattern, neckline, sleeves, waist tie and length.",
      "prompt": "Dress the person in the first photo in the garment shown in the clothing reference. Match its color, neckline, sleeves, length and pattern. Replace the relevant clothes and keep the shoes. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "effectivePrompt": "Edit the first image according to the user's request. Preserve the identity, composition and details not mentioned in the request. Any remaining images are visual references. Follow the requested medium and style. User request: Dress the person in the first photo in the garment shown in the clothing reference. Match its color, neckline, sleeves, length and pattern. Replace the relevant clothes and keep the shoes. Keep the person's face, hair, body proportions, pose, hands, framing, background and lighting. Change only the specified clothing, with realistic fabric and folds.",
      "inputs": [
        {
          "src": "/images/outfit-changer/dress-source.webp",
          "sha256": "edd7092f63e3fc76d9ca9b0643c7b5f8c433435f48759e259398427c740a59cd",
          "width": 960,
          "height": 1280,
          "bytes": 151536
        },
        {
          "src": "/images/outfit-changer/garment.webp",
          "sha256": "6cc00b8e89bcd56b332049f4a37718fc2c9868e1dfca32a8edc75559af8f26c2",
          "width": 960,
          "height": 1280,
          "bytes": 169432
        }
      ]
    }
  ],
  "repetitions": 2,
  "plannedAttempts": 48,
  "route": "Shared PhotoGenerAI generateMakeover adapter; Vercel for GPT/Nano/FLUX, Qianwen for Qwen. No browser billing or history transaction.",
  "displayRule": "First attempt is the main image. All second attempts and failures are retained.",
  "preprocessing": "FLUX adapter converts inputs to JPEG with a maximum 960px long edge; other models use the same source WebP bytes."
}
