Inspiration
What it does
How I built it
Challenges I ran into
Accomplishments that I'm proud of
Inspiration
Buying a sofa online is a leap of faith. You scroll flat photos, guess whether 220 cm fits next to the window, and send it back if it doesn't. Furniture stores solved this a century ago with showrooms: you walk in, sit down and see the piece next to the coffee table.
We wanted that showroom for every online merchant, without a new shop system. It runs on the shop the merchant already has (Shopware) and with the payment customers already trust (PayPal). At the same time, AI assistants are starting to shop for people. So we asked: how do you let an agent do the tedious part and still keep the human in control of the money?
What it does
- Walk into the shop. The Shopware sales channel becomes a stylised 3D house with a showroom, a lounge and a patio. You pick a figure and walk with keyboard, mouse or touch joystick. Every product stands at its real size. Walk up to a piece and its product card opens with price, variants, delivery time and reviews.
- Pay with PayPal, right from the showroom. PayPal Express from the product card, the cart drawer and checkout step 1, plus the regular PayPal checkout through Shopware's PayPal integration. It runs in the PayPal sandbox only.
- Agent-ready store (MCP). Any MCP client, for example Claude Code or Claude Desktop, can search the catalogue and fill a cart through Shopware's Store-API MCP server. Our plugin adds the
greatroomstoolset. The assistant then hands the cart to the human as a one-time approval link. The link opens the merchant's checkout with exactly that cart, and the human pays with PayPal. While an agent is shopping, it appears as a figure walking through the showroom. - AI concierge in the showroom. A chat assistant searches products, walks your figure to them, fills the cart and shows an approval card. It uses the Anthropic Messages API with a tool loop. Without an API key it replays recorded conversations through the same real tools and says so on screen ("Demo mode").
- See it in your room. Take a photo of your living room and tap the floor corners: the furniture appears in the photo at true scale, with a fit check. The photo never leaves the device.
- Your living room as a twin. Your room is rebuilt as a walkable 3D model and furnished by a layout engine, with looks like "cozy", "bright" and "budget".
- Compare at real size. Up to three products side by side, in 3D and in a table.
- For agents and search engines:
/llms.txt,/ai-catalog.jsonand Product JSON-LD. - For the merchant: one Shopware plugin with a visual room editor in the Shopware admin.
How we built it
- Frontend: Nuxt 4 / Vue 3 with three.js and TresJS, Pinia and Tailwind. It is statically generated, and the 3D scene is a lazy island. Movement and collision use a three.js octree and a capsule. The models are Draco-compressed GLB files.
- Shop: Shopware 6.7.14 through the Store-API. One plugin, GreatRoomsHeadless, holds the world data, the room editor, the Store-API routes (world, models, approval links, concierge), and the MCP tools on Shopware's built-in Store-API MCP server (
/store-api/_mcp). - PayPal: Shopware's PayPal integration (SwagPayPal, Orders v2) for the regular checkout, and PayPal Express via the JS SDK on our own headless pages. The plugin exposes the Express configuration to the frontend. Sandbox only.
- AI:
- Claude via the Anthropic Messages API, called server-side from the plugin: the concierge (streamed over SSE, tool loop, daily budget) and review summaries.
- MCP: Shopware's MCP server plus our toolset, used by Claude Code / Claude Desktop as the external agent.
- The whole project was also built with Claude Code as the coding agent.
- Quality: unit tests in both repositories (Node test runner, PHPUnit), Playwright runs with a fresh browser profile, axe accessibility checks, and an "idle = 0 renders" rule so that the 3D scene only renders on demand.
Challenges we ran into
- True scale everywhere. A sofa must be 220 cm in the showroom, in your room photo, in the twin and on the comparison stage. We calibrate the photo from four floor taps and use the same metre-based models in every view.
- Human-in-the-loop by design. Agents may prepare a cart but must not pay on their own. The approval link is single-use, valid for 30 minutes and bound to a hash of the exact cart. Its secret lives only in the URL fragment, and the server stores only a hash. If the agent changes the cart afterwards, the link is outdated.
- Headless PayPal Express on a statically generated frontend, kept consistent with Shopware's cart and the merchant's PayPal settings.
- Fast enough for a shop: a 3D world plus a full checkout without a slow start. We used lazy chunks and on-demand rendering, and measured the start-page weight for every feature.
- Accessibility in 3D: keyboard and screen-reader paths (a product list, focus management, labelled dialogs) next to the canvas.
Accomplishments that we're proud of
- A complete purchase in a 3D showroom on a standard Shopware store, paid with PayPal (sandbox).
- An agent-ready store that keeps the human in control: an AI assistant can shop, and a person approves.
- No extra backend: one Shopware plugin plus a static frontend.
What we learned
- Spatial shopping lives or dies with scale and speed.
- For agentic commerce, the hard part is not the AI but the hand-over: a clear, verifiable moment where the human sees exactly what they pay for.
What's next
- Run the concierge with a live model in the hosted demo stores (today the demo uses recorded answers without an API key).
- Finish and security-review the experimental PayPal mandate. The MCP tool
pay_with_mandatelets an agent pay within a limit that the human set up beforehand with a PayPal vault. It is sandbox-only, not yet tested end-to-end and not part of the demo. - Hosted demo stores for merchants at https://cartrooms.com and a one-click setup from the Shopware admin.
What we built during the hackathon
The project started after submissions opened. The first frontend commit is on 2026-10-01 at 20:41 CEST (11:41 PT); the first plugin commit is on 2026-10-05. All code in both repositories was written during the hackathon (231 + 100 commits). The full timeline is in HACKATHON.md.
| Dates (2026) | What |
|---|---|
| 10-01 – 10-04 | walkable 3D house, third-person figure, Shopware cart and checkout |
| 10-05 | Shopware plugin: world data, admin room editor |
| 10-08 – 10-09 | PayPal checkout (SwagPayPal) and PayPal Express, accepted in the sandbox |
| 10-09 – 10-11 | room photo at true scale, living-room twin, compare, English UI |
| 10-11 – 10-12 | MCP tools, one-time approval link, AI concierge, AI review summaries |
| 10-13 | AI shopper figure, agents visible in the store, floor plans, experimental mandate |
| 10-19 – 10-25 | store generator in the Shopware admin, recommendations, accessibility fixes |
What I learned
What's next for Cartrooms – walk into the shop
Built With
- nuxt
- paypal
- shopware