The Configurator link (customer surface)
Build shoploop.studio/{slug} — the premium 3D configurator that replaces the static product page. For shoppers.
"Replaces static product pages with premium 3D configurators that keep customers engaged, increase trust, and justify your premium price."
Reference behavior: Gatorade's Adobe Firefly customizable squeeze bottles on gatorade.com — Gatorade shoppers type prompts, pick vibes/colors, and buy their generated bottle for $34.99. Same "customer as designer" pattern, shipped URL-paste, browser-native, OpenUSD-first, on NVIDIA Omniverse.
Relationship to Issue #31
Issue #31 originally scoped this as the sole customer-facing surface. This issue supersedes #31's shopper scope and re-scopes #31 to the shared infrastructure (Kit-App-Template + Omniverse App Streaming + page parser). Close #31 as folded into this + Issue #TBD (Operator link) once both are landed.
Scope (M1)
Architecture
Shopper opens shoploop.studio/{slug}
→ Next.js SSR shell renders instantly (Vercel edge)
→ Client-side <ShoploopConfigurator> mounts
→ WebRTC handshake → Omniverse App Streaming API (AWS g5.xlarge)
→ Kit application streams from container (twin loaded from Pimcore + S3)
→ User interacts: spin, swap, customize, compose pack
→ Every event → PostHog + Pimcore session record
→ ATC → customer's own checkout (URL of the pasted product page)
Frontend on Vercel. Streaming, Kit containers, Pimcore, PostHog all on AWS. Session pool: ≥3 concurrent streams per g5.xlarge spot instance.
Success criteria
- Paste
https://kapiva.in/products/ashwagandha-gold (or one of 5 seed URLs) into shoploop.studio, land on shoploop.studio/{slug}, see the product streamed as an interactive 3D configurator within 30s cold, <5s warm.
- Multi-camera rig switch < 200ms.
- Variant swap < 500ms (no re-render).
- Customizer generates a valid
brand_rules-constrained design in ≤4s (Adobe Firefly Services or self-hosted equivalent — see cost note).
- Wellness-pack composer: shopper can drag 3 SKUs onto top-down camera and check out to a single URL.
- Twin PBR fidelity ≥ 0.85 per Validation Agent (LOOP_SPEC Loop 4).
- Session cost ≤ $0.10 per 30s at warm cache.
<shoploop-configurator src="…" /> renders correctly when embedded on a third-party PDP.
Customizer implementation options
The Gatorade pattern uses Adobe Firefly Services enterprise APIs. We won't gate on Adobe — pick one of:
- A (fast, external): Adobe Firefly Services API — enterprise pricing, unknown quotas. Trial first.
- B (self-hosted, preferred long-term): SDXL + IP-Adapter + ControlNet on the same g5.xlarge pool that runs Kit. Constrain outputs to
brand_rules.allowed_palette + allowed_typography.
- C (variant-only for M1): No generative surface, only variant swap + color/material pickers. Ship first, add A or B in v0.2.
Default M1: Option C. Add customizer prompt input as a stub that queues a request handled in v0.2 (Issue #TBD).
Cost envelope
- Streaming: AWS g5.xlarge spot ≈ $0.40/hr. Pool → ~$0.13/session-hour at 3 concurrent.
- Cold twin build (URL → USD): ≤ $0.20 per URL, cached indefinitely.
- Page parser LLM fallback (self-hosted Codestral): ≤ $0.005 per URL.
- Vercel edge SSR: negligible.
- Loaded target: ≤$0.10 per 30s shopper session at warm cache; ≤$50/mo per active customer at Loop 4 cap.
Decision-gate answers
- Varitea dogfood critical path? Yes — Varitea is one of the 5 seed URLs.
- Deepens moat? Yes — no OSS competitor ships a URL-paste, browser-native, Omniverse-streamed configurator.
- Mistral cheaper? Page parser + prompt-to-design routes to self-hosted Codestral where possible.
- Ships in ≤2 weeks solo? Option C scope (no customizer) — yes. Options A/B — follow-up.
- Monthly cost? ≤$50/mo per active customer. Infra baseline ≈ $150/mo idle (1 warm g5.xlarge spot).
- Non-URL intake? None — every configurator instance is
slug-scoped to a pasted URL.
References
The Configurator link (customer surface)
Build
shoploop.studio/{slug}— the premium 3D configurator that replaces the static product page. For shoppers.Reference behavior: Gatorade's Adobe Firefly customizable squeeze bottles on gatorade.com — Gatorade shoppers type prompts, pick vibes/colors, and buy their generated bottle for $34.99. Same "customer as designer" pattern, shipped URL-paste, browser-native, OpenUSD-first, on NVIDIA Omniverse.
Relationship to Issue #31
Issue #31 originally scoped this as the sole customer-facing surface. This issue supersedes #31's shopper scope and re-scopes #31 to the shared infrastructure (Kit-App-Template + Omniverse App Streaming + page parser). Close #31 as folded into this + Issue #TBD (Operator link) once both are landed.
Scope (M1)
apps/configurator(Next.js on Vercel) — dynamic route/[slug]/page.tsxwith SSR shell + client-side Kit stream.packages/embed.brand_rules.jsonallowed axes<shoploop-configurator src="…" />custom element for customers who want to keep their own PDP shell.Architecture
Frontend on Vercel. Streaming, Kit containers, Pimcore, PostHog all on AWS. Session pool: ≥3 concurrent streams per g5.xlarge spot instance.
Success criteria
https://kapiva.in/products/ashwagandha-gold(or one of 5 seed URLs) intoshoploop.studio, land onshoploop.studio/{slug}, see the product streamed as an interactive 3D configurator within 30s cold, <5s warm.brand_rules-constrained design in ≤4s (Adobe Firefly Services or self-hosted equivalent — see cost note).<shoploop-configurator src="…" />renders correctly when embedded on a third-party PDP.Customizer implementation options
The Gatorade pattern uses Adobe Firefly Services enterprise APIs. We won't gate on Adobe — pick one of:
brand_rules.allowed_palette+allowed_typography.Default M1: Option C. Add customizer prompt input as a stub that queues a request handled in v0.2 (Issue #TBD).
Cost envelope
Decision-gate answers
slug-scoped to a pasted URL.References
docs/vercel.md— deployment runbookLOOP_SPEC.mdLoops 1, 4, 8 (URL Intake, 3D Render, Platform Health)