Sasquatch Pro: stop selling features that don't exist

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 <assistant@shakespeare.diy>
This commit is contained in:
shakespeare.diy 2026-09-10 00:27:34 +07:00
parent 5506344893
commit 993bea1b5b
3 changed files with 12 additions and 15 deletions

View file

@ -533,14 +533,14 @@ const STATIC_FAQ: Record<string, string> = {
'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). 🛹", '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. 🗺️🛹", '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 — 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.", '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), 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 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 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.", '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, priority AI + higher limits + longer memory, opt-in weather/spot nudges, and a supporter badge + Pro skins. 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), 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. 🦧", '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.", '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.", '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 { function getStaticAnswer(question: string): string | null {

View file

@ -23,7 +23,6 @@ import { usePurchasePro } from '@/hooks/usePurchasePro';
import { useToast } from '@/hooks/useToast'; import { useToast } from '@/hooks/useToast';
import { PRO_TIERS, type ProTier } from '@/lib/sasquatchPro'; import { PRO_TIERS, type ProTier } from '@/lib/sasquatchPro';
import { import {
Sparkles,
Zap, Zap,
Check, Check,
Loader2, Loader2,
@ -35,11 +34,10 @@ import {
} from 'lucide-react'; } from 'lucide-react';
const PERKS: Array<{ icon: React.ComponentType<{ className?: string }>; text: string }> = [ const PERKS: Array<{ icon: React.ComponentType<{ className?: string }>; text: string }> = [
{ icon: Brain, text: 'Personal assistant — knows your Stash, crews, spots & listings' }, { icon: Brain, text: 'Personal assistant — Sasquatch reads your own Stash, crews, spots & listings' },
{ icon: Wand2, text: 'Drafts actions for you: list gear, post a spot status, plan a trip' }, { icon: Wand2, text: 'Action drafts: list gear, post a spot status, plan a trip — you confirm before anything publishes' },
{ icon: Rocket, text: 'Priority AI model, higher limits & longer memory' }, { icon: Rocket, text: 'Answers use your personal context, not just public data' },
{ icon: Sparkles, text: 'Proactive nudges (weather + spot tips), opt-in' }, { icon: BadgeCheck, text: '⚡ Directly support SkateSpots & keep it free and ad-free' },
{ icon: BadgeCheck, text: '⚡ Supporter badge + Pro-only Sasquatch skins' },
]; ];
export function SasquatchProDialog({ export function SasquatchProDialog({

View file

@ -71,9 +71,8 @@ export function usePurchasePro() {
`What you unlocked:`, `What you unlocked:`,
`• Personal assistant — I read your Stash, crews, spots & listings`, `• Personal assistant — I read your Stash, crews, spots & listings`,
`• Action drafts — list gear, post a spot status, plan trips (you confirm)`, `• Action drafts — list gear, post a spot status, plan trips (you confirm)`,
`• Priority AI model, higher limits & longer memory`, `• Answers that use your personal context, not just public data`,
`• Opt-in weather + spot nudges`, `• ⚡ You're directly supporting SkateSpots & keeping it free + ad-free`,
`• ⚡ Supporter badge + Pro-only skins`,
``, ``,
`Thanks for keeping SkateSpots free & ad-free. Now go shred. 🛹`, `Thanks for keeping SkateSpots free & ad-free. Now go shred. 🛹`,
].join('\n'); ].join('\n');