From 993bea1b5b6e9eda716d453c8ccec6b56f8d7a9c Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 10 Sep 2026 00:27:34 +0700 Subject: [PATCH] Sasquatch Pro: stop selling features that don't exist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audit found the Pro paywall promised three things with no implementation: - "Priority AI model, higher limits & longer memory" β€” Pro and free hit the exact same model/limits/history (only difference is the personal-tools prompt) - "Proactive nudges (weather + spot tips)" β€” no nudge/scheduler exists anywhere - "Pro-only Sasquatch skins" β€” single hardcoded avatar; no skin system - "Supporter badge" β€” gating exists but no badge is rendered Rewrote all Pro copy to promise ONLY what actually ships (personal assistant over the user's own Stash/crews/spots/listings, confirm-before-publish action drafts, personal-context answers, and directly funding an ad-free app): - SasquatchProDialog PERKS list (dropped Sparkles import now unused) - usePurchasePro receipt DM - 6 STATIC_FAQ Pro answers in SasquatchGuide Pricing, payment target (skatespots@minibits.cash) and npub-bound zap-receipt verification were already accurate and left unchanged. Build clean, no console errors. Co-authored-by: shakespeare.diy --- src/components/SasquatchGuide.tsx | 12 ++++++------ src/components/SasquatchProDialog.tsx | 10 ++++------ src/hooks/usePurchasePro.ts | 5 ++--- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/components/SasquatchGuide.tsx b/src/components/SasquatchGuide.tsx index aa3d9a4..7b1185b 100644 --- a/src/components/SasquatchGuide.tsx +++ b/src/components/SasquatchGuide.tsx @@ -533,14 +533,14 @@ const STATIC_FAQ: Record = { 'trip planner': "Tell me a city and I'll build a day-by-day skate trip πŸ—ΊοΈ β€” spots, events, coaches and local crews, weather-aware (rainy day = crew tip for covered spots). Try 'plan me 3 days in Lisbon'. I can save it all to a Collection, and hand you off to flights/stays on the real sites (no KYC, no middleman). πŸ›Ή", 'plan a trip': "Just say 'plan me 3 days in Barcelona' (or any city) and I'll map out spots, sessions, coaches and local crews for each day. Save it as a Collection and go shred. πŸ—ΊοΈπŸ›Ή", // ── Sasquatch Pro β€” answered locally so it never depends on the AI brain ── - 'sasquatch pro': "**Sasquatch Pro** 🦧⚑ is a Lightning supporter pass that unlocks the personal side of me:\n\nβ€’ 🧠 **Personal assistant** β€” I know your Stash, crews, spots & listings\nβ€’ ✨ **Action drafts** β€” list gear, post a spot status, plan trips (you always confirm before anything publishes)\nβ€’ πŸš€ **Priority AI** β€” better model, higher limits, longer memory\nβ€’ 🌀️ **Proactive nudges** β€” weather + spot tips (opt-in)\nβ€’ πŸ… **Supporter badge** + Pro-only skins\n\nFree Sasquatch stays free: public spot/event/coach/crew search, the glossary & trip planning all work without Pro. Pro just adds the *personal* stuff and keeps SkateSpots ad-free. Tap **⚑ Go Pro** up top. Tiers: 7 days ~2k sats, 1 month ~5k, 3 months ~12k, 1 year ~36k.", - 'pro perks': "Pro perks 🦧⚑: personal assistant (reads your Stash/crews/spots/listings), action drafts (list gear, post status, plan trips β€” you confirm), priority AI model with higher limits & longer memory, opt-in weather/spot nudges, and a supporter badge + Pro skins. Free stays free β€” Pro adds the personal layer & keeps the app ad-free. Tap **⚑ Go Pro** up top.", - 'pro version': "The Pro version of me 🦧⚑ adds a **personal assistant**: I can read your Stash, crews, spots & listings, and draft actions for you (list gear, post a status, plan a trip β€” you always confirm first). Plus a priority AI model, higher limits, longer memory, opt-in weather nudges, and a supporter badge. Free Sasquatch (spot/event/coach/crew search, glossary, trip planner) stays free. Tap **⚑ Go Pro** up top.", - 'perks': "Pro perks 🦧⚑: personal assistant (your Stash/crews/spots/listings), action drafts you confirm, priority AI + higher limits + longer memory, opt-in weather/spot nudges, and a supporter badge + Pro skins. Tap **⚑ Go Pro** up top.", - 'go pro': "Tap the **⚑ Go Pro** button up top to open the upgrade sheet. Pro unlocks my personal assistant (Stash/crews/spots/listings), action drafts, priority AI and a supporter badge. Pay with Lightning β€” 7 days ~2k sats up to 1 year ~36k sats. Free features stay free. 🦧", + 'sasquatch pro': "**Sasquatch Pro** 🦧⚑ is a Lightning supporter pass that unlocks the personal side of me:\n\nβ€’ 🧠 **Personal assistant** β€” I read your own Stash, crews, spots & listings\nβ€’ ✨ **Action drafts** β€” list gear, post a spot status, plan trips (you always confirm before anything publishes)\nβ€’ πŸ’¬ **Personal context** β€” my answers use your own data, not just public results\nβ€’ ⚑ **Support the project** β€” you keep SkateSpots free and ad-free\n\nFree Sasquatch stays free: public spot/event/coach/crew search, the glossary & trip planning all work without Pro. Pro just adds the *personal* stuff. Tap **⚑ Go Pro** up top. Tiers: 7 days ~2k sats, 1 month ~5k, 3 months ~12k, 1 year ~36k.", + 'pro perks': "Pro perks 🦧⚑: personal assistant (reads your Stash/crews/spots/listings), action drafts (list gear, post status, plan trips β€” you confirm), and answers that use your own personal context. Plus you're directly supporting SkateSpots and keeping it free + ad-free. Free stays free β€” Pro adds the personal layer. Tap **⚑ Go Pro** up top.", + 'pro version': "The Pro version of me 🦧⚑ adds a **personal assistant**: I can read your own Stash, crews, spots & listings, draft actions for you (list gear, post a status, plan a trip β€” you always confirm first), and use your personal context in my answers. It also directly supports the project. Free Sasquatch (spot/event/coach/crew search, glossary, trip planner) stays free. Tap **⚑ Go Pro** up top.", + 'perks': "Pro perks 🦧⚑: personal assistant (your Stash/crews/spots/listings), action drafts you confirm, and answers that use your own context β€” plus you keep the app free & ad-free. Tap **⚑ Go Pro** up top.", + 'go pro': "Tap the **⚑ Go Pro** button up top to open the upgrade sheet. Pro unlocks my personal assistant (Stash/crews/spots/listings) and action drafts, and directly supports the project. Pay with Lightning β€” 7 days ~2k sats up to 1 year ~36k sats. Free features stay free. 🦧", 'pro pricing': "Pro tiers (pay with Lightning ⚑): **7 days** ~2,000 sats (~$1.20), **1 month** ~5,000 sats (~$3), **3 months** ~12,000 sats (~$7, 20% off), **1 year** ~36,000 sats (~$21, best value). Tap **⚑ Go Pro** up top.", 'how much is pro': "Pro tiers: 7 days ~2,000 sats, 1 month ~5,000 sats, 3 months ~12,000 sats (20% off), 1 year ~36,000 sats (best value). Pay with Lightning ⚑. Tap **⚑ Go Pro** up top.", - 'upgrade': "To upgrade to Sasquatch Pro, tap the **⚑ Go Pro** button up top. Pay with Lightning (7 days ~2k sats up to 1 year ~36k). Pro unlocks my personal assistant, action drafts, priority AI and a supporter badge. 🦧⚑", + 'upgrade': "To upgrade to Sasquatch Pro, tap the **⚑ Go Pro** button up top. Pay with Lightning (7 days ~2k sats up to 1 year ~36k). Pro unlocks my personal assistant and action drafts, and directly supports the project. 🦧⚑", }; function getStaticAnswer(question: string): string | null { diff --git a/src/components/SasquatchProDialog.tsx b/src/components/SasquatchProDialog.tsx index 39df138..4000d15 100644 --- a/src/components/SasquatchProDialog.tsx +++ b/src/components/SasquatchProDialog.tsx @@ -23,7 +23,6 @@ import { usePurchasePro } from '@/hooks/usePurchasePro'; import { useToast } from '@/hooks/useToast'; import { PRO_TIERS, type ProTier } from '@/lib/sasquatchPro'; import { - Sparkles, Zap, Check, Loader2, @@ -35,11 +34,10 @@ import { } from 'lucide-react'; const PERKS: Array<{ icon: React.ComponentType<{ className?: string }>; text: string }> = [ - { icon: Brain, text: 'Personal assistant β€” knows your Stash, crews, spots & listings' }, - { icon: Wand2, text: 'Drafts actions for you: list gear, post a spot status, plan a trip' }, - { icon: Rocket, text: 'Priority AI model, higher limits & longer memory' }, - { icon: Sparkles, text: 'Proactive nudges (weather + spot tips), opt-in' }, - { icon: BadgeCheck, text: '⚑ Supporter badge + Pro-only Sasquatch skins' }, + { icon: Brain, text: 'Personal assistant β€” Sasquatch reads your own Stash, crews, spots & listings' }, + { icon: Wand2, text: 'Action drafts: list gear, post a spot status, plan a trip β€” you confirm before anything publishes' }, + { icon: Rocket, text: 'Answers use your personal context, not just public data' }, + { icon: BadgeCheck, text: '⚑ Directly support SkateSpots & keep it free and ad-free' }, ]; export function SasquatchProDialog({ diff --git a/src/hooks/usePurchasePro.ts b/src/hooks/usePurchasePro.ts index a6e6e13..0f65624 100644 --- a/src/hooks/usePurchasePro.ts +++ b/src/hooks/usePurchasePro.ts @@ -71,9 +71,8 @@ export function usePurchasePro() { `What you unlocked:`, `β€’ Personal assistant β€” I read your Stash, crews, spots & listings`, `β€’ Action drafts β€” list gear, post a spot status, plan trips (you confirm)`, - `β€’ Priority AI model, higher limits & longer memory`, - `β€’ Opt-in weather + spot nudges`, - `β€’ ⚑ Supporter badge + Pro-only skins`, + `β€’ Answers that use your personal context, not just public data`, + `β€’ ⚑ You're directly supporting SkateSpots & keeping it free + ad-free`, ``, `Thanks for keeping SkateSpots free & ad-free. Now go shred. πŸ›Ή`, ].join('\n');