diff --git a/WAXMUSEUM_DEEPDIVE.md b/WAXMUSEUM_DEEPDIVE.md index 401067f..4600240 100644 --- a/WAXMUSEUM_DEEPDIVE.md +++ b/WAXMUSEUM_DEEPDIVE.md @@ -1,115 +1,103 @@ # Wax Museum Records — RecordGod Deep-Dive & Onboarding Report -*Prepared from DealGod data (catalog scrape, Lighthouse/OSINT, cross-store arbitrage) + live-site audit. First enterprise onboarding target — Jackson, free year as a non-self test case.* +*Prepared from DealGod data (catalog scrape, Lighthouse/OSINT, cross-store arbitrage) + live-site audit. First enterprise onboarding target — Jackson, free year as a non-self test case + co-design partner.* --- -## TL;DR — the strategic reframe -**Wax Museum's Shopify is genuinely excellent. Do not pitch "faster / cheaper / better SEO" — every one of those claims is false for them, and Jackson will know it.** +## TL;DR +Wax Museum's Shopify is **technically excellent** (Lighthouse perf 99 / SEO 100, fast, no search-app tax) and their data is already **Discogs-sync-native** (clean titles, Media/Sleeve grades, country/year). So **do not pitch "faster / cheaper / better SEO" — all false, Jackson will know.** -- Lighthouse: **perf 99, SEO 100, a11y 93**, JS-boot 17 ms. Fast. -- **No paid search app** (no Boost/Algolia "app tax" to save him). -- They already run a **Discogs-sync app** → their data is Discogs-native + condition-graded. +But "technically excellent" ≠ "feature-complete for a record shop." Lighthouse measures *speed and crawlability*, not whether a digger can browse by label or staff can refile a crate. RecordGod's value lands across **three layers** Shopify + a Discogs-sync app structurally can't touch: -The pitch is **the one thing Shopify + a Discogs-sync app structurally cannot give them: the cross-store AU market view** — value, underpricing, scarcity, arbitrage, buy-side intel — built on data they *already publish*, so onboarding is near-zero-effort for him. +- **A — Discovery (customer frontend):** clickable genre/artist/style/label, audio samples, find-in-store. +- **B — In-store operations:** item location, store map, A-Z refile/crate-reorg. *Nothing else solves this. Daily. Stickiest.* +- **C — Market intelligence (backend):** cross-store value, underpricing, scarcity, arbitrage. + +**Intel (C) is the dollars. Ops + discovery (A/B) are the habit.** Pitch all three; lead the demo with C's money and B's daily-use stickiness. --- ## 1. Store snapshot | | | |---|---| -| Site | waxmuseumrecords.com (Shopify, est. 2006, online since 2011) | -| Location | 250 Flinders St, Melbourne CBD | Mail: Microsoft 365 | -| Catalog | **2,714 products / 2,459 live** · total stock value ≈ **$99k** | -| Pricing | median **$30**, avg $40, range $1–650 — crate-digger pricing (853 items <$20, ~80% under $60) | -| Velocity | **~255 sold / 30 days**, sell-through ≈ **9.4%/mo** (full turn ≈ 10 months) | +| Site | waxmuseumrecords.com (Shopify, est. 2006, online since 2011), 250 Flinders St Melbourne CBD, mail M365 | +| Catalog | **2,714 products / 2,459 live** · stock value ≈ **$99k** | +| Pricing | median **$30**, avg $40, range $1–650 — ~80% under $60 (crate-digger pricing) | +| Velocity | **~255 sold / 30 days**, sell-through ≈ **9.4%/mo** (~10-month turn) | | Mix | Vinyl 1,883 · CD 222 · Books 41 · + LP/12″/7″ split + **437 uncategorised** | -| Lean | Hip-hop / funk-soul / jazz / rock — a curated, second-hand crate store | +| Lean | Hip-hop / funk-soul / jazz / rock — curated second-hand | + +## 2. Technical / SEO audit — *storefront speed is NOT the gap* +Lighthouse (2026-06-16): perf **99** · SEO **100** · a11y **93** · best-practices **73** · page 2.4 MB · JS-boot **17 ms** · Shopify · stack PayPal/Shop Pay/GA/Mailchimp. +Live: **no third-party search app** · **`products.json` open** (full-catalog access) · **0 homepage JSON-LD** (the one genuine SEO gap — no Org/Product schema → no rich results) · security headers **F** (common Shopify, low priority). +**Verdict:** the box is fast and clean. The gaps are *features and operations*, not milliseconds. + +## 3. Data foundation — already Discogs-native (why this is cheap to light up) +They run a **Discogs → Shopify sync**. Every listing: +> Title `Deep Purple - 24 Carat Purple (LP, Comp) (Very Good Plus (VG+))` · Body `Media Condition: VG+ · Sleeve Condition: VG+ · Country: Japan · Released: …` · Tags `Comp, Hard Rock, LP, Rock` · Vendor = label. + +The hard part (clean Discogs metadata + grading) is **done**. But DealGod under-captures it — **condition 0% structured** (it's in the text), **`release_id` only 26%** (693/2,714, despite perfect-format titles). Fixing that powers all three layers from data they already publish. --- -## 2. Technical & SEO audit — *storefront is not the problem* -**Lighthouse (DealGod OSINT, 2026-06-16):** perf **99** · SEO **100** · a11y **93** · best-practices **73** · page 2.4 MB · JS-boot **17 ms** · platform Shopify · stack: PayPal, Shop Pay, GA, Shopify Analytics, Mailchimp. +## 4. THE THREE LAYERS — feature matrix +> Legend — **Have:** exists in DealGod today · **Low/Med/High:** build effort · **❌ S/D:** Shopify *and* a Discogs-sync app structurally can't do it. -**Live audit:** -- **No third-party search app** (Boost/Algolia/Searchanise absent) — runs native Shopify search. -- **`products.json` open** (HTTP 200) → full-catalog access for migration without even needing an Admin token (Admin API still better for inventory/cost). -- **0 JSON-LD on the homepage** — no Organization/Store structured data → missed rich-result eligibility. *(The one genuine SEO gap.)* -- **Security headers: grade F / 0** (no CSP/HSTS) — common on Shopify, low priority. +### A — Discovery (customer-facing frontend) +| Feature | Today at Wax | RecordGod | ❌ S/D | Effort | +|---|---|---|---|---| +| **Clickable genre / artist / style / label** facets (Discogs-style browse) | dead-text tags only | `release_id → artist_id/genre/style/label` → click any → that whole catalogue | ❌ (theme shows static tags) | **Low** (data exists) | +| **Audio samples** (listen-before-buy) | none | per-pressing preview pipeline | ❌ | **Med–High** (sample source) | +| **Find-in-store** (customer: "in stock, Crate 12") | none | item-location surfaced on the product | ❌ | Med (needs layer B) | +| **Rich structured data** (Product/Org schema → rich results) | 0 JSON-LD | emit schema from canonical data | partial | Low | -**Verdict:** the storefront is fast and SEO-clean. Gemini's "Shopify is slow / forces you onto search apps / API-throttles you" pitch **does not apply to Wax Museum.** The only storefront-side adds worth a sentence: structured data (Org + Product schema) and records-native search Shopify can't do. +### B — In-store operations *(the deepest moat — nobody else even tries)* +| Feature | Today at Wax | RecordGod | ❌ S/D | Effort | +|---|---|---|---|---| +| **Item physical location** (crate / shelf / bin per record) | none | location field per item, set on intake | ❌ | Med (schema + capture) | +| **Store map / find-on-map** (pick & locate visually) | none | floor map → highlight the crate | ❌ | Med (map UI) | +| **A-Z refile / crate-reorg with directional arrows** | none | staff tool: "← back 3 / → fwd 2, Crate H–K" for returns, mis-files, new stock | ❌ | Med — **the killer daily tool** | +| Intake / restock workflow | manual / Discogs | scan-in → graded, located, priced, listed | ❌ | Med | + +### C — Market intelligence (backend $) +| Feature | Today at Wax | RecordGod | ❌ S/D | Effort | +|---|---|---|---|---| +| **Cross-store value** per record (AU network) | 13% valued (329/2,459) | value the rest via `release_id` | ❌ | **Have** | +| **Underpricing flags** | none | 36% of valued sit below cross-store median → list them | ❌ | **Have** | +| **Scarcity** ("only copy in network") | none | uniqueness scan | ❌ | **Have** | +| **Arbitrage / buy radar** | none | what to chase, below-median/melt | ❌ | **Have** | +| **Condition (Media/Sleeve) structured + searchable** | in text, 0% structured | parse → first-class graded fields | sync has text only | Low | +| Reorder / distributor intel | none | restock signals | ❌ | Roadmap | + +**Read of the matrix:** Layer C is mostly **Have** (immediate $ demo). Layers A/B are mostly **build** — but they're the differentiators Shopify can never ship, and they're *daily-use* (A every customer visit, B every staff shift). That's what makes it sticky, not just impressive. --- -## 3. The killer finding — their data is already Discogs-native -Wax Museum runs a **Discogs → Shopify sync app**. Sample product: +## 5. The hook + sequencing for Jackson +1. **Money first (C, today):** "Here are N records you're underpricing vs the AU market" + "your only-copy rarities." Built from his existing feed, one screen. +2. **Habit next (B, co-build):** the refile/locate/crate tools his floor staff use every shift — designed *with* him in his actual shop. +3. **Discovery (A):** Discogs-style browse + samples for his customers. -> **Title:** `Deep Purple - 24 Carat Purple (LP, Comp) (Very Good Plus (VG+))` -> **Body:** `Media Condition: Very Good Plus (VG+) · Sleeve Condition: Very Good Plus (VG+) · Country: Japan · Released: …` -> **Tags:** `Comp, Hard Rock, LP, Rock` · **Vendor:** `Warner Bros. Records` (= label) +## 6. Onboarding plan — read-only intel first, co-design ops second +0. Connect — Shopify Admin token (read_products/inventory/orders) or the already-scraped 2,714 + open `products.json`. +1. Link + grade — Discogs-format parser (26% → ~90%+) + Media/Sleeve condition. +2. Value + flag (C) — cockpit read-only over live stock; webhooks keep it live. **Prove $.** +3. Co-design (B) — build crate-location / refile / map *in his shop* (he's the design partner, not just a reference). +4. Discovery (A) — facets + samples on the customer side. +5. Storefront/checkout — *only* if the fee math holds, in parallel, never a cutover. His Shopify is good; replacement is not the lead. -Every listing carries **Artist – Title (Format) (Grade)** + **Media/Sleeve condition + Country + Year**. This is the cleanest possible feed — the hard part (clean Discogs metadata) is *already done*. +## 7. Pitch discipline — what NOT vs what TO say +**Don't (false for them):** faster than Shopify (perf 99) · save the search-app tax (no app) · Shopify API throttles you (not near limits; bulk ops exist) · "Shopify surveils your buyers" (FUD — cut it). Fee savings = *maybe*, model his real volume, Square also charges ~1.6–1.9% — don't quote invented numbers. +**Do:** the three layers above — records-native **discovery + in-store ops + market intelligence**, none of which Shopify or a Discogs-sync app can do, most of it from data he already publishes. -**But DealGod is under-capturing it:** -| Signal | In their feed? | Captured in DealGod | Fix | -|---|---|---|---| -| Discogs `release_id` | derivable (perfect-format title + country + year) | **26%** (693/2,714) | tune the Discogs-format title parser → near-100% | -| Media/Sleeve condition | **yes, every item** | **0%** | parse `Media/Sleeve Condition:` from body | -| Country / pressing year | yes | partial | parse from body | +## 8. DealGod-side actions this surfaced (help every Discogs-sync store) +- Parse **Media/Sleeve condition** from `body_html` → `products.condition` (0% today). +- Lift **Discogs-format match rate** (strip trailing `(Format)(Grade)` + use body Country/Year) — 26% → 90%+. +- Both reusable across the Disconnect/CommonGround/Discogs-sync family. -→ This is a **slam-dunk**: we can light up near-total Discogs linkage + full grading from data they already publish. (Same pattern as the Disconnect/CommonGround stores — a reusable Discogs-sync ingest, not a one-off.) +## 9. Capture next (John / popup) +- Social reach (IG/FB — not captured) for the dossier. +- A few product pages to confirm the body grading format is 100% consistent before shipping the condition parser. +- Admin-API `cost` per variant (Jackson's token) → true margin, not just market delta. --- - -## 4. The gaps = the RecordGod value -| Gap today | RecordGod delivers | -|---|---| -| 74% of catalog unlinked to a `release_id` | link it → canonical + market value per item | -| **Condition 0% structured** (it's in the text) | Media/Sleeve grades as first-class fields | -| **Only 13% valued** vs the cross-store network (329/2,459) | value the rest → real AU market price per record | -| **36% of valued stock priced below cross-store median** | flag underpricing → direct $ to the register | -| No scarcity signal | "only copy in the network" rarity flags | -| No buy-side intel | restock + arbitrage radar (what to chase) | -| 437 uncategorised + Vinyl/LP/12″/7″ split | normalise to format | - ---- - -## 5. The hook to open with Jackson (lead with money, not infra) -1. **"Here are N records you're underpricing vs the AU market."** 36% of his *valued* stock sits below the cross-store median — and only 13% is even valued today because linkage is low. Linking the rest surfaces the full list. Real dollars, his data. -2. **"Here are your only-copy-in-the-network rarities"** — price those with confidence. -3. **"All of this from your existing Discogs feed — you do nothing."** - -That's a demo, not a deck. It proves value in one screen. - ---- - -## 6. Onboarding plan — read-only intel layer, zero disruption -0. **Connect** — Shopify custom-app token (read_products / read_inventory / read_orders); or start from the already-scraped 2,714 + open `products.json`. -1. **Link + grade** — run the Discogs-format parser hard (26% → target ~90%+); extract Media/Sleeve condition + country/year from body. -2. **Value + flag** — cross-store value per item; underpricing list; scarcity; arbitrage. -3. **Cockpit (read-only)** over his live stock; **webhooks** keep it live (sales/restock/reprice). -4. **Prove $**, earn trust → *only then* discuss storefront/checkout — and even then in parallel, never a cutover. His Shopify is good; replacement is not the lead. - ---- - -## 7. Honest "do NOT pitch" list (protect the friendship + the reference) -- ❌ "We're faster than Shopify" — he's perf 99. -- ❌ "Save on the Algolia/Boost app tax" — he runs no search app. -- ❌ "Shopify API throttles you" — he's nowhere near limits; GraphQL bulk ops exist anyway. -- ⚠️ Fee savings — *maybe* (median $30, mostly sub-$60 → per-transaction fixed fees do sting), but **model his real volume** and remember **Square also charges ~1.6–1.9%**. Don't quote Gemini's invented "$2k/yr". -- ❌ "Shopify surveils your buyers" — unsubstantiated FUD; cut it. -- ✅ The win is **records-native market intelligence**, full stop. - ---- - -## 8. DealGod-side actions this surfaced (benefit ALL Discogs-sync stores) -- **Parse Media/Sleeve condition** from `body_html` (`Media Condition: …` / `Sleeve Condition: …`) → `products.condition`. Currently 0% for a used-record store. -- **Lift the Discogs-format match rate** — titles are `Artist - Title (Format) (Grade)`; strip the trailing `(…)(…)` + use body Country/Year as the disconnect-matcher already does. 26% → 90%+. -- Both reusable across the Disconnect/CommonGround/Discogs-sync store family. - -## 9. Data to capture next (ask John / popup) -- **Social reach** — IG/FB not yet captured for waxmuseumrecords; popup-capture for the dossier. -- **Margin intel** — Admin API `cost` per variant (needs Jackson's token) → true margin, not just market delta. -- **Condition parser sample** — a few product pages to confirm the body format is 100% consistent before shipping the parser. - ---- -*Bottom line: don't sell Jackson a new storefront — his is excellent. Sell him the brain that turns his already-clean Discogs feed into an AU-market pricing & buying advantage Shopify can't touch. Near-zero lift for him, immediate dollars, and a clean reference store that isn't you.* +*Bottom line: his Shopify is a great cash register and catalogue — leave it. RecordGod is the **record-shop operating system** layered on top: Discogs-deep discovery for customers (A), a crate/refile/locate system for the floor (B), and AU-market pricing intelligence for buying (C). Jackson isn't just the reference store — he's the co-design partner for the in-store ops layer no platform has ever built.*