Skip to content

M1: shoploop.studio/{url} — URL-paste 3D configurator on Omniverse+OpenUSD (grip.tools attack) #31

Description

@ninan-versioning

The wedge

Build shoploop.studio/{any-product-url} — the URL-pastes-in, browser-native, OpenUSD-first 3D content configurator that is Shoploop's direct attack on grip.tools.

One line: Vagon.io + a 3D content configurator on NVIDIA Omniverse with first-class OpenUSD, streamed browser-native, addressable by URL, multi-camera angle rig so shoppers compose their own wellness pack.

Why now

Grip.tools ships the Digital Twin Factory — NVIDIA Omniverse + AI Enterprise on Azure, sold to LVMH / Moët Hennessy / L'Oréal at $500k/yr. Same reference architecture, closed cloud, agency install, enterprise pricing.

We ship the same reference architectureNVIDIA Kit-App-Template + Omniverse App Streaming API — as URL-paste, browser-native, OSS, $0-trial for every tabletop brand.

This is the first thing we work on. Offense. Attack attack attack, never defense.

Intake (locked)

The only intake is an existing web page link. User pastes a product URL into the box on shoploop.studio, lands on shoploop.studio/{that-url}, sees a live streamed 3D configurator of the pasted product. No account required to view. No catalog upload. No CSV. No OAuth wizard. See PR #30 for the full intake-rule lock.

Architecture

Per the NVIDIA reference architecture:

User pastes URL on shoploop.studio
  → Page Parser (DOM + JSON-LD + OG + PDP heuristics + LLM fallback)
  → product_twin.usda + brand_rules.json + variant sets
  → USD Database + Hero Asset (per-URL cache)
  → Kit-App-Template (Kit Application + Kit Extensions)
  → Container (packaged Kit app)
  → Cloud Server (AWS g5.xlarge spot; grip runs on Azure — we run on AWS)
  → Omniverse App Streaming API
  → Web-based Front End (shoploop.studio/{url})
  → Shopper interacts: spin, swap variants, compose wellness pack
    via multi-camera rig (hero-shot + 45° + top-down + macro)
  → Add-to-cart posts back to the pasted URL's checkout

Reference architecture diagrams:

  • docs/images/nvidia-kit-app-template-streaming.jpeg — NVIDIA Kit-App-Template + Omniverse App Streaming API (our target implementation)
  • docs/images/grip-openusd-digital-twin-factory.jpeg — grip.tools implementation on Azure (what we're attacking)

Grip.tools attack matrix

Dimension grip.tools shoploop.studio/{url}
Intake Asset handoff to Grip team Paste a URL
Deploy Agency install, weeks Instant, on paste
Pricing $500k/yr enterprise $0 OSS / $0 trial / $299/mo managed
Cloud Azure (hosted SaaS) AWS g5.xlarge spot
License Closed AGPL-3.0
Streaming Grip Template Engine (closed) Omniverse App Streaming API (NVIDIA reference)
USD First-class First-class
Multi-camera Yes Yes (hero + 45° + top-down + macro rig)
Wellness pack composer No Yes (multi-SKU compose-your-own)
Trilingual (hi/en/mr) No Day-one
Target ICP LVMH, L'Oréal, Moët Hennessy Ayurvedic + nutraceutical + OTC wellness (SMB)

Multi-camera wellness pack composer

The shopper-facing hook. Multi-camera rig baked into the Kit application:

  • Hero-shot camera — brand-fidelity 3/4 angle, editorial lighting
  • 45° camera — configurator default, best for spin
  • Top-down camera — flat-lay for wellness-pack composition (multi-SKU on a shared surface)
  • Macro camera — label + ingredient + molecular overlay (MolecularNodes stitched from ingredient list on the pasted page)

Shopper drags SKUs onto the top-down surface, spins, swaps variants, composes a wellness pack (e.g. Chyawanprash + Ashwagandha + Brahmi), one-click routes ATC to the original merchant's checkout.

Scope for this issue (M1)

Ships: end-to-end paste → stream on one URL, one SKU, one camera, on AWS g5.xlarge spot. Multi-camera + wellness-pack composer land in follow-up issues.

  • packages/page-parser — DOM + JSON-LD + OG + PDP heuristics → product_twin.usda + brand_rules.json v1. LLM extract fallback via Mistral.
  • apps/shoploop-studio-site/ intake box (one input, one submit), /{encoded-url} route that mounts the streamed configurator viewport
  • apps/kit-configurator — Kit-App-Template fork with:
    • URL-driven USD loader extension (reads twin from customer's Postgres partition)
    • brand_rules-driven material + lighting extension
    • Single default camera (hero-shot). Multi-camera rig → follow-up.
  • infra/streaming — Omniverse App Streaming API on AWS g5.xlarge spot pool. WebRTC transport. Session pooling: ≥3 concurrent streams / instance target.
  • infra/container — Kit application container image (Nvidia Omniverse Kit runtime base). Published to ECR.
  • packages/embed<shoploop-configurator src="…" /> custom element for shoploop.studio/{url} and third-party embed.
  • LOOP_SPEC Loop 1 (URL Intake → Twin) wired end-to-end for at least 5 known-good URLs (Kapiva, Baidyanath, Himalaya, Dabur, and Varitea).
  • docs/architecture/url-to-stream.md — architecture doc with the two ref-arch diagrams inlined.

Out of scope (spun into follow-ups)

  • Multi-camera rig (#TBD — hero + 45° + top-down + macro)
  • Wellness-pack composer (multi-SKU drag-to-compose on top-down camera)
  • MolecularNodes ingredient stitcher (macro camera overlay)
  • Ashwagandha.shoploop.studio Advertiser Studio tenant (separate issue)
  • hi/mr locale on the Kit app (English-first for M1; trilingual follow-up)
  • Auth / paid tier / usage metering (M2)

Success criteria

  1. Paste https://kapiva.in/products/ashwagandha-gold (or any of the 5 seed URLs) into shoploop.studio, land on shoploop.studio/{encoded}, see the product streamed as an interactive 3D twin within 30s cold, <5s warm.
  2. Twin PBR fidelity ≥ 0.85 per Validation Agent (per LOOP_SPEC Loop 4 target).
  3. Cost ≤ $0.02/frame at g5.xlarge spot; ≤ $0.10 per 30s interactive session (pooled).
  4. Public Vercel deploy of shoploop.studio live with the paste box functional against ≥5 seed URLs.
  5. Kit-App-Template fork open at ninan-versioning/shoploop under AGPL-3.0.

Cost envelope

  • Streaming: AWS g5.xlarge spot ≈ $0.40/hr. Session pooling target: 3 concurrent → ~$0.13/session-hour.
  • Render (cold twin build from URL): amortized ≤ $0.20 per URL (cached).
  • Page parser LLM fallback (Mistral): ≤ $0.005 per URL.
  • Loaded target: ≤ $0.10 per 30s shopper session at warm cache. ≤ $50/mo per active customer at the LOOP_SPEC Loop 4 cap.

Repo layout

Lives in apps/kit-configurator + packages/page-parser + packages/embed + infra/streaming in this repo (shoploop). Twin storage + brand_rules schema in shoploop-core. Web-publish adapters (post-configurator ATC routing) in shoploop-delivery.

Decision-gate answers (per AGENTS.md)

  1. Varitea dogfood critical path? Yes — Varitea is one of the 5 seed URLs; the configurator is the front door for the Varitea funnel.
  2. Deepens USD/brand-constraint moat or commoditizes? Deepens — this is the USD scene graph productized as a URL-addressable, streamed surface. Nobody else ships this on OSS.
  3. Mistral/Codestral cheaper than API call? Page parser LLM fallback uses Codestral via self-host on autoresearch H100 pool.
  4. Ships in ≤2 weeks solo? M1 scope (single URL, single camera, hero-shot only) — yes. Full multi-camera + composer — follow-ups.
  5. Monthly AWS/API cost? ≤$50/mo per active customer at Loop 4 hard cap. Streaming infra baseline ≈ $150/mo idle (1 warm g5.xlarge spot).

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Critical path — ships v0.1 or blocks releasearchitectureSystem design / cross-repo contractblockerBlocks another issue or releasecost:gpuGPU/render COGS sensitiverev:acquisitionDrives new merchant or new customer signalthreatCompetitive response requiredwedge2D→lifestyle wedge / dogfood critical path

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions