{
  "description": "Source-reviewed hardware projects built with coding agents. Not hands-on tested. Setup classes distinguish finished devices from kits and experiments.",
  "projects": [
    {
      "slug": "copilot-morning-print",
      "title": "A printed morning brief from GitHub Copilot",
      "hardware": "Receipt-style printer — exact model unconfirmed",
      "summary": "Wake up to a paper briefing with the weather, today’s tasks, code reviews and a workout, printed automatically each morning.",
      "topic": "Printing & tools",
      "setup": "Computer companion",
      "physicalRole": "A physical printer turns a personalized daily briefing into a paper checklist you can keep on your desk. The creator’s photo shows weather, tasks, a dependency-update review, a workout, notes space and a quote.",
      "beforeYouBuild": "The creator shared the finished printout and GitHub’s automation documentation, not a complete build tutorial or printer-control code. Their printer purchase link returned 404 during review, so the exact printer model, connection and driver requirements remain unconfirmed. A local setup also needs the computer and printer available when the automation runs.",
      "codingTool": "GitHub Copilot",
      "evidence": "GPS (@madebygps) writes: “Made an automation so every morning GitHub Copilot prints this out for me.” The post includes the finished printout; a follow-up links to GitHub Copilot app automation docs. This confirms the Copilot automation, but not how the printer integration was coded.",
      "sourceUrl": "https://x.com/madebygps/status/2117966844963246254",
      "supportingUrl": "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations",
      "sourceType": "Creator social showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "src": "/images/project-media/copilot-morning-print-a03c145136-1200.webp",
        "thumb": "/images/project-media/copilot-morning-print-a03c145136-480.webp",
        "srcset": "/images/project-media/copilot-morning-print-a03c145136-480.webp 480w, /images/project-media/copilot-morning-print-a03c145136-800.webp 800w, /images/project-media/copilot-morning-print-a03c145136-1200.webp 1200w",
        "width": 1536,
        "height": 2048,
        "alt": "GPS holding a printed morning brief with weather, tasks, code reviews and a workout",
        "kind": "Build photo",
        "credit": "GPS (@madebygps) · original project photo",
        "creditUrl": "https://x.com/madebygps/status/2117966844963246254",
        "url": "https://pbs.twimg.com/media/HWSHnqDWAAEESsd?format=webp&name=large"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Receipt-style printer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Print the daily briefing.",
            "notes": "Creator purchase link was dead; no model or interface is established.",
            "evidence": "Creator source",
            "sources": [
              "https://x.com/madebygps/status/2117966844963246254",
              "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer running GitHub Copilot automation",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Must be awake with the printer available at the scheduled time.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://x.com/madebygps/status/2117966844963246254",
              "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Printer paper",
            "quantity": "As needed",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Consumable.",
            "notes": "Width, roll diameter and paper type depend on the unidentified printer.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://x.com/madebygps/status/2117966844963246254",
              "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Printer connection and power",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Cable or network connection plus the matched supply.",
            "notes": "Do not assume USB, Bluetooth, ESC/POS or a particular voltage.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://x.com/madebygps/status/2117966844963246254",
              "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact printer, driver/protocol, connection, power supply and paper size are undisclosed. A reproduction shopping list cannot yet be completed."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://x.com/madebygps/status/2117966844963246254"
          },
          {
            "label": "Code / supporting source",
            "url": "https://docs.github.com/en/copilot/how-tos/github-copilot-app/using-automations"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "pocket-pet-camera",
      "title": "Pocket virtual pet and remote camera viewfinder",
      "hardware": "Waveshare ESP32-S3 Touch AMOLED 1.75C",
      "summary": "A pendant with a Tamagotchi-like pet, conversation history, voice replies, watch face and phone-camera remote shutter.",
      "topic": "Robots & toys",
      "setup": "Device firmware",
      "physicalRole": "The pendant’s screen, microphone, speaker and camera-shutter controls become a pocket companion.",
      "beforeYouBuild": "AI replies need external services. The creator does not claim the generated code is secure.",
      "codingTool": "Claude Code",
      "evidence": "Sean Hollister describes plugging the device into his PC and having Claude Code implement each feature; firsthand photos and iteration account.",
      "sourceUrl": "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code",
      "supportingUrl": "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm",
      "sourceType": "First-person showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "waveshare-esp32-s3-touch-amoled-175c",
          "fit": "Exact model",
          "note": "Buy the cased 1.75C model, not a bare development board or a different screen size."
        }
      ],
      "photo": {
        "url": "https://platform.theverge.com/wp-content/uploads/sites/2/2026/10/verge-sean-hollister-muse-gadget-331A2564-01-3.jpg?quality=90&strip=all&crop=20.366851851852%2C0%2C63.266296296296%2C94.899920311255&w=2400",
        "alt": "Waveshare ESP32-S3 Touch AMOLED 1.75C — build photo",
        "credit": "Sean Hollister / The Verge",
        "kind": "Build photo",
        "src": "/images/project-media/pocket-pet-camera-6618239435-1200.webp",
        "thumb": "/images/project-media/pocket-pet-camera-6618239435-480.webp",
        "srcset": "/images/project-media/pocket-pet-camera-6618239435-480.webp 480w, /images/project-media/pocket-pet-camera-6618239435-800.webp 800w, /images/project-media/pocket-pet-camera-6618239435-1200.webp 1200w",
        "width": 1701,
        "height": 1692,
        "creditUrl": "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "One display is enough for the pet interface. The remote viewfinder is a separate configuration and needs a compatible camera feed. Cloud replies also need service accounts.",
        "items": [
          {
            "name": "Waveshare ESP32-S3 Touch AMOLED 1.75C",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Finished display, microphone and speaker device.",
            "notes": "Buy the cased 1.75C model, not a bare development board or a different screen size.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code",
              "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "waveshare-esp32-s3-touch-amoled-175c",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code",
              "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code",
              "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Remote camera device / stream",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Supply the viewfinder feed.",
            "notes": "Only for the remote-camera feature. This display is not itself a camera; creator model and streaming requirements are not identified.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code",
              "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The camera-source model and protocol are not established for the viewfinder feature.",
          "Check the chosen device package for battery and charging accessories."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/gadgets/1013375/muse-charm-gadgets-preview-waveshare-esp32-claude-vibe-code"
          },
          {
            "label": "Code / supporting source",
            "url": "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "ceiling-flight-radar",
      "title": "Planes and stars projected onto a bedroom ceiling",
      "hardware": "RTL-SDR receiver + Raspberry Pi or similar computer + projector",
      "summary": "Receives aircraft broadcasts and projects live aircraft, stars, Moon and satellite positions overhead.",
      "topic": "Displays",
      "setup": "Multi-device setup",
      "physicalRole": "A radio receiver captures aircraft signals; a projector turns them into a live ceiling display.",
      "beforeYouBuild": "Requires a receiver, computer and projector. Exact components and original code are not established in the report.",
      "codingTool": "Claude; exact coding interface not named",
      "evidence": "Article explicitly attributes the software to vibe coding with Anthropic Claude and describes the receiver-to-renderer architecture.",
      "sourceUrl": "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/",
      "supportingUrl": "",
      "sourceType": "Reported showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://pbs.twimg.com/amplify_video_thumb/2062006354546421761/img/UCjB8McMF2HF0zAo?format=webp&name=medium",
        "alt": "Live aircraft tracks projected on the ceiling",
        "credit": "Project video shared by Om Patel",
        "kind": "Demo still",
        "src": "/images/project-media/ceiling-flight-radar-bd55277b64-1200.webp",
        "thumb": "/images/project-media/ceiling-flight-radar-bd55277b64-480.webp",
        "srcset": "/images/project-media/ceiling-flight-radar-bd55277b64-480.webp 480w, /images/project-media/ceiling-flight-radar-bd55277b64-800.webp 800w, /images/project-media/ceiling-flight-radar-bd55277b64-1200.webp 1200w",
        "width": 675,
        "height": 1200,
        "creditUrl": "https://x.com/om_patel5/status/2062007565945352559"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "RTL-SDR USB receiver",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Receive local aircraft broadcasts.",
            "notes": "Exact tuner/revision not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "ADS-B antenna and matching coax/adapter",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Receive the aircraft radio band.",
            "notes": "Match receiver connector and local aircraft broadcast band; antenna SKU and cable loss were not provided.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Raspberry Pi or similar host computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Decode receiver data and render the map.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Projector",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Project onto the ceiling.",
            "notes": "Exact model, brightness and throw distance not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Host storage and power",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Boot and run the selected computer.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Video cable / adapter",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the host to the projector.",
            "notes": "Connector depends on the selected computer and projector.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Secure projector mount",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Hold the projection safely.",
            "notes": "Match the projector and ceiling geometry; do not balance a powered projector on an unstable surface.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Receiver, host, projector and antenna models are not identified. No complete original BOM or code was established. Do not buy a specific bundle on the strength of this article alone."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.financialexpress.com/life/technology-ai-coder-converts-bedroom-ceiling-into-a-live-flightradar-using-vibe-coding-4258814/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "sonos-arc-profiles",
      "title": "Custom Sonos Arc sound-profile controller",
      "hardware": "Sonos Arc",
      "summary": "One-click and scheduled profiles for volume, EQ and subwoofer settings instead of repeatedly opening the stock app.",
      "topic": "Voice & audio",
      "setup": "Computer companion",
      "physicalRole": "The software changes the real speaker’s volume, EQ and subwoofer settings.",
      "beforeYouBuild": "Shown for Sonos Arc; do not assume other Sonos speakers are compatible.",
      "codingTool": "Claude Code",
      "evidence": "TechRadar names the creator and explicitly says they used Claude Code to build Arc Controller.",
      "sourceUrl": "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
      "supportingUrl": "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/",
      "sourceType": "Reported creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "sonos-arc",
          "fit": "Exact model",
          "note": "Original Arc; Arc Ultra and Era products are not verified substitutes."
        }
      ],
      "photo": {
        "url": "https://media.sonos.com/images/znqtjj88/production/5f7bdd4e7cf8ab911e0a1ff3b5238f58e293bd1c-3000x1688.jpg?w=1200&q=80",
        "alt": "Sonos Arc soundbar in a home",
        "credit": "Sonos · hardware reference, not the custom app",
        "kind": "Product photo",
        "src": "/images/project-media/sonos-arc-profiles-14ae58c25c-1200.webp",
        "thumb": "/images/project-media/sonos-arc-profiles-14ae58c25c-480.webp",
        "srcset": "/images/project-media/sonos-arc-profiles-14ae58c25c-480.webp 480w, /images/project-media/sonos-arc-profiles-14ae58c25c-800.webp 800w, /images/project-media/sonos-arc-profiles-14ae58c25c-1200.webp 1200w",
        "width": 1200,
        "height": 675,
        "creditUrl": "https://www.sonos.com/en-gb/blog/sonos-arc-with-dolby-atmos"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "This changes control software, not the soundbar hardware. Reuse an installed Arc and its cables; no additional sensor, display or microcontroller is established.",
        "items": [
          {
            "name": "Sonos Arc",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Soundbar controlled by the custom app.",
            "notes": "Original Arc; Arc Ultra and Era products are not verified substitutes.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.sonos.com/en-us/guides/arc",
              "match": "Manufacturer hardware guide",
              "verification": "Page checked",
              "reference": true,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
              "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
            ],
            "sourcingStatus": "Reference only — not a purchase link",
            "catalogSlug": "sonos-arc",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Computer running the custom controls",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Needs access to the soundbar on the same trusted home network.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
              "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Home network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the host and soundbar.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
              "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the supply specified for this exact device; check whether it is included.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
              "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "TV and HDMI ARC/eARC cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "For TV-audio use.",
            "notes": "Not an extra requirement merely to test app control; reuse the existing soundbar setup.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai",
              "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.techradar.com/audio/people-have-been-making-alternatives-to-the-sonos-app-using-ai"
          },
          {
            "label": "Code / supporting source",
            "url": "https://www.reddit.com/r/sonos/comments/1s2qff8/i_used_claude_code_to_build_a_custom_sonos_arc/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "modded-cycles",
      "title": "Modded Cycles: multitrack recording and new instruments",
      "hardware": "Elektron Model:Cycles",
      "summary": "Adds six-track USB audio, a sampler and additional synthesis options to an existing groovebox.",
      "topic": "Voice & audio",
      "setup": "Unofficial firmware",
      "physicalRole": "New firmware adds multitrack USB audio and sound engines to a physical groovebox.",
      "beforeYouBuild": "Unofficial firmware can brick the device or conflict with future updates. Later features have multiple contributors.",
      "codingTool": "Claude Code",
      "evidence": "Creator tells The Verge he used Claude Code to implement the first six-track USB-audio hack; project website confirms features.",
      "sourceUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
      "supportingUrl": "https://18nelli18.github.io/Modded-Cycles/",
      "sourceType": "Reported creator interview + project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "elektron-model-cycles",
          "fit": "Exact model",
          "note": "Model:Samples is not the specified target."
        }
      ],
      "photo": {
        "url": "https://platform.theverge.com/wp-content/uploads/sites/2/2026/08/elektron-model-cycles-model-samples-8.jpg?quality=90&strip=all&crop=0%2C0%2C100%2C100&w=2400",
        "alt": "Elektron Model:Cycles — product photo",
        "credit": "Terrence O’Brien / The Verge",
        "kind": "Product photo",
        "src": "/images/project-media/modded-cycles-d30ed4a57c-1200.webp",
        "thumb": "/images/project-media/modded-cycles-d30ed4a57c-480.webp",
        "srcset": "/images/project-media/modded-cycles-d30ed4a57c-480.webp 480w, /images/project-media/modded-cycles-d30ed4a57c-800.webp 800w, /images/project-media/modded-cycles-d30ed4a57c-1200.webp 1200w",
        "width": 2400,
        "height": 1600,
        "creditUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Back up first and retain the official recovery procedure. The current guide combines several contributors’ modifications; a Model:Cycles purchase does not include third-party firmware rights.",
        "items": [
          {
            "name": "Elektron Model:Cycles",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Six-track groovebox.",
            "notes": "Model:Samples is not the specified target.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.elektron.se/product/modelcycles",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://18nelli18.github.io/Modded-Cycles/"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "elektron-model-cycles",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB (Model:Cycles-compatible) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Use the port/cable specified in the Model:Cycles manual; browser flashing uses USB.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://18nelli18.github.io/Modded-Cycles/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer with a supported flashing browser",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://18nelli18.github.io/Modded-Cycles/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the original matched supply; keep power stable while updating.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://18nelli18.github.io/Modded-Cycles/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Headphones or powered audio system",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Hear the output.",
            "notes": "Choose the correct plugs or adapters for the device outputs; USB audio is another route.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://18nelli18.github.io/Modded-Cycles/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
          },
          {
            "label": "Code / supporting source",
            "url": "https://18nelli18.github.io/Modded-Cycles/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "fm1-x0x",
      "title": "X0X: turn a small synth into a full groovebox",
      "hardware": "M-VAVE FM-1",
      "summary": "909 and 808 drums, dual acid basslines, breakbeat playback and song sequencing on the original device.",
      "topic": "Voice & audio",
      "setup": "Unofficial firmware",
      "physicalRole": "The synth’s buttons and audio output become a drum machine and sequencer.",
      "beforeYouBuild": "Beta replacement firmware. Busy patterns can reduce audio quality; save a recovery path before flashing.",
      "codingTool": "Claude / AI coding agents",
      "evidence": "The Verge specifically lists X0X among firmwares with Claude attribution or explicit AI disclosures; repository explains the instrument and testing setup.",
      "sourceUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
      "supportingUrl": "https://github.com/charlesvestal/fm1-x0x",
      "sourceType": "Reported showcase + primary project write-up",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m-vave-fm-1",
          "fit": "Exact model",
          "note": "Check the selected seller variant and flash revision. New UC25HQ80 units are not equivalent to a tested older unit. Music Arms lists the actual FM-1; shipping outside Thailand and flash revision must be confirmed. A seller page does not verify third-party firmware compatibility."
        }
      ],
      "photo": {
        "url": "https://camo.githubusercontent.com/6460907e2407b915c3c727232848ae6021103fdc300e32ec4cefa0e14f0d8161/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f635a4c59725a614c44556b2f6d617872657364656661756c742e6a7067",
        "alt": "X0X running on the FM-1 (watch on YouTube)",
        "credit": "Charles Vestal · X0X demo",
        "kind": "Demo still",
        "src": "/images/project-media/fm1-x0x-02052fabf9-1200.webp",
        "thumb": "/images/project-media/fm1-x0x-02052fabf9-480.webp",
        "srcset": "/images/project-media/fm1-x0x-02052fabf9-480.webp 480w, /images/project-media/fm1-x0x-02052fabf9-800.webp 800w, /images/project-media/fm1-x0x-02052fabf9-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "creditUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "M-VAVE FM-1",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware target.",
            "notes": "Check the selected seller variant and flash revision. New UC25HQ80 units are not equivalent to a tested older unit. Music Arms lists the actual FM-1; shipping outside Thailand and flash revision must be confirmed. A seller page does not verify third-party firmware compatibility.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.musicarms.net/m-vave-fm-1/",
              "match": "Exact model; Thai retailer, hardware/flash revision not guaranteed",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": false,
              "reference": false
            },
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/charlesvestal/fm1-x0x",
              "https://www.musicarms.net/m-vave-fm-1/"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m-vave-fm-1",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/charlesvestal/fm1-x0x",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer with Chrome or Edge",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/charlesvestal/fm1-x0x"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Headphones / speakers or USB audio host",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Monitor the synthesizer output.",
            "notes": "FM-1 already has an onboard speaker. External headphones, speakers or USB audio are optional monitoring routes; confirm the selected custom firmware supports the route.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/charlesvestal/fm1-x0x",
              "https://www.musicarms.net/m-vave-fm-1/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "MIDI keyboard / controller",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Play external MIDI notes.",
            "notes": "Not needed for all sequencing modes; choose a compatible MIDI connection.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/charlesvestal/fm1-x0x"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Confirm the installed flash chip and the chosen firmware release before purchase; newer UC25HQ80 units may require beta support.",
          "Thai retailer identified; international shipping and the supplied hardware revision remain unverified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/charlesvestal/fm1-x0x"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "fm1-felucca",
      "title": "Felucca: alternative synthesizer firmware",
      "hardware": "M-VAVE FM-1",
      "summary": "Alternative sound engines, presets and a browser editor for a low-cost hardware synth.",
      "topic": "Voice & audio",
      "setup": "Unofficial firmware",
      "physicalRole": "Alternative firmware changes the FM-1’s playable sound engines and presets.",
      "beforeYouBuild": "FM-1 only. Newer flash revisions had beta, untested support when the source was reviewed.",
      "codingTool": "AI coding agents; Claude attributed in coverage",
      "evidence": "Primary README explicitly says AI coding agents assist code, tests, documentation and maintenance; The Verge explains the hardware transformation.",
      "sourceUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
      "supportingUrl": "https://github.com/hugelton/Felucca",
      "sourceType": "Reported showcase + explicit primary AI disclosure",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m-vave-fm-1",
          "fit": "Exact model",
          "note": "Check the selected seller variant and flash revision. New UC25HQ80 units are not equivalent to a tested older unit. Music Arms lists the actual FM-1; shipping outside Thailand and flash revision must be confirmed. A seller page does not verify third-party firmware compatibility."
        }
      ],
      "photo": {
        "url": "https://synthanatomy.com/wp-content/uploads/2026/07/M-VAVE-FM-1-v16.jpg",
        "alt": "M-VAVE FM-1 synthesizer",
        "credit": "Synth Anatomy · stock firmware shown, not Felucca",
        "kind": "Product photo",
        "src": "/images/project-media/fm1-felucca-31fedac250-1200.webp",
        "thumb": "/images/project-media/fm1-felucca-31fedac250-480.webp",
        "srcset": "/images/project-media/fm1-felucca-31fedac250-480.webp 480w, /images/project-media/fm1-felucca-31fedac250-800.webp 800w, /images/project-media/fm1-felucca-31fedac250-1200.webp 1200w",
        "width": 1920,
        "height": 1080,
        "creditUrl": "https://synthanatomy.com/2026/10/m-vave-fm-1-a-budget-friendly-dx-7-style-desktop-fm-polysynth.html"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "M-VAVE FM-1",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware target.",
            "notes": "Check the selected seller variant and flash revision. New UC25HQ80 units are not equivalent to a tested older unit. Music Arms lists the actual FM-1; shipping outside Thailand and flash revision must be confirmed. A seller page does not verify third-party firmware compatibility.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.musicarms.net/m-vave-fm-1/",
              "match": "Exact model; Thai retailer, hardware/flash revision not guaranteed",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": false,
              "reference": false
            },
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/hugelton/Felucca",
              "https://www.musicarms.net/m-vave-fm-1/"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m-vave-fm-1",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/hugelton/Felucca",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer with Chrome or Edge",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/hugelton/Felucca"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Headphones / speakers or USB audio host",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Monitor the synthesizer output.",
            "notes": "FM-1 already has an onboard speaker. External headphones, speakers or USB audio are optional monitoring routes; confirm the selected custom firmware supports the route.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/hugelton/Felucca",
              "https://www.musicarms.net/m-vave-fm-1/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "MIDI keyboard / controller",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Play external MIDI notes.",
            "notes": "Not needed for all sequencing modes; choose a compatible MIDI connection.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/hugelton/Felucca"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Confirm the installed flash chip and the chosen firmware release before purchase; newer UC25HQ80 units may require beta support.",
          "Thai retailer identified; international shipping and the supplied hardware revision remain unverified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/hugelton/Felucca"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "zoom-amp-modeler",
      "title": "Vintage amplifier modeling on an older effects pedal",
      "hardware": "Zoom MS-70CDR",
      "summary": "Runs NAM A2 Lite captures and custom impulse responses, turning an old multieffects pedal into an amp modeler.",
      "topic": "Voice & audio",
      "setup": "Unofficial firmware",
      "physicalRole": "An existing effects pedal processes a real instrument signal through custom amp models.",
      "beforeYouBuild": "Current released effects install as custom ZDL files over USB on the original MS-70CDR, with firmware 2.10 as the primary target; no complete firmware reflash is required for this route. Back up effects and patches first. Plus models use a different format and are not interchangeable. The creator names AI assistance, not an exact coding agent.",
      "codingTool": "AI-assisted vibe coding; exact tool not specified",
      "evidence": "Roman Rusinov directly describes learning vibe-coding and experimenting with hardware limits in The Verge interview.",
      "sourceUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
      "supportingUrl": "https://github.com/themanro/ZoomMultistompZDL",
      "sourceType": "Reported creator interview",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "zoom-ms-70cdr",
          "fit": "Exact model",
          "note": "Repository identifies firmware 2.10. MS-70CDR+ uses a different effect format; do not substitute it."
        }
      ],
      "photo": {
        "url": "https://github.com/themanro/ZoomMultistompZDL/raw/main/graphics/tutorial-video.jpg",
        "alt": "Watch the video tutorial on YouTube: a NAM capture running on a Zoom MS-70CDR",
        "credit": "ZoomMultistompZDL · tutorial",
        "kind": "Demo still",
        "src": "/images/project-media/zoom-amp-modeler-c877ef9336-1200.webp",
        "thumb": "/images/project-media/zoom-amp-modeler-c877ef9336-480.webp",
        "srcset": "/images/project-media/zoom-amp-modeler-c877ef9336-480.webp 480w, /images/project-media/zoom-amp-modeler-c877ef9336-800.webp 800w, /images/project-media/zoom-amp-modeler-c877ef9336-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "creditUrl": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "The current repository installs custom ZDL effects over USB; it explicitly says a whole-device firmware reflash is not required for the released effects. Preserve backups and avoid diagnostic probe builds.",
        "items": [
          {
            "name": "Zoom MS-70CDR, original generation",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Primary tested effects target.",
            "notes": "Repository identifies firmware 2.10. MS-70CDR+ uses a different effect format; do not substitute it.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/themanro/ZoomMultistompZDL"
            ],
            "destination": {
              "url": "https://zoomcorp.com/en/us/multi-effects/multistomp-pedals/ms-70cdr/",
              "match": "Exact original MS-70CDR; manufacturer and retailer links",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "zoom-ms-70cdr",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB (original MS-70CDR-compatible) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/themanro/ZoomMultistompZDL"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer with supported effect-installation software",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/themanro/ZoomMultistompZDL"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB power, two AA cells, or Zoom AD-16",
            "quantity": "Choose one route",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Manufacturer supports USB power or 2 AA cells. Optional AD-16 is DC 9 V center-negative, 500 mA. Do not buy all three routes.",
            "evidence": "Manufacturer specification",
            "sources": [
              "https://zoomcorp.com/en/us/multi-effects/multistomp-pedals/ms-70cdr/"
            ],
            "destination": {
              "url": "https://zoomcorp.com/en/us/accessories/power-accessories/AD-16/",
              "match": "Exact manufacturer-approved optional power supply",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Instrument / line source and audio leads",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Feed and monitor the pedal.",
            "notes": "Cable count depends on mono or stereo routing.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/themanro/ZoomMultistompZDL"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Amplifier, powered monitors or audio interface",
            "quantity": "1 route",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Listen to output.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware",
              "https://github.com/themanro/ZoomMultistompZDL"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The exact original-generation product and manufacturer retailer links are identified; individual retailer stock and used-unit condition are not verified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/gadgets/1013493/vibe-coding-ai-music-gear-hacking-custom-firmware"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/themanro/ZoomMultistompZDL"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "121gw-open-firmware",
      "title": "Open and rebuild a multimeter firmware",
      "hardware": "EEVblog 121GW",
      "summary": "Reconstructs the meter application and bootloader as editable C, then tests it on the meter including Bluetooth.",
      "topic": "Cameras & sensors",
      "setup": "Unofficial firmware",
      "physicalRole": "A rebuilt meter application runs on the real multimeter, including Bluetooth.",
      "beforeYouBuild": "An enabling experiment, not a new everyday feature. Do not rely on modified firmware for safety-critical measurements.",
      "codingTool": "Claude Code",
      "evidence": "Article describes the overnight Claude Code job, emulator comparison, Ghidra/GCC workflow and Dave Jones testing the meter.",
      "sourceUrl": "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
      "supportingUrl": "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE",
      "sourceType": "Reported build walkthrough",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "eevblog-121gw",
          "fit": "Exact model",
          "note": "The project names EEVblog 121GW. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://circuitdigest.com/sites/default/files/circuitdigest_news_images/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works.jpg",
        "alt": "EEVblog Dave Jones 121GW Multimeter Firmware Rebuild",
        "credit": "Circuit Digest / EEVblog",
        "kind": "Demo still",
        "src": "/images/project-media/121gw-open-firmware-3fcc80fb64-1200.webp",
        "thumb": "/images/project-media/121gw-open-firmware-3fcc80fb64-480.webp",
        "srcset": "/images/project-media/121gw-open-firmware-3fcc80fb64-480.webp 480w, /images/project-media/121gw-open-firmware-3fcc80fb64-800.webp 800w, /images/project-media/121gw-open-firmware-3fcc80fb64-1200.webp 1200w",
        "width": 750,
        "height": 500,
        "creditUrl": "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Experimental open firmware is not a calibration or safety certification. Keep all test leads disconnected while servicing; do not use modified firmware for hazardous-voltage measurements.",
        "items": [
          {
            "name": "EEVblog 121GW",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Exact meter target.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://eevblog.store/products/121gw-multimeter",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
              "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "eevblog-121gw",
            "catalogMatch": "Exact model"
          },
          {
            "name": "microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "The README documents the SD bootloader update path; match supported card formatting.",
            "evidence": "Creator source",
            "sources": [
              "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
              "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "microSD card reader",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Write the update file.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
              "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
              "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "AA batteries",
            "quantity": "4",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Power the meter.",
            "notes": "Manufacturer lists four AA cells; use fresh batteries for updating.",
            "evidence": "Creator source",
            "sources": [
              "https://eevblog.store/products/121gw-multimeter"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "SWD programmer and debug leads",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Alternative development/recovery route.",
            "notes": "Not required for the normal SD update path. Requires opening and correctly connecting the meter.",
            "evidence": "Creator source",
            "sources": [
              "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works",
              "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://circuitdigest.com/news/eevblog-had-claude-code-rebuild-his-121gw-multimeter-firmware-in-c-overnight-and-it-works"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/EEVblog/121GW-Multimeter-Firmware-RE"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "hp-macos-printing",
      "title": "Make an unsupported printer work normally on a Mac",
      "hardware": "HP Laser 1008a",
      "summary": "Print from ordinary macOS applications through a custom bridge around the vendor Linux codec.",
      "topic": "Printing & tools",
      "setup": "Computer companion",
      "physicalRole": "A custom USB print bridge makes the physical printer available to normal Mac applications.",
      "beforeYouBuild": "The current repository replaces the earlier Linux-container approach with native CUPS/IOKit components, tested on Apple Silicon macOS 26. Installation creates a privileged printer backend and changes the conflicting IPP-over-USB setup; review it before granting administrator access. This is host software, not printer firmware.",
      "codingTool": "Claude Code",
      "evidence": "Tom’s Hardware explicitly attributes the driver package to Claude Code and explains the Linux-container and USB path.",
      "sourceUrl": "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
      "supportingUrl": "https://github.com/Kuberwastaken/hp-laser-1008a-macos",
      "sourceType": "Reported build walkthrough",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "hp-laser-1008a",
          "fit": "Exact model",
          "note": "Exact 714Z8A model sold by an Indian retailer; check regional mains voltage and shipping. Current code reports USB-connected 1008a on Apple Silicon macOS 26."
        }
      ],
      "photo": {
        "url": "https://cdn.mos.cms.futurecdn.net/MEhj2kjie9xAZfBevnC5jT.jpg",
        "alt": "HP Laser 1008a printer",
        "credit": "Tom’s Hardware · HP Laser 1008a",
        "kind": "Product photo",
        "src": "/images/project-media/hp-macos-printing-70bdb0b293-1200.webp",
        "thumb": "/images/project-media/hp-macos-printing-70bdb0b293-480.webp",
        "srcset": "/images/project-media/hp-macos-printing-70bdb0b293-480.webp 480w, /images/project-media/hp-macos-printing-70bdb0b293-800.webp 800w, /images/project-media/hp-macos-printing-70bdb0b293-1200.webp 1200w",
        "width": 1920,
        "height": 1080,
        "creditUrl": "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Current repository has replaced the older Linux-container implementation with native CUPS/IOKit components. It installs a privileged backend; review before granting administrator access.",
        "items": [
          {
            "name": "HP Laser 1008a",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "USB laser printer.",
            "notes": "Exact 714Z8A model sold by an Indian retailer; check regional mains voltage and shipping. Current code reports USB-connected 1008a on Apple Silicon macOS 26.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://golchhacomputer.com/product/6497-hp-laser-printer-1008a-a4-single-function?srsltid=AfmBOop-HVMjr_71ylqJU2RzFm8CzjkNN4gt1TQzwkG3Zgz0Y_p7p91V",
              "match": "Exact HP Laser 1008a 714Z8A; Indian retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
              "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "hp-laser-1008a",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Apple Silicon Mac",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Current repository reports testing on macOS 26.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
              "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB printer data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Match the printer-side port and Mac port; use an adapter only if required.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
              "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Compatible toner and printer paper",
            "quantity": "As needed",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Print consumables.",
            "notes": "Use the exact consumables specified for the 1008a, not a similarly named printer.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
              "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Reuse the printer’s region-correct mains cable.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github",
              "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.tomshardware.com/tech-industry/artificial-intelligence/dev-uses-claude-ai-to-create-native-macos-driver-for-obscure-windows-only-printer-linux-container-hack-enables-system-wide-cmd-p-printing-driver-now-available-on-github"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/Kuberwastaken/hp-laser-1008a-macos"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "negative-vibes-scanner",
      "title": "Rescue family film negatives with a custom scanner stack",
      "hardware": "Plustek OpticFilm 8200i with Genesys GL128",
      "summary": "Custom Linux scanner backend plus Negative Vibes app, including infrared dust removal and nondestructive image adjustments.",
      "topic": "Cameras & sensors",
      "setup": "Computer companion",
      "physicalRole": "A custom backend operates the film scanner and its infrared dust-removal channel.",
      "beforeYouBuild": "Confirm the Genesys GL128 chipset: older scanners with the same model name differ. Upstream SANE support also exists.",
      "codingTool": "Claude Code",
      "evidence": "Christian Schaller explains building the scanner backend and Rust app with Claude, comparing Windows USB traces and testing real scans.",
      "sourceUrl": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
      "supportingUrl": "https://github.com/cschalle/negative-vibes",
      "sourceType": "First-person build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "plustek-opticfilm-8200i",
          "fit": "Device family",
          "note": "Photo and manufacturer destination show the Ai bundle. The creator specifies the 8200i family with Genesys GL128, not a software bundle; verify the chipset before buying."
        }
      ],
      "photo": {
        "url": "https://blogs.gnome.org/uraeus/files/2026/10/drivercompare-300x218.png",
        "alt": "comparison of two scanner drivers on same negative-",
        "credit": "Christian F. K. Schaller · actual scan comparison",
        "kind": "Scan comparison",
        "src": "/images/project-media/negative-vibes-scanner-e681c6823d-1200.webp",
        "thumb": "/images/project-media/negative-vibes-scanner-e681c6823d-480.webp",
        "srcset": "/images/project-media/negative-vibes-scanner-e681c6823d-480.webp 480w, /images/project-media/negative-vibes-scanner-e681c6823d-800.webp 800w, /images/project-media/negative-vibes-scanner-e681c6823d-1200.webp 1200w",
        "width": 300,
        "height": 218,
        "creditUrl": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Plustek OpticFilm 8200i with Genesys GL128",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Film scanner.",
            "notes": "The product page does not guarantee the GL128 hardware revision; confirm chipset before purchase.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://plustek.com/us/products/film-photo-scanners/opticfilm-8200i-ai/",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://github.com/cschalle/negative-vibes"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "plustek-opticfilm-8200i",
            "catalogMatch": "Device family"
          },
          {
            "name": "Linux computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Follow the current scanner application requirements.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://github.com/cschalle/negative-vibes"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB scanner data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Match the included scanner cable and computer port.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://github.com/cschalle/negative-vibes"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the scanner’s matched power adapter.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://github.com/cschalle/negative-vibes"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "35 mm film / slides and matching holders",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Material and holders for scanning.",
            "notes": "Check which holders are included in a used unit.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://github.com/cschalle/negative-vibes"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The same 8200i name can cover different chipsets. A seller must confirm GL128; the Ai software bundle is not evidence of chipset compatibility."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/cschalle/negative-vibes"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "thinkpad-camera-fixes",
      "title": "Fix a laptop camera’s dark, tinted image",
      "hardware": "Lenovo ThinkPad X1 Carbon Gen 14 Aura Edition; Sony IMX471 / Intel IPU7",
      "summary": "Custom kernel and camera-processing fixes improve low-light brightness, vignetting and white balance.",
      "topic": "Cameras & sensors",
      "setup": "Computer companion",
      "physicalRole": "Driver and processing changes alter the output of the laptop’s physical camera sensor.",
      "beforeYouBuild": "Specific to this camera path. Low-light color limitations and patches under review remain.",
      "codingTool": "Claude Code",
      "evidence": "Creator describes reusing the Claude workflow, comparing to a USB reference camera and generating kernel/libcamera patches in one day.",
      "sourceUrl": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
      "supportingUrl": "https://cschalle.github.io/mipi-fixes-x1-aura/",
      "sourceType": "First-person build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://blogs.gnome.org/uraeus/files/2026/10/mipifixes-300x96.png",
        "alt": "Showing MIPI output before and after fixes. Colors are better than they look as I was sitting in a relatively dark room by the end of the session.",
        "credit": "Christian F. K. Schaller · actual camera output",
        "kind": "Camera comparison",
        "src": "/images/project-media/thinkpad-camera-fixes-54d81fe0c3-1200.webp",
        "thumb": "/images/project-media/thinkpad-camera-fixes-54d81fe0c3-480.webp",
        "srcset": "/images/project-media/thinkpad-camera-fixes-54d81fe0c3-480.webp 480w, /images/project-media/thinkpad-camera-fixes-54d81fe0c3-800.webp 800w, /images/project-media/thinkpad-camera-fixes-54d81fe0c3-1200.webp 1200w",
        "width": 300,
        "height": 96,
        "creditUrl": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Lenovo ThinkPad X1 Carbon Gen 14 Aura Edition",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Laptop with the affected camera pipeline.",
            "notes": "Verify Sony IMX471 sensor and Intel IPU7 camera path; the model name alone is insufficient.",
            "evidence": "Creator source",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://cschalle.github.io/mipi-fixes-x1-aura/"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Sony IMX471 / Intel IPU7 camera hardware",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Included",
            "purpose": "Internal camera path.",
            "notes": "Do not buy a separate camera module for this software fix.",
            "evidence": "Creator source",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://cschalle.github.io/mipi-fixes-x1-aura/"
            ],
            "purchaseNote": "Built in or supplied with the stated device; check package contents before buying separately.",
            "sourcingStatus": "Included with device — check package"
          },
          {
            "name": "Recovery media / backup storage",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Recover the Linux installation if a patch breaks camera support.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/",
              "https://cschalle.github.io/mipi-fixes-x1-aura/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Exact laptop configuration and a live purchase listing matching the camera path are unverified. No external webcam is a substitute for this project."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://cschalle.github.io/mipi-fixes-x1-aura/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "mosaico-light-meter",
      "title": "Snake and a live light meter on a pocket screen",
      "hardware": "ESP-Mosaico CoreBoard + Interaction module",
      "summary": "Touchscreen Snake with a live light-level bar and physical LED feedback.",
      "topic": "Cameras & sensors",
      "setup": "Kit / assembly",
      "physicalRole": "Touch input, a physical light sensor and LEDs drive a game and live light meter.",
      "beforeYouBuild": "A modular development device rather than a finished appliance. Requires USB flashing and a toolchain; review unit supplied by Espressif.",
      "codingTool": "Claude Code",
      "evidence": "Omar Hiari documents prompts, generated C, simulator tests, flashing and the working hardware. Distinguishes failed on-device chat from successful laptop coding agent.",
      "sourceUrl": "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding",
      "supportingUrl": "https://github.com/esp-mosaico/esp-mosaico-vibe",
      "sourceType": "First-person build walkthrough",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://cdn.hashnode.com/uploads/gql/69b0765babc0d950019d0eca/b9f1e87d-511a-4b20-b943-c0a9edcf24d4.jpg",
        "alt": "The Interaction module connected to the CoreBoard's right slot (top) and left slot (bottom)",
        "credit": "The Embedded Rustacean · ESP-Mosaico hardware",
        "kind": "Product photo",
        "src": "/images/project-media/mosaico-light-meter-cbf771a0e4-1200.webp",
        "thumb": "/images/project-media/mosaico-light-meter-cbf771a0e4-480.webp",
        "srcset": "/images/project-media/mosaico-light-meter-cbf771a0e4-480.webp 480w, /images/project-media/mosaico-light-meter-cbf771a0e4-800.webp 800w, /images/project-media/mosaico-light-meter-cbf771a0e4-1200.webp 1200w",
        "width": 643,
        "height": 645,
        "creditUrl": "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "ESP-Mosaico CoreBoard",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Display and processor.",
            "notes": "Manufacturer documents V1.0 and V1.2 separately; match your board silkscreen to its guide.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/index.html",
              "match": "Hardware reference, not a purchase link",
              "reference": true,
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding",
              "https://github.com/esp-mosaico/esp-mosaico-vibe"
            ],
            "sourcingStatus": "Reference only — not a purchase link"
          },
          {
            "name": "ESP-Mosaico Multi-function Interaction module",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Adds sensing used by the light-meter build.",
            "notes": "Not the camera expansion. Match both the module and mainboard revisions.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s31/esp-mosaico/user_guide_interact.html",
              "match": "Hardware reference, not a purchase link",
              "reference": true,
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding",
              "https://github.com/esp-mosaico/esp-mosaico-vibe"
            ],
            "sourcingStatus": "Reference only — not a purchase link"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding",
              "https://github.com/esp-mosaico/esp-mosaico-vibe",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding",
              "https://github.com/esp-mosaico/esp-mosaico-vibe"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "The review unit’s exact CoreBoard/module revision and a retail bundle containing both parts have not been confirmed. Hardware guides are references, not buy links."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://blog.theembeddedrustacean.com/unboxing-esp-mosaico-chatcoding-vibecoding"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/esp-mosaico/esp-mosaico-vibe"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "wio-weather-clock",
      "title": "Weather clock with offline fallback",
      "hardware": "Wio Terminal",
      "summary": "A small physical clock showing live weather, keeping local time when connectivity fails.",
      "topic": "Displays",
      "setup": "Device firmware",
      "physicalRole": "The Wio Terminal becomes a dedicated weather clock with offline timekeeping.",
      "beforeYouBuild": "Check weather-service access and credentials. This is a manufacturer showcase, not an independent test.",
      "codingTool": "CodeCraft",
      "evidence": "Seeed explicitly calls the three featured builds connected hardware applications built with its AI coding assistant.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
      "supportingUrl": "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "seeed-wio-terminal",
          "fit": "Exact model",
          "note": "The project names Seeed Studio Wio Terminal. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/e4fec027-97dd-459a-b4e8-fe8f4ad8703f",
        "alt": "Network clock and weather information displayed on Wio Terminal",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/wio-weather-clock-063a8a25fe-1200.webp",
        "thumb": "/images/project-media/wio-weather-clock-063a8a25fe-480.webp",
        "srcset": "/images/project-media/wio-weather-clock-063a8a25fe-480.webp 480w, /images/project-media/wio-weather-clock-063a8a25fe-800.webp 800w, /images/project-media/wio-weather-clock-063a8a25fe-1200.webp 1200w",
        "width": 492,
        "height": 569,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "The screen and controls are built into Wio Terminal; do not buy an extra display. Configure required data-service access separately.",
        "items": [
          {
            "name": "Seeed Studio Wio Terminal",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Integrated screen, controls and wireless board.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/Wio-Terminal-p-4509.html",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "seeed-wio-terminal",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Check package contents before ordering a second cable. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect data sources.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB power source",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Power the device.",
            "notes": "USB power is needed for untethered desk use; a battery is not assumed included.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://sensecraft.seeed.cc/ai/view-application/12030-network-clock-and-weather-display?tab=public&from=application-store"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "wio-usage-meter",
      "title": "Physical coding-agent usage meter",
      "hardware": "Wio Terminal",
      "summary": "BLE desk dashboard for Claude/Codex usage and estimated daily API cost from a signed-in computer.",
      "topic": "Displays",
      "setup": "Device firmware",
      "physicalRole": "A separate BLE desk display shows coding-session usage from a nearby computer.",
      "beforeYouBuild": "Costs are estimates, not authoritative billing. Local account access needs care; no direct per-project link was supplied.",
      "codingTool": "CodeCraft",
      "evidence": "Included in Seeed’s article explicitly describing three Wio Terminal projects built with AI coding assistance.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
      "supportingUrl": "",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "seeed-wio-terminal",
          "fit": "Exact model",
          "note": "The project names Seeed Studio Wio Terminal. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/d863917c-07c7-4c30-add9-0deb19ab2a29",
        "alt": "Codex and Claude usage dashboard displayed on Wio Terminal",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/wio-usage-meter-89669c3168-1200.webp",
        "thumb": "/images/project-media/wio-usage-meter-89669c3168-480.webp",
        "srcset": "/images/project-media/wio-usage-meter-89669c3168-480.webp 480w, /images/project-media/wio-usage-meter-89669c3168-800.webp 800w, /images/project-media/wio-usage-meter-89669c3168-1200.webp 1200w",
        "width": 806,
        "height": 643,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "The screen and controls are built into Wio Terminal; do not buy an extra display. Configure required data-service access separately.",
        "items": [
          {
            "name": "Seeed Studio Wio Terminal",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Integrated screen, controls and wireless board.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/Wio-Terminal-p-4509.html",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "seeed-wio-terminal",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Check package contents before ordering a second cable. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup and usage collection",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect data sources.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB power source",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Power the device.",
            "notes": "USB power is needed for untethered desk use; a battery is not assumed included.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Usage collector setup and the creator’s exact host requirements are not published as a separate project guide."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/ai-iot-projects-codecraft-wio-terminal/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "wearable-cyber-eye",
      "title": "Wearable blinking cyber eye",
      "hardware": "XIAO ESP32S3 + 1.28-inch Round Display for XIAO",
      "summary": "Animated eye for a backpack, chest accessory or keychain.",
      "topic": "Displays",
      "setup": "Kit / assembly",
      "physicalRole": "A small round physical screen becomes a wearable blinking eye.",
      "beforeYouBuild": "Requires a board/display assembly plus enclosure and power. Not a ready-built wearable.",
      "codingTool": "CodeCraft",
      "evidence": "Manufacturer article identifies the four applications as published CodeCraft projects and describes the wearable’s hardware and behavior.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
      "supportingUrl": "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/7eabc36f-8801-4569-8798-c1971332ed61",
        "alt": "Blinking cyber eye displayed on a XIAO round screen",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/wearable-cyber-eye-002436a7b9-1200.webp",
        "thumb": "/images/project-media/wearable-cyber-eye-002436a7b9-480.webp",
        "srcset": "/images/project-media/wearable-cyber-eye-002436a7b9-480.webp 480w, /images/project-media/wearable-cyber-eye-002436a7b9-800.webp 800w, /images/project-media/wearable-cyber-eye-002436a7b9-1200.webp 1200w",
        "width": 2192,
        "height": 1600,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Seeed Studio XIAO ESP32S3",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controller.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "1.28-inch Round Display for XIAO",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Touch display and expansion board.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/1-28-Round-Touch-Display-for-Seeed-Studio-XIAO-ESP32.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Compatible headers / board connection",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Mate XIAO to the display.",
            "notes": "Check whether the ordered XIAO arrives with headers fitted; do not buy another controller assuming the display includes one.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wearable enclosure / mounting",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Hold the assembled device.",
            "notes": "No exact printable design or attachment hardware identified.",
            "evidence": "Creator source",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Protected battery matched to the display charging circuit",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Portable operation.",
            "notes": "Capacity, polarity and connector are not specified by the project; confirm before buying.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The battery model, enclosure and wearable mounting are not specified; only the controller/display pair is established."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://sensecraft.seeed.cc/ai/view-application/9622-%E9%97%AA%E7%83%81%E7%9A%84%E8%B5%9B%E5%8D%9A%E4%B9%8B%E7%9C%BC?tab=public&from=application-store"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "round-touchscreen-2048",
      "title": "2048 on a tiny round touchscreen",
      "hardware": "XIAO ESP32S3 + round touch display",
      "summary": "A physical swipe-controlled number-merging game with game-state and rendering logic.",
      "topic": "Robots & toys",
      "setup": "Kit / assembly",
      "physicalRole": "A dedicated round touchscreen becomes a swipe-controlled handheld game.",
      "beforeYouBuild": "Board/display assembly, not a finished toy. Manufacturer showcase; compile success alone does not prove gameplay.",
      "codingTool": "CodeCraft",
      "evidence": "Manufacturer explicitly presents it as one of four published CodeCraft-built projects, explaining gesture handling and game logic.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
      "supportingUrl": "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/f2881a83-7267-472b-ab1c-924a772cfcd9",
        "alt": "2048 game running on a XIAO ESP32S3 round touchscreen",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/round-touchscreen-2048-5cfadece3e-1200.webp",
        "thumb": "/images/project-media/round-touchscreen-2048-5cfadece3e-480.webp",
        "srcset": "/images/project-media/round-touchscreen-2048-5cfadece3e-480.webp 480w, /images/project-media/round-touchscreen-2048-5cfadece3e-800.webp 800w, /images/project-media/round-touchscreen-2048-5cfadece3e-1200.webp 1200w",
        "width": 1313,
        "height": 1198,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Seeed Studio XIAO ESP32S3",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controller.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "1.28-inch Round Display for XIAO",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Touch display and expansion board.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/1-28-Round-Touch-Display-for-Seeed-Studio-XIAO-ESP32.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Compatible headers / board connection",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Mate XIAO to the display.",
            "notes": "Check whether the ordered XIAO arrives with headers fitted; do not buy another controller assuming the display includes one.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wearable enclosure / mounting",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Hold the assembled device.",
            "notes": "No exact printable design or attachment hardware identified.",
            "evidence": "Creator source",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Protected battery matched to the display charging circuit",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Portable operation.",
            "notes": "Capacity, polarity and connector are not specified by the project; confirm before buying.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/",
              "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Header assembly and portable battery/enclosure specifications are not documented completely. For 2048, confirm the application targets this exact round-display revision."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/maker-ai-projects-codecraft/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://sensecraft.seeed.cc/ai/view-application/11719-2048-on-a-touchscreen?tab=public&from=application-store"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "blossom-fan",
      "title": "Blossom Fan interactive desk art",
      "hardware": "Grove Beginner Kit for Arduino + Mini Fan",
      "summary": "One knob coordinates animated petals on an OLED with a real fan and LED.",
      "topic": "Robots & toys",
      "setup": "Kit / assembly",
      "physicalRole": "One knob coordinates a real fan and LED with OLED animation.",
      "beforeYouBuild": "A prewired kit plus external fan. Confirm fan, power and cable requirements before buying.",
      "codingTool": "CodeCraft",
      "evidence": "Seeed explains its prompt-to-device workflow and showcases this published application with linked project and specific input/output behavior.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
      "supportingUrl": "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/dc8afbe5-3384-4a54-9e86-d46e0e59dac9",
        "alt": "Blossom Fan project using Grove Beginner Kit OLED and Mini Fan",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/blossom-fan-c8e73054bb-1200.webp",
        "thumb": "/images/project-media/blossom-fan-c8e73054bb-480.webp",
        "srcset": "/images/project-media/blossom-fan-c8e73054bb-480.webp 480w, /images/project-media/blossom-fan-c8e73054bb-800.webp 800w, /images/project-media/blossom-fan-c8e73054bb-1200.webp 1200w",
        "width": 1706,
        "height": 1279,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Grove Beginner Kit for Arduino",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controller, knob, OLED and onboard LED.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-4549.html",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "External Mini Fan",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Physical fan output.",
            "notes": "Not included in the Beginner Kit. The article does not identify a verified SKU or fan driver. This is a real integrated Grove fan module, not a bare motor. The showcase does not establish v1.1 as its exact fan; verify the application’s control interface and electrical load before treating it as compatible.",
            "evidence": "Creator source",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store",
              "https://www.seeedstudio.com/Grove-Mini-Fan-v1-1.html"
            ],
            "destination": {
              "url": "https://www.seeedstudio.com/Grove-Mini-Fan-v1-1.html",
              "match": "Candidate only: Grove Mini Fan v1.1, SKU 108020021",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Matching Grove cable / fan connection",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the external fan.",
            "notes": "Pinout, port and current capacity must be checked in the application before purchase.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB (Grove Beginner Kit-compatible) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Check package contents before ordering a second cable.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Confirm fan load and kit supply capacity before powering the fan.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact Mini Fan SKU, cable/port and power/driver requirements remain unresolved. Do not connect an arbitrary bare motor directly to an I/O pin."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://sensecraft.seeed.cc/ai/view-application/11352-blossom-fan?tab=public&from=application-store"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "grove-weather-station",
      "title": "Desktop environmental station with alerts",
      "hardware": "Grove Beginner Kit for Arduino",
      "summary": "OLED weather readings, trend arrows, comfort labels and configurable light/buzzer alerts.",
      "topic": "Cameras & sensors",
      "setup": "Kit / assembly",
      "physicalRole": "Physical sensors drive a desktop OLED and light/buzzer alerts.",
      "beforeYouBuild": "A kit, not a finished consumer weather station. Sensor revisions vary; readings are not safety measurements.",
      "codingTool": "CodeCraft",
      "evidence": "Article describes successive conversations adding readings, trends, labels, alarms and physical controls.",
      "sourceUrl": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
      "supportingUrl": "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store",
      "sourceType": "Manufacturer project showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://sensecraft.seeed.cc/blog-cms/assets/214564cc-bd33-47d1-8356-7413b21fb7c1",
        "alt": "Desktop weather station.gif",
        "credit": "Seeed Studio · creator demonstration",
        "kind": "Demo still",
        "src": "/images/project-media/grove-weather-station-3ba1f6f20d-1200.webp",
        "thumb": "/images/project-media/grove-weather-station-3ba1f6f20d-480.webp",
        "srcset": "/images/project-media/grove-weather-station-3ba1f6f20d-480.webp 480w, /images/project-media/grove-weather-station-3ba1f6f20d-800.webp 800w, /images/project-media/grove-weather-station-3ba1f6f20d-1200.webp 1200w",
        "width": 480,
        "height": 360,
        "creditUrl": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "The source builds on the prewired kit. Do not buy a second Arduino, OLED or duplicate sensors just because they appear in the program.",
        "items": [
          {
            "name": "Grove Beginner Kit for Arduino",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controller, environmental sensors and OLED in one kit.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/Grove-Beginner-Kit-for-Arduino-p-4549.html",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "USB (Grove Beginner Kit-compatible) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Check package contents before ordering a second cable.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB power source",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Power the device.",
            "notes": "Reuse USB power; check kit documentation for sensor revision.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Onboard temperature/humidity and pressure sensors; OLED",
            "quantity": "Built in",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Included",
            "purpose": "Read and show environmental data.",
            "notes": "Not a shopping list for separate sensor boards; confirm the actual kit’s sensor revisions.",
            "evidence": "Creator source",
            "sources": [
              "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/",
              "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
            ],
            "purchaseNote": "Built in or supplied with the stated device; check package contents before buying separately.",
            "sourcingStatus": "Included with device — check package"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://sensecraft.seeed.cc/blog/en/posts/seeed-grove-kit-vibe-coding/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://sensecraft.seeed.cc/ai/view-application/10843-desktop-weather-station?tab=public&from=application-store"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "elgato-linux-light",
      "title": "Native Linux controls for a studio light",
      "hardware": "Elgato Key Light Wi-Fi lamp",
      "summary": "GNOME quick controls and a configuration interface restoring lighting features missing on Linux.",
      "topic": "Lights",
      "setup": "Computer companion",
      "physicalRole": "Linux controls operate the real Wi-Fi studio light.",
      "beforeYouBuild": "Host-side controls, not software running on the lamp. The source names Claude but not its exact interface.",
      "codingTool": "Claude",
      "evidence": "Christian Schaller details feeding an old extension and Windows interface screenshots to Claude, then iterating each real hardware function.",
      "sourceUrl": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
      "supportingUrl": "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller",
      "sourceType": "First-person build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "elgato-key-light",
          "fit": "Exact model",
          "note": "The project names Elgato Key Light. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://blogs.gnome.org/uraeus/files/2025/10/elgatognomeshellextension-300x230.png",
        "alt": "Elgato Light GNOME Shell extension",
        "credit": "Christian F. K. Schaller · lighting controls",
        "kind": "App screenshot",
        "src": "/images/project-media/elgato-linux-light-26a406af8e-1200.webp",
        "thumb": "/images/project-media/elgato-linux-light-26a406af8e-480.webp",
        "srcset": "/images/project-media/elgato-linux-light-26a406af8e-480.webp 480w, /images/project-media/elgato-linux-light-26a406af8e-800.webp 800w, /images/project-media/elgato-linux-light-26a406af8e-1200.webp 1200w",
        "width": 300,
        "height": 230,
        "creditUrl": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Elgato Key Light Wi-Fi lamp",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Network-addressable lamp.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.elgato.com/us/en/p/key-light",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "elgato-key-light",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Linux computer with GNOME Shell",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run the extension.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect lamp and computer.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the lamp’s supplied power brick.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Lamp mount",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Secure the light.",
            "notes": "Check whether the arm/clamp is included in a used unit.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://gitlab.com/cschalle/gnome-shell-elgato-light-controller"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "dell-linux-webcam",
      "title": "Unlock webcam controls missing on Linux",
      "hardware": "Dell UltraSharp Webcam 4K UHD WB7022",
      "summary": "Native camera settings app using PipeWire, with controls recovered from the Windows utility.",
      "topic": "Cameras & sensors",
      "setup": "Computer companion",
      "physicalRole": "The custom app exposes controls on a physical Dell webcam under Linux.",
      "beforeYouBuild": "Hardware controls are implemented; software-only features such as background removal were still absent.",
      "codingTool": "Claude",
      "evidence": "Creator describes screenshot-led implementation, Windows binary inspection, automated screenshots and several days of iteration.",
      "sourceUrl": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
      "supportingUrl": "https://gitlab.com/cschalle/appfordellwebcam",
      "sourceType": "First-person build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://blogs.gnome.org/uraeus/files/2025/10/dellultrasharplinux-300x209.png",
        "alt": "Dell UltraSharp 4K settings application for Linux",
        "credit": "Christian F. K. Schaller · webcam controls",
        "kind": "App screenshot",
        "src": "/images/project-media/dell-linux-webcam-89c59f65f1-1200.webp",
        "thumb": "/images/project-media/dell-linux-webcam-89c59f65f1-480.webp",
        "srcset": "/images/project-media/dell-linux-webcam-89c59f65f1-480.webp 480w, /images/project-media/dell-linux-webcam-89c59f65f1-800.webp 800w, /images/project-media/dell-linux-webcam-89c59f65f1-1200.webp 1200w",
        "width": 300,
        "height": 209,
        "creditUrl": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Dell UltraSharp Webcam 4K UHD WB7022",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Exact USB camera target.",
            "notes": "Manufacturer storefront blocked a live check; model identity comes from the creator and manufacturer reference.",
            "evidence": "Creator source",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/appfordellwebcam"
            ],
            "sourcingStatus": "Former product destination unavailable — exact model remains source-identified",
            "previousDestination": {
              "url": "https://www.dell.com/en-uk/shop/dell-ultrasharp-webcam-wb7022-4k-uhd/apd/722-bbbi",
              "match": "Exact product; UK store",
              "verification": "Source-linked; live page not verified",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "purchaseNote": "The former Dell store link now redirects to an accessories page. Exact WB7022 purchase destination and product photo need reconfirmation; do not substitute another Dell webcam."
          },
          {
            "name": "Linux computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run the camera controls.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/appfordellwebcam"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB 3 camera data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Use the camera’s full-bandwidth cable and a suitable host port; charge-only or USB 2 cables are not an equivalent.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/appfordellwebcam"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Webcam mount",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Hold the camera.",
            "notes": "Reuse the included mount or a compatible tripod.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/",
              "https://gitlab.com/cschalle/appfordellwebcam"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The former Dell WB7022 store link no longer resolves to the product; a current exact-model seller is not verified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://blogs.gnome.org/uraeus/2026/03/23/using-ai-to-create-some-hardware-tools-and-bring-back-the-past/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://gitlab.com/cschalle/appfordellwebcam"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "xiaomi-tv-home-screen",
      "title": "Replace a Xiaomi TV's ad-heavy home screen",
      "hardware": "Xiaomi Android TV; exact model not disclosed",
      "summary": "Gathin T. replaced the stock launcher with a custom Apple-TV-like home screen and disabled 25 unwanted packages.",
      "topic": "Displays",
      "setup": "Device software",
      "physicalRole": "A replacement launcher changes the TV’s own home screen and app behavior.",
      "beforeYouBuild": "Exact Xiaomi model undisclosed. Network debugging and disabling packages can expose or break the TV.",
      "codingTool": "Claude Code",
      "evidence": "Reported creator quote: 'Gave Claude Code the model number, it found the TV on wifi, removed 25 Xiaomi packages and wrote a new launcher.'",
      "sourceUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
      "supportingUrl": "https://x.com/gathint/status/2111379569030939102",
      "sourceType": "Reported creator showcase with embedded demonstration",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://s.yimg.com/lo/mysterio/api/79bd602c8f7b93b257ece75a9a96de981930f984545d4572796909e126127acf/lightyear_networkapi/resizefill_w976%3Bquality_80%3Bformat_webp/https%3A%2F%2Fmedia.zenfs.com%2Fen%2Fdecrypt_157%2Ffb4ecf81c3d06a81a32e0c87ac1b0568.png",
        "alt": "People Are Vibe Coding the Ads Out of Their Smart TVs: Here's How",
        "credit": "Decrypt / Yahoo · article image, not this specific build",
        "kind": "Article image",
        "src": "/images/project-media/xiaomi-tv-home-screen-875a77eef9-1200.webp",
        "thumb": "/images/project-media/xiaomi-tv-home-screen-875a77eef9-480.webp",
        "srcset": "/images/project-media/xiaomi-tv-home-screen-875a77eef9-480.webp 480w, /images/project-media/xiaomi-tv-home-screen-875a77eef9-800.webp 800w, /images/project-media/xiaomi-tv-home-screen-875a77eef9-1200.webp 1200w",
        "width": 976,
        "height": 549,
        "creditUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Xiaomi Android TV",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Show the customized TV interface.",
            "notes": "Creator does not disclose a model; no exact purchase is recommended.",
            "evidence": "Creator source",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/gathint/status/2111379569030939102"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Development computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "Prepare and deploy the interface.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/gathint/status/2111379569030939102"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Network and remote control",
            "quantity": "Existing setup",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Configure and operate the existing TV.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/gathint/status/2111379569030939102"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Connection / debugging access",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Deploy custom software.",
            "notes": "Android debugging is described for the Android TV projects; do not assume it applies to the revenue screensaver TV.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/gathint/status/2111379569030939102"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact television model, firmware and compatible deployment route are not fully disclosed. Reuse the creator-compatible hardware only after confirming those details; a random smart TV is not a verified substitute."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/gathint/status/2111379569030939102"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "android-tv-wallpapers",
      "title": "A lighter Android TV launcher with rotating wallpapers",
      "hardware": "Android TV; manufacturer and model not disclosed",
      "summary": "Mihir Gupta replaced a 192 MB stock launcher with a custom 83 MB launcher and rotating wallpapers, alongside removing bloatware.",
      "topic": "Displays",
      "setup": "Device software",
      "physicalRole": "A replacement launcher and rotating wallpapers run on the TV itself.",
      "beforeYouBuild": "Exact model undisclosed. Reported app sizes are the creator’s figures, not our measurements. Debugging and package-removal risks apply.",
      "codingTool": "Claude Code",
      "evidence": "Embedded creator quote: 'One afternoon with Claude Code: 25 bloat apps disabled, the 192 MB stock launcher replaced with a custom 83 MB one, plus rotating wallpapers.'",
      "sourceUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
      "supportingUrl": "https://x.com/0900mihir/status/2111746030228455883",
      "sourceType": "Reported creator showcase with embedded demonstration",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://s.yimg.com/lo/mysterio/api/79bd602c8f7b93b257ece75a9a96de981930f984545d4572796909e126127acf/lightyear_networkapi/resizefill_w976%3Bquality_80%3Bformat_webp/https%3A%2F%2Fmedia.zenfs.com%2Fen%2Fdecrypt_157%2Ffb4ecf81c3d06a81a32e0c87ac1b0568.png",
        "alt": "People Are Vibe Coding the Ads Out of Their Smart TVs: Here's How",
        "credit": "Decrypt / Yahoo · article image, not this specific build",
        "kind": "Article image",
        "src": "/images/project-media/android-tv-wallpapers-875a77eef9-1200.webp",
        "thumb": "/images/project-media/android-tv-wallpapers-875a77eef9-480.webp",
        "srcset": "/images/project-media/android-tv-wallpapers-875a77eef9-480.webp 480w, /images/project-media/android-tv-wallpapers-875a77eef9-800.webp 800w, /images/project-media/android-tv-wallpapers-875a77eef9-1200.webp 1200w",
        "width": 976,
        "height": 549,
        "creditUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Android TV",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Show the customized TV interface.",
            "notes": "Creator does not disclose a model; no exact purchase is recommended.",
            "evidence": "Creator source",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/0900mihir/status/2111746030228455883"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Development computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "Prepare and deploy the interface.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/0900mihir/status/2111746030228455883"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Network and remote control",
            "quantity": "Existing setup",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Configure and operate the existing TV.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/0900mihir/status/2111746030228455883"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Connection / debugging access",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Deploy custom software.",
            "notes": "Android debugging is described for the Android TV projects; do not assume it applies to the revenue screensaver TV.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/0900mihir/status/2111746030228455883"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact television model, firmware and compatible deployment route are not fully disclosed. Reuse the creator-compatible hardware only after confirming those details; a random smart TV is not a verified substitute."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/0900mihir/status/2111746030228455883"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "tv-revenue-screensaver",
      "title": "Turn a TV screensaver into a live revenue display",
      "hardware": "Smart TV; exact model not disclosed",
      "summary": "Ryan Doyle's TV screensaver shows business revenue and new Stripe payments.",
      "topic": "Displays",
      "setup": "Device software",
      "physicalRole": "The TV becomes an always-visible revenue and payment display.",
      "beforeYouBuild": "TV model and implementation are not disclosed. Protect private financial data and credentials.",
      "codingTool": "Claude; exact interface not individually specified",
      "evidence": "Article states Doyle sent Claude his TV's product listing, asked whether it could hack the set, and ended up with a revenue and Stripe-payment screensaver.",
      "sourceUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
      "supportingUrl": "https://x.com/doooyle/status/2111196679680540724",
      "sourceType": "Reported creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://s.yimg.com/lo/mysterio/api/79bd602c8f7b93b257ece75a9a96de981930f984545d4572796909e126127acf/lightyear_networkapi/resizefill_w976%3Bquality_80%3Bformat_webp/https%3A%2F%2Fmedia.zenfs.com%2Fen%2Fdecrypt_157%2Ffb4ecf81c3d06a81a32e0c87ac1b0568.png",
        "alt": "People Are Vibe Coding the Ads Out of Their Smart TVs: Here's How",
        "credit": "Decrypt / Yahoo · article image, not this specific build",
        "kind": "Article image",
        "src": "/images/project-media/tv-revenue-screensaver-875a77eef9-1200.webp",
        "thumb": "/images/project-media/tv-revenue-screensaver-875a77eef9-480.webp",
        "srcset": "/images/project-media/tv-revenue-screensaver-875a77eef9-480.webp 480w, /images/project-media/tv-revenue-screensaver-875a77eef9-800.webp 800w, /images/project-media/tv-revenue-screensaver-875a77eef9-1200.webp 1200w",
        "width": 976,
        "height": 549,
        "creditUrl": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Smart TV",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Show the customized TV interface.",
            "notes": "Creator does not disclose a model; no exact purchase is recommended.",
            "evidence": "Creator source",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/doooyle/status/2111196679680540724"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Development computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "Prepare and deploy the interface.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/doooyle/status/2111196679680540724"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Network and remote control",
            "quantity": "Existing setup",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Configure and operate the existing TV.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/doooyle/status/2111196679680540724"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Connection / debugging access",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Deploy custom software.",
            "notes": "Android debugging is described for the Android TV projects; do not assume it applies to the revenue screensaver TV.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html",
              "https://x.com/doooyle/status/2111196679680540724"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact television model, firmware and compatible deployment route are not fully disclosed. Reuse the creator-compatible hardware only after confirming those details; a random smart TV is not a verified substitute."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://tech.yahoo.com/home/articles/people-vibe-coding-ads-smart-221604591.html"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/doooyle/status/2111196679680540724"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "stream-deck-coding-panel",
      "title": "A physical command panel for coding sessions",
      "hardware": "Elgato Stream Deck with 15 LCD buttons; revision not specified",
      "summary": "Casey Capshaw mapped session launch, resume, model switching, cost checks and other coding commands onto physical keys, with three terminal variants.",
      "topic": "Buttons & controls",
      "setup": "Computer companion",
      "physicalRole": "Physical LCD keys launch and control coding sessions on the host computer.",
      "beforeYouBuild": "The source specifies 15 keys, not a hardware revision. This is host-side scripting, not replacement Stream Deck firmware.",
      "codingTool": "Claude Code; Claude mobile app for initial design",
      "evidence": "Creator writes: 'Claude Code generated the configuration files, set up the button mappings, and wired everything together'; he describes testing, variants, scripts and publication.",
      "sourceUrl": "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for",
      "supportingUrl": "https://github.com/caseycapshaw/streamdeck-claude-code",
      "sourceType": "First-person build article with finished desk photograph",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "stream-deck-mk2",
          "fit": "Device family",
          "note": "The build uses a 15-key Stream Deck; the creator does not identify its revision. Confirm profile and plugin compatibility with MK.2."
        }
      ],
      "photo": {
        "url": "https://substackcdn.com/image/fetch/$s_!cY-N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F303a0428-33e9-4aed-a649-e4fa18f42694_4032x3024.jpeg",
        "alt": "stream deck coding panel",
        "credit": "Casey Capshaw · finished desk setup",
        "kind": "Build photo",
        "src": "/images/project-media/stream-deck-coding-panel-6845d837c0-1200.webp",
        "thumb": "/images/project-media/stream-deck-coding-panel-6845d837c0-480.webp",
        "srcset": "/images/project-media/stream-deck-coding-panel-6845d837c0-480.webp 480w, /images/project-media/stream-deck-coding-panel-6845d837c0-800.webp 800w, /images/project-media/stream-deck-coding-panel-6845d837c0-1200.webp 1200w",
        "width": 1456,
        "height": 1092,
        "creditUrl": "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Elgato Stream Deck, 15 LCD keys",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Physical coding panel.",
            "notes": "Creator does not identify the revision. MK.2 is a family comparison, not an exact-match purchase.",
            "evidence": "Creator source",
            "destination": {
              "url": "/devices/stream-deck-mk2/",
              "match": "Device family · Directory",
              "verification": "Directory family match",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for",
              "https://github.com/caseycapshaw/streamdeck-claude-code"
            ],
            "sourcingStatus": "Catalog family — confirm exact revision"
          },
          {
            "name": "Computer running the Stream Deck scripts",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Panel depends on the host.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for",
              "https://github.com/caseycapshaw/streamdeck-claude-code"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB connection",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the panel.",
            "notes": "Check the selected revision’s fixed or detachable cable and host port; adapters may be needed.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for",
              "https://github.com/caseycapshaw/streamdeck-claude-code"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The exact 15-key hardware revision remains unspecified. Do not substitute Mini, Neo, Plus or XL based on this project alone."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://capshaw.substack.com/p/the-stream-deck-nobody-asked-for"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/caseycapshaw/streamdeck-claude-code"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "go2-ball-controller",
      "title": "Robot dog video controller and autonomous ball approach",
      "hardware": "Unitree Go2 quadruped robot",
      "summary": "Custom laptop video controller, sensor access and software that locates a beach ball, approaches it and moves it; a natural-language controller was also demonstrated.",
      "topic": "Robots & toys",
      "setup": "Supervised experiment",
      "physicalRole": "Custom code uses the robot’s camera, sensors and motors to approach and move a ball.",
      "beforeYouBuild": "Full autonomous fetch was not completed. Keep a human supervisor and a clear operating area; collision hazards remain.",
      "codingTool": "Claude; article discusses Claude Code but does not specify every participant's interface",
      "evidence": "Anthropic's firsthand experiment says the robot was controlled with a program largely written by Claude and describes the code-writing, sensor and controller tasks performed by Team Claude.",
      "sourceUrl": "https://www.anthropic.com/research/project-fetch-robot-dog",
      "supportingUrl": "https://www.anthropic.com/research/claude-plays-robotics",
      "sourceType": "AI-vendor research showcase with physical demonstrations",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "unitree-go2",
          "fit": "Device family",
          "note": "The project identifies the Go2 family but not its edition. Confirm SDK access and edition-specific capabilities before purchasing."
        }
      ],
      "photo": {
        "url": "https://img.youtube.com/vi/NGOAUJtdk-4/maxresdefault.jpg",
        "alt": "Unitree Go2 robot dog in the Project Fetch experiment",
        "credit": "Anthropic · Project Fetch",
        "kind": "Demo still",
        "src": "/images/project-media/go2-ball-controller-63e80f88b9-1200.webp",
        "thumb": "/images/project-media/go2-ball-controller-63e80f88b9-480.webp",
        "srcset": "/images/project-media/go2-ball-controller-63e80f88b9-480.webp 480w, /images/project-media/go2-ball-controller-63e80f88b9-800.webp 800w, /images/project-media/go2-ball-controller-63e80f88b9-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "creditUrl": "https://www.anthropic.com/research/project-fetch-robot-dog"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Unitree Go2",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Robot with onboard camera and LiDAR.",
            "notes": "Air/Pro/EDU edition and firmware were not disclosed; SDK access must be checked before buying.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.unitree.com/go2/",
              "match": "Product family; robot edition not disclosed",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "unitree-go2",
            "catalogMatch": "Device family"
          },
          {
            "name": "Laptop for robot control",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run control code and sensor streams.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Beach ball",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Target object.",
            "notes": "The experiment used a green ball for Team Claude; size not stated.",
            "evidence": "Creator source",
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Manufacturer controller or control phone",
            "quantity": "1 route",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Initial manual control and supervised operation.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the robot’s original battery and charger; inspect a used robot’s battery.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Clear test area and accessible emergency stop",
            "quantity": "Required setup",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Safe supervised operation.",
            "notes": "No autonomous unattended operation; establish and test stop behavior before motion.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.anthropic.com/research/project-fetch-robot-dog",
              "https://www.anthropic.com/research/claude-plays-robotics"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Robot edition, connection stack, SDK access and full reusable code are not disclosed. This is an experiment, not a turnkey fetch kit."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.anthropic.com/research/project-fetch-robot-dog"
          },
          {
            "label": "Code / supporting source",
            "url": "https://www.anthropic.com/research/claude-plays-robotics"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "bambuddy-local-printing",
      "title": "Bambuddy: local printer queues, filament tracking and alerts",
      "hardware": "Bambu Lab P2S in the review; other model support not checked",
      "summary": "A self-hosted alternative to cloud printer management with local print queues, camera monitoring, Spoolman filament tracking and Telegram notifications.",
      "topic": "Printing & tools",
      "setup": "Computer companion",
      "physicalRole": "Local software monitors and queues jobs on a real 3D printer.",
      "beforeYouBuild": "Review uses P2S. LAN Developer Mode sacrifices cloud features. A historical authentication flaw was reportedly patched; this is not a security audit.",
      "codingTool": "AI-assisted / vibe coded; exact coding tool not established",
      "evidence": "Adam Conway's April follow-up explicitly calls Bambuddy a vibe-coded, AI-assisted project; his March hands-on showcase explains his P2S setup and real use.",
      "sourceUrl": "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
      "supportingUrl": "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/",
      "sourceType": "First-person hardware-use review plus explicit secondary AI attribution",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "bambu-lab-p2s",
          "fit": "Exact model",
          "note": "The project names Bambu Lab P2S. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://static0.xdaimages.com/wordpress/wp-content/uploads/wm/2026/03/bambuddy-printing.png?q=49&fit=crop&w=825&dpr=2",
        "alt": "Bambuddy showing the physical printer camera and print status",
        "credit": "Adam Conway / XDA · working printer dashboard",
        "kind": "App screenshot",
        "src": "/images/project-media/bambuddy-local-printing-d38206d3c8-1200.webp",
        "thumb": "/images/project-media/bambuddy-local-printing-d38206d3c8-480.webp",
        "srcset": "/images/project-media/bambuddy-local-printing-d38206d3c8-480.webp 480w, /images/project-media/bambuddy-local-printing-d38206d3c8-800.webp 800w, /images/project-media/bambuddy-local-printing-d38206d3c8-1200.webp 1200w",
        "width": 1650,
        "height": 833,
        "creditUrl": "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Review the latest security fixes and LAN Developer Mode trade-offs before installation. A printer listing is not a security audit of third-party software.",
        "items": [
          {
            "name": "Bambu Lab P2S",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Printer used in the reviewed setup.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://us.store.bambulab.com/products/p2s",
              "match": "Exact product; combo accessories not required",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "bambu-lab-p2s",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Computer / server for Bambuddy",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Host the local application.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Local network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Reach the printer in the documented LAN mode.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Compatible filament",
            "quantity": "As needed",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Print material.",
            "notes": "Match material to the printer configuration and intended print.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the printer’s original mains cable.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "AMS / extra filament handling",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Multimaterial workflows.",
            "notes": "Not established as necessary for Bambuddy; do not buy a combo just to run local control.",
            "evidence": "Creator source",
            "sources": [
              "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/",
              "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Host sizing and support for printers other than the reviewed P2S are not established here."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.xda-developers.com/finally-have-full-control-bambu-lab-printer-ditched-bambu-cloud/"
          },
          {
            "label": "Code / supporting source",
            "url": "https://www.xda-developers.com/keep-finding-vibe-coded-apps-leak-user-data/"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "lidar-room-model",
      "title": "Scan a real room into an editable interactive 3D scene",
      "hardware": "LiDAR-equipped iPhone Pro or iPad Pro; iOS/iPadOS 17+",
      "summary": "Wes Bos captures room measurements, photos and depth, then builds an editable Three.js office recreation with physics and browser exploration.",
      "topic": "Cameras & sensors",
      "setup": "Sensor workflow",
      "physicalRole": "LiDAR captures real room dimensions and depth for an editable 3D scene.",
      "beforeYouBuild": "Needs a LiDAR-equipped Pro device and iOS/iPadOS 17+. Codex attribution applies to the scene reconstruction, not necessarily the capture app. Check measurements.",
      "codingTool": "OpenAI Codex",
      "evidence": "Creator explicitly says he used Codex to rebuild his scanned office in Three.js and details the agent's build/screenshot/compare/iterate loop.",
      "sourceUrl": "https://wesbos.com/3d-model-anything",
      "supportingUrl": "https://github.com/wesbos/3d-model-anything",
      "sourceType": "First-person build article with interactive demonstration",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://wesbos.com/cdn-cgi/image/width=768,quality=75,format=auto/assets/office-render-5eWImKLU.webp",
        "alt": "I Turned My Office into an Interactive 3D Model with AI",
        "credit": "Wes Bos · reconstructed room output",
        "kind": "Project output",
        "src": "/images/project-media/lidar-room-model-e84bd8c537-1200.webp",
        "thumb": "/images/project-media/lidar-room-model-e84bd8c537-480.webp",
        "srcset": "/images/project-media/lidar-room-model-e84bd8c537-480.webp 480w, /images/project-media/lidar-room-model-e84bd8c537-800.webp 800w, /images/project-media/lidar-room-model-e84bd8c537-1200.webp 1200w",
        "width": 768,
        "height": 432,
        "creditUrl": "https://wesbos.com/3d-model-anything"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "LiDAR-equipped iPhone Pro or iPad Pro",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Capture room geometry.",
            "notes": "iOS/iPadOS 17 or later; model family alone is insufficient because non-LiDAR devices do not qualify.",
            "evidence": "Creator source",
            "sources": [
              "https://wesbos.com/3d-model-anything",
              "https://github.com/wesbos/3d-model-anything"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for scene reconstruction",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run the Codex-assisted reconstruction workflow.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://wesbos.com/3d-model-anything",
              "https://github.com/wesbos/3d-model-anything"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "An exact tested Apple device SKU is not disclosed. Verify LiDAR hardware and capture-app compatibility before buying; do not buy an external LiDAR module."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://wesbos.com/3d-model-anything"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/wesbos/3d-model-anything"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "mixed-brand-home-controls",
      "title": "One control for mixed-brand office lights and home routines",
      "hardware": "Home Assistant Yellow; Minka-Aire fan via Bond Bridge; Nanoleaf Blocks; Lifx Luna; Philips Hue bulbs; Elgato Key Light; Leviton switch",
      "summary": "Jennifer Pattison Tuohy built a useful home dashboard, a working mixed-brand office-light toggle, timed fan shutoff, AC-linked shades and solar-production alerts.",
      "topic": "Lights",
      "setup": "Multi-device setup",
      "physicalRole": "One dashboard operates mixed-brand lights, a fan, shades and home sensors.",
      "beforeYouBuild": "Existing Home Assistant integrations provide device access. Wrong-device actions required supervision; Anthropic supplied the creator’s Max account.",
      "codingTool": "Claude Code",
      "evidence": "First-person article describes Claude writing YAML/configuration and automations, fixing the inverted fan-light behavior, and building the dashboard after ha-mcp integration.",
      "sourceUrl": "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
      "supportingUrl": "https://github.com/homeassistant-ai/ha-mcp",
      "sourceType": "First-person build walkthrough with before/after screenshots",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "philips-hue-go",
          "fit": "Platform project",
          "note": "The source uses Philips Hue bulbs through Home Assistant, not this exact model. Confirm your device integration before adapting the automation."
        },
        {
          "slug": "philips-hue-lightstrip-plus",
          "fit": "Platform project",
          "note": "The source uses Philips Hue bulbs through Home Assistant, not this exact model. Confirm your device integration before adapting the automation."
        },
        {
          "slug": "philips-hue-play",
          "fit": "Platform project",
          "note": "The source uses Philips Hue bulbs through Home Assistant, not this exact model. Confirm your device integration before adapting the automation."
        },
        {
          "slug": "philips-hue-iris",
          "fit": "Platform project",
          "note": "The source uses Philips Hue bulbs through Home Assistant, not this exact model. Confirm your device integration before adapting the automation."
        },
        {
          "slug": "elgato-key-light",
          "fit": "Exact model",
          "note": "The project names Elgato Key Light. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://platform.theverge.com/wp-content/uploads/sites/2/2026/01/IMG_3647.png?quality=90&strip=all&w=1200",
        "alt": "The finished Home Assistant control dashboard",
        "credit": "Jennifer Pattison Tuohy / The Verge",
        "kind": "App screenshot",
        "src": "/images/project-media/mixed-brand-home-controls-b2052f4d80-1200.webp",
        "thumb": "/images/project-media/mixed-brand-home-controls-b2052f4d80-480.webp",
        "srcset": "/images/project-media/mixed-brand-home-controls-b2052f4d80-480.webp 480w, /images/project-media/mixed-brand-home-controls-b2052f4d80-800.webp 800w, /images/project-media/mixed-brand-home-controls-b2052f4d80-1200.webp 1200w",
        "width": 1200,
        "height": 2607,
        "creditUrl": "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "The named products are examples from one home, not a mandatory starter bundle. Start with your existing supported Home Assistant devices; individual control examples need only their own devices and bridges.",
        "items": [
          {
            "name": "Home Assistant Yellow",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Integration host.",
            "notes": "Confirm assembled kit, Compute Module, storage and power configuration; Yellow configurations vary.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer running Claude / integration bridge",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Connect the agent to Home Assistant.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Local network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Reach Home Assistant and devices.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Minka-Aire fan",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Fan in the creator’s setup.",
            "notes": "Exact fan model not disclosed; only needed to reproduce that control.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Bond Bridge",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Bridge for the fan.",
            "notes": "Required for the demonstrated Minka-Aire control path; exact Bridge revision not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Nanoleaf Blocks",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Lighting in the demonstrated home.",
            "notes": "Layout, kit size and panel count not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "LIFX Luna",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Lighting in the demonstrated home.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Philips Hue bulbs",
            "quantity": "Not stated",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Lighting in the demonstrated home.",
            "notes": "Bulb types, count and bridge configuration not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Elgato Key Light",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Lamp in the demonstrated home.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.elgato.com/us/en/p/key-light",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "elgato-key-light",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Leviton switch",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Switch in the demonstrated home.",
            "notes": "Exact switch model not disclosed; electrical work needs qualified installation.",
            "evidence": "Creator source",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supplies / required bridges",
            "quantity": "Per device",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Support the devices you choose.",
            "notes": "Check existing integration and package contents rather than buying every device in this example.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home",
              "https://github.com/homeassistant-ai/ha-mcp"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Fan, switch and bulb SKUs, quantities, bridge revisions and Yellow configuration are incomplete."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.theverge.com/report/869318/claude-vibe-coding-home-assistant-smart-home"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/homeassistant-ai/ha-mcp"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "cardputer-voice-terminal",
      "title": "Pocket push-to-talk translator, voice notebook and computer remote",
      "hardware": "M5Stack Cardputer ADV + Mac mini",
      "summary": "Leon Furze reprogrammed the Cardputer's keyboard, microphone, speaker and display into a push-to-talk assistant, English/French translator, voice notebook and terminal. The Mac mini handles transcription and responses.",
      "topic": "Voice & audio",
      "setup": "Device firmware",
      "physicalRole": "The pocket keyboard, microphone, speaker and screen become a push-to-talk terminal.",
      "beforeYouBuild": "Advanced setup with a separate Mac mini. The agent has broad host access; spoken confirmation is prompt-based, not a security boundary. The creator reset the device after the experiment.",
      "codingTool": "Claude Code",
      "evidence": "First-person article explicitly states: 'The whole thing was built end-to-end in live sessions with Claude Code'; explains device execution workbench, audio streaming, flashing, iteration and failures.",
      "sourceUrl": "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
      "supportingUrl": "https://github.com/lfurze/cardputer-voice-assistant",
      "sourceType": "First-person build article with hardware photographs and embedded demonstrations",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-cardputer-adv",
          "fit": "Exact model",
          "note": "ADV uses TCA8418 keyboard control and ES8311 audio; original Cardputer drivers are not interchangeable."
        }
      ],
      "photo": {
        "url": "work/atomsforagents/public/images/projects/cardputer-voice-terminal.webp",
        "alt": "M5Stack Cardputer ADV running the voice terminal",
        "credit": "Leon Furze · original build photograph",
        "kind": "Build photo",
        "src": "/images/project-media/cardputer-voice-terminal-5966ff21b2-1200.webp",
        "thumb": "/images/project-media/cardputer-voice-terminal-5966ff21b2-480.webp",
        "srcset": "/images/project-media/cardputer-voice-terminal-5966ff21b2-480.webp 480w, /images/project-media/cardputer-voice-terminal-5966ff21b2-800.webp 800w, /images/project-media/cardputer-voice-terminal-5966ff21b2-1200.webp 1200w",
        "width": 1200,
        "height": 873,
        "creditUrl": "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Host permissions are broad; spoken confirmation is not an authorization boundary. The creator reset the experimental device afterwards.",
        "items": [
          {
            "name": "M5Stack Cardputer ADV",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Handheld voice interface.",
            "notes": "ADV uses TCA8418 keyboard control and ES8311 audio; original Cardputer drivers are not interchangeable.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stack-cardputer-adv-version-esp32-s3",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-cardputer-adv",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Mac mini",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Speech and agent host.",
            "notes": "Exact generation/RAM not disclosed; the experiment runs host services on macOS.",
            "evidence": "Creator source",
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "2.4 GHz Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect handheld to host.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Built-in microphone, speaker and keyboard",
            "quantity": "Built in",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Included",
            "purpose": "Voice and text I/O.",
            "notes": "Do not buy separate audio modules or a keyboard.",
            "evidence": "Creator source",
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant"
            ],
            "purchaseNote": "Built in or supplied with the stated device; check package contents before buying separately.",
            "sourcingStatus": "Included with device — check package"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Reuse the Mac mini supply and handheld charging arrangement.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code",
              "https://github.com/lfurze/cardputer-voice-assistant"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "The Mac mini generation and memory are not disclosed."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://leonfurze.com/2026/06/25/building-a-voice-assistant-with-claude-code"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/lfurze/cardputer-voice-assistant"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "guition-network-display",
      "title": "Dedicated cyberpunk internet-status display",
      "hardware": "Guition ESP32-S3–4848S040 in its silver plastic case",
      "summary": "Ryan's 4-inch touchscreen continuously displays internet availability, device IP and MAC address through a custom animated interface programmed onto the physical display.",
      "topic": "Displays",
      "setup": "Device firmware",
      "physicalRole": "Custom firmware turns a cased touchscreen into a dedicated internet-status display.",
      "beforeYouBuild": "Starts from a prepared base project. Reported build time excludes initial setup; other display models are not verified.",
      "codingTool": "Claude Code",
      "evidence": "Creator describes generating and iterating the firmware/interface without writing code, including OTA flashing and an endpoint that lets Claude inspect the physical display's framebuffer; reports a functioning result after 7 minutes 33 seconds.",
      "sourceUrl": "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
      "supportingUrl": "https://github.com/mccahan/esp32-display-claude-base",
      "sourceType": "First-person build walkthrough with final-result media captions",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://github.com/mccahan/esp32-display-claude-base/raw/main/samples/screenshot-cyberpunk.png",
        "alt": "guition network display",
        "credit": "Ryan / mccahan · example from the same display platform, not the network-monitor screen",
        "kind": "Example interface",
        "src": "/images/project-media/guition-network-display-3d1a13e9e5-1200.webp",
        "thumb": "/images/project-media/guition-network-display-3d1a13e9e5-480.webp",
        "srcset": "/images/project-media/guition-network-display-3d1a13e9e5-480.webp 480w, /images/project-media/guition-network-display-3d1a13e9e5-800.webp 800w, /images/project-media/guition-network-display-3d1a13e9e5-1200.webp 1200w",
        "width": 480,
        "height": 480,
        "creditUrl": "https://github.com/mccahan/esp32-display-claude-base"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Guition ESP32-S3–4848S040, silver plastic case",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "480×480 ST7701 display with GT911 touch.",
            "notes": "Creator-linked marketplace listing; variant and seller stock could not be live-verified.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.aliexpress.us/item/3256809197960152.html",
              "match": "Creator-linked listing; inspect selected variant",
              "verification": "Source-linked; live page not verified",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
              "https://github.com/mccahan/esp32-display-claude-base"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
              "https://github.com/mccahan/esp32-display-claude-base",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
              "https://github.com/mccahan/esp32-display-claude-base"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Network data and OTA updates.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
              "https://github.com/mccahan/esp32-display-claude-base"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB power source",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Power the device.",
            "notes": "Use the board’s specified USB input.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901",
              "https://github.com/mccahan/esp32-display-claude-base"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Confirm the exact board revision, casing and USB/power arrangement on the selected listing. Other 4-inch displays are not verified substitutes."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://medium.com/@ryan_24346/using-claude-to-vibe-code-for-4-touchscreen-displays-4771a4be6901"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/mccahan/esp32-display-claude-base"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "cansub-signal-decoder",
      "title": "Decode real car and gauge signals with a custom CAN sniffer",
      "hardware": "CSS Electronics CANsub.2; OBD2-DB9 cable; Opel Astra in live vehicle example; optional CANmod.input and potentiometer board",
      "summary": "Reads real CAN-bus traffic, aligns it with dashboard video or human-moved gauges, and produces usable signal definitions and live visualizations. Demonstrated vehicle speed decoding and physical gauge-position decoding.",
      "topic": "Cameras & sensors",
      "setup": "Specialist tools",
      "physicalRole": "A physical CAN interface captures signals from a vehicle or test gauges for decoding.",
      "beforeYouBuild": "Use listen-only capture. Wiring and reference signals require expertise; decoded results are not safety-certified. Do not transmit control commands to a vehicle.",
      "codingTool": "Claude Code",
      "evidence": "Martin Falch's 'How I built the skill (or asked Claude to)' section says he deliberately did not create the Python tools himself, instead directing Claude through test cases and corrections; the article shows the resulting software operating with CANsub hardware.",
      "sourceUrl": "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
      "supportingUrl": "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills",
      "sourceType": "First-person manufacturer build guide with physical demonstrations and validation plots",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "css-cansub-2",
          "fit": "Exact model",
          "note": "The project names CSS Electronics CANsub.2. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://www.csselectronics.com/cdn/shop/files/cansub-ai-can-sniffer-obd2-db9-adapter.jpg",
        "alt": "CANsub.2 with OBD2-DB9 cable",
        "credit": "CSS Electronics · demonstrated hardware setup",
        "kind": "Product photo",
        "src": "/images/project-media/cansub-signal-decoder-04f9e462f5-1200.webp",
        "thumb": "/images/project-media/cansub-signal-decoder-04f9e462f5-480.webp",
        "srcset": "/images/project-media/cansub-signal-decoder-04f9e462f5-480.webp 480w, /images/project-media/cansub-signal-decoder-04f9e462f5-800.webp 800w, /images/project-media/cansub-signal-decoder-04f9e462f5-1200.webp 1200w",
        "width": 1600,
        "height": 1000,
        "creditUrl": "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Use listen-only capture and correct cable pinout; do not transmit vehicle control commands or operate the computer while driving.",
        "items": [
          {
            "name": "CSS Electronics CANsub.2",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Capture CAN traffic.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.csselectronics.com/products/can-fd-usb-interface-ethernet-cansub-2",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "css-cansub-2",
            "catalogMatch": "Exact model"
          },
          {
            "name": "OBD2-to-DB9 adapter cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect vehicle diagnostic socket to interface.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.csselectronics.com/products/obd2-db9-adapter-cable",
              "match": "Exact creator-recommended accessory",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "USB (CANsub-compatible) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Connect the CANsub to the analysis computer.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for capture and decoding",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run webCAN / Python capture tools.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Vehicle / live CAN source",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Provide traffic to decode.",
            "notes": "Creator’s live example used an Opel Astra; access to proprietary CAN data differs by vehicle.",
            "evidence": "Creator source",
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Contactless CAN reader",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Alternative capture connection.",
            "notes": "May help when desired traffic is not exposed at the OBD port; follow the manufacturer wiring guide.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.csselectronics.com/products/contactless-can-bus-reader-adapter",
              "match": "Creator-recommended optional accessory",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "CANmod.input and potentiometer board",
            "quantity": "1 each",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Controlled reference signal experiment.",
            "notes": "Not required for a basic vehicle capture; exact potentiometer board not identified.",
            "evidence": "Creator source",
            "sources": [
              "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude",
              "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Optional reference-board model and vehicle-specific bus access require confirmation."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://www.csselectronics.com/pages/can-bus-reverse-engineering-ai-llm-claude"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/CSS-Electronics/can-bus-reverse-engineering-skills"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "minitoo-clauddy",
      "title": "Clauddy: turn a MiniToo into a physical coding-status notifier",
      "hardware": "Divoom MiniToo, firmware 2.4.0, 160×128 display; macOS host",
      "summary": "Reuses the finished pixel display's custom clock faces for animated working, waiting-for-feedback and idle states, switched by coding-session hooks over Bluetooth.",
      "topic": "Displays",
      "setup": "Computer companion",
      "physicalRole": "Bluetooth switches the physical pixel display between working, waiting and idle faces.",
      "beforeYouBuild": "macOS only; working-draft, reverse-engineered protocol. Text and repository were reviewed, but the embedded demonstration video did not play.",
      "codingTool": "Claude Opus; exact interface not explicitly established in creator post",
      "evidence": "Creator's first-person post explicitly describes giving Opus the Android APK to reverse engineer and reporting device crashes during iteration. Linked repository documents the resulting Bluetooth daemon, image tooling and working status application.",
      "sourceUrl": "https://reddit.com/r/ClaudeAI/comments/1sxaj1t/i_vibe_reverseengineered_my_divoom_minitoos",
      "supportingUrl": "https://github.com/bugzmanov/divoom-minitoo",
      "sourceType": "First-person community build write-up plus live-reviewed project documentation",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "divoom-minitoo",
          "fit": "Exact model",
          "note": "The project names Divoom MiniToo. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "work/site-unification/minitoo-frame.jpg",
        "alt": "Divoom MiniToo showing the working status beside a laptop",
        "credit": "bugzmanov · frame from creator demo",
        "kind": "Demo still",
        "src": "/images/project-media/minitoo-clauddy-d06a2408f4-1200.webp",
        "thumb": "/images/project-media/minitoo-clauddy-d06a2408f4-480.webp",
        "srcset": "/images/project-media/minitoo-clauddy-d06a2408f4-480.webp 480w, /images/project-media/minitoo-clauddy-d06a2408f4-800.webp 800w, /images/project-media/minitoo-clauddy-d06a2408f4-1200.webp 1200w",
        "width": 540,
        "height": 730,
        "creditUrl": "https://github.com/bugzmanov/divoom-minitoo"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "The firmware version is part of the compatibility target. MiniToo is not Pixoo, Ditoo or another Divoom model; microphone, extra screen and microcontroller are not required.",
        "items": [
          {
            "name": "Divoom MiniToo, firmware 2.4.0",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "160×128 desktop display.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://divoom.com/products/minitoo/",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://reddit.com/r/ClaudeAI/comments/1sxaj1t/i_vibe_reverseengineered_my_divoom_minitoos",
              "https://github.com/bugzmanov/divoom-minitoo"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "divoom-minitoo",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Mac with Bluetooth",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run the reverse-engineered display bridge.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://reddit.com/r/ClaudeAI/comments/1sxaj1t/i_vibe_reverseengineered_my_divoom_minitoos",
              "https://github.com/bugzmanov/divoom-minitoo"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "MiniToo charging cable / USB power",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Keep the device charged.",
            "notes": "Data is sent over Bluetooth; do not assume the charge port is a USB display interface.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://reddit.com/r/ClaudeAI/comments/1sxaj1t/i_vibe_reverseengineered_my_divoom_minitoos",
              "https://github.com/bugzmanov/divoom-minitoo"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://reddit.com/r/ClaudeAI/comments/1sxaj1t/i_vibe_reverseengineered_my_divoom_minitoos"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/bugzmanov/divoom-minitoo"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "warehouse-print-bridge",
      "title": "One-click thermal-printer bridge across two warehouses",
      "hardware": "4×6 thermal shipping-label printers at TRMNL warehouses; exact printer models not disclosed",
      "summary": "A custom Swift network-print utility sends physical packing slips and shipping labels from computers to printers at either warehouse in one click.",
      "topic": "Printing & tools",
      "setup": "Computer companion",
      "physicalRole": "A custom network bridge prints actual labels and packing slips across two warehouses.",
      "beforeYouBuild": "Exact printer models, protocol and reusable source are not disclosed. AI attribution covers the wider project rather than each line of Swift.",
      "codingTool": "Claude CLI with Superpowers skill; Claude Design for surrounding application mockups",
      "evidence": "Ryan Kulp's firsthand rollout says 'to actually write the code we used Claude (CLI) and the Superpowers skill'; its final-product section identifies the Swift printer utility and shows the shipping station used in the deployed system.",
      "sourceUrl": "https://trmnl.com/blog/vibe-coding-shiphero",
      "supportingUrl": "https://trmnl.com/blog/logistics-tech",
      "sourceType": "First-person production build story with physical shipping-station photograph",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://trmnl.com/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTczMTc0MDksInB1ciI6ImJsb2JfaWQifX0=--075d9d057ec74b7082bb0855e02d964c01a8e986/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJqcGVnIiwicmVzaXplX3RvX2xpbWl0IjpbMTAyNCw3NjhdfSwicHVyIjoidmFyaWF0aW9uIn19--b5fc5af83c336b0fe3eb199eed01a2c85b3a702d/trmnl-logistics-shipping-station.jpeg",
        "alt": "warehouse print bridge",
        "credit": "TRMNL · shipping-station management interface",
        "kind": "App screenshot",
        "src": "/images/project-media/warehouse-print-bridge-a12e65f6f0-1200.webp",
        "thumb": "/images/project-media/warehouse-print-bridge-a12e65f6f0-480.webp",
        "srcset": "/images/project-media/warehouse-print-bridge-a12e65f6f0-480.webp 480w, /images/project-media/warehouse-print-bridge-a12e65f6f0-800.webp 800w, /images/project-media/warehouse-print-bridge-a12e65f6f0-1200.webp 1200w",
        "width": 1024,
        "height": 552,
        "creditUrl": "https://trmnl.com/blog/vibe-coding-shiphero"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "4×6 thermal shipping-label printer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Print warehouse labels.",
            "notes": "Exact printer models and control protocol not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://trmnl.com/blog/vibe-coding-shiphero",
              "https://trmnl.com/blog/logistics-tech"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Mac",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Run the Swift print bridge.",
            "notes": "Exact model and OS version not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://trmnl.com/blog/vibe-coding-shiphero",
              "https://trmnl.com/blog/logistics-tech"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "4×6 thermal labels",
            "quantity": "As needed",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Consumables.",
            "notes": "Confirm roll/fanfold support, core size and direct-thermal requirements on the selected printer.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://trmnl.com/blog/vibe-coding-shiphero",
              "https://trmnl.com/blog/logistics-tech"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Printer cable / network and matched power supply",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect and power the printer.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://trmnl.com/blog/vibe-coding-shiphero",
              "https://trmnl.com/blog/logistics-tech"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Printer models, protocol, cables, host requirements and reusable bridge source are not published. Do not represent a generic 4×6 printer as tested with this bridge."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://trmnl.com/blog/vibe-coding-shiphero"
          },
          {
            "label": "Code / supporting source",
            "url": "https://trmnl.com/blog/logistics-tech"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "responder-nav-field-computer",
      "title": "Responder NAV: an offline field computer",
      "hardware": "M5Stack Tab5 (ESP32-P4 + ESP32-C6), Tab5 Keyboard, GPS and LoRa modules",
      "summary": "Carry a dedicated touchscreen for GPS navigation, LoRa messages, radio utilities and vehicle diagnostics without relying on cloud services.",
      "topic": "Cameras & sensors",
      "setup": "Multi-device setup",
      "physicalRole": "The Tab5 runs custom firmware that reads GPS and radio modules and connects to external RTL-SDR and ELM327 OBD-II adapters. Its physical screen and keyboard bring the field tools together in one portable device.",
      "beforeYouBuild": "This is an expandable prototype, not a finished appliance. Different features need their own modules or USB adapters, and the enclosure is 3D printed. The article names both RTL2832U/R820T2 and RTL-SDR Blog V4 hardware; check the repository for the supported receiver. Radio frequencies and transmission rules vary by location. Vehicle functions are diagnostic; do not operate the device while driving.",
      "codingTool": "OpenAI Codex",
      "evidence": "Creator Alberto Cajiao explicitly says OpenAI Codex was used extensively for firmware implementation, debugging, refactoring and rapid prototyping. The article documents the assembled hardware and current functions separately from future plans.",
      "sourceUrl": "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
      "supportingUrl": "https://github.com/fistulareffigy/Responder-NAV-Field-Computer",
      "sourceType": "Creator build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-tab5",
          "fit": "Exact model",
          "note": "The project names M5Stack Tab5. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://hackster.imgix.net/uploads/attachments/1978349/_lurlLL3qfR.blob?auto=compress%2Cformat&w=900&h=675&fit=min",
        "alt": "Alberto Cajiao's Responder NAV field computer built around an M5Stack Tab5",
        "kind": "Build photo",
        "credit": "Alberto Cajiao · original project photo via Hackster",
        "creditUrl": "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
        "src": "/images/project-media/responder-nav-field-computer-de708afe75-900.webp",
        "thumb": "/images/project-media/responder-nav-field-computer-de708afe75-480.webp",
        "srcset": "/images/project-media/responder-nav-field-computer-de708afe75-480.webp 480w, /images/project-media/responder-nav-field-computer-de708afe75-800.webp 800w, /images/project-media/responder-nav-field-computer-de708afe75-900.webp 900w",
        "width": 900,
        "height": 675
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Base computer: Tab5, keyboard, storage and power. GPS, LoRa, SDR, OBD and camera are feature-specific additions, not a requirement to buy every expansion at once. The current repository is v0.73 beta.",
        "items": [
          {
            "name": "M5Stack Tab5",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "ESP32-P4 field-computer base.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stack-tab5-iot-development-kit-esp32-p4",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-tab5",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Tab5 Keyboard (A164)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Physical input.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/keyboard-for-tab5",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "FAT32 or exFAT; copy the repository’s sdcard folder to the card root.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "M5Stack Module GPS V2.0 with external antenna (AT6668)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "GPS functionality.",
            "notes": "V2.0 is end of life; V2.1 is not automatically a verified replacement.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/gps-module-v2-0-with-external-antenna-at6668",
              "match": "Exact product; end-of-life listing",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "M5Stack U184-US915 LORAWAN-US915",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "LoRa functionality.",
            "notes": "US915 only; includes the manufacturer antenna and HY2.0-4P cable. Confirm legality and the Tab5 connection for your configuration; do not substitute EU868.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "destination": {
              "url": "https://shop.m5stack.com/products/lorawan-unit-us915-stm32wle5-with-antenna",
              "match": "Exact U184-US915; region-specific",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "RTL2832U receiver with R820T / R820T2 tuner",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Radio and aircraft functions.",
            "notes": "Repository’s hardware guide specifies this target. The article also names Blog V4; do not assume V4 compatibility.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB ELM327 OBD-II adapter",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Vehicle diagnostics.",
            "notes": "Exact USB serial bridge, vehicle and protocol support must be verified.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Freenove FNK0060/FNK0060B ESP32-WROVER camera",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Deploy Cam companion.",
            "notes": "The creator targets CAMERA_MODEL_WROVER_KIT and the onboard CH340 USB serial bridge; an external FTDI programmer is not required. The kit’s 1GB card is not a replacement for the Tab5 application storage.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer",
              "https://store.freenove.com/products/fnk0060",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer/blob/main/deploy_cam_esp32cam/README.md"
            ],
            "destination": {
              "url": "https://store.freenove.com/products/fnk0060",
              "match": "Exact FNK0060 kit; select this board, not an ESP32-S3 camera",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": false,
              "reference": false
            },
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Radio antennas and matched connectors",
            "quantity": "Per module",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Selected RF features.",
            "notes": "Choose the correct bands and connectors; the GPS listing includes its own external antenna.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Powered USB hub / stable peripheral power",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Multiple or high-current USB peripherals.",
            "notes": "An unpowered hub may cause brownouts; foreground USB apps share the host controller.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "3D-printed enclosure and assembly hardware",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "House the complete field computer.",
            "notes": "Exact fastener counts depend on the enclosure revision.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Tab5 power / NP-F550 battery",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Power the device.",
            "notes": "Standard Tab5 has no battery; Tab5 Kit includes NP-F550. Check the selected bundle and peripheral load.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01",
              "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Radio adapter revisions, ELM327 USB bridge, antennas, enclosure fasteners and power budget still need configuration-specific checks."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://hackster.io/albertocajiaoac/responder-nav-an-expandable-offline-field-computer-28db01"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/fistulareffigy/Responder-NAV-Field-Computer"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "tab5-android-console",
      "title": "Control an Android device from a standalone Tab5",
      "hardware": "M5Stack Tab5 IoT Development Kit (ESP32-P4); Android device",
      "summary": "Mirror an Android screen, use touch controls, transfer files and inspect logs from a handheld console instead of a PC.",
      "topic": "Buttons & controls",
      "setup": "Device firmware",
      "physicalRole": "Custom Tab5 firmware implements an ADB host, decodes a live video stream with the ESP32-P4's JPEG hardware and sends touchscreen gestures to a connected Android device over USB or TCP/IP.",
      "beforeYouBuild": "Flash with M5Burner and authorize USB debugging only on your own Android device. The current user guide supports wireless-debugging pairing as well as classic TCP/IP; use trusted networks and disable debugging afterwards. Audio forwarding requires Android 12+. Screenshot, log and file storage uses a microSD card. These permissions permit shell commands, app changes and file access.",
      "codingTool": "Claude Code",
      "evidence": "Hiroki Kawakami says he delegated much of the implementation, refactoring, testing and automated UI checking to Claude Code, then performed final validation and performance tuning on the real Tab5. His article describes the host simulator, ADB transport and display pipeline.",
      "sourceUrl": "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
      "supportingUrl": "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md",
      "sourceType": "Creator build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-tab5",
          "fit": "Exact model",
          "note": "The project names M5Stack Tab5. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://hackster.imgix.net/uploads/attachments/1977410/_D8oDDVVj7M.blob?auto=compress%2Cformat&w=900&h=675&fit=min",
        "alt": "Hiroki Kawakami's M5Stack Tab5 Android control console",
        "kind": "Build photo",
        "credit": "Hiroki Kawakami · original project photo via Hackster",
        "creditUrl": "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
        "src": "/images/project-media/tab5-android-console-d1c12922b2-900.webp",
        "thumb": "/images/project-media/tab5-android-console-d1c12922b2-480.webp",
        "srcset": "/images/project-media/tab5-android-console-d1c12922b2-480.webp 480w, /images/project-media/tab5-android-console-d1c12922b2-800.webp 800w, /images/project-media/tab5-android-console-d1c12922b2-900.webp 900w",
        "width": 900,
        "height": 675
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "USB and wireless ADB are alternative connection routes. Current user guide supports Android wireless-debugging pairing; disable debugging after use.",
        "items": [
          {
            "name": "M5Stack Tab5 IoT Development Kit",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "ADB console.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stack-tab5-iot-development-kit-esp32-p4",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-tab5",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Android phone or tablet",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Device being controlled.",
            "notes": "Audio forwarding requires Android 12+. USB debugging authorization is required for USB control.",
            "evidence": "Creator source",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB (Tab5 host to Android) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Match the Android connector; connect through the Tab5 USB host arrangement.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Separate setup cable to flash the Tab5 from a computer. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "Needed for local screenshots, saved logs, files and APK storage.",
            "evidence": "Creator source",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Device power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Tab5 Kit and standard Tab5 have different battery contents; check the ordered bundle.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Trusted Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Wireless ADB route.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b",
              "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "http://www.hackster.io/hiroki_kawakami/m5stack-tab5-android-console-cc265b"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/Hiroki-Kawakami/Tab5-ADB/blob/main/docs/user-guide.md"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "m5papers3-gameboy-jit",
      "title": "Game Boy gaming on an e-paper handheld",
      "hardware": "M5PaperS3; microSD card",
      "summary": "Turn an e-paper touchscreen into a Game Boy handheld, with an experimental Claude-written compiler aimed at faster emulation.",
      "topic": "Robots & toys",
      "setup": "Supervised experiment",
      "physicalRole": "The ESP32-S3 drives the M5PaperS3's raw e-paper interface at a high refresh rate, provides touch controls and plays buzzer audio. A proof-of-concept compiler translates Game Boy instructions into Xtensa LX7 instructions.",
      "beforeYouBuild": "Claude Code's documented contribution is Yukidama's experimental JIT compiler, not the entire emulator or display driver. Compatibility is largely untested and frame rate varies; 60 Hz panel driving does not guarantee every game runs at 60 fps. Bluetooth controller support is experimental. Save explicitly before powering off. The creator reports M5PaperS3 is end-of-life. Use game data you have the right to use.",
      "codingTool": "Claude Code (experimental JIT component)",
      "evidence": "Wenting Zhang credits his friend Yukidama with building the proof-of-concept Game Boy-to-Xtensa JIT compiler using Claude Code. The article shows the working M5PaperS3 emulator and clearly distinguishes the experimental compiler from the existing CrankBoy core and Zhang's display work.",
      "sourceUrl": "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5",
      "supportingUrl": "",
      "sourceType": "Creator build article",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5papers3",
          "fit": "Exact model",
          "note": "The manufacturer and creator identify this model as end-of-life; check remaining stock or used listings. Do not silently substitute a newer model."
        }
      ],
      "photo": {
        "url": "https://hackster.imgix.net/uploads/attachments/1957919/_Aos4QzC30A.blob?auto=compress%2Cformat&w=900&h=675&fit=min",
        "alt": "Wenting Zhang's M5PaperS3 running a Game Boy game on its e-paper display",
        "kind": "Build photo",
        "credit": "Wenting Zhang · original project photo via Hackster",
        "creditUrl": "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5",
        "src": "/images/project-media/m5papers3-gameboy-jit-dde45eb7b7-900.webp",
        "thumb": "/images/project-media/m5papers3-gameboy-jit-dde45eb7b7-480.webp",
        "srcset": "/images/project-media/m5papers3-gameboy-jit-dde45eb7b7-480.webp 480w, /images/project-media/m5papers3-gameboy-jit-dde45eb7b7-800.webp 800w, /images/project-media/m5papers3-gameboy-jit-dde45eb7b7-900.webp 900w",
        "width": 900,
        "height": 675
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "M5PaperS3",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Original e-paper device.",
            "notes": "Creator and manufacturer mark this device end of life. PaperMono or another successor is not a verified drop-in target.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5papers3-esp32s3-development-kit",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5papers3",
            "catalogMatch": "Exact model"
          },
          {
            "name": "microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "Store authorized game data and saves; confirm the emulator’s card-format requirements.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Bluetooth controller",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "External game input.",
            "notes": "Support is experimental; no exact controller model was verified.",
            "evidence": "Creator source",
            "sources": [
              "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "No exact supported Bluetooth controller is established. Check remaining stock and exact PaperS3 revision before buying."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://hackster.io/wenting-zhang/60fps-eink-gameboy-emulator-on-m5papers3-57e4e5"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "kindle-ai-usage",
      "title": "A Kindle dashboard for AI usage",
      "hardware": "Compatible Kindle; exact generation not specified",
      "summary": "A jailbroken Kindle displays aggregated coding-tool usage, waking periodically to refresh.",
      "topic": "Displays",
      "setup": "Unofficial firmware",
      "physicalRole": "A jailbroken Kindle wakes on a schedule, downloads a dashboard from a host computer and keeps the last image visible on its e-paper screen while asleep.",
      "beforeYouBuild": "Requires firmware-compatible jailbreak, FBInk and a host server. Do not interpret API-equivalent costs as billed subscription spend.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with the jailbreak and setup workflow, including compatibility checks, dashboard configuration, framebuffer rendering and scheduled wake-and-sleep behavior.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224",
      "supportingUrl": "https://github.com/Kuberwastaken/kindle-ai-usage",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/38f38df2-4ab6-4d1b-9924-194525266202",
        "src": "/images/project-media/kindle-ai-usage-29468d2cc1-1200.webp",
        "thumb": "/images/project-media/kindle-ai-usage-29468d2cc1-480.webp",
        "srcset": "/images/project-media/kindle-ai-usage-29468d2cc1-480.webp 480w, /images/project-media/kindle-ai-usage-29468d2cc1-800.webp 800w, /images/project-media/kindle-ai-usage-29468d2cc1-1200.webp 1200w",
        "width": 2458,
        "height": 1844,
        "alt": "A Kindle dashboard for AI usage — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "kuberwastaken · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Uses the Kindle’s own display and battery. No separate e-paper panel is needed; framebuffer dimensions and jailbreak method are generation-specific.",
        "items": [
          {
            "name": "Kindle KT3 — original 600×800 deployment",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "E-paper dashboard.",
            "notes": "The maintainer’s setup guide identifies the original KT3 deployment and 600×800 framebuffer. Before purchase record the exact model, first eight serial characters, firmware and jailbreak state, then check the linked compatibility wizard. KT3 identification does not make arbitrary firmware safe to jailbreak.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224",
              "https://github.com/Kuberwastaken/kindle-ai-usage",
              "https://github.com/Kuberwastaken/kindle-ai-usage/blob/main/docs/KINDLE.md"
            ],
            "destination": {
              "url": "https://kindlemodding.org/kindle-models",
              "match": "Compatibility wizard linked by maintainer; NOT a purchase listing",
              "verification": "Source-linked; live page not verified",
              "reference": true,
              "checkedAt": "2026-11-04",
              "availability": "Not a product listing"
            },
            "sourcingStatus": "Reference only — not a purchase link"
          },
          {
            "name": "Computer / always-on host running Node.js 20+",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Collect usage and serve the dashboard.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224",
              "https://github.com/Kuberwastaken/kindle-ai-usage"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB (Kindle-model-specific) data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "The Kindle must expose its drive during installation; connector varies by generation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224",
              "https://github.com/Kuberwastaken/kindle-ai-usage"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Download dashboard images.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224",
              "https://github.com/Kuberwastaken/kindle-ai-usage"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Original KT3 hardware is now identified, but an exact used unit with eligible firmware is not verified. A seller must disclose firmware/serial details before purchase.",
          "Check framebuffer rotation and FBInk on the actual unit. Older Kindles may require 2.4 GHz WPA2 rather than 5 GHz or WPA3-only networking."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8133b4dec277fe58e2c3e0a3bc317fa1a2e33b28e9035bba9bd2a73612241224"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/Kuberwastaken/kindle-ai-usage"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "dream-logger",
      "title": "Record dreams on a bedside touchscreen",
      "hardware": "M5Stack CoreS3 SE (K128-SE)",
      "summary": "A bedside touchscreen records dreams and displays four generated illustrations.",
      "topic": "Voice & audio",
      "setup": "Device firmware",
      "physicalRole": "The CoreS3 SE provides a microphone, touchscreen and Wi-Fi connection for recording a dream, sending it to cloud services and displaying generated illustrations.",
      "beforeYouBuild": "Wi-Fi, paid cloud services, firmware flashing and a separately built calendar service are required; demonstrated setup uses an external power bank.",
      "codingTool": "Codex",
      "evidence": "Fedesarquis describes using Codex to iterate on the device firmware over USB-C, then compiling, flashing and testing each change on the actual CoreS3 SE.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
      "supportingUrl": "https://x.com/i/status/2110414012903038993",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-cores3-se",
          "fit": "Exact model",
          "note": "SE version is sold without the battery bottom used by some Core kits. Manufacturer confirms USB-C, ES7210 microphone inputs and no battery bottom. The power bank remains the documented demo route."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/5161724f-25c5-466f-b755-bd0d2a7fe607",
        "src": "/images/project-media/dream-logger-bc2a9f43ae-1200.webp",
        "thumb": "/images/project-media/dream-logger-bc2a9f43ae-480.webp",
        "srcset": "/images/project-media/dream-logger-bc2a9f43ae-480.webp 480w, /images/project-media/dream-logger-bc2a9f43ae-800.webp 800w, /images/project-media/dream-logger-bc2a9f43ae-1200.webp 1200w",
        "width": 1448,
        "height": 1086,
        "alt": "Record dreams on a bedside touchscreen — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "fedesarquis · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Do not buy separate microphones, displays or an SD card for this implementation: source describes built-in microphone, touchscreen and FFat flash storage. Cloud APIs and the companion calendar are separate software requirements.",
        "items": [
          {
            "name": "M5Stack CoreS3 SE (K128-SE)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Touchscreen and microphone device.",
            "notes": "SE version is sold without the battery bottom used by some Core kits. Manufacturer confirms USB-C, ES7210 microphone inputs and no battery bottom. The power bank remains the documented demo route.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stack-cores3-se-iot-controller-w-o-battery-bottom",
              "match": "Exact K128-SE; manufacturer product page",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": false,
              "reference": false
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993",
              "https://shop.m5stack.com/products/m5stack-cores3-se-iot-controller-w-o-battery-bottom"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-cores3-se",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "External USB power bank",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power source used in the demo.",
            "notes": "Creator explicitly used this because the battery module was missing; capacity/model not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Compatible battery bottom",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Optional",
            "purpose": "Alternative to the external power bank.",
            "notes": "Creator recommendation only; exact bottom SKU is not stated.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Reach speech, image and calendar services.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8",
              "https://x.com/i/status/2110414012903038993"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Power-bank model and optional battery-bottom SKU are not specified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-76ded4f1a1107d49906050e4d5357c551916871062f47d2ef5f373c27271e2d8"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2110414012903038993"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "taskagotchi",
      "title": "Taz: a voice-reactive pocket pet",
      "hardware": "Lonely Binary ESP32-S3 N16R8; Waveshare 1.5-inch OLED",
      "summary": "A physical pet reacts with pixel animations as its owner speaks.",
      "topic": "Robots & toys",
      "setup": "Kit / assembly",
      "physicalRole": "An ESP32 drives a small OLED face and connects a microphone and speaker so a physical pet can listen and react with animations.",
      "beforeYouBuild": "Wired prototype with separate microphone, amplifier and speaker. Performing tasks is future work, not demonstrated functionality.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with implementing Wi-Fi setup and troubleshooting the firmware's connectivity, audio and conversational behavior. Task execution is an ambition, not a demonstrated feature.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4",
      "supportingUrl": "",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/254e420c-5a6a-4798-b5de-4ba7d6acb431",
        "src": "/images/project-media/taskagotchi-fcfce18452-1080.webp",
        "thumb": "/images/project-media/taskagotchi-fcfce18452-480.webp",
        "srcset": "/images/project-media/taskagotchi-fcfce18452-480.webp 480w, /images/project-media/taskagotchi-fcfce18452-800.webp 800w, /images/project-media/taskagotchi-fcfce18452-1080.webp 1080w",
        "width": 1080,
        "height": 1920,
        "alt": "Taz: a voice-reactive pocket pet — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "covacut · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Lonely Binary ESP32-S3 N16R8",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controller with 16 MB flash / 8 MB PSRAM.",
            "notes": "Current manufacturer N16R8 three-pack, not proof of the creator’s exact board revision. One board is required, not three; check header and wiring compatibility.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://lonelybinary.com/products/3-pack-esp32-s3-n16r8-dev-board-3-terminal-bases",
              "match": "Current N16R8 family; three-pack, creator revision unspecified",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Waveshare 1.5-inch OLED",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Face display.",
            "notes": "Several 1.5-inch OLED variants use incompatible controllers; no controller/revision is stated. This listing is the SSD1327 SPI/I²C model, NOT proof that it is the project’s display. Only order it after the firmware confirms SSD1327/128×128 and the matching interface.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4",
              "https://www.waveshare.com/1.5inch-oled-module.htm"
            ],
            "destination": {
              "url": "https://www.waveshare.com/1.5inch-oled-module.htm",
              "match": "Candidate only: SSD1327, 128×128 grayscale; creator driver unknown",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "INMP441 I2S microphone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Voice input.",
            "notes": "Same microphone chip and I²S interface, but creator breakout and wiring are not identified. Check voltage, pin names and L/R channel selection against the firmware.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4",
              "https://robocraze.com/products/inmp441-mems-high-precision-omnidirectional-microphone-module-i2s"
            ],
            "destination": {
              "url": "https://robocraze.com/products/inmp441-mems-high-precision-omnidirectional-microphone-module-i2s",
              "match": "INMP441 breakout example; Indian retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "MAX98357-series I2S amplifier",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Speaker drive.",
            "notes": "Exact suffix and breakout board not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "3 W, 8 Ω speaker",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Voice output.",
            "notes": "Manufacturer dimensions are 70×30×16 mm with a PH2.0 connection. The creator enclosure is unspecified; adapt wiring and confirm fit before ordering. Do not assume a stereo amplifier or buy two merely because the listing says stereo.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4",
              "https://store.arduino.cc/products/stereo-enclosed-speaker-3w-8%CF%89"
            ],
            "destination": {
              "url": "https://store.arduino.cc/products/stereo-enclosed-speaker-3w-8%CF%89",
              "match": "3 W / 8 Ω enclosed speaker example; mechanical fit unverified",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Jumper wires / prototype connections",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect modules.",
            "notes": "Pin map and wire count not supplied.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB power supply and cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "USB power is stated; current rating and exact cable depend on the board.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Display driver/revision, amplifier suffix, board revision, pin map and power rating remain unresolved. This is not yet a purchase-complete kit."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-03dbc72cda8b3d17c2e3b40a2708e8deb4b01d3183fbea3b64b55d1b8edfbaf4"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "ricoh-gr-sticks3-viewfinder",
      "title": "A tiny viewfinder for your Ricoh GR",
      "hardware": "M5Stack StickS3; RICOH GR II, III/IIIx or IV",
      "summary": "A hot-shoe screen provides camera live view and a wireless shutter.",
      "topic": "Cameras & sensors",
      "setup": "Device firmware",
      "physicalRole": "A StickS3 mounted on the camera's hot shoe receives live view over Wi-Fi and sends shutter commands, providing a compact alternative to a phone remote.",
      "beforeYouBuild": "Requires model-specific pairing, firmware and a printed mount. Creator reports physical tests; directory has not repeated them.",
      "codingTool": "Codex",
      "evidence": "The creator explicitly says the firmware was written with Codex and documents camera-specific connection steps and physical testing. Compatibility depends on the exact GR model.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
      "supportingUrl": "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-sticks3",
          "fit": "Exact model",
          "note": "The project names M5Stack StickS3. Check its full shopping list for accessories and revision requirements."
        },
        {
          "slug": "ricoh-gr-iv",
          "fit": "Exact model",
          "note": "Match camera and firmware; other GR bodies and firmware versions are separate targets."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/bed6b014-c3c3-46b0-9255-1d177a7c11eb",
        "src": "/images/project-media/ricoh-gr-sticks3-viewfinder-b482722ff3-1200.webp",
        "thumb": "/images/project-media/ricoh-gr-sticks3-viewfinder-b482722ff3-480.webp",
        "srcset": "/images/project-media/ricoh-gr-sticks3-viewfinder-b482722ff3-480.webp 480w, /images/project-media/ricoh-gr-sticks3-viewfinder-b482722ff3-800.webp 800w, /images/project-media/ricoh-gr-sticks3-viewfinder-b482722ff3-1200.webp 1200w",
        "width": 3072,
        "height": 4096,
        "alt": "A tiny viewfinder for your Ricoh GR — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "tinker_zhang · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "The camera generations have different pairing paths. GR III without x and HDF variants have separate evidence levels in the repository; firmware and physical regression should be checked for the exact body.",
        "items": [
          {
            "name": "M5Stack StickS3",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Wireless viewfinder and shutter controller.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5sticks3-esp32s3-mini-iot-dev-kit",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
              "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-sticks3",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Supported RICOH GR camera",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Camera being controlled.",
            "notes": "Choose ONE: GR II, GR III/IIIx or GR IV under the repository’s model-specific support matrix. Link is GR IV only; not a recommendation to replace an existing camera.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://us.ricoh-imaging.com/products/gr-iv",
              "match": "Exact product; firmware must be checked separately",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
              "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "ricoh-gr-iv",
            "catalogMatch": "Exact model"
          },
          {
            "name": "3D-printed StickS3 hot-shoe mount",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Attach the display.",
            "notes": "Use STL/STEP from the repository cad folder; do not assume a generic cold-shoe adapter fits.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
              "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
              "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38",
              "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-c2ac6e11f54cc9e37f847dda361f3ccefde2cecb6fc800bd6c0cbddc0619cf38"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/sky18Dragon/RICOH-GR-Live-View-Shooting"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "cat-tv-projector",
      "title": "A projector that keeps the cat entertained",
      "hardware": "Raspberry Pi; Samsung Freestyle projector",
      "summary": "A Raspberry Pi streams animated cat entertainment and controls a projector wirelessly.",
      "topic": "Displays",
      "setup": "Multi-device setup",
      "physicalRole": "A Raspberry Pi renders animated scenes and sends them over AirPlay to a Samsung Freestyle projector, turning a wall into an interactive-looking play surface for a cat.",
      "beforeYouBuild": "Requires adapted AirPlay streaming software and compatible projector controls, not just a video playlist.",
      "codingTool": "Codex",
      "evidence": "The creator describes Codex helping adapt the AirPlay sender, bridge the rendering pipeline and implement wireless projector controls. The physical projector is the output, not just a video displayed in a browser.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
      "supportingUrl": "https://x.com/i/status/2109841447767998532",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/1f2b6626-b58d-4a0d-8b5b-7a6ebe280a8e",
        "src": "/images/project-media/cat-tv-projector-800e7d6ec0-800.webp",
        "thumb": "/images/project-media/cat-tv-projector-800e7d6ec0-480.webp",
        "srcset": "/images/project-media/cat-tv-projector-800e7d6ec0-480.webp 480w, /images/project-media/cat-tv-projector-800e7d6ec0-800.webp 800w",
        "width": 800,
        "height": 464,
        "alt": "A projector that keeps the cat entertained — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "axbehr · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Creator uses a modified Doubletake Linux AirPlay sender; buying HDMI parts alone does not reproduce the documented wireless setup.",
        "items": [
          {
            "name": "Raspberry Pi",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Render and stream the scenes.",
            "notes": "Generation, RAM and storage not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
              "https://x.com/i/status/2109841447767998532"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Samsung Freestyle projector",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "AirPlay display.",
            "notes": "Generation and regional model not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
              "https://x.com/i/status/2109841447767998532"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pi storage and matched power supply",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Boot and run the chosen Pi.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
              "https://x.com/i/status/2109841447767998532"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Projector power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the projector’s specified adapter.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
              "https://x.com/i/status/2109841447767998532"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wi-Fi network",
            "quantity": "Existing",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "AirPlay streaming and controls.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4",
              "https://x.com/i/status/2109841447767998532"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Exact Pi and Freestyle generations, power/storage choices and working streaming build are not published completely."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b14cc8ab97aab9b9666fb63515262667de44741eb7bc92d54071095aaeafc2b4"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2109841447767998532"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "bokko-pendant",
      "title": "Bokko: a pocket voice pendant",
      "hardware": "nRF52840; 1.47-inch display; PDM microphone; 800 mAh Li-Po",
      "summary": "A custom voice pendant displays replies and agent progress over Bluetooth.",
      "topic": "Voice & audio",
      "setup": "Kit / assembly",
      "physicalRole": "A battery-powered nRF52840 pendant captures speech and displays responses while a nearby Mac handles its agent connection over Bluetooth.",
      "beforeYouBuild": "Custom assembled prototype needs an awake nearby Mac. Explicit firmware-authorship evidence qualifies it, not merely its ability to control an agent.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with the pendant firmware, macOS companion app and agent integration. The showcase describes a working assembled prototype rather than an available retail device.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
      "supportingUrl": "https://x.com/i/status/2111843796074074421",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/8aa28f06-622c-4014-b517-2bffd3c061fc",
        "src": "/images/project-media/bokko-pendant-c9ed288a4c-1200.webp",
        "thumb": "/images/project-media/bokko-pendant-c9ed288a4c-480.webp",
        "srcset": "/images/project-media/bokko-pendant-c9ed288a4c-480.webp 480w, /images/project-media/bokko-pendant-c9ed288a4c-800.webp 800w, /images/project-media/bokko-pendant-c9ed288a4c-1200.webp 1200w",
        "width": 1254,
        "height": 1254,
        "alt": "Bokko: a pocket voice pendant — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "patiev_blog · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "nRF52840 board",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Pendant controller.",
            "notes": "Only the chip is named; board manufacturer and charging circuit are unknown.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "1.47-inch, 172×320 display",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Character and text output.",
            "notes": "Driver, voltage, interface and exact panel not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "PDM microphone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Voice capture.",
            "notes": "Exact part and breakout are unknown.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "800 mAh Li-Po battery",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Portable power.",
            "notes": "Voltage, connector polarity, protection and charger requirements must be established before buying.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "3D-printed case",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Enclosure.",
            "notes": "No complete dimensioned mechanical BOM supplied.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Record/navigation buttons",
            "quantity": "Not stated",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Physical controls.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Mac running Hermes",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Companion application and spoken replies.",
            "notes": "Must stay awake and within Bluetooth range.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Wiring and power/charging hardware",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Complete the electrical assembly.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00",
              "https://x.com/i/status/2111843796074074421"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Board, display controller, microphone, button count, charging/protection circuit and mechanical files are not specified sufficiently for safe reproduction."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-b0e263f85d614709197d92c3284492bc8dcf76b5466766a8aacefc059b0f4e00"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2111843796074074421"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "adr-velocity-coach",
      "title": "Give your lifting sensor a voice coach",
      "hardware": "ADR Encoder",
      "summary": "A weightlifting sensor reports each rep’s velocity through a custom Bluetooth bridge.",
      "topic": "Cameras & sensors",
      "setup": "Sensor workflow",
      "physicalRole": "An ADR Encoder measures the motion of a lift and passes velocity readings to a Mac over Bluetooth, where a voice interface can discuss the current set.",
      "beforeYouBuild": "Uses a Mac and Codex Voice. Sensor integration is documented; training recommendations are not independently validated.",
      "codingTool": "Codex",
      "evidence": "The creator says Codex built the command-line bridge that reads measurements from the sensor. This is evidence of a custom hardware integration, not a validation of its coaching advice.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2",
      "supportingUrl": "https://x.com/i/status/2111585421838754295",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "adr-encoder",
          "fit": "Device family",
          "note": "The creator identifies the ADR Encoder family, not a firmware revision. Confirm Bluetooth protocol compatibility before ordering."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/78b584f9-350c-48f9-b092-f8641dbe32f8",
        "src": "/images/project-media/adr-velocity-coach-efe89c3b03-1200.webp",
        "thumb": "/images/project-media/adr-velocity-coach-efe89c3b03-480.webp",
        "srcset": "/images/project-media/adr-velocity-coach-efe89c3b03-480.webp 480w, /images/project-media/adr-velocity-coach-efe89c3b03-800.webp 800w, /images/project-media/adr-velocity-coach-efe89c3b03-1200.webp 1200w",
        "width": 1500,
        "height": 1379,
        "alt": "Give your lifting sensor a voice coach — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "awkward_andyy · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "ADR Encoder",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Measure bar velocity.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://adrencoder.com/en/linear-position-transducer-vbt?SubmitCurrency=1&id_currency=8",
              "match": "Exact product family; firmware not disclosed",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2",
              "https://x.com/i/status/2111585421838754295"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "adr-encoder",
            "catalogMatch": "Device family"
          },
          {
            "name": "Mac with Bluetooth",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Receive readings and run voice coaching.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2",
              "https://x.com/i/status/2111585421838754295"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Encoder attachment system, charger and charging cable",
            "quantity": "Kit contents",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Included",
            "purpose": "Mount and charge the sensor.",
            "notes": "Manufacturer lists an attachment system, carry case, power cable and charger; check the purchased package.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2",
              "https://x.com/i/status/2111585421838754295"
            ],
            "purchaseNote": "Built in or supplied with the stated device; check package contents before buying separately.",
            "sourcingStatus": "Included with device — check package"
          },
          {
            "name": "Training equipment and secure sensor attachment",
            "quantity": "Existing setup",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Perform the measured exercise.",
            "notes": "Attach according to the encoder instructions; coaching output is not an independently validated training prescription.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2",
              "https://x.com/i/status/2111585421838754295"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Creator does not identify the encoder firmware or publish a complete Bluetooth implementation; confirm compatibility before purchasing for this project."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-36218fe62a49fbc58d46d778c8c1b9e69b25f97cf607dcbc1fe63564b59dd8a2"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2111585421838754295"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "kinform-speaker-character",
      "title": "Give a Bluetooth speaker a character",
      "hardware": "RDA5856ETE Bluetooth audio SoC / S10B-S_V4.0R6D board; Android phone",
      "summary": "A repurposed speakerphone becomes a voice character with confirmed, persistent memories.",
      "topic": "Voice & audio",
      "setup": "Computer companion",
      "physicalRole": "A repurposed speakerphone supplies the microphone and speaker for a character running through an Android app and private backend. The character asks before retaining memories.",
      "beforeYouBuild": "Custom Android app and private backend, not custom speaker firmware. Physical microphone and speaker provide the interface; firmware exploration is future work.",
      "codingTool": "Codex",
      "evidence": "The creator describes Codex as an engineering partner for the app and backend implementation. The documented work is not custom speaker firmware; firmware exploration remains future work.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc",
      "supportingUrl": "https://x.com/i/status/2111287293931565363",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/c61c4721-5a7e-461f-9335-a19e4254321c",
        "src": "/images/project-media/kinform-speaker-character-7ce17aaea9-1200.webp",
        "thumb": "/images/project-media/kinform-speaker-character-7ce17aaea9-480.webp",
        "srcset": "/images/project-media/kinform-speaker-character-7ce17aaea9-480.webp 480w, /images/project-media/kinform-speaker-character-7ce17aaea9-800.webp 800w, /images/project-media/kinform-speaker-character-7ce17aaea9-1200.webp 1200w",
        "width": 4592,
        "height": 5613,
        "alt": "Give a Bluetooth speaker a character — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "bonitadreama · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Bluetooth speakerphone with microphone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Bidirectional call audio.",
            "notes": "Creator’s opened unit contains RDA5856ETE / S10B-S_V4.0R6D; this is an internal identifier, not a retail model.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc",
              "https://x.com/i/status/2111287293931565363"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Android phone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Run the custom app.",
            "notes": "Exact phone and supported Android version not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc",
              "https://x.com/i/status/2111287293931565363"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Speaker charging cable / power",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the speaker.",
            "notes": "Must match the actual speaker; connector unknown.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc",
              "https://x.com/i/status/2111287293931565363"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Retail speaker model, Bluetooth call-audio compatibility, Android requirements and private backend implementation are not disclosed. Do not buy a bare RDA5856 chip as a substitute."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-2e8b5d907432e54a1615508b81e9638819eb074c14884294c2a2ebf13b8a75cc"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2111287293931565363"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "noutomation",
      "title": "Build a configurable field controller",
      "hardware": "RaspberryPi CM4; StamPLC",
      "summary": "A browser-configured controller reads industrial sensors and operates relays and Modbus devices.",
      "topic": "Buttons & controls",
      "setup": "Kit / assembly",
      "physicalRole": "A RaspberryPi CM4 and StamPLC connect physical sensors, relays and Modbus equipment to a configurable control interface for automation experiments.",
      "beforeYouBuild": "Creator reports ongoing real-hardware development. Wiring, electrical ratings and connected equipment need expert validation; not a finished turnkey product.",
      "codingTool": "Codex",
      "evidence": "The creator attributes development help to Codex and describes iterating on real control hardware. The account supports an active prototype, not certification for unattended industrial operation.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
      "supportingUrl": "https://x.com/i/status/2094261609254596636",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-stamplc",
          "fit": "Exact model",
          "note": "The project names M5Stack StamPLC. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/59e61476-a87f-4b5c-bb8a-83a2410909b8",
        "src": "/images/project-media/noutomation-5c270d9fb5-1024.webp",
        "thumb": "/images/project-media/noutomation-5c270d9fb5-480.webp",
        "srcset": "/images/project-media/noutomation-5c270d9fb5-480.webp 480w, /images/project-media/noutomation-5c270d9fb5-800.webp 800w, /images/project-media/noutomation-5c270d9fb5-1024.webp 1024w",
        "width": 1024,
        "height": 1024,
        "alt": "Build a configurable field controller — build photo collage from the creator’s source",
        "kind": "Build photo collage",
        "credit": "masubo_bio · build photo collage",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "RaspberryPi CM4",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Application host.",
            "notes": "RAM, eMMC, wireless variant and carrier board are unspecified.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.raspberrypi.com/products/compute-module-4/",
              "match": "Model family; configuration not disclosed",
              "verification": "Source-linked; live page not verified",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "M5Stack StamPLC",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "I/O and relay controller.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stamp-plc-controller-with-m5stamps3",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-stamplc",
            "catalogMatch": "Exact model"
          },
          {
            "name": "CM4 carrier, storage and power",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Make the compute module usable.",
            "notes": "A bare CM4 cannot be powered or connected like a standard Raspberry Pi; do not assume CM4Stack.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Controller power and communication wiring",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the host, PLC and field devices.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Modbus RS-485 sensors / relay modules",
            "quantity": "Per application",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Selected automation functions.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pumps, valves, fans or lights",
            "quantity": "Per application",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Loads you want to control.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Rated enclosure, protection and field wiring",
            "quantity": "Designed for the load",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Electrical integration.",
            "notes": "A qualified person must establish supply, relay/contact ratings and load protection before hardware is ordered.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809",
              "https://x.com/i/status/2094261609254596636"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "CM4 carrier/configuration, power, communication wiring and field-device ratings are not given. This is not a complete industrial control design."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-7794785a17c92e5b671a4505767ff4fca409e57eda52b974fd0019d5ca2af809"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2094261609254596636"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "greenhouse-winder",
      "title": "Open greenhouse vents from a sensor reading",
      "hardware": "ESP32; BTS7960; two 24V DC roll-up motors; SwitchBot thermometer",
      "summary": "Temperature readings and LINE commands open and close greenhouse ventilation curtains.",
      "topic": "Buttons & controls",
      "setup": "Kit / assembly",
      "physicalRole": "An ESP32 and motor drivers open or close greenhouse ventilation curtains using temperature readings and messaging commands.",
      "beforeYouBuild": "DIY field-tested prototype. Requires electrical assembly, motor stopping safeguards and a backend; not safety-certified unattended control.",
      "codingTool": "Codex",
      "evidence": "The farmer describes working with Codex on component selection, wiring exploration and control code, then testing the system on real greenhouse hardware.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
      "supportingUrl": "https://x.com/i/status/2040622950429401235",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/372a55f3-7ed5-471f-a7f1-1811f59a1087",
        "src": "/images/project-media/greenhouse-winder-1a4b9c6097-1200.webp",
        "thumb": "/images/project-media/greenhouse-winder-1a4b9c6097-480.webp",
        "srcset": "/images/project-media/greenhouse-winder-1a4b9c6097-480.webp 480w, /images/project-media/greenhouse-winder-1a4b9c6097-800.webp 800w, /images/project-media/greenhouse-winder-1a4b9c6097-1200.webp 1200w",
        "width": 4032,
        "height": 3024,
        "alt": "Open greenhouse vents from a sensor reading — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "tomiyasu16 · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "ESP32 development board",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Network motor controller.",
            "notes": "Variant not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "BTS7960 motor-driver modules",
            "quantity": "Not stated",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Forward/reverse motor drive.",
            "notes": "Two motors are specified, but driver count and current margin are not; size per the actual wiring and stall currents.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "24 V DC greenhouse roll-up motor",
            "quantity": "2",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Vent actuation.",
            "notes": "Torque, current, travel and motor models not supplied.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "24 V DC power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Motor power.",
            "notes": "Capacity must cover the actual startup/stall load; do not infer it from nominal voltage.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "SwitchBot thermometer/hygrometer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Temperature input.",
            "notes": "Exact model and hub/connection path not disclosed.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Manual control switch",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Local override.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Wiring and terminal blocks",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power and signal connections.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Motor stopping, isolation and protection hardware",
            "quantity": "Design required",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "End-of-travel and emergency safety.",
            "notes": "Limits, fusing, cutoff, enclosure and low-voltage power conversion are not detailed in the showcase.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da",
              "https://x.com/i/status/2040622950429401235"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Exact motors, driver count, supply current, stopping safeguards, ESP32 supply conversion and SwitchBot integration remain unspecified. Do not operate unattended from this overview."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-e347d07c0cd0edd7a25bcfbae3fcfee78d86003917d2888d359eb167305ad1da"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2040622950429401235"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "project-tabletop",
      "title": "Turn a tabletop into a football pitch",
      "hardware": "Windows 11 PC; projector; 1080p webcam; matte board",
      "summary": "A camera tracks physical markers on a projected football pitch.",
      "topic": "Robots & toys",
      "setup": "Multi-device setup",
      "physicalRole": "A projector draws the pitch while a webcam tracks a physical marker, translating movement on the tabletop into game input.",
      "beforeYouBuild": "Requires camera/projector calibration and printed markers. Version 1.3 is the same project and is not counted separately.",
      "codingTool": "Codex",
      "evidence": "The creator says the application was built and refined with Codex, including mapping the camera's marker positions onto the projected playing surface. Later versions are part of this same project.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
      "supportingUrl": "https://github.com/abiemann/ProjectTabletop",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/b7a7749c-4031-49a8-be50-29ec4be01dd4",
        "src": "/images/project-media/project-tabletop-0deb5c2dd0-1200.webp",
        "thumb": "/images/project-media/project-tabletop-0deb5c2dd0-480.webp",
        "srcset": "/images/project-media/project-tabletop-0deb5c2dd0-480.webp 480w, /images/project-media/project-tabletop-0deb5c2dd0-800.webp 800w, /images/project-media/project-tabletop-0deb5c2dd0-1200.webp 1200w",
        "width": 1920,
        "height": 1080,
        "alt": "Turn a tabletop into a football pitch — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "Creator · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts describe the original Football build. Rescan and recalibrate after moving the board, camera or projector; optional later game modes may require a microphone or different input markers.",
        "items": [
          {
            "name": "Windows 11 x64 PC",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Run the projection game.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Projector",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Extended desktop output.",
            "notes": "Exact model and throw ratio not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Windows-compatible 1080p webcam",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Track the board and markers.",
            "notes": "Baseline source requires 1080p. A later repository discussion of Facecam 4K is not a universal hardware validation.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Matte-white presentation board",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Playing surface with visible edges.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Printed two-parallel-black-bar marker",
            "quantity": "1 per player",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Human player input.",
            "notes": "One or two players in the documented Football setup.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Video cable / adapter and stable mounts",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect projector and aim projector/camera at the same board.",
            "notes": "Use the PC/projector ports and actual room geometry; camera must see the entire board and margin.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Projector power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Use the projector’s correct supply.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb",
              "https://github.com/abiemann/ProjectTabletop"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Projector SKU, camera SKU and mounting geometry are not specified."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-3ccbfc5367ce49fc8fc2fcfda105ccaf9711a8609f4db8beaa74addbecfc6abb"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/abiemann/ProjectTabletop"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "62-bar-dj",
      "title": "62 BAR: a miniature DJ instrument",
      "hardware": "Raspberry Pi 5, 2GB; Waveshare 3.5-inch RPi LCD (F); SparkFun ROB-22132",
      "summary": "A compact DJ instrument combines a motorized platter with a screen and physical controls.",
      "topic": "Voice & audio",
      "setup": "Kit / assembly",
      "physicalRole": "A Raspberry Pi coordinates a motorized platter, touchscreen, keys, encoder, fader and audio interface inside a custom enclosure.",
      "beforeYouBuild": "Creator says physical prototype assembled after the linked animation. Motor feel and mechanical fit remain under development; not a finished retail product. The source image is an assembly visualization, not a photograph of the later assembled prototype.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with software and motor firmware as well as CAD and an assembly animation. They report assembling a physical prototype after the animation; motor feel and mechanical details are still being tuned.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
      "supportingUrl": "https://x.com/i/status/2098072497182666987",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "esi-gigaport-ex",
          "fit": "Exact model",
          "note": "This is one component of the DJ build, not the complete console. Controls, screen and motorized hardware are separate."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/f20f01d7-6bbd-4c8f-95b0-cc87ea622468",
        "src": "/images/project-media/62-bar-dj-af84fa47df-1200.webp",
        "thumb": "/images/project-media/62-bar-dj-af84fa47df-480.webp",
        "srcset": "/images/project-media/62-bar-dj-af84fa47df-480.webp 480w, /images/project-media/62-bar-dj-af84fa47df-800.webp 800w, /images/project-media/62-bar-dj-af84fa47df-1200.webp 1200w",
        "width": 2152,
        "height": 1080,
        "alt": "62 BAR: a miniature DJ instrument — assembly visualization from the creator’s source",
        "kind": "Assembly visualization",
        "credit": "eminimnim · assembly visualization",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Physical prototype, not a finished retail controller. The source’s assembly image is a visualization; it does not verify mechanical fit or current motor feel.",
        "items": [
          {
            "name": "Raspberry Pi 5, 2GB",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Main computer.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.pishop.us/product/raspberry-pi-5-2gb/",
              "match": "Exact Pi 5 2GB; US retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Waveshare 3.5-inch RPi LCD (F)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Touchscreen.",
            "notes": "Use F, not A/B or a same-size HDMI panel.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.waveshare.com/3.5inch-rpi-lcd-f.htm",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "SparkFun ROB-22132",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Brushless motor/controller/sensor assembly.",
            "notes": "This assembly includes its motor; do not order a second one by mistake.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://thepihut.com/products/sparkfun-iot-brushless-motor-driver-esp32-wroom-tmc6300",
              "match": "Exact product ROB-22132; UK retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "ESI GIGAPORT eX USB audio interface",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Multichannel audio output.",
            "notes": "Do not substitute GIGAPORT HD+. Confirm delivery region; Linux operation is attributed to the creator, not the retailer’s Windows/macOS software claims.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987",
              "https://woodbrass.com/en/products/esi-gigaport-ex-371325"
            ],
            "destination": {
              "url": "https://woodbrass.com/en/products/esi-gigaport-ex-371325",
              "match": "Exact GIGAPORT eX; French retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": false,
              "reference": false
            },
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "esi-gigaport-ex",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Adafruit NeoKey 1×4 QT (4980)",
            "quantity": "2",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Key input boards.",
            "notes": "Boards do not include mechanical switches or keycaps.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.adafruit.com/product/4980",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Adafruit assembled rotary encoder (5880)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Rotary control.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/5880",
              "match": "Exact Adafruit 5880",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Adafruit NeoSlider (5295)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Fader.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/5295",
              "match": "Exact Adafruit 5295",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Outemu GTMX low-profile switches",
            "quantity": "6",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Six fitted keys.",
            "notes": "Confirm the exact switch footprint matches both NeoKey sockets and the creator CAD.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Matching keycaps",
            "quantity": "6",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Fit the six switches.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Black MJF PA12 nylon base, faceplate, carrier and platter",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Custom printed structure.",
            "notes": "Source lists four custom pieces; obtain the correct CAD revision and printer quote.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "STEMMA QT / Qwiic I²C cables and Pi connection",
            "quantity": "Layout-dependent",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Wire keys, encoder and fader.",
            "notes": "Assign each board a distinct I²C address; exact harness lengths/count are not published.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB cables for motor assembly and audio interface",
            "quantity": "1 per peripheral",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect peripherals.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Boot microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Raspberry Pi OS and application.",
            "notes": "Capacity unspecified.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pi / motor power system",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Size for the Pi and peripheral load; the motor’s power path must be checked separately.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Fasteners, spacers and encoder knob",
            "quantity": "CAD-dependent",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Mechanical assembly.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0",
              "https://x.com/i/status/2098072497182666987"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Exact switch/cap variants, CAD files/revision, cable harness, fastener counts, cooling and motor power budget remain incomplete."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-61f7edd92afacdf02d4f2ce9775bc6754d592451748cb2476cbd6725c03624b0"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2098072497182666987"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "hasselblad-x2d-extensions",
      "title": "Run experimental software on a Hasselblad X2D",
      "hardware": "Hasselblad X2D 100C, firmware 4.2.0",
      "summary": "Doom and experimental camera extensions run on an original Hasselblad X2D.",
      "topic": "Cameras & sensors",
      "setup": "Supervised experiment",
      "physicalRole": "Custom camera software runs on an original Hasselblad X2D, with a Doom demonstration and exploration of additional on-device functions.",
      "beforeYouBuild": "Firmware research carries warranty and recovery risks. Current public source does not include a complete camera-deployment backend; separate extensions count as one project.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex throughout firmware research and software development for the original X2D 100C on firmware 4.2.0. Public material does not include every component needed for deployment.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
      "supportingUrl": "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "hasselblad-x2d-100c",
          "fit": "Exact model",
          "note": "Not X2D II."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/7277c9ee-8620-4c33-8e0c-04a31ac97950",
        "src": "/images/project-media/hasselblad-x2d-extensions-269446b9eb-1200.webp",
        "thumb": "/images/project-media/hasselblad-x2d-extensions-269446b9eb-480.webp",
        "srcset": "/images/project-media/hasselblad-x2d-extensions-269446b9eb-480.webp 480w, /images/project-media/hasselblad-x2d-extensions-269446b9eb-800.webp 800w, /images/project-media/hasselblad-x2d-extensions-269446b9eb-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "alt": "Run experimental software on a Hasselblad X2D — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "Creator · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Parts for one build. Reuse equipment you already own. Quantities are planning quantities unless the creator explicitly specifies a count; kit contents are not additional purchases.",
        "items": [
          {
            "name": "Hasselblad X2D 100C, original generation",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware 4.2.0 research target.",
            "notes": "Not X2D II.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.hasselblad.com/x-system/x2d-100c/",
              "match": "Exact original-generation product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
              "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "hasselblad-x2d-100c",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Development computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Use the OS supported by the chosen tool; retain firmware backups.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
              "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB camera data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "Data-capable cable matched to the X2D and computer.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
              "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Charged original camera battery",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Stable power during an authorized procedure.",
            "notes": "Use only supported power arrangements.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
              "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Compatible lens and storage",
            "quantity": "Per use case",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Photography-related extensions.",
            "notes": "Doom/startup-screen demos do not imply every lens or imaging feature has been validated.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e",
              "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "Public source does not contain a complete current camera-deployment backend. A complete hardware list still does not make this a reproducible one-click mod."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-fb627402781dcf89f55b7d1bcf38395ded1bc29539cbd21281826a15bfed0f9e"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/radium-wang/Hasselblad-X-System-CIM-Firmware-Research-Feature-Extensions"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "keep-remote-photo-frame",
      "title": "Send a photo to a sleeping e-paper frame",
      "hardware": "Waveshare 3.6-inch six-colour e-paper; Seeed Studio XIAO ESP32S3 Sense",
      "summary": "An e-paper frame receives photos remotely and sleeps between updates.",
      "topic": "Displays",
      "setup": "Kit / assembly",
      "physicalRole": "A XIAO ESP32S3 Sense fetches an image over Wi-Fi, updates a six-colour e-paper display and sleeps between refreshes while the picture stays visible.",
      "beforeYouBuild": "Requires assembly/soldering, an Android app, Python server and firmware. The dedicated camera and frame are separate endpoints; phone-photo use can omit the camera board. The repository warns that original and processed image URLs are public: use test images on a trusted network until access control is added. Camera capture-button and offline-queue work is not complete.",
      "codingTool": "Codex",
      "evidence": "The creator says Codex helped build the Android sending app, Python image server and frame software that retrieves photos over Wi-Fi.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
      "supportingUrl": "https://github.com/TarunTomar122/keep",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/757a1c65-f380-4986-9e9d-358997c8d6b3",
        "src": "/images/project-media/keep-remote-photo-frame-a1465d9e2e-1200.webp",
        "thumb": "/images/project-media/keep-remote-photo-frame-a1465d9e2e-480.webp",
        "srcset": "/images/project-media/keep-remote-photo-frame-a1465d9e2e-480.webp 480w, /images/project-media/keep-remote-photo-frame-a1465d9e2e-800.webp 800w, /images/project-media/keep-remote-photo-frame-a1465d9e2e-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "alt": "Send a photo to a sleeping e-paper frame — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "tarat_211 · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Two endpoints for the dedicated-camera version; one receiver for phone-photo use. The README says original/processed image URLs are public: use test images on a trusted network until access control is added. Camera capture button and offline queue are future work.",
        "items": [
          {
            "name": "Seeed Studio XIAO ESP32S3 receiver",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Drive the remote frame.",
            "notes": "Receiver firmware targets XIAO pins. Showcase names the Sense family but does not establish whether the receiver itself has a camera daughterboard.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Waveshare 3.6-inch six-colour e-paper, EPD_3in6e",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "600×400 frame display.",
            "notes": "Choose panel plus compatible driver board, not only bare glass. Current product listing is a specification match, not proof of the creator’s purchased bundle.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.waveshare.com/3.6inch-e-paper-hat-plus-e.htm",
              "match": "Specification match; choose display plus driver",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Seeed Studio XIAO ESP32S3 Sense camera unit",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Dedicated photo-capture sender.",
            "notes": "A SECOND board only for the dedicated-camera route. The separate working camera/audio firmware snapshot is available under taruns_module; it must have the Sense camera attached. The bare-board recovery record reports 8MB flash and 8MB PSRAM; choose the matching variant and camera revision.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html",
              "match": "Exact product family; camera revisions vary",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep",
              "https://github.com/TarunTomar122/keep/blob/main/firmware/taruns_module/media_stream.ino",
              "https://github.com/TarunTomar122/keep/blob/main/docs/board-recovery-2026-08-22.md"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Android phone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Choose and send photos.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Python server host",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Build, configure or flash the software.",
            "notes": "Run FastAPI and image conversion.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Momentary button to GND",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Receiver refresh / setup control.",
            "notes": "Receiver code identifies GPIO1 / XIAO D0; optional camera capture button is future work, not the same button.",
            "evidence": "Creator source",
            "sources": [
              "https://github.com/TarunTomar122/keep/blob/main/firmware/monishas_module/main.cpp"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Jumper wires and soldered connections",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect receiver to display/driver.",
            "notes": "Current firmware GPIO mapping: SCK=8, MOSI=7, CS=9, DC=3, RST=2, BUSY=4 and PWR=5 when D_9PIN is enabled. Use GPIO numbers and verify the actual driver connector against its pinout; code comments label XIAO D pins separately. Also connect the correct supply and common ground. This is a source map, not a tested wiring tutorial.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep",
              "https://github.com/TarunTomar122/keep/blob/main/firmware/monishas_module/DEV_Config.h"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1 per powered board",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "USB power sources",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Separate endpoints need their own suitable USB power; no battery design is supplied.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Frame / enclosure",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "House the receiver and panel.",
            "notes": "Creator made a custom desk enclosure; dimensions and fastener BOM are incomplete.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a",
              "https://github.com/TarunTomar122/keep"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "The receiver GPIO map and dedicated-camera firmware have been recovered. Confirm the actual e-paper driver-board connector and power pin before wiring; panel-only glass is not sufficient.",
          "Receiver-board/camera revision, complete enclosure dimensions, fastener counts and endpoint power supplies are still not specified enough for a verified one-click kit."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-0ddf7261982e37359f642e967431d4c2d0f15a42e52246b10dcc5894b9e8042a"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/TarunTomar122/keep"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "handsy-esp32-iphone",
      "title": "Handsy: a hardware bridge for an iPhone",
      "hardware": "Seeed Studio XIAO ESP32-S3; iPhone",
      "summary": "Use a small ESP32-S3 board to connect an iPhone's screen and controls to a supervised AI agent.",
      "topic": "Buttons & controls",
      "setup": "Device firmware",
      "physicalRole": "A flashed XIAO ESP32-S3 receives an iPhone's mirrored screen and provides a physical input bridge. The current repository uses USB HID for input and Bluetooth for board-to-app communication.",
      "beforeYouBuild": "Flash the exact supported board and follow the current repository's version-specific instructions. The README specifies the plain Seeed Studio XIAO ESP32S3 with 8 MB PSRAM, not Sense or Plus. Current setup uses USB HID, iOS 18 or later, AssistiveTouch and an iPhone app; the showcase describes an earlier Bluetooth input design. The example photo is from v0.1.0. A compatible vision service, cellular data and an appropriate USB connection or adapter may be needed. Review permissions, supervise actions and automate only devices and accounts you are allowed to use.",
      "codingTool": "Codex",
      "evidence": "Henry Yuan's showcase explicitly credits Codex with ESP32 firmware, input handling and the agent loop. The repository has since moved from the earlier design to a phone-app architecture; check the current release rather than combining instructions from different versions.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
      "supportingUrl": "https://github.com/onehumanbeing/esp32-iphone-agent",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://github.com/onehumanbeing/esp32-iphone-agent/raw/main/docs/images/example-alarm.png",
        "src": "/images/project-media/handsy-esp32-iphone-1bb6d7e9c6-1200.webp",
        "thumb": "/images/project-media/handsy-esp32-iphone-1bb6d7e9c6-480.webp",
        "srcset": "/images/project-media/handsy-esp32-iphone-1bb6d7e9c6-480.webp 480w, /images/project-media/handsy-esp32-iphone-1bb6d7e9c6-800.webp 800w, /images/project-media/handsy-esp32-iphone-1bb6d7e9c6-1200.webp 1200w",
        "width": 2400,
        "height": 984,
        "alt": "Handsy: a hardware bridge for an iPhone — v0.1.0 build photo from the creator’s source",
        "kind": "v0.1.0 build photo",
        "credit": "Henry Yuan · v0.1.0 build photo",
        "creditUrl": "https://github.com/onehumanbeing/esp32-iphone-agent"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Current README uses USB HID, not the older showcase’s Bluetooth-only input route. Follow only the current maintainer install instructions; review automation permissions and supervise actions.",
        "items": [
          {
            "name": "Seeed Studio XIAO ESP32S3, plain 8 MB PSRAM version",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "USB HID and screen-mirroring bridge.",
            "notes": "Repository explicitly says not Sense and not Plus.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.seeedstudio.com/XIAO-ESP32S3-p-5627.html",
              "match": "Exact product",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
              "https://github.com/onehumanbeing/esp32-iphone-agent"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "iPhone with iOS 18 or later",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Phone being automated.",
            "notes": "Cellular data is needed while Wi-Fi is used by the board hotspot.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
              "https://github.com/onehumanbeing/esp32-iphone-agent"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "USB-C to USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "For USB-C iPhones; must support USB data. Phone powers the board.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
              "https://github.com/onehumanbeing/esp32-iphone-agent"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Lightning to USB Camera Adapter and matching USB cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Connection for Lightning iPhones.",
            "notes": "Alternative to the USB-C cable, not an extra required adapter for USB-C phones.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
              "https://github.com/onehumanbeing/esp32-iphone-agent"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer with Chrome or Edge for flashing",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea",
              "https://github.com/onehumanbeing/esp32-iphone-agent"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-aad932dd2f447aaa8122d47132efca6bf5913f3d5089b2e2f99997adb69f76ea"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/onehumanbeing/esp32-iphone-agent"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "robbi-companion",
      "title": "Robbi: a small robot with a personality",
      "hardware": "Raspberry Pi Zero 2 W; ST7789 display; IMX219 camera; N20 motors",
      "summary": "A wheeled robot combines a camera, voice, expressive face and sensors.",
      "topic": "Robots & toys",
      "setup": "Kit / assembly",
      "physicalRole": "A Raspberry Pi controls wheels, a camera, an expressive display, audio and distance sensing inside a small 3D-printed robot.",
      "beforeYouBuild": "Advanced assembly with battery protection, regulated power and motor calibration. Creator account only; no independent electrical or safety validation. The image is the creator’s video thumbnail; refer to the linked demonstration for the physical build.",
      "codingTool": "Codex",
      "evidence": "The creator says Codex was used to develop and debug the robot's software, including its hardware interfaces, expressive behavior and dashboard. The source provides a physical demonstration and a component-by-component build account.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
      "supportingUrl": "https://www.youtube.com/watch?v=0sdClJna3E0",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://i.ytimg.com/vi_webp/0sdClJna3E0/maxresdefault.webp",
        "src": "/images/project-media/robbi-companion-502e2c058b-1200.webp",
        "thumb": "/images/project-media/robbi-companion-502e2c058b-480.webp",
        "srcset": "/images/project-media/robbi-companion-502e2c058b-480.webp 480w, /images/project-media/robbi-companion-502e2c058b-800.webp 800w, /images/project-media/robbi-companion-502e2c058b-1200.webp 1200w",
        "width": 1280,
        "height": 720,
        "alt": "Robbi: a small robot with a personality — creator video thumbnail from the creator’s source",
        "kind": "Creator video thumbnail",
        "credit": "Ace Builder · creator video thumbnail",
        "creditUrl": "https://www.youtube.com/watch?v=0sdClJna3E0"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "This is the creator’s breakout-module reproduction route, not a claim that the photographed custom-PCB robot can be built from these parts without redesign. Measure rails before connecting the Pi; test motion with wheels raised and never charge an unprotected loose cell in-device.",
        "items": [
          {
            "name": "Raspberry Pi Zero 2 W with soldered 40-pin header",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Main computer.",
            "notes": "Plain Zero 2 W may ship without headers; choose pre-soldered or budget for soldering.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.pishop.us/product/raspberry-pi-zero-2w-with-headers/",
              "match": "Exact Pi Zero 2 W with fitted header; US retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "32 GB microSD card",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "Genuine A1/U1/Class 10 card; creator suggests SanDisk Ultra. Creator suggests a genuine 32GB card; this is an alternate branded card, not its specified SanDisk example. It is blank and needs the OS image written before use.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://www.pishop.us/product/raspberry-pi-sd-card-32gb/"
            ],
            "destination": {
              "url": "https://www.pishop.us/product/raspberry-pi-sd-card-32gb/",
              "match": "Accessory example: official 32GB A2/V30 blank microSD",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "TENSTAR ROBOT 1.69-inch 240×280 8-pin SPI ST7789 display",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Face screen.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Raspberry Pi-compatible IMX219 CSI camera, 130° or 160° lens",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Vision.",
            "notes": "Use a complete Raspberry Pi-compatible IMX219 CSI camera with the stated 130° or 160° lens. IMX219-D160 is only the sensor/lens module without the camera PCB; it is not a complete camera. A matching sensor name alone does not establish Pi driver and mounting compatibility.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pi Zero 22-pin to 15-pin CSI cable, 15 cm",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Camera connection.",
            "notes": "Adafruit 3157 is a Pi Zero camera cable, not a full-size Pi cable. Confirm connector orientation and the selected camera PCB.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://www.adafruit.com/product/3157"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/3157",
              "match": "150 mm Pi Zero camera cable; connector-specification match",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Compact USB microphone",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Voice input.",
            "notes": "Adafruit 3367 is 22.2×18.3×7.0 mm; check the casing clearance and the left-bend OTG adapter. Creator did not identify a microphone SKU.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://www.adafruit.com/product/3367"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/3367",
              "match": "Raspberry Pi-compatible USB microphone example",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Left-bend micro-USB OTG male to USB-A female adapter",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Microphone connection.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "20 mm speaker, 8 Ω, 0.5 W, with wires",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Audio output.",
            "notes": "Seller supplies in multiples of five although one speaker is required per robot. Leads may need soldering; do not assume factory-fitted wires. Limit amplifier gain to avoid exceeding the speaker rating.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://electropeak.com/8-ohm-0-5w-20mm-diameter-speaker"
            ],
            "destination": {
              "url": "https://electropeak.com/8-ohm-0-5w-20mm-diameter-speaker",
              "match": "20 mm / 8 Ω / 0.5 W component match; seller minimum quantity applies",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "3 V, 75 RPM N20 geared motors with A/B encoders and cables",
            "quantity": "2",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Drive wheels.",
            "notes": "Listing includes a 14 cm connector lead per motor. Confirm A/B encoder outputs, counts per revolution, connector order and shaft fit; retailer gear-ratio data is inconsistent, so this is not an exact verified creator motor.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://compoindia.com/product/n20-3v-75rpm-micro-metal-gear-motor-with-encoder/"
            ],
            "destination": {
              "url": "https://compoindia.com/product/n20-3v-75rpm-micro-metal-gear-motor-with-encoder/",
              "match": "N20 3V / 75RPM encoder-motor candidate; Indian retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "TOF400C-VL53L1 / VL53L1X forward distance module",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Obstacle measurement.",
            "notes": "Adafruit 3967 is NOT the specified TOF400C board. It is an alternate breakout requiring footprint, pinout, supply and software checks; do not assume drop-in mechanical compatibility.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0",
              "https://www.adafruit.com/product/3967"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/3967",
              "match": "Same VL53L1X sensor, different Adafruit breakout",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "LSM6DS3TR-C IMU breakout",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Motion sensing.",
            "notes": "Omit standalone breakout only if implemented on the custom PCB. Linked Adafruit board is a component-matched example for the creator’s module route, NOT the photographed custom PCB or a tested drop-in. Check dimensions, pins and electrical limits.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4503",
              "match": "Same specified LSM6DS3TR-C chip; example breakout, not creator board",
              "verification": "Page checked",
              "example": true,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "DRV8833 dual motor-driver breakout",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Motor drive.",
            "notes": "Alternative to the equivalent custom-PCB circuit, not an extra duplicate. Linked Adafruit board is a component-matched example for the creator’s module route, NOT the photographed custom PCB or a tested drop-in. Check dimensions, pins and electrical limits.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "destination": {
              "url": "https://shop.pimoroni.com/products/adafruit-drv8833-dc-stepper-motor-driver-breakout-board?variant=54541196460411",
              "match": "Same specified DRV8833 chip; example breakout, not creator board",
              "verification": "Page checked",
              "example": true,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "MAX98357A I²S amplifier breakout",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Speaker drive.",
            "notes": "Limit gain for the 0.5 W speaker; alternative to custom-PCB circuit. Linked Adafruit board is a component-matched example for the creator’s module route, NOT the photographed custom PCB or a tested drop-in. Check dimensions, pins and electrical limits.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/3006",
              "match": "Same specified MAX98357A chip; example breakout, not creator board",
              "verification": "Page checked",
              "example": true,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Flat-top 18650 Li-ion cell, about 3000 mAh",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Battery.",
            "notes": "Reputable cell rated for actual load; capacity alone does not establish safe current.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Single-cell 18650 holder with wires",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Battery connection.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "External USB-C 18650 charger",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Charge the removed cell.",
            "notes": "Creator suggests a suitable XTAR model, not an exact SKU.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "1S protection circuit, cell-side fuse and power wiring",
            "quantity": "1 set",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Battery safety.",
            "notes": "Exact protection/fuse ratings require the real load; no on-board charging design is supplied.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Regulated 5 V boost supply",
            "quantity": "1",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Power Pi and peripherals.",
            "notes": "Size for peak load; custom-PCB equivalent is an alternative.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Suitable 3 V motor rail and motor-power cutoff",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Protect motors and provide a stop.",
            "notes": "Creator build instructions require a suitable rail and cutoff. PWM does not regulate an overvoltage supply.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "MR128ZZ bearings, 8×12×3.5 mm",
            "quantity": "CAD-dependent",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Mechanical support.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "M2 heat inserts / screws / nuts and M3×14 mm screws",
            "quantity": "CAD-dependent",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Assembly hardware.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Body, wheels and matching chassis parts",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Robot structure.",
            "notes": "Use or design CAD around actual modules and dimensions; final robot uses a custom PCB.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, heat shrink, hot glue gun, screwdrivers and multimeter are listed by the creator.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e",
              "https://www.youtube.com/watch?v=0sdClJna3E0"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "Exact power modules, fuse ratings, camera/module vendor variants, wheel geometry and mechanical counts are not fixed. No complete validated schematic or chassis kit is established."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-740858b4fae95982b3ebe82974f3a454bf1f0c568cc2fc8b1b886db1ac207d2e"
          },
          {
            "label": "Code / supporting source",
            "url": "https://www.youtube.com/watch?v=0sdClJna3E0"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "ricoh-gr4-shutdown-screen",
      "title": "Change a Ricoh GR IV's shutdown screen",
      "hardware": "Ricoh GR IV, demonstrated firmware 1.11",
      "summary": "Custom scripts replace a camera’s shutdown image with a personal picture.",
      "topic": "Cameras & sensors",
      "setup": "Unofficial firmware",
      "physicalRole": "Version-specific camera scripts replace the stock shutdown image on a Ricoh GR IV with a personalized picture.",
      "beforeYouBuild": "Model/firmware-specific modification requires verified backups and recovery planning. Distinct from the StickS3 remote-viewfinder project.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with firmware analysis, scripting, testing and documentation, and shows the modified shutdown image on the camera. This is separate from the StickS3 viewfinder project.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
      "supportingUrl": "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "ricoh-gr-iv",
          "fit": "Exact model",
          "note": "Match camera and firmware; other GR bodies and firmware versions are separate targets."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/27a11a37-b403-41f1-a459-40f3414f0a69",
        "src": "/images/project-media/ricoh-gr4-shutdown-screen-81ed83ad16-1080.webp",
        "thumb": "/images/project-media/ricoh-gr4-shutdown-screen-81ed83ad16-480.webp",
        "srcset": "/images/project-media/ricoh-gr4-shutdown-screen-81ed83ad16-480.webp 480w, /images/project-media/ricoh-gr4-shutdown-screen-81ed83ad16-800.webp 800w, /images/project-media/ricoh-gr4-shutdown-screen-81ed83ad16-1080.webp 1080w",
        "width": 1080,
        "height": 809,
        "alt": "Change a Ricoh GR IV's shutdown screen — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "Creator · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Preserve original files and verify backups before changing the shutdown image. A current retail camera may ship with firmware different from the demonstrated 1.11.",
        "items": [
          {
            "name": "RICOH GR IV, demonstrated firmware 1.11",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Camera being modified.",
            "notes": "Match camera and firmware; other GR bodies and firmware versions are separate targets.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://us.ricoh-imaging.com/products/gr-iv",
              "match": "Exact product; firmware must be checked separately",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
              "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "ricoh-gr-iv",
            "catalogMatch": "Exact model"
          },
          {
            "name": "FAT32 SD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "Source explicitly requires FAT32.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
              "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "SD card reader",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Prepare files and preserve backups.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
              "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Development computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
              "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Charged original camera battery",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Maintain stable power during the documented procedure.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467",
              "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-8f79d3b2973c34d916db32d50143ead2ab5a86eb8641dcfe1cb72df8c6496467"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/radium-wang/ricoh-gr4-firmware-analysis-and-feature-expansion"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "crystal-ball-voice",
      "title": "A touch-activated talking crystal ball",
      "hardware": "Raspberry Pi 5; Arduino Uno; capacitive touch sensors WS2; WS2812B ring",
      "summary": "Touch pads activate a voice conversation while a light ring reflects conversation state.",
      "topic": "Voice & audio",
      "setup": "Kit / assembly",
      "physicalRole": "Touch sensors activate a voice interaction while an Arduino-controlled light ring signals conversation states inside a physical crystal-ball enclosure.",
      "beforeYouBuild": "Physical prototype requiring wiring and cloud voice service. Astrology is entertainment, not an evidence-based prediction method.",
      "codingTool": "Codex",
      "evidence": "The creator credits Codex with the voice application, Arduino firmware and integration between the Raspberry Pi and lighting hardware. The divination theme is entertainment, not a claim of predictive accuracy.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663",
      "supportingUrl": "",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/1339d777-4626-4c99-9b25-e1dea9679f10",
        "src": "/images/project-media/crystal-ball-voice-41e5a0fd4d-1200.webp",
        "thumb": "/images/project-media/crystal-ball-voice-41e5a0fd4d-480.webp",
        "srcset": "/images/project-media/crystal-ball-voice-41e5a0fd4d-480.webp 480w, /images/project-media/crystal-ball-voice-41e5a0fd4d-800.webp 800w, /images/project-media/crystal-ball-voice-41e5a0fd4d-1200.webp 1200w",
        "width": 1320,
        "height": 2322,
        "alt": "A touch-activated talking crystal ball — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "Creator · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "Astrology output is entertainment, not a factual prediction. Keep the speakerphone external as the source describes; no microphone amplifier is needed if using the documented USB speakerphone.",
        "items": [
          {
            "name": "Raspberry Pi 5",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Voice/backend host.",
            "notes": "Memory capacity not specified.",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.raspberrypi.com/products/raspberry-pi-5/",
              "match": "Manufacturer model page; select the specified memory",
              "verification": "Source-linked; live page not verified",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "Arduino Uno",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Touch/LED controller.",
            "notes": "Revision not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Capacitive touch sensors WS2",
            "quantity": "2",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "Two independent touch inputs.",
            "notes": "Source specifies momentary active-high outputs to D2/D3, with 5 V and GND.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB speakerphone with microphone and speaker",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Conversation audio.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "WS2812B / NeoPixel-compatible LED ring",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Animated light output.",
            "notes": "Diameter, LED count and current demand not stated.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Copper-tape touch pads",
            "quantity": "2",
            "quantityBasis": "Source-specified quantity",
            "requirement": "Required",
            "purpose": "External touch electrodes.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Globe and base",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Enclosure.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Regulated 5 V LED power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power LED ring.",
            "notes": "Separate regulated supply, common ground; current sized to actual ring.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "LED data-line resistor and power-input capacitor",
            "quantity": "1 each",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Signal/power conditioning.",
            "notes": "Values are not stated by the creator; establish them from the selected ring and wiring.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "USB cables and wiring",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Pi, Arduino, speakerphone and lights.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pi boot storage and suitable Pi power supply",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Run the backend.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Assembly and test tools",
            "quantity": "Set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Assemble and check the circuit.",
            "notes": "Soldering iron, solder, wire cutters and multimeter; review the wiring before power-up.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "LED ring count, supply current, resistor/capacitor values, exact WS2 modules, Uno revision and enclosure sizes are not supplied."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-28178db8385f4cc1aa1cc7a276d4e3eb651a2f5a16df5e93e1c6995b45a30663"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "codex-pet-badge",
      "title": "A pet that lives on a motion-sensitive badge",
      "hardware": "M5Stack StopWatch Dev Kit with ESP32-S3",
      "summary": "A standalone badge reacts to tilt, shaking, touch and button presses.",
      "topic": "Robots & toys",
      "setup": "Device firmware",
      "physicalRole": "A flashed M5Stack StopWatch responds to motion, touch and button presses with an animated on-screen companion, without needing a model API at runtime.",
      "beforeYouBuild": "Firmware and filesystem flashing required; runs locally without an AI API. TAVI derives from this project and is held rather than double-counted.",
      "codingTool": "Codex",
      "evidence": "The creator describes Codex as the coding partner for the badge firmware and animation behavior. The physical device's sensors drive the interactions; this is not just a chatbot running on a small screen.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070",
      "supportingUrl": "https://x.com/i/status/2113694547071111411",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "m5stack-stopwatch",
          "fit": "Exact model",
          "note": "The project names M5Stack StopWatch Dev Kit. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/b2b140d6-70ca-430e-b9af-290b0bce221f",
        "src": "/images/project-media/codex-pet-badge-0ddc05cf65-1080.webp",
        "thumb": "/images/project-media/codex-pet-badge-0ddc05cf65-480.webp",
        "srcset": "/images/project-media/codex-pet-badge-0ddc05cf65-480.webp 480w, /images/project-media/codex-pet-badge-0ddc05cf65-800.webp 800w, /images/project-media/codex-pet-badge-0ddc05cf65-1080.webp 1080w",
        "width": 1080,
        "height": 1920,
        "alt": "A pet that lives on a motion-sensitive badge — build photo from the creator’s source",
        "kind": "Build photo",
        "credit": "naveenmanwani17 · build photo",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Parts identified",
        "scope": "Display, battery-status hardware, motion sensor and vibration are integrated. Flash both LittleFS assets and firmware. No additional AI service or network connection is required while it runs.",
        "items": [
          {
            "name": "M5Stack StopWatch Dev Kit (ESP32-S3)",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Badge, display, touch, IMU and haptics.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://shop.m5stack.com/products/m5stack-stopwatch-dev-kit-esp32-s3",
              "match": "Product page",
              "verification": "Page checked",
              "reference": false,
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070",
              "https://x.com/i/status/2113694547071111411"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "m5stack-stopwatch",
            "catalogMatch": "Exact model"
          },
          {
            "name": "USB-C data cable",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect to the computer for programming or data.",
            "notes": "A charge-only cable cannot flash firmware. Example requires a USB-A host port. If your computer has only USB-C, use an appropriate USB-C data cable instead. Reuse the device’s included cable where possible; this is not a standalone power-supply recommendation.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070",
              "https://x.com/i/status/2113694547071111411",
              "https://www.adafruit.com/product/4474"
            ],
            "destination": {
              "url": "https://www.adafruit.com/product/4474",
              "match": "Accessory example: USB-A to USB-C, 1 m, data capable",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm region, stock and delivery with seller",
              "example": true,
              "reference": false
            },
            "sourcingStatus": "Example / candidate — not creator-verified"
          },
          {
            "name": "Computer with VS Code and PlatformIO",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070",
              "https://x.com/i/status/2113694547071111411"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-15b148cc94a3ce050e840a5302e1824396ae5cb2892d9e60ce04a435f8fb5070"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2113694547071111411"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "ac-remote-visual-feedback",
      "title": "An AC remote that checks what happened",
      "hardware": "Raspberry Pi 5 (4GB); IR transmitter; Logitech BRIO 100",
      "summary": "A Pi sends infrared AC commands and uses a camera to check flap position.",
      "topic": "Buttons & controls",
      "setup": "Sensor workflow",
      "physicalRole": "A Raspberry Pi sends infrared air-conditioner commands, then a webcam checks the position of the unit's flap rather than assuming a command succeeded.",
      "beforeYouBuild": "Camera observations show flap position, not cooling performance. Requires wiring, remote-signal capture and model service; unclear results must stay unclear.",
      "codingTool": "Codex",
      "evidence": "The creator describes using Codex for component selection, implementation and debugging, sharing photos of the physical setup during development. The observed feedback is flap position, not a measurement of cooling performance.",
      "sourceUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
      "supportingUrl": "https://x.com/i/status/2112555939828244618",
      "sourceType": "Creator showcase",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [
        {
          "slug": "logitech-brio-100",
          "fit": "Exact model",
          "note": "The project names Logitech BRIO 100. Check its full shopping list for accessories and revision requirements."
        }
      ],
      "photo": {
        "url": "https://youcanjustbuildthings.openai.chatgpt.site/api/media/1006dea0-3aa8-4b54-9051-b7b1b5341f61",
        "src": "/images/project-media/ac-remote-visual-feedback-3f22ca9585-1200.webp",
        "thumb": "/images/project-media/ac-remote-visual-feedback-3f22ca9585-480.webp",
        "srcset": "/images/project-media/ac-remote-visual-feedback-3f22ca9585-480.webp 480w, /images/project-media/ac-remote-visual-feedback-3f22ca9585-800.webp 800w, /images/project-media/ac-remote-visual-feedback-3f22ca9585-1200.webp 1200w",
        "width": 2000,
        "height": 2000,
        "alt": "An AC remote that checks what happened — demo screenshot from the creator’s source",
        "kind": "Demo screenshot",
        "credit": "swhan0329 · demo screenshot",
        "creditUrl": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "A flap photo verifies observed flap state, not cooling performance. Low-confidence results must remain unclear; do not automatically retry IR commands based on uncertain observations.",
        "items": [
          {
            "name": "Raspberry Pi 5, 4GB",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Infrared/vision bridge.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.pishop.us/product/raspberry-pi-5-4gb/",
              "match": "Exact Pi 5 4GB; US retailer",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "sourcingStatus": "Product destination identified — check model and seller"
          },
          {
            "name": "128 GB microSD card",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Firmware, operating system or project storage.",
            "notes": "",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "IR transmitter module",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Emit captured AC remote signals.",
            "notes": "Part, driver circuit and electrical ratings not identified.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Logitech BRIO 100 USB webcam",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Observe AC flap position.",
            "notes": "",
            "evidence": "Creator source",
            "destination": {
              "url": "https://www.logitech.com/en-gb/shop/p/brio-100-webcam.960-001585",
              "match": "Exact product; UK store",
              "verification": "Page checked",
              "checkedAt": "2026-11-04",
              "availability": "Not assessed; confirm with the seller"
            },
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "sourcingStatus": "Product destination identified — check model and seller",
            "catalogSlug": "logitech-brio-100",
            "catalogMatch": "Exact model"
          },
          {
            "name": "Existing air conditioner and its remote",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Controlled appliance and source signals.",
            "notes": "Exact AC and remote models not published.",
            "evidence": "Creator source",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Infrared capture hardware",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Learn the original control signals.",
            "notes": "Only needed if no valid signal capture exists; creator does not identify the capture device.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "GPIO wiring and transmitter drive circuitry",
            "quantity": "To confirm",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Connect the IR module safely.",
            "notes": "Do not drive a high-current IR emitter directly from Pi GPIO.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Pi 5 power supply",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Power the device.",
            "notes": "Choose a Pi 5-rated supply and account for the camera and IR circuit.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Stable camera / emitter positioning",
            "quantity": "1 set",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Keep observations and IR reliable.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Computer for setup",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Tool",
            "purpose": "Build, configure or flash the software.",
            "notes": "",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd",
              "https://x.com/i/status/2112555939828244618"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          }
        ],
        "unresolved": [
          "IR emitter, driver, capture method, air-conditioner model and signal compatibility are incomplete."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://youcanjustbuildthings.openai.chatgpt.site/projects/submission-edea2dffa1a7b0152eaa552435b98b5681a257a5f2b6dfda1ceba433217901dd"
          },
          {
            "label": "Code / supporting source",
            "url": "https://x.com/i/status/2112555939828244618"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    },
    {
      "slug": "virtual-puppet-theater",
      "title": "Make hand movements control a puppet theater",
      "hardware": "Webcam and microphone; browser computer",
      "summary": "Camera-tracked hands control a puppet while voice changes its stage and props.",
      "topic": "Robots & toys",
      "setup": "Computer companion",
      "physicalRole": "A webcam tracks the user's hand to move a puppet, while a microphone supplies speech for an AI-controlled character on a browser-rendered stage.",
      "beforeYouBuild": "Requires a webcam, microphone and a capable computer running a supported desktop browser. The repository recommends Chrome or Edge, HTTPS or localhost, and a required Anthropic API key; ElevenLabs speech is optional. Model services can incur charges. Grant camera and microphone access deliberately. The image is a frame from the creator's software demo, not a photograph of a special-purpose hardware product. No specific webcam model is required or verified.",
      "codingTool": "Claude Code / Claude Opus 4.7",
      "evidence": "Anthropic's winner interview credits Rene Hangstrup Møller with using Claude across concept discussion, planning and code writing. The creator's repository documents MediaPipe hand tracking, Three.js rendering and the required camera and microphone.",
      "sourceUrl": "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon",
      "supportingUrl": "https://github.com/rhmoller/virtual-puppet-theater",
      "sourceType": "Creator interview and repository",
      "reviewedAt": "2026-11-04",
      "hardwareLinks": [],
      "photo": {
        "url": "https://i.ytimg.com/vi/qLuGU4PQNss/sddefault.jpg?sqp=-oaymwEmCIAFEOAD8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGHIgWSg-MA8=&rs=AOn4CLB396SMcM_LecEIvSfiilA3Pvq73w",
        "src": "/images/project-media/virtual-puppet-theater-9f3c976935-640.webp",
        "thumb": "/images/project-media/virtual-puppet-theater-9f3c976935-480.webp",
        "srcset": "/images/project-media/virtual-puppet-theater-9f3c976935-480.webp 480w, /images/project-media/virtual-puppet-theater-9f3c976935-640.webp 640w",
        "width": 640,
        "height": 480,
        "alt": "Make hand movements control a puppet theater — creator demo screenshot from the creator’s source",
        "kind": "Creator demo screenshot",
        "credit": "Rene Hangstrup Møller · creator demo screenshot",
        "creditUrl": "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon"
      },
      "shoppingList": {
        "reviewedAt": "2026-11-04",
        "status": "Details to confirm",
        "scope": "This is a browser-based webcam project, not a dedicated electronics kit. Camera/mic permission and an Anthropic API key are required; optional ElevenLabs speech incurs separate service costs.",
        "items": [
          {
            "name": "Webcam",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Track performer movement.",
            "notes": "No particular model is required or verified.",
            "evidence": "Creator source",
            "sources": [
              "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon",
              "https://github.com/rhmoller/virtual-puppet-theater"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Microphone",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Voice input.",
            "notes": "Can be built into the computer or webcam; no need to buy duplicates.",
            "evidence": "Creator source",
            "sources": [
              "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon",
              "https://github.com/rhmoller/virtual-puppet-theater"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          },
          {
            "name": "Modern GPU-capable computer",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Required",
            "purpose": "Run Chrome or Edge and the web application.",
            "notes": "Source describes 60 fps GPU work; exact minimum hardware is not specified.",
            "evidence": "Creator source",
            "sources": [
              "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon",
              "https://github.com/rhmoller/virtual-puppet-theater"
            ],
            "purchaseNote": "No exact purchase link verified; confirm the model and requirements above before ordering.",
            "sourcingStatus": "Reuse existing compatible equipment; exact model not prescribed"
          },
          {
            "name": "Headphones or speakers",
            "quantity": "1",
            "quantityBasis": "Planning quantity for one build; check the selected configuration",
            "requirement": "Conditional",
            "purpose": "Hear generated speech.",
            "notes": "Only for audio playback; built-in computer audio may suffice.",
            "evidence": "Setup requirement — check against your configuration",
            "sources": [
              "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon",
              "https://github.com/rhmoller/virtual-puppet-theater"
            ],
            "purchaseNote": "Use existing equipment or match the specification above. No exact purchase link verified.",
            "sourcingStatus": "No verified SKU — read remaining requirements"
          }
        ],
        "unresolved": [
          "No tested camera or computer SKU is published."
        ],
        "sources": [
          {
            "label": "Creator / build story",
            "url": "https://claude.com/resources/articles/meet-the-winners-of-built-with-opus-4-7-claude-code-hackathon"
          },
          {
            "label": "Code / supporting source",
            "url": "https://github.com/rhmoller/virtual-puppet-theater"
          }
        ],
        "quantityNote": "Quantities are for one build. Unless marked source-specified, they are planning quantities; confirm kit contents and the chosen configuration before ordering.",
        "reviewNote": "Source reviewed, not assembled or hands-on tested. A working product page does not confirm stock, firmware compatibility or a complete build.",
        "deepReviewAt": "2026-11-04"
      }
    }
  ]
}