positioning + dual-link + Vercel: one URL in, two links out; Pimcore center#30
Merged
Merged
Conversation
Reframe the top-level positioning + operating contracts around a single intake primitive: an existing web page link. Aligns Shoploop with the NVIDIA OpenUSD product configurator reference architecture (https://developer.nvidia.com/blog/developing-product-configurators-with-openusd/) where the customer's data is aggregated, expressed as OpenUSD, exposed as variants (model x material x style x artwork), rendered, QC'd, and delivered. Wording changes only. Connector code under connectors/shopify/ and apps/ is untouched — Shopify remains one of many optional secondary data sources, never a required intake. - README.md: new 'Intake: one URL' section; drop 'on Shopify' from tagline; swap 'Shopify admin API' out of the loop diagram in favor of the generic web publish path; contributor list swaps 'Shopify admin API adapter' for 'URL to USD product-twin extractor'. - POSITIONING.md: new 'Intake — one URL, nothing else' section anchored to NVIDIA OpenUSD ref arch; drop 'on Shopify' from one-liner; loop step 3 no longer requires Shopify commerce read; loop step 7 rewrites as 'update the page' via PR or hosted-CMS API. - agent.md: new locked 'Intake rule'; four-repo table renames shoploop-shopify -> shoploop-delivery in wording; active board swaps 'Shopify app scaffold' for 'URL page parser'; decision gate adds rule 6 (reject non-URL intake surfaces); founder location Houston -> Seattle to match current context. - soul.md: platform-neutralize checkout dogma; add URL as the intake primitive in the stack-as-soul block; drop Shopify-specific metaphors. - AGENTS.md: locked-decisions swaps 'Shopify App Store' for URL paste on shoploop.studio; architecture loop leads with 'Existing Web Page URL'; releases v0.2 renamed 'URL-intake Public Beta'; never-do list adds 'propose intake surfaces other than URL'; founder location Houston -> Seattle. - LOOP_SPEC.md: Loop 1 rewritten as 'URL Intake (Page -> Twin)' with full 9-primitive spec; original connector ingest demoted to Loop 1b (secondary, optional); Loop 6 rewritten as 'Web Page Update (PR-first)' with hosted-CMS API as optional-connect path only; Loop 8 regression scope widened from Shopify+WooCommerce to top 30 storefront templates; scheduling policy re-gated on URL paste, not connector enrollment. - design.md: description + hero one-liner drop 'on Shopify' / 'for every Shopify tabletop brand' in favor of 'one URL in, configurator out' / 'every tabletop brand with a web page'.
Open
11 tasks
This was referenced Jul 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four moves, one branch
1. Drop Shopify from the positioning wording
Shoploop is positioned as full-funnel positionless AI marketing for tabletop products — full stop. No "on Shopify" tail.
connectors/shopify/code untouched; Shopify is now one of many optional secondary connects.2. The only intake is an existing web page link
No catalog upload, no OAuth wizard, no CSV, no SKU form. Paste a URL → parser emits
product_twin.usda+brand_rules.json+ variant sets. Everything downstream triggers off that twin. Anchored to the NVIDIA OpenUSD product-configurator reference architecture.3. One URL in, two links out
Same intake fans out into two products that share the same Pimcore-managed twin:
shoploop.studio/op/{slug}— Grip-clone Studio for operators, artists, marketers.shoploop.studio/{slug}— premium 3D PDP replacement for shoppers. Reference behavior: Gatorade's Adobe Firefly customizable squeeze bottles.Pimcore (PXM) sits in the middle. Both links read/write the same product record. The Operator link needs the Configurator link to close its funnel — that's why they ship in one repo.
4. Cloud rule (locked)
Frontends → Vercel (sole frontend deployment partner). Everything else — GPUs, Omniverse streaming, Kit containers, Pimcore, Postgres, agents, Postiz workers, Nango — → AWS. Never Vercel for GPU. Never AWS for frontends.
Files changed
Positioning surfaces
Intake — one URL, nothing elsesection; positionless-full-funnel now starts at "customer pastes one URL".Intake rule; decision gate rule 6 rejects non-URL intake; Houston → Seattle.Existing Web Page URL.Vercel wiring (fixes broken deploys)
vercel.json(new, root) —pnpm --filter shoploop-studio-site build+ ignoreCommand skipping deploys fordocs/,connectors/,infra/,skills/, non-frontend*.mdchanges.apps/shoploop-studio-site/vercel.json(new) — per-app config for Root Directory setup.apps/shoploop-studio-site/next.config.mjs— droppedoutput: 'export'(dynamic/{slug}and/op/{slug}routes need SSR/ISR); addedremotePatternsfor arbitrary product URLs; transpilePackages for shared workspace packages.apps/shoploop-studio-site/package-lock.json(npm lockfile conflicting with root pnpm workspace)..npmrc(new) — pinning pnpm behavior..vercelignore(new) — excludesinfra/,docs/,connectors/,skills/.docs/vercel.md(new) — runbook: env vars, common failures, subdomain map, first-time setup.Architecture assets
docs/images/nvidia-kit-app-template-streaming.jpeg— NVIDIA reference (our target).docs/images/grip-openusd-digital-twin-factory.jpeg— grip.tools implementation on Azure (the target).Repo strategy — one repo, don't split
Two links = two apps under
apps/, not two repos. Shared twin, shared brand_rules, shared Pimcore integration, one PR queue, one AGPL-3.0 license. Revisit at v0.2 only if the two apps develop truly independent release cadences.Milestone housekeeping
Follow-up issues opened
shoploop.studio/{url}— URL-paste 3D configurator on Omniverse+OpenUSD (grip.tools attack). Now scoped as the Configurator link side of the dual offering.shoploop.studiodual-offering pitch with Pimcore at the center.Verification
Only deliberate mentions remain: branch name, historical rename notes, and Shopify listed as one of many storefront templates in the regression matrix.
Perplexity project side
The Perplexity project description + system prompt have been updated to mirror this PR (dual-link framing, Pimcore center, Vercel/AWS split, monorepo lock).