[object Object]

← back to Dw Design Bridge

snapshot: 17 file(s) changed, +16 new, ~1 modified

dd16961706a9d34a333f2940a86892ba53a3b006 · 2026-05-13 08:57:52 -0700 · Steve

Files touched

Diff

commit dd16961706a9d34a333f2940a86892ba53a3b006
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed May 13 08:57:52 2026 -0700

    snapshot: 17 file(s) changed, +16 new, ~1 modified
---
 ecosystem.config.cjs                  | 19 +++++++++
 jobs/2026-05-08-07-03-19-03daf5.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-19-564a39.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-162d0e.json  | 76 +++++++++++++++++++++++++++++++++++
 jobs/2026-05-08-07-03-20-162d0e/0.svg | 13 ++++++
 jobs/2026-05-08-07-03-20-162d0e/2.svg | 13 ++++++
 jobs/2026-05-08-07-03-20-4243ca.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-4306e5.json  | 52 ++++++++++++++++++++++++
 jobs/2026-05-08-07-03-20-4306e5/2.svg | 15 +++++++
 jobs/2026-05-08-07-03-20-659a24.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-949b50.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-965d68.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-acdb90.json  | 30 ++++++++++++++
 jobs/2026-05-08-07-03-20-cef268.json  | 52 ++++++++++++++++++++++++
 jobs/2026-05-08-07-03-20-cef268/2.svg |  9 +++++
 public/favicon.svg                    |  6 +++
 public/index.html                     |  2 +
 seed-briefs.sh                        | 25 ++++++++++++
 18 files changed, 492 insertions(+)

diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs
new file mode 100644
index 0000000..811a0e4
--- /dev/null
+++ b/ecosystem.config.cjs
@@ -0,0 +1,19 @@
+module.exports = {
+  apps: [{
+    name: "dw-design-bridge",
+    script: "server.js",
+    cwd: __dirname,
+    env: {
+      NEXT_TELEMETRY_DISABLED: "1",
+      VITE_HOST: "0.0.0.0",
+      HOSTNAME: "0.0.0.0",
+      GUNICORN_BIND: "0.0.0.0:8000",
+      UVICORN_HOST: "0.0.0.0",
+      FLASK_RUN_HOST: "0.0.0.0",
+      BIND: "0.0.0.0",
+      HOST: "0.0.0.0",
+    },
+    autorestart: true,
+    max_memory_restart: "300M",
+  }],
+};
diff --git a/jobs/2026-05-08-07-03-19-03daf5.json b/jobs/2026-05-08-07-03-19-03daf5.json
new file mode 100644
index 0000000..1a15b63
--- /dev/null
+++ b/jobs/2026-05-08-07-03-19-03daf5.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-19-03daf5",
+  "brief": "Cork wallcovering · Sherman Oaks office reception · sustainable · earthy palette · acoustic damping · medium-scale woven",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:19.954Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:06:20.117Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:09:13.991Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:11:53.027Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:19.963Z",
+  "finished_at": "2026-05-08T07:11:53.030Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-19-564a39.json b/jobs/2026-05-08-07-03-19-564a39.json
new file mode 100644
index 0000000..40f50c7
--- /dev/null
+++ b/jobs/2026-05-08-07-03-19-564a39.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-19-564a39",
+  "brief": "Silk wallpaper · Beverly Hills mansion entry foyer · jewel-toned · Chinese chinoiserie hand-painted · dramatic",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:19.994Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:05:41.261Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:08:24.340Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:11:06.554Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:19.995Z",
+  "finished_at": "2026-05-08T07:11:06.557Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-162d0e.json b/jobs/2026-05-08-07-03-20-162d0e.json
new file mode 100644
index 0000000..fe7d625
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-162d0e.json
@@ -0,0 +1,76 @@
+{
+  "id": "2026-05-08-07-03-20-162d0e",
+  "brief": "Atomic-age 50s diner revival · boomerang starburst · turquoise coral cream · midcentury optimistic",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.313Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": true,
+      "design": {
+        "name": "Atomic Starburst Diner",
+        "pattern_concept": "Dynamic boomerang starbursts in midcentury atomic motifs",
+        "palette": [
+          "#00CEDB",
+          "#FF7F50",
+          "#FFFDD0",
+          "#000080"
+        ],
+        "scale": "medium",
+        "repeat": "drop match 21in vertical",
+        "material_pairing": "vinyl",
+        "style_tags": [
+          "midcentury",
+          "atomic age",
+          "retro diner"
+        ],
+        "use_case": "hotel lobby feature wall",
+        "marketing_copy": "Radiate 50s optimism with boomerang starbursts in vibrant turquoise and coral",
+        "trade_grade": "class A",
+        "price_band": "$$$"
+      },
+      "preview_url": "/jobs/2026-05-08-07-03-20-162d0e/0.svg",
+      "generated_at": "2026-05-08T07:04:27.416Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:06:46.648Z"
+    },
+    {
+      "idx": 2,
+      "ok": true,
+      "design": {
+        "name": "Atomic Starburst Diner",
+        "pattern_concept": "Dynamic boomerang-shaped starbursts in turquoise, coral, and cream on a cream background, evoking 1950s diner optimism",
+        "palette": [
+          "#00CEDB",
+          "#FF7F50",
+          "#FFF8DC",
+          "#8B8B8B"
+        ],
+        "scale": "medium",
+        "repeat": "drop match 21in vertical",
+        "material_pairing": "mylar",
+        "style_tags": [
+          "midcentury",
+          "retro",
+          "diner",
+          "atomic",
+          "starburst"
+        ],
+        "use_case": "hotel lobby feature wall",
+        "marketing_copy": "Revive 1950s diner charm with vibrant boomerang starbursts and optimistic color",
+        "trade_grade": "class A",
+        "price_band": "$$$"
+      },
+      "preview_url": "/jobs/2026-05-08-07-03-20-162d0e/2.svg",
+      "generated_at": "2026-05-08T07:09:41.985Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.315Z",
+  "finished_at": "2026-05-08T07:09:41.989Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-162d0e/0.svg b/jobs/2026-05-08-07-03-20-162d0e/0.svg
new file mode 100644
index 0000000..c76a03b
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-162d0e/0.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 280" width="100%" height="auto" preserveAspectRatio="xMidYMid slice">
+    <defs>
+      <pattern id="p2026-05-08-07-03-20-162d0e-0" x="0" y="0" width="140" height="140" patternUnits="userSpaceOnUse">
+        <rect width="140" height="140" fill="#00CEDB"/>
+        
+      <polygon points="70,0 140,70 70,140 0,70" fill="#FF7F50" opacity="0.85"/>
+      <polygon points="70,25.2 114.8,70 70,114.8 25.2,70" fill="#FFFDD0"/>
+      <circle cx="70" cy="70" r="8.4" fill="#000080"/>
+    
+      </pattern>
+    </defs>
+    <rect width="280" height="280" fill="url(#p2026-05-08-07-03-20-162d0e-0)"/>
+  </svg>
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-162d0e/2.svg b/jobs/2026-05-08-07-03-20-162d0e/2.svg
new file mode 100644
index 0000000..d52b2fc
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-162d0e/2.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 280" width="100%" height="auto" preserveAspectRatio="xMidYMid slice">
+    <defs>
+      <pattern id="p2026-05-08-07-03-20-162d0e-2" x="0" y="0" width="140" height="140" patternUnits="userSpaceOnUse">
+        <rect width="140" height="140" fill="#00CEDB"/>
+        
+      <polygon points="70,0 140,70 70,140 0,70" fill="#FF7F50" opacity="0.85"/>
+      <polygon points="70,25.2 114.8,70 70,114.8 25.2,70" fill="#FFF8DC"/>
+      <circle cx="70" cy="70" r="8.4" fill="#8B8B8B"/>
+    
+      </pattern>
+    </defs>
+    <rect width="280" height="280" fill="url(#p2026-05-08-07-03-20-162d0e-2)"/>
+  </svg>
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-4243ca.json b/jobs/2026-05-08-07-03-20-4243ca.json
new file mode 100644
index 0000000..6e5db47
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-4243ca.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-20-4243ca",
+  "brief": "Architectural specifier · class A commercial · minimal geometric · architectural concrete + warm bronze",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.353Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:06:20.360Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:09:20.379Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:12:20.385Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.354Z",
+  "finished_at": "2026-05-08T07:12:20.386Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-4306e5.json b/jobs/2026-05-08-07-03-20-4306e5.json
new file mode 100644
index 0000000..2b84f42
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-4306e5.json
@@ -0,0 +1,52 @@
+{
+  "id": "2026-05-08-07-03-20-4306e5",
+  "brief": "Restaurant private dining · moody · velvet-noir botanical · candle-lit · class A vinyl scrubbable",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.218Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:04:51.522Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:07:34.099Z"
+    },
+    {
+      "idx": 2,
+      "ok": true,
+      "design": {
+        "name": "Nocturne Velvet Botanical",
+        "pattern_concept": "Deep, velvety botanicals in noir hues with subtle candlelight glow effects",
+        "palette": [
+          "#1a1a1a",
+          "#2c1414",
+          "#4a2d2d",
+          "#333333"
+        ],
+        "scale": "medium",
+        "repeat": "drop match 21in vertical",
+        "material_pairing": "vinyl",
+        "style_tags": [
+          "moody",
+          "luxury",
+          "botanical"
+        ],
+        "use_case": "Restaurant private dining feature wall",
+        "marketing_copy": "Velvet noir botanicals bathed in candlelight – opulent yet intimate",
+        "trade_grade": "class A",
+        "price_band": "$$$"
+      },
+      "preview_url": "/jobs/2026-05-08-07-03-20-4306e5/2.svg",
+      "generated_at": "2026-05-08T07:10:15.621Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.218Z",
+  "finished_at": "2026-05-08T07:10:15.623Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-4306e5/2.svg b/jobs/2026-05-08-07-03-20-4306e5/2.svg
new file mode 100644
index 0000000..d754935
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-4306e5/2.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 280" width="100%" height="auto" preserveAspectRatio="xMidYMid slice">
+    <defs>
+      <pattern id="p2026-05-08-07-03-20-4306e5-2" x="0" y="0" width="140" height="140" patternUnits="userSpaceOnUse">
+        <rect width="140" height="140" fill="#1a1a1a"/>
+        
+      <ellipse cx="70" cy="44.8" rx="19.6" ry="44.800000000000004" fill="#2c1414" opacity="0.85" transform="rotate(-15 70 70)"/>
+      <ellipse cx="70" cy="44.8" rx="19.6" ry="44.800000000000004" fill="#4a2d2d" opacity="0.7" transform="rotate(20 70 70)"/>
+      <circle cx="70" cy="95.2" r="8.4" fill="#333333"/>
+      <path d="M 70 77 Q 44.8 58.8 25.199999999999996 95.2" stroke="#2c1414" stroke-width="2" fill="none"/>
+      <path d="M 70 77 Q 95.2 58.8 114.80000000000001 95.2" stroke="#2c1414" stroke-width="2" fill="none"/>
+    
+      </pattern>
+    </defs>
+    <rect width="280" height="280" fill="url(#p2026-05-08-07-03-20-4306e5-2)"/>
+  </svg>
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-659a24.json b/jobs/2026-05-08-07-03-20-659a24.json
new file mode 100644
index 0000000..8710d7f
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-659a24.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-20-659a24",
+  "brief": "Pastel children's room · peel-and-stick · whimsical small-scale · soft botanical · safe non-toxic",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.165Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:06:20.196Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:09:20.249Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:12:20.292Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.166Z",
+  "finished_at": "2026-05-08T07:12:20.294Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-949b50.json b/jobs/2026-05-08-07-03-20-949b50.json
new file mode 100644
index 0000000..71e9a2e
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-949b50.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-20-949b50",
+  "brief": "Hotel lobby · luxury · oversized chinoiserie panoramic mural · gold-leaf accents · trade-grade",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.276Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:06:20.296Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:09:20.298Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:12:17.802Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.277Z",
+  "finished_at": "2026-05-08T07:12:17.803Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-965d68.json b/jobs/2026-05-08-07-03-20-965d68.json
new file mode 100644
index 0000000..e627ab8
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-965d68.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-20-965d68",
+  "brief": "Eco-sustainable · low-VOC corporate office · soft humanist · grasscloth-inspired · earth tones",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.120Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:05:16.389Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:07:59.388Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:10:41.537Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.122Z",
+  "finished_at": "2026-05-08T07:10:41.542Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-acdb90.json b/jobs/2026-05-08-07-03-20-acdb90.json
new file mode 100644
index 0000000..5e40739
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-acdb90.json
@@ -0,0 +1,30 @@
+{
+  "id": "2026-05-08-07-03-20-acdb90",
+  "brief": "1920s art deco · jazz-age library · gilded geometric sunburst · midnight blue and gold · trade-grade vinyl",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.016Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:06:20.186Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:09:20.199Z"
+    },
+    {
+      "idx": 2,
+      "ok": false,
+      "error": "The operation was aborted due to timeout",
+      "generated_at": "2026-05-08T07:12:20.265Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.017Z",
+  "finished_at": "2026-05-08T07:12:20.270Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-cef268.json b/jobs/2026-05-08-07-03-20-cef268.json
new file mode 100644
index 0000000..5c6df10
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-cef268.json
@@ -0,0 +1,52 @@
+{
+  "id": "2026-05-08-07-03-20-cef268",
+  "brief": "1980s memphis · postmodern boutique retail · neon palette · oversized geometric blocks · class A",
+  "count": 3,
+  "status": "done",
+  "created_at": "2026-05-08T07:03:20.078Z",
+  "progress": "3/3",
+  "designs": [
+    {
+      "idx": 0,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:06:07.662Z"
+    },
+    {
+      "idx": 1,
+      "ok": false,
+      "error": "no JSON found in response",
+      "generated_at": "2026-05-08T07:08:49.020Z"
+    },
+    {
+      "idx": 2,
+      "ok": true,
+      "design": {
+        "name": "Neon Memphis Fusion",
+        "pattern_concept": "Vibrant oversized geometric blocks in neon hues, blending Memphis motifs with postmodern edge",
+        "palette": [
+          "#FF69B4",
+          "#00BFFF",
+          "#FFD700",
+          "#000000"
+        ],
+        "scale": "oversize",
+        "repeat": "drop match 36in vertical",
+        "material_pairing": "vinyl",
+        "style_tags": [
+          "Memphis",
+          "Postmodern",
+          "Geometric"
+        ],
+        "use_case": "Boutique retail feature wall with bold visual impact",
+        "marketing_copy": "Dazzling Memphis meets neon geometry for a postmodern retail statement",
+        "trade_grade": "class A",
+        "price_band": "$$$"
+      },
+      "preview_url": "/jobs/2026-05-08-07-03-20-cef268/2.svg",
+      "generated_at": "2026-05-08T07:11:28.697Z"
+    }
+  ],
+  "started_at": "2026-05-08T07:03:20.079Z",
+  "finished_at": "2026-05-08T07:11:28.699Z"
+}
\ No newline at end of file
diff --git a/jobs/2026-05-08-07-03-20-cef268/2.svg b/jobs/2026-05-08-07-03-20-cef268/2.svg
new file mode 100644
index 0000000..48992eb
--- /dev/null
+++ b/jobs/2026-05-08-07-03-20-cef268/2.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" width="100%" height="auto" preserveAspectRatio="xMidYMid slice">
+    <defs>
+      <pattern id="p2026-05-08-07-03-20-cef268-2" x="0" y="0" width="320" height="320" patternUnits="userSpaceOnUse">
+        <rect width="320" height="320" fill="#FF69B4"/>
+        <line x1="160" y1="320" x2="-64.0" y2="320.0" stroke="#000000" stroke-width="2"/><line x1="160" y1="320" x2="-46.9" y2="234.3" stroke="#00BFFF" stroke-width="2"/><line x1="160" y1="320" x2="1.6" y2="161.6" stroke="#000000" stroke-width="2"/><line x1="160" y1="320" x2="74.3" y2="113.1" stroke="#00BFFF" stroke-width="2"/><line x1="160" y1="320" x2="160.0" y2="96.0" stroke="#000000" stroke-width="2"/><line x1="160" y1="320" x2="245.7" y2="113.1" stroke="#00BFFF" stroke-width="2"/><line x1="160" y1="320" x2="318.4" y2="161.6" stroke="#000000" stroke-width="2"/><line x1="160" y1="320" x2="366.9" y2="234.3" stroke="#00BFFF" stroke-width="2"/><line x1="160" y1="320" x2="384.0" y2="320.0" stroke="#000000" stroke-width="2"/><circle cx="160" cy="320" r="38.4" fill="#FFD700"/>
+      </pattern>
+    </defs>
+    <rect width="640" height="640" fill="url(#p2026-05-08-07-03-20-cef268-2)"/>
+  </svg>
\ No newline at end of file
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000..25a9259
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
+  <rect width="64" height="64" rx="10" fill="#0a0a0a"/>
+  <text x="50%" y="50%" text-anchor="middle" dominant-baseline="central"
+        font-family="Georgia, 'Times New Roman', serif" font-weight="700"
+        font-size="32" fill="#ffffff">DW</text>
+</svg>
diff --git a/public/index.html b/public/index.html
index 445ab42..216098c 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,6 +1,8 @@
 <!doctype html>
 <html lang="en">
 <head>
+    <link rel="icon" type="image/svg+xml" href="/favicon.svg">
+
 <meta charset="utf-8">
 <title>DW Design Bridge — AI Factory × Designer Wallcoverings</title>
 <style>
diff --git a/seed-briefs.sh b/seed-briefs.sh
new file mode 100755
index 0000000..3dcee8e
--- /dev/null
+++ b/seed-briefs.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+# Queue a batch of diverse design briefs across the DW vertical fleet.
+set -uo pipefail
+
+URL=${URL:-http://127.0.0.1:9923/api/jobs}
+
+queue() {
+  local brief="$1" count="${2:-3}"
+  curl -s -X POST "$URL" -H 'Content-Type: application/json' \
+    -d "{\"brief\":\"$brief\",\"count\":$count}" \
+    | python3 -c "import json,sys; d=json.load(sys.stdin); print(f\"queued {d['id']} · count={d['count']}\")" 2>/dev/null
+}
+
+queue "Cork wallcovering · Sherman Oaks office reception · sustainable · earthy palette · acoustic damping · medium-scale woven" 3
+queue "Silk wallpaper · Beverly Hills mansion entry foyer · jewel-toned · Chinese chinoiserie hand-painted · dramatic" 3
+queue "1920s art deco · jazz-age library · gilded geometric sunburst · midnight blue and gold · trade-grade vinyl" 3
+queue "1980s memphis · postmodern boutique retail · neon palette · oversized geometric blocks · class A" 3
+queue "Eco-sustainable · low-VOC corporate office · soft humanist · grasscloth-inspired · earth tones" 3
+queue "Pastel children's room · peel-and-stick · whimsical small-scale · soft botanical · safe non-toxic" 3
+queue "Restaurant private dining · moody · velvet-noir botanical · candle-lit · class A vinyl scrubbable" 3
+queue "Hotel lobby · luxury · oversized chinoiserie panoramic mural · gold-leaf accents · trade-grade" 3
+queue "Atomic-age 50s diner revival · boomerang starburst · turquoise coral cream · midcentury optimistic" 3
+queue "Architectural specifier · class A commercial · minimal geometric · architectural concrete + warm bronze" 3
+
+echo "[done] 10 briefs queued · 30 designs total"

← 3741d2a gitignore: protect .env* from accidental commits per MEMORY  ·  back to Dw Design Bridge  ·  fix: guard renderDesign against malformed/undefined design e 9ada06e →