[object Object]

← back to Wallco Ai

etsy export: scripts/export-etsy-digital.js writes per-design source+cover+print PNGs + listing.json/csv manifest (Vela/eRank ready); --tif/-no-upscale flags; incremental via etsy-exported tag

581d6a23d8f9c6cc5af0b03173abf93085ff0776 · 2026-05-28 06:27:42 -0700 · Steve Abrams

Files touched

Diff

commit 581d6a23d8f9c6cc5af0b03173abf93085ff0776
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu May 28 06:27:42 2026 -0700

    etsy export: scripts/export-etsy-digital.js writes per-design source+cover+print PNGs + listing.json/csv manifest (Vela/eRank ready); --tif/-no-upscale flags; incremental via etsy-exported tag
---
 data/cactus-decisions.jsonl    | 665 +++++++++++++++++++++++++++++++++++++++++
 scripts/export-etsy-digital.js | 249 +++++++++++++++
 scripts/reroll-tileable.js     |  43 ++-
 scripts/sample-drunk-zoo-36.js |  74 +++++
 scripts/seam_break_scan.py     |  90 ++++++
 server.js                      |  40 +++
 6 files changed, 1160 insertions(+), 1 deletion(-)

diff --git a/data/cactus-decisions.jsonl b/data/cactus-decisions.jsonl
index 9145099..558265a 100644
--- a/data/cactus-decisions.jsonl
+++ b/data/cactus-decisions.jsonl
@@ -3086,3 +3086,668 @@
 {"ts":"2026-05-28T12:57:42.761Z","id":53811,"action":"live"}
 {"ts":"2026-05-28T12:57:42.896Z","id":53812,"action":"live"}
 {"ts":"2026-05-28T12:57:45.000Z","id":11010,"action":"fix"}
+{"ts":"2026-05-28T12:59:23.666Z","id":11234,"action":"fix"}
+{"ts":"2026-05-28T12:59:30.195Z","id":11236,"action":"bad"}
+{"ts":"2026-05-28T13:00:11.398Z","id":40845,"action":"bad"}
+{"ts":"2026-05-28T13:00:40.840Z","id":40773,"action":"fix"}
+{"ts":"2026-05-28T13:01:30.469Z","id":40478,"action":"bad"}
+{"ts":"2026-05-28T13:01:53.371Z","id":39356,"action":"live"}
+{"ts":"2026-05-28T13:02:23.529Z","id":37882,"action":"bad"}
+{"ts":"2026-05-28T13:02:27.533Z","id":37883,"action":"bad"}
+{"ts":"2026-05-28T13:02:29.969Z","id":37884,"action":"bad"}
+{"ts":"2026-05-28T13:02:31.660Z","id":37885,"action":"bad"}
+{"ts":"2026-05-28T13:05:37.382Z","id":53711,"action":"live"}
+{"ts":"2026-05-28T13:05:37.465Z","id":53710,"action":"live"}
+{"ts":"2026-05-28T13:05:42.424Z","id":53720,"action":"live"}
+{"ts":"2026-05-28T13:05:42.517Z","id":53718,"action":"live"}
+{"ts":"2026-05-28T13:05:45.012Z","id":53714,"action":"live"}
+{"ts":"2026-05-28T13:05:47.539Z","id":42659,"action":"live"}
+{"ts":"2026-05-28T13:05:47.640Z","id":53715,"action":"live"}
+{"ts":"2026-05-28T13:05:50.228Z","id":53704,"action":"live"}
+{"ts":"2026-05-28T13:06:01.473Z","id":43194,"action":"live"}
+{"ts":"2026-05-28T13:12:09.945Z","id":40982,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.032Z","id":40981,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.111Z","id":40976,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.193Z","id":40980,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.282Z","id":40974,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.371Z","id":40975,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.473Z","id":40979,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.549Z","id":40978,"action":"bad"}
+{"ts":"2026-05-28T13:12:10.648Z","id":40977,"action":"bad"}
+{"ts":"2026-05-28T13:12:20.084Z","id":40973,"action":"bad"}
+{"ts":"2026-05-28T13:12:20.176Z","id":40972,"action":"bad"}
+{"ts":"2026-05-28T13:12:20.254Z","id":40971,"action":"bad"}
+{"ts":"2026-05-28T13:12:20.328Z","id":40970,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.169Z","id":41403,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.250Z","id":41400,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.327Z","id":41398,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.397Z","id":41387,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.487Z","id":41390,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.598Z","id":41399,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.722Z","id":41383,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.831Z","id":41353,"action":"bad"}
+{"ts":"2026-05-28T13:12:43.967Z","id":41384,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.106Z","id":41395,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.216Z","id":41287,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.306Z","id":41286,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.386Z","id":41285,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.464Z","id":41284,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.551Z","id":41288,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.637Z","id":41392,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.719Z","id":41283,"action":"bad"}
+{"ts":"2026-05-28T13:12:44.804Z","id":41280,"action":"bad"}
+{"ts":"2026-05-28T13:13:12.979Z","id":41278,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.072Z","id":41277,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.150Z","id":41272,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.225Z","id":41276,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.322Z","id":41270,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.420Z","id":41271,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.529Z","id":41275,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.637Z","id":41274,"action":"bad"}
+{"ts":"2026-05-28T13:13:13.762Z","id":41273,"action":"bad"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42207, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42209, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42411, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42221, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42645, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41871, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42474, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42262, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42356, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41933, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42418, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42227, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42222, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42546, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42228, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42517, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42229, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42421, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42423, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42235, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42424, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42237, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42374, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42240, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42428, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42246, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42254, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42255, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42256, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42257, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42435, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42259, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42436, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42261, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42437, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42547, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42438, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42264, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42441, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42649, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42549, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42551, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42552, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41883, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42269, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42443, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42553, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42273, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42274, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42650, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42447, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42278, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42555, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42448, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42281, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42285, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42651, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42287, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42288, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42453, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42557, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42289, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42565, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42455, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42293, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42295, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42559, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42296, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41945, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42458, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42297, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41947, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42560, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42653, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41950, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41951, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42300, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42459, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42303, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42460, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42304, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42461, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42564, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41782, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42654, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42309, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42463, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42311, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42464, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42566, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42315, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42567, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42468, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42655, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41576, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42604, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42642, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42319, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42652, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42322, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42323, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42570, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42325, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42326, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41895, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41962, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42328, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42573, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41965, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42574, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42330, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42575, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42333, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42576, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41971, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42335, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42337, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42481, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41976, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42482, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42339, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41978, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42341, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42484, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41980, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42485, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42581, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41982, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42346, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42488, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42347, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42490, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42349, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42350, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42492, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42161, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42493, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42352, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42587, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42353, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42174, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41986, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42355, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42497, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42498, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41987, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42191, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42192, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42359, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42219, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42225, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42226, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42231, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42503, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42242, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42504, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42244, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42505, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42247, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42366, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42250, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41839, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42260, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42263, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42266, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41991, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42268, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42275, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42509, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42276, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42277, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42282, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41569, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42286, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42292, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42372, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42510, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41797, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42298, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41800, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42302, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42375, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41865, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42305, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42306, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41873, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41877, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42308, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42310, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42379, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41900, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41898, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41911, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41916, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41995, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41917, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42598, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41994, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41937, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41956, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42382, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42332, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41723, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41992, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42384, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42348, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42351, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42519, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42600, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42361, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42364, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42371, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42373, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42380, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42403, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42406, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42425, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42521, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42429, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42562, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42431, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42601, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42387, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42432, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42433, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42388, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42389, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42572, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42439, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42391, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42440, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42525, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42577, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42444, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42445, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42394, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42395, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41996, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42583, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41552, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42586, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42449, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42450, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42398, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42399, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42528, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42452, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42400, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42401, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42529, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41843, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42469, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41845, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41866, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41872, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41875, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41882, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41896, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41903, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41904, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41912, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41918, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41920, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41929, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41938, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41944, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41954, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42405, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42407, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42157, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42162, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42171, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42173, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42179, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42180, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42186, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42193, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42195, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42198, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42200, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42210, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42610, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42615, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42628, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42635, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42636, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42644, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42376, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42408, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41547, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42417, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42457, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42473, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42489, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42500, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42501, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42508, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42516, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42522, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42527, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42532, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42534, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42535, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42536, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42540, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42541, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42542, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42543, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41561, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42548, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41997, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42253, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41545, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42314, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42324, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42338, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42023, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42640, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42427, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42248, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42249, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41874, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42538, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42539, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42422, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42907, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42136, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42234, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42414, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42537, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42270, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42558, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42283, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42294, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42299, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42301, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42596, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41889, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42630, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42472, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42658, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42329, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42476, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41968, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42334, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41975, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42340, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42344, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42495, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42363, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41988, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42241, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42507, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42307, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42511, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42597, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41910, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42312, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42513, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42313, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42554, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42556, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42561, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42563, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42569, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42571, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42446, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42578, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42579, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42580, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42582, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42526, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42584, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42585, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42454, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42402, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41922, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41961, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42530, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42588, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42589, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42590, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42591, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42592, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42593, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42627, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42594, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42595, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42602, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42370, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42377, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42381, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42383, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42385, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42386, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42393, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42397, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42409, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42412, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42413, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42415, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42419, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42430, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42434, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42451, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42456, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42462, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42467, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42470, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42471, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42479, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42480, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42483, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42486, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42487, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42491, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42494, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42496, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42499, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42502, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42512, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42514, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42515, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42524, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42533, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42544, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42243, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42252, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42550, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42258, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42265, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42267, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42271, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42272, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42291, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42320, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42321, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41575, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41664, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41838, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41795, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41805, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41881, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41806, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41544, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41546, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41813, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41548, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41549, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41550, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41809, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41551, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41553, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41554, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41566, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41571, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41574, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41969, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41811, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41840, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41841, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41842, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41844, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41846, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41867, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41868, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41869, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41870, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41876, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41878, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41879, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41880, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41972, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41884, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41885, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41886, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41887, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41888, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41890, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41891, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41892, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41893, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42354, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41894, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41897, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41899, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41901, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41902, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41905, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41906, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42345, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41907, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41908, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41909, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41913, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41914, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41915, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41919, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41921, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41923, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41924, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41926, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41927, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41928, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41930, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41931, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41932, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41934, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41935, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41936, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41939, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41940, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41941, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41942, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42357, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41943, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41953, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41955, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41957, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41958, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41959, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41960, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41963, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 41966, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42135, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42134, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42133, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42155, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42218, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42156, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42158, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42159, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42160, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42163, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42164, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42165, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42166, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42167, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42168, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42169, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42170, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42172, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42175, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42176, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42220, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42177, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42358, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42178, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42181, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42182, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42183, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42184, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42185, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42187, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42188, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42360, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42189, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42190, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42194, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42196, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42197, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42199, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42201, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42202, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42367, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42203, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42204, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42205, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42206, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42208, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42211, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42212, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42213, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42369, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42214, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42215, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42216, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42217, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42223, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42224, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42232, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42233, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42605, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42606, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42611, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42612, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42614, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42617, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42618, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42619, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42620, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42621, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42622, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42623, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42625, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42632, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42634, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42638, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42641, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42643, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42648, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42656, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts": "2026-05-28T13:18:09.756504Z", "id": 42661, "action": "digital", "note": "bulk: drunk-animals 5/25\u2192Traditional digital-file (etsy)"}
+{"ts":"2026-05-28T13:21:09.285Z","id":17439,"action":"fix"}
+{"ts":"2026-05-28T13:21:10.789Z","id":17438,"action":"fix"}
+{"ts":"2026-05-28T13:21:13.604Z","id":17437,"action":"fix"}
diff --git a/scripts/export-etsy-digital.js b/scripts/export-etsy-digital.js
new file mode 100644
index 0000000..8f1aee3
--- /dev/null
+++ b/scripts/export-etsy-digital.js
@@ -0,0 +1,249 @@
+#!/usr/bin/env node
+/**
+ * export-etsy-digital — bundle every `etsy-digital`-tagged design into a
+ * folder of ready-to-list Etsy digital-download assets + a single
+ * listings.csv manifest.
+ *
+ * Why a script and not a one-click API push: Etsy listing is money-facing
+ * and irreversible. The script generates the assets + draft listing copy;
+ * Steve reviews + uploads (manually or with a 3rd-party bulk tool) when
+ * he's ready. A future --push-to-etsy flag can wire the Etsy v3 Open API
+ * once shop OAuth is in place.
+ *
+ * Per design, writes:
+ *   data/etsy-exports/<YYYY-MM-DD>/<id>/
+ *     source_1024.png   — the original tile (cover thumb)
+ *     cover_4x4.png     — 4×4 grid preview so buyers see the seamless repeat
+ *     print_3600.png    — upscaled 3600×3600 (= 24" @ 150 DPI) digital download
+ *     listing.json      — title, description, tags, price for this listing
+ *
+ * Aggregates into:
+ *   data/etsy-exports/<YYYY-MM-DD>/listings.csv     — Vela/eRank/MarketPress-ready
+ *   data/etsy-exports/<YYYY-MM-DD>/listings.json    — full rich manifest
+ *
+ * After successful asset write, stamps the `etsy-exported` tag so the next
+ * run picks up only NEW designs (incremental).
+ *
+ * Usage:
+ *   node scripts/export-etsy-digital.js --limit 5         # smoke-test 5 designs
+ *   node scripts/export-etsy-digital.js --limit 0         # all unexported
+ *   node scripts/export-etsy-digital.js --price 7.99      # override $5.99 default
+ *   node scripts/export-etsy-digital.js --no-upscale      # skip the 3600px print PNG
+ *
+ * Standing rule: NO TIF gen by default — Mac2 disk runs hot, see build-tif.py.
+ * Add `--tif` to invoke scripts/build-tif.py per design (one at a time).
+ */
+const { execSync, spawnSync } = require('child_process');
+const fs = require('fs');
+const path = require('path');
+
+const argv = process.argv.slice(2);
+const ARG = (k, def) => { const i = argv.indexOf(k); return i >= 0 ? argv[i + 1] : def; };
+const HAS = k => argv.includes(k);
+const opt = {
+  limit: parseInt(ARG('--limit', '5'), 10),
+  price: parseFloat(ARG('--price', '5.99')),
+  upscale: !HAS('--no-upscale'),
+  upscalePx: parseInt(ARG('--upscale-px', '3600'), 10),
+  tif: HAS('--tif'),
+  dryRun: HAS('--dry-run'),
+};
+const TODAY = new Date().toISOString().slice(0, 10);
+const OUT_DIR = path.join(__dirname, '..', 'data', 'etsy-exports', TODAY);
+
+// psql -c chokes on embedded newlines ("invalid command \n"). Collapse to single
+// line before shelling out.
+const oneLine = s => s.replace(/\s+/g, ' ').trim();
+function psqlJson(sql) {
+  const r = execSync(`psql dw_unified -At -q -c ${JSON.stringify(oneLine(sql))}`,
+    { encoding: 'utf8', maxBuffer: 64 * 1024 * 1024 });
+  return r.split('\n').filter(Boolean).map(line => JSON.parse(line));
+}
+function psqlExec(sql) {
+  execSync(`psql dw_unified -q -c ${JSON.stringify(oneLine(sql))}`, { encoding: 'utf8' });
+}
+
+// ── title derivation ────────────────────────────────────────────────────────
+// Drunk-animals prompts open with "<adj> <animal>, …" — capture the animal.
+// Luxe regens prepend "Luxe regen of #X …" — strip and fall through.
+const COLOR_NAMES = [
+  ['#d3', 'Stone'], ['#a8', 'Bronze'], ['#6c', 'Cocoa'], ['#6b', 'Cocoa'],
+  ['#b0', 'Champagne'], ['#36', 'Slate'], ['#1f', 'Forest'], ['#f5', 'Cream'],
+  ['#f2', 'Ivory'], ['#80', 'Stone'], ['#56', 'Moss'], ['#2e', 'Bottle Green'],
+];
+const ANIMAL_WORDS = /\b(red panda|orangutan|scarlet macaw|sloth|elephant|tiger|fox|wolf|bear|lemur|monkey|chimp|giraffe|zebra|peacock|owl|cat|dog|rabbit|deer|otter|raccoon|squirrel|bird|armadillo|hedgehog|koala|capybara|swan|crane|heron|egret|stork|flamingo|parrot|toucan|cockatoo|panda)\b/i;
+function colorName(hex) {
+  if (!hex) return 'Designer';
+  const k = (hex || '').toLowerCase().slice(0, 3);
+  for (const [pfx, name] of COLOR_NAMES) if (k.startsWith(pfx)) return name;
+  return 'Designer';
+}
+function deriveTitle(d) {
+  if (d.ai_title) return d.ai_title.slice(0, 140);
+  const p = (d.prompt || '').replace(/^Luxe regen of #\d+[^.]*\.\s*/i, '');
+  const animal = p.match(ANIMAL_WORDS)?.[1];
+  const subj = animal
+    ? animal.split(' ').map(w => w[0].toUpperCase() + w.slice(1)).join(' ')
+    : (d.category || 'Designer').replace(/[-_]/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
+  const cn = colorName(d.dominant_hex);
+  // Etsy 140-char limit on titles.
+  return `${cn} ${subj} Wallpaper · Seamless Tile · Digital Download · Printable Wallpaper Design`.slice(0, 140);
+}
+function deriveDescription(d, title) {
+  const cn = colorName(d.dominant_hex);
+  const dpiNote = opt.upscale
+    ? `Includes high-resolution ${opt.upscalePx}×${opt.upscalePx} px PNG (24"×24" tile @ 150 DPI) plus the original 1024×1024 source.`
+    : `Includes 1024×1024 PNG source tile.`;
+  return [
+    title,
+    '',
+    'INSTANT DOWNLOAD · This listing is for a digital file only. No physical product ships.',
+    '',
+    `🎨 A seamless wallpaper tile from the Designer Wallcoverings AI-original archive. Every pattern is unique — never repeated, never resold.`,
+    '',
+    `📐 What you get:`,
+    `• ${dpiNote}`,
+    `• Seamless square tile — repeats cleanly across walls of any size`,
+    `• ${cn}-on-ivory palette (or as shown in preview)`,
+    '',
+    `🖼  Use it for:`,
+    `• Print-on-demand wallpaper (Spoonflower, Walls.io, custom mills)`,
+    `• Fabric, gift wrap, scrapbooking, journaling`,
+    `• Phone / desktop backgrounds`,
+    `• Personal craft projects (commercial use NOT included — message me for licensing)`,
+    '',
+    `📂 Files are delivered via Etsy's automatic download after purchase.`,
+    '',
+    `⚠️ Personal use only. Do not redistribute, resell, or claim the design as your own.`,
+    '',
+    `Designed by Designer Wallcoverings · designerwallcoverings.com`,
+  ].join('\n');
+}
+function deriveTags(d, title) {
+  const tags = new Set();
+  const animal = (d.prompt || '').match(ANIMAL_WORDS)?.[1];
+  if (animal) tags.add(animal.toLowerCase());
+  tags.add('seamless wallpaper');
+  tags.add('digital download');
+  tags.add('printable wallpaper');
+  tags.add('wallpaper tile');
+  tags.add('repeat pattern');
+  tags.add('home decor');
+  tags.add('wall art');
+  tags.add('craft pattern');
+  tags.add('spoonflower');
+  tags.add(colorName(d.dominant_hex).toLowerCase() + ' wallpaper');
+  if ((d.category || '').includes('zoo'))      tags.add('animal print');
+  if ((d.category || '').includes('floral'))   tags.add('floral wallpaper');
+  if ((d.category || '').includes('drunk'))    tags.add('whimsical wallpaper');
+  // Etsy caps tags at 13.
+  return [...tags].slice(0, 13);
+}
+
+// ── asset generation ────────────────────────────────────────────────────────
+// 4×4 cover preview + LANCZOS upscale are quick PIL ops; spawn ONE Python
+// per design to keep memory low.
+function buildAssets(srcPng, outDir) {
+  fs.mkdirSync(outDir, { recursive: true });
+  fs.copyFileSync(srcPng, path.join(outDir, 'source_1024.png'));
+  const py = `
+from PIL import Image
+src = Image.open(${JSON.stringify(srcPng)}).convert('RGB')
+W, H = src.size
+
+# 4x4 grid preview — shows the seamless repeat
+COV = 4
+cw = min(2400 // COV, W)
+src_thumb = src.resize((cw, cw), Image.LANCZOS)
+cover = Image.new('RGB', (cw*COV, cw*COV))
+for r in range(COV):
+    for c in range(COV):
+        cover.paste(src_thumb, (c*cw, r*cw))
+cover.save(${JSON.stringify(path.join(outDir, 'cover_4x4.png'))}, optimize=True)
+
+# 3600-px upscale for print (24" @ 150 DPI)
+if ${opt.upscale ? '1' : '0'}:
+    up = src.resize((${opt.upscalePx}, ${opt.upscalePx}), Image.LANCZOS)
+    up.save(${JSON.stringify(path.join(outDir, `print_${opt.upscalePx}.png`))}, optimize=True)
+`;
+  const r = spawnSync('python3', ['-c', py], { encoding: 'utf8', timeout: 60000 });
+  if (r.status !== 0) throw new Error(`PIL failed: ${r.stderr || r.stdout}`);
+}
+
+// ── main ────────────────────────────────────────────────────────────────────
+function main() {
+  if (opt.tif) console.log('⚠ --tif flag is opt-in; will invoke build-tif.py per design (slow + heavy on disk).');
+  console.log(`Etsy export → ${OUT_DIR}`);
+  console.log(`  upscale=${opt.upscale ? opt.upscalePx + 'px' : 'no'}  price=$${opt.price.toFixed(2)}  limit=${opt.limit || 'all'}  dry-run=${opt.dryRun}`);
+
+  const sql = `
+    SELECT row_to_json(t) FROM (
+      SELECT id, category, kind, prompt, ai_title, dominant_hex,
+             motifs, source_dw_sku, width_in, height_in, local_path,
+             tif_path, seed, created_at::text AS created_at, tags
+      FROM all_designs
+      WHERE 'etsy-digital' = ANY(COALESCE(tags, ARRAY[]::text[]))
+        AND NOT 'etsy-exported' = ANY(COALESCE(tags, ARRAY[]::text[]))
+      ORDER BY id
+      ${opt.limit > 0 ? `LIMIT ${opt.limit}` : ''}
+    ) t;`;
+  const rows = psqlJson(sql);
+  console.log(`Found ${rows.length} unexported etsy-digital designs.`);
+  if (!rows.length) return;
+  if (opt.dryRun) { console.log('  (dry-run; not writing assets)'); return; }
+
+  fs.mkdirSync(OUT_DIR, { recursive: true });
+  const manifest = [];
+  let ok = 0, skipped = 0, err = 0;
+  for (const d of rows) {
+    try {
+      if (!d.local_path || !fs.existsSync(d.local_path)) { skipped++; console.log(`  · #${d.id} skip (no local_path)`); continue; }
+      const folder = path.join(OUT_DIR, String(d.id));
+      buildAssets(d.local_path, folder);
+
+      const title = deriveTitle(d);
+      const description = deriveDescription(d, title);
+      const tags = deriveTags(d, title);
+      const listing = {
+        sku: `DW-DL-${d.id}`,
+        id: d.id,
+        title,
+        description,
+        tags,
+        price: opt.price,
+        currency: 'USD',
+        category: d.category,
+        primary_color: d.dominant_hex,
+        files: {
+          source: `${d.id}/source_1024.png`,
+          cover: `${d.id}/cover_4x4.png`,
+          ...(opt.upscale && { print: `${d.id}/print_${opt.upscalePx}.png` }),
+        },
+        listing_type: 'digital_download',
+        is_personalizable: false,
+      };
+      fs.writeFileSync(path.join(folder, 'listing.json'), JSON.stringify(listing, null, 2));
+      manifest.push(listing);
+      psqlExec(`UPDATE all_designs SET tags = (array_remove(COALESCE(tags, ARRAY[]::text[]), 'etsy-exported')) || ARRAY['etsy-exported']::text[] WHERE id=${d.id};`);
+      ok++;
+      if (ok % 10 === 0) process.stdout.write(` ${ok}`);
+      else process.stdout.write('.');
+    } catch (e) {
+      err++; console.error(`\n  ✗ #${d.id}: ${e.message}`);
+    }
+  }
+  console.log(`\n done: ${ok} ok · ${skipped} skipped · ${err} errors`);
+
+  // Aggregate manifests
+  fs.writeFileSync(path.join(OUT_DIR, 'listings.json'), JSON.stringify(manifest, null, 2));
+  const CSV_HEAD = ['sku', 'id', 'title', 'price', 'currency', 'category', 'primary_color', 'tags', 'source_file', 'cover_file', 'print_file'];
+  const csvRow = l => [
+    l.sku, l.id, JSON.stringify(l.title), l.price.toFixed(2), l.currency, l.category || '',
+    l.primary_color || '', JSON.stringify(l.tags.join(',')),
+    l.files.source || '', l.files.cover || '', l.files.print || '',
+  ].join(',');
+  fs.writeFileSync(path.join(OUT_DIR, 'listings.csv'),
+    [CSV_HEAD.join(','), ...manifest.map(csvRow)].join('\n') + '\n');
+  console.log(`\nManifests: ${path.relative(process.cwd(), OUT_DIR)}/listings.{csv,json}`);
+}
+main();
diff --git a/scripts/reroll-tileable.js b/scripts/reroll-tileable.js
index 11f2a0d..754b6c7 100644
--- a/scripts/reroll-tileable.js
+++ b/scripts/reroll-tileable.js
@@ -13,11 +13,44 @@
  * --category <cat> --kind <kind>. Returns the new id(s) on stdout.
  */
 const { execSync, spawnSync } = require('child_process');
+const fs = require('fs');
 const path = require('path');
 
 const ids = process.argv.slice(2).map(s => parseInt(s, 10)).filter(Number.isFinite);
 if (!ids.length) { console.error('usage: node scripts/reroll-tileable.js <id> [<id>…]'); process.exit(1); }
 
+// Cooperate with the cron-driven generator_tick + drunk_animals_tick — both
+// hold /tmp/wallco-ai-wallco-gen.lock (see scripts/with-lock.sh). If we ignore
+// the lock, two comfy generations contend for Mac1's single GPU and
+// spawnSync's timeout kills the loser. Wait politely, then claim it.
+const LOCK_DIR = '/tmp/wallco-ai-wallco-gen.lock';
+const PID_FILE = path.join(LOCK_DIR, 'pid');
+function tryAcquireLock() {
+  try { fs.mkdirSync(LOCK_DIR); fs.writeFileSync(PID_FILE, String(process.pid)); return true; }
+  catch (e) {
+    if (e.code !== 'EEXIST') throw e;
+    // Stale-lock cleanup: if the holder is dead, take over.
+    try {
+      const oldPid = parseInt(fs.readFileSync(PID_FILE, 'utf8'), 10);
+      if (!Number.isFinite(oldPid)) return false;
+      try { process.kill(oldPid, 0); return false; } catch { /* dead */ }
+      fs.rmSync(LOCK_DIR, { recursive: true, force: true });
+      return tryAcquireLock();
+    } catch { return false; }
+  }
+}
+function waitForLock(timeoutSec = 900) {
+  const start = Date.now();
+  while (!tryAcquireLock()) {
+    if ((Date.now() - start) > timeoutSec * 1000) throw new Error(`waited ${timeoutSec}s for wallco-gen lock; giving up`);
+    process.stdout.write('.'); // heartbeat
+    execSync('sleep 5');
+  }
+}
+function releaseLock() { try { fs.rmSync(LOCK_DIR, { recursive: true, force: true }); } catch {} }
+process.on('SIGINT', () => { releaseLock(); process.exit(130); });
+process.on('SIGTERM', () => { releaseLock(); process.exit(143); });
+
 function psql(sql) {
   return execSync(`psql dw_unified -At -q -F'\\t' -c ${JSON.stringify(sql)}`,
     { encoding: 'utf8', maxBuffer: 16 * 1024 * 1024 }).trim();
@@ -32,6 +65,9 @@ function loadDesign(id) {
 
 for (const id of ids) {
   console.log(`\n══ re-rolling #${id} (tileable workflow) ════════════════════════════════`);
+  process.stdout.write('  waiting for wallco-gen lock');
+  waitForLock();
+  console.log(' acquired.');
   const d = loadDesign(id);
   if (!d.prompt) { console.log(`  ✗ #${id} has no prompt; skipping`); continue; }
   console.log(`  category=${d.category}  kind=${d.kind}  prompt=${d.prompt.length} chars`);
@@ -47,9 +83,14 @@ for (const id of ids) {
     '--kind', d.kind || 'seamless_tile',
     '--category', d.category || 'mixed',
     '--prompts', cleanPrompt,
-  ], { stdio: ['ignore', 'inherit', 'inherit'], env, timeout: 300000 });
+  // 15 min — tileable workflow + auto-retry-on-seam-fail can take 5–10 min
+  // when Mac1 has concurrent jobs (drunk-animals nightly etc.). 300s was too
+  // tight (PNG landed on disk but spawnSync killed the child before PG insert).
+  ], { stdio: ['ignore', 'inherit', 'inherit'], env, timeout: 900000 });
+  releaseLock();
   if (r.status !== 0) { console.error(`  ✗ #${id} generation failed (status ${r.status})`); continue; }
   const after = parseInt(psql(`SELECT COALESCE(MAX(id),0) FROM all_designs;`), 10);
   if (after > before) console.log(`  ✓ #${id} → new #${after}`);
   else console.log(`  ? #${id} ran but no new id detected`);
 }
+releaseLock();
diff --git a/scripts/sample-drunk-zoo-36.js b/scripts/sample-drunk-zoo-36.js
new file mode 100644
index 0000000..87b1db5
--- /dev/null
+++ b/scripts/sample-drunk-zoo-36.js
@@ -0,0 +1,74 @@
+#!/usr/bin/env node
+/**
+ * One-shot sample generator for drunk-zoo-36 with the CURRENT spec (post-2026-05-25:
+ * mandatory alcohol + lit joint + swinging). Replicates composeDrunkZoo36Prompt from
+ * night-builder.js without requiring it (night-builder auto-runs its cycle on require).
+ * Usage: node scripts/sample-drunk-zoo-36.js [N=3]
+ */
+const path = require('path');
+const { spawn } = require('child_process');
+const SHARED = require('./drunk_motif_shared');
+
+const N = parseInt(process.argv[2] || '3', 10);
+const ROOT = path.join(__dirname, '..');
+
+// Three contrasting colorways for the heterogeneous sample (per the bulk-sample rule).
+const COLORWAYS = [
+  { slug: 'bone-ivory',      name: 'Bone Ivory',      hex: '#F2EADB', tone: 'warm-ivory' },
+  { slug: 'midnight-navy',   name: 'Midnight Navy',   hex: '#1B2340', tone: 'deep-navy' },
+  { slug: 'forest-loden',    name: 'Forest Loden',    hex: '#3A4A33', tone: 'forest-green' },
+];
+
+const ZOO_VIGNETTES = [
+  'pair of giraffes mid-toast with cognac snifters, central giant champagne bottle popping with cork mid-air, behind them a wild backdrop of mismatched apothecary bottles like a curio shelf, each giraffe with a lit joint, both hanging from a vine',
+  'two orangutans symmetric, each holding a hurricane glass of mai tai with paper parasol, behind them a backdrop of skull-shaped vodka bottles peering out, each with a lit joint, both swinging from a chandelier',
+  'pair of sloths upside-down on a thick vine, each clutching a martini coupe, single absinthe fountain centered between them with sugar cube on slotted spoon, each with a lit joint, mid-swing arc visible',
+];
+
+const SHARED_ARTDIR = (
+  `KEEP IT SIMPLE — sparse, refined, lavishly negative-space-driven. At LEAST 75-85% of the tile area is solid clean ground tone with NOTHING in it. Motifs are FEW (2-4 per tile maximum), well-spaced, never edge-to-edge, never tessellated, never cluttered. ` +
+  `Up to 4 colors max, default 2-tone. ABSOLUTELY NO bleed between layers — single-layer screen-print only. ` +
+  `NO ghost layer, NO faded background, NO atmospheric depth. The ground is one completely uniform flat solid color from edge to edge. ` +
+  `Reference: panoramic-scenic & Cie, Designers Guild, refined-handcraft. Sparse. Refined. ` +
+  `Hard clean razor-sharp edges. No half-tones, no gradient, no watercolor. Every figure region is one flat color. ` +
+  `Strictly NOT Haeckel, NOT Merian, NOT Audubon, NOT botanical-plate, NOT cartoon, NOT Pixar. ` +
+  `Square aspect ratio, seamless tile repeat (edges meet cleanly), flat-paper rendering, no watermark, no signature, no text, no logos.`
+);
+
+function composeDrunkZoo36Prompt(cw) {
+  const vig = ZOO_VIGNETTES[Math.floor(Math.random() * ZOO_VIGNETTES.length)];
+  const tex = SHARED.TEXTURE_GROUNDS[Math.floor(Math.random() * SHARED.TEXTURE_GROUNDS.length)];
+  const bottleBackdrop = SHARED.BOTTLE_BACKDROPS[Math.floor(Math.random() * SHARED.BOTTLE_BACKDROPS.length)];
+  const refClause = SHARED.pickReferenceClause ? SHARED.pickReferenceClause('drunk-zoo-36') : '';
+  return (
+    `Drunk Zoo 36" repeat wallpaper — ${cw.name} colorway. ` +
+    `Substrate: real ${tex.slug} (${tex.voice.replace(/^rendered on /, '')}). ` +
+    `Ground: solid ${cw.tone} (${cw.hex}) tinted over the natural-fiber substrate so the texture grain still reads through. ` +
+    `Figure: bone-ivory (#F2EADB) single-ink. ` +
+    `Vignette: ${vig}. Renders at wall-scale 36-inch seamless tile — motifs are LARGE, anchored on the central vertical axis of symmetry, generous breathing room of clean ground around each motif. ` +
+    (refClause ? `Reference anchor: ${refClause}. ` : '') +
+    `Secondary detail in negative space: ${bottleBackdrop} (rendered as a tiny bone-ivory ink silhouette at the very back, smaller scale than the main pair, not competing). ` +
+    `MANDATORY motifs visible in EVERY vignette: (1) alcohol being consumed (drink glass or bottle held to mouth/in paw), (2) a lit handrolled cannabis joint with a visible curl of smoke, (3) the animal(s) swinging from something — vine, branch, chandelier, rope, or porch swing — mid-swing arc visible. ` +
+    `Each animal is one FLAT STENCIL SILHOUETTE in bone-ivory ink — no interior shading, no anatomical line-detail, no spots, no stripes, no fur texture. The joint and smoke wisp are tiny silhouette props inside the bone-ivory ink layer. NO foliage other than a small cannabis-leaf silhouette prop. ` +
+    `Whimsical playful joyful mischievous tone (NEVER grim). ` +
+    SHARED_ARTDIR
+  );
+}
+
+console.log(`drunk-zoo-36 sample × ${N} (corrected spec: alcohol+joint+swings mandatory)\n`);
+(async () => {
+  for (let i = 0; i < N; i++) {
+    const cw = COLORWAYS[i % COLORWAYS.length];
+    const prompt = composeDrunkZoo36Prompt(cw);
+    console.log(`[${i+1}/${N}] cw=${cw.slug}  prompt[120]=${prompt.slice(0, 120)}…`);
+    await new Promise((resolve) => {
+      const child = spawn('node', [
+        path.join(ROOT, 'scripts', 'generate_designs.js'),
+        '--n', '1', '--kind', 'seamless_tile', '--category', 'drunk-zoo-36',
+        '--prompts', prompt,
+      ], { cwd: ROOT, stdio: ['ignore', 'inherit', 'inherit'] });
+      child.on('exit', resolve);
+    });
+  }
+  console.log('\nsample complete — review at /admin/cactus-curator?category=drunk-zoo-36');
+})();
diff --git a/scripts/seam_break_scan.py b/scripts/seam_break_scan.py
new file mode 100644
index 0000000..6653f10
--- /dev/null
+++ b/scripts/seam_break_scan.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+"""Pixel-based seam-break scanner for wallco tiles. Free (no LLM), deterministic,
+fast (~50ms per 1024px tile via numpy). Highlights regions where shapes DON'T line
+up across the wrap boundary — both horizontal seam (left↔right) and vertical seam
+(top↔bottom).
+
+Detection logic (per row for V-seam, per col for H-seam):
+  Compare the wrap-adjacency ΔE (pixel[r, W-1] vs pixel[r, 0]) to the distribution
+  of INTERNAL adjacent-pixel ΔEs in that same row [0..W-2]. A seamless tile (even
+  with a shape edge crossing the boundary) produces a wrap ΔE that matches a
+  legitimate internal adjacent pair — same pattern flow. A BROKEN tile produces a
+  wrap ΔE that's anomalous: higher than the row's natural maximum, or a mid-tone
+  value that doesn't occur in a 2-ink screen-print.
+
+  flag row if  wrap_ΔE > MIN_ΔE  AND  wrap_ΔE > 1.5 * (row's 99th-percentile internal adj-ΔE)
+
+Output (stdout JSON): { breaks:[{x,y,w,h,label,reason}], score, v_breaks, h_breaks,
+                       wrap_dE_max, internal_dE_max }
+"""
+import sys, json
+import numpy as np
+from PIL import Image
+
+MIN_DE = 25            # ignore tiny wrap differences (sub-pixel AA jitter)
+ANOM_RATIO = 1.5       # wrap > 1.5 × row's 99th percentile internal adj = anomaly
+MIN_RUN = 4            # cluster: min contiguous anomalous rows/cols to flag
+
+png = sys.argv[1]
+im = Image.open(png).convert('RGB')
+a = np.asarray(im, dtype=np.int16)
+H, W = a.shape[:2]
+
+def cluster(flags):
+    """Convert a 1D boolean array to contiguous (start, end_inclusive) runs ≥ MIN_RUN."""
+    runs = []
+    i = 0
+    while i < len(flags):
+        if flags[i]:
+            j = i
+            while j + 1 < len(flags) and flags[j+1]: j += 1
+            if j - i + 1 >= MIN_RUN: runs.append((i, j))
+            i = j + 1
+        else:
+            i += 1
+    return runs
+
+def axis_breaks(a, axis, side_w=0.10):
+    """Detect seam breaks along axis (1=vertical seam = wrap left↔right, 0=horizontal
+    seam = wrap top↔bottom). Returns (runs, max_wrap, max_internal, flag_array)."""
+    if axis == 1:                                       # vertical seam
+        wrap = np.abs(a[:, 0, :] - a[:, -1, :]).sum(1)  # per-row ΔE (sum over channels)
+        internal_max = np.percentile(np.abs(np.diff(a, axis=1)).sum(2), 99, axis=1)
+    else:                                               # horizontal seam
+        wrap = np.abs(a[0, :, :] - a[-1, :, :]).sum(1)  # per-col ΔE
+        internal_max = np.percentile(np.abs(np.diff(a, axis=0)).sum(2), 99, axis=0)
+    flags = (wrap > MIN_DE) & (wrap > ANOM_RATIO * np.maximum(internal_max, 1))
+    return cluster(flags), int(wrap.max()), int(internal_max.max()), flags
+
+v_runs, vw_max, vi_max, _ = axis_breaks(a, axis=1)
+h_runs, hw_max, hi_max, _ = axis_breaks(a, axis=0)
+
+breaks = []
+# vertical-seam breaks render as a thin band hugging the RIGHT edge of the tile
+for s, e in v_runs:
+    breaks.append({
+        'x': round(0.88, 4), 'y': round(s / H, 4),
+        'w': round(0.12, 4),  'h': round((e - s + 1) / H, 4),
+        'label': 'SEAM BREAK', 'reason': f'L↔R wrap row {s}-{e}', 'auto': True,
+    })
+# horizontal-seam breaks render as a thin band hugging the BOTTOM edge
+for s, e in h_runs:
+    breaks.append({
+        'x': round(s / W, 4), 'y': round(0.88, 4),
+        'w': round((e - s + 1) / W, 4), 'h': round(0.12, 4),
+        'label': 'SEAM BREAK', 'reason': f'T↔B wrap col {s}-{e}', 'auto': True,
+    })
+
+# score: 100 = perfect; deduct % of axis flagged
+v_flagged_frac = sum((e - s + 1) for s, e in v_runs) / max(H, 1)
+h_flagged_frac = sum((e - s + 1) for s, e in h_runs) / max(W, 1)
+score = round(max(0, 100 * (1 - max(v_flagged_frac, h_flagged_frac))), 1)
+
+print(json.dumps({
+    'breaks': breaks,
+    'score': score,
+    'v_breaks': len(v_runs),
+    'h_breaks': len(h_runs),
+    'wrap_dE_max_v': vw_max, 'wrap_dE_max_h': hw_max,
+    'internal_dE_max_v': vi_max, 'internal_dE_max_h': hi_max,
+}))
diff --git a/server.js b/server.js
index 9822b0b..b691888 100644
--- a/server.js
+++ b/server.js
@@ -1605,6 +1605,46 @@ app.post('/api/admin/cactus/:id/annotations', express.json({ limit: '32kb' }), (
   } catch (e) { res.status(500).json({ ok: false, error: e.message }); }
 });
 
+// GET /api/admin/seam-review/:id — pixel-based seam-break scanner (free, fast,
+// deterministic). Highlights regions where shapes DON'T line up across the wrap
+// boundary (L↔R or T↔B). Returns breaks[] + score 0-100 — chips at ≥95 are clean
+// enough to skip; <70 need a look. Persists the breaks as auto annotations on
+// bad_examples so they overlay in the curator via the existing renderBoxes path.
+app.get('/api/admin/seam-review/:id', (req, res) => {
+  if (!isAdmin(req)) return res.status(404).json({ error: 'not found' });
+  const id = parseInt(req.params.id, 10);
+  if (!Number.isFinite(id) || id < 1) return res.status(400).json({ error: 'bad id' });
+  try {
+    const lp = (psqlQuery(`SELECT local_path FROM all_designs WHERE id=${id} LIMIT 1;`) || '').trim();
+    if (!lp || !fs.existsSync(lp)) return res.status(404).json({ error: 'no local file' });
+    const { spawnSync } = require('child_process');
+    const r = spawnSync(
+      path.join(__dirname, 'scripts', 'vectorize', '.venv', 'bin', 'python3'),
+      [path.join(__dirname, 'scripts', 'seam_break_scan.py'), lp],
+      { encoding: 'utf8', timeout: 30000, maxBuffer: 4_000_000 }
+    );
+    if (r.status !== 0) return res.status(500).json({ error: 'scan failed', detail: (r.stderr || '').slice(0, 200) });
+    const j = JSON.parse((r.stdout || '').trim());
+    // Persist as auto annotations (preserving any confirmed/manual boxes already there)
+    // — merge: drop prior auto boxes with label 'SEAM BREAK', append fresh ones.
+    if (req.query.persist !== '0') {
+      const prior = (() => {
+        try { return JSON.parse(psqlQuery(`SELECT COALESCE(boxes::text,'[]') FROM bad_examples WHERE design_id=${id} LIMIT 1;`) || '[]'); }
+        catch { return []; }
+      })();
+      const keep = prior.filter(b => !(b.auto && b.label === 'SEAM BREAK'));
+      const merged = keep.concat(j.breaks || []);
+      const tagsSql = merged.length ? "ARRAY['auto_seam_break']::text[]" : "ARRAY[]::text[]";
+      psqlExecLocal(
+        `INSERT INTO bad_examples (design_id, boxes, defect_tags, source) ` +
+        `VALUES (${id}, '${JSON.stringify(merged).replace(/'/g, "''")}'::jsonb, ${tagsSql}, 'seam_review') ` +
+        `ON CONFLICT (design_id) DO UPDATE SET boxes=EXCLUDED.boxes, defect_tags=(SELECT array_agg(DISTINCT t) FROM unnest(bad_examples.defect_tags || EXCLUDED.defect_tags) t), source='seam_review';`
+      );
+    }
+    res.json({ ok: true, id, ...j });
+  } catch (e) { res.status(500).json({ error: e.message }); }
+});
+
 // GET /api/admin/cactus/:id/auto-id — Gemini vision SUGGESTS candidate bad-area
 // boxes (Seams/Poor edges/Cartoonish/Blurry/Ghost/Bleed). READ-ONLY: returns
 // candidates for the curator to confirm/delete/add — nothing is saved here.

← 2ca51dc drunk-curator: add sort (density/character/newest) + generat  ·  back to Wallco Ai  ·  curator: fix bgswap matcher (gen name is 'gemini-…-bg-swap', fd80752 →