pricing-strategy.md
1 --- 2 title: 'Pricing Strategy' 3 category: 'business' 4 last_verified: '2026-02-15' 5 related_files: 6 - 'src/cron/weekly-repricing.js' 7 - 'src/utils/country-pricing.js' 8 tags: ['pricing', 'strategy', 'cron', 'scheduling', 'testing', 'database', 'api', 'ai'] 9 status: 'current' 10 --- 11 12 # Multi-Country Pricing Strategy 13 14 ## Overview 15 16 The 333 Method uses **PPP-adjusted pricing** (Purchasing Power Parity) to ensure fair and competitive pricing across 25 countries. Prices are calculated based on World Bank GDP per capita data and use psychological pricing (97/47 endings) for optimal conversion. 17 18 ## Pricing Tiers 19 20 ### Price Distribution 21 22 | Tier | Price (USD) | Countries | Count | 23 | -------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------- | ----- | 24 | **Premium+** | $397 | Singapore, Ireland | 2 | 25 | **Premium** | $297 | US, Norway, Switzerland, Netherlands, Denmark | 5 | 26 | **Standard** | $197-247 | Austria, Sweden, Belgium, Australia, Germany, Canada, South Korea, France, UK, New Zealand, Italy, Japan, Spain, Poland | 14 | 27 | **Emerging** | $97 | China, Mexico | 2 | 28 | **Developing** | $47 | Indonesia, India | 2 | 29 30 ### Statistics 31 32 - **Average Price**: $223 USD 33 - **Price Range**: $47 - $397 USD 34 - **GDPR Countries**: 13 (all EU/EEA countries) 35 - **Price-Sensitive Markets**: 4 (China, Mexico, Indonesia, India) 36 37 ## Pricing Philosophy 38 39 ### 1. PPP-Adjusted Formula 40 41 ``` 42 Local Price = Base Price × (Local PPP GDP per capita / US PPP GDP per capita) 43 ``` 44 45 **Base Price**: $297 USD (United States) 46 47 This ensures pricing reflects local economic conditions and purchasing power. 48 49 ### 2. Cultural Pricing Strategy 50 51 Prices are rounded using **culturally-appropriate strategies** based on regional consumer psychology: 52 53 **Western Markets (US, CA, AU, NZ, UK, FR, IT, ES, IE)** 54 55 - **Charm Pricing**: Endings in 7 or 9 (e.g., $297, $337, $349) 56 - **Research**: MIT study shows 24%+ conversion lift 57 - **Psychology**: Creates perceived value ("under $300") 58 59 **German/Nordic Markets (DE, NO, SE, DK, CH, AT)** 60 61 - **Round Numbers**: Multiples of 10, 50, 100 (e.g., €210, kr2,850, CHF 230) 62 - **Psychology**: Efficiency preference, quick decision-making 63 - **Culture**: Values transparency and clarity 64 65 **East Asian Markets** 66 67 - **China**: Lucky 8 or 88 endings (¥688, ¥358) - prosperity symbol 68 - **Japan**: Round numbers (¥31,000) - honest pricing preference 69 - **Korea**: Round thousands with 8, avoid 4 and 7 (₩328,000) 70 71 **India** 72 73 - **Auspicious 1**: Endings in 1 (₹3,001, ₹351) 74 - **Culture**: Number 1 signifies new beginnings 75 76 **Latin America (Mexico)** 77 78 - **Round Numbers**: Multiples of 100 or 500 ($1,500) 79 - **Psychology**: Stability signal during economic uncertainty 80 81 **See**: [cultural-pricing.md](./CULTURAL-PRICING.md) for detailed research and rationale. 82 83 ### 3. Price Constraints 84 85 - **Floor**: $47 USD (20% of base price) 86 - **Ceiling**: $450 USD (150% of base price) 87 - **Prevents**: Extreme outliers while respecting economic differences 88 89 ## Implementation 90 91 ### Weekly Repricing (Automated) 92 93 Prices are automatically updated weekly to reflect: 94 95 1. **Exchange Rate Fluctuations**: Via Fixer.io API (free tier) 96 2. **PPP Adjustments**: Based on World Bank data 97 3. **Cultural Rounding**: Applied per market preferences 98 99 ```bash 100 # Run manually 101 node src/cron/weekly-repricing.js 102 103 # Automated via cron (Sunday 2am) 104 0 2 * * 0 cd /path/to/333Method && node src/cron/weekly-repricing.js 105 ``` 106 107 **Price Override Protection**: Countries with `price_overridden=1` are skipped to preserve manual cultural optimizations. 108 109 ### Database Schema 110 111 Pricing is stored in the `countries` table: 112 113 ```sql 114 CREATE TABLE countries ( 115 country_code TEXT PRIMARY KEY, 116 country_name TEXT NOT NULL, 117 price_usd INTEGER NOT NULL, -- Price in cents (e.g., 29700 = $297) 118 pricing_tier TEXT NOT NULL, 119 currency_code TEXT NOT NULL, 120 currency_symbol TEXT NOT NULL, 121 ppp_gdp_per_capita INTEGER, 122 google_domain TEXT NOT NULL, 123 accept_language TEXT, -- For HTTP requests 124 mobile_pattern TEXT, -- Regex for mobile detection 125 common_cities TEXT, -- JSON array 126 requires_gdpr_check BOOLEAN, 127 is_price_sensitive BOOLEAN, 128 -- ... additional fields 129 ); 130 ``` 131 132 ### Usage 133 134 ```javascript 135 import { getPrice, getCountry } from './utils/country-pricing.js'; 136 137 // Get pricing for a country 138 const auPrice = getPrice('AU'); 139 // { 140 // priceUsd: 247, 141 // currency: 'AUD', 142 // currencySymbol: '$', 143 // formattedPrice: '$247.00', 144 // tier: 'Standard', 145 // isPriceSensitive: false 146 // } 147 148 // Get full country config 149 const country = getCountry('AU'); 150 // { 151 // countryCode: 'AU', 152 // countryName: 'Australia', 153 // googleDomain: 'google.com.au', 154 // acceptLanguage: 'en-AU,en;q=0.9', 155 // priceUsd: 247, 156 // commonCities: ['sydney', 'melbourne', 'brisbane', ...], 157 // requiresGdprCheck: false 158 // } 159 ``` 160 161 ### CLI Tools 162 163 ```bash 164 # View pricing summary 165 node src/utils/country-pricing.js summary 166 167 # Get price for specific country 168 node src/utils/country-pricing.js price AU 169 170 # Get all countries in a tier 171 node src/utils/country-pricing.js tier Premium 172 173 # Override price (with market research justification) 174 node src/utils/country-pricing.js override AU 349 "Market research shows 40% higher willingness to pay" 175 ``` 176 177 ## Country-Specific Considerations 178 179 ### Premium Markets (High purchasing power) 180 181 **US, Norway, Switzerland, Netherlands, Denmark, Singapore, Ireland** 182 183 - Premium positioning 184 - Emphasis on quality and expertise 185 - Higher expectations for service delivery 186 - More competitive landscape 187 188 ### Price-Sensitive Markets 189 190 **China, Mexico, Indonesia, India** 191 192 - Value-focused messaging 193 - ROI emphasis in proposals 194 - Flexible payment terms consideration 195 - Local market research recommended 196 197 ### GDPR Markets (13 countries) 198 199 **EU/EEA countries requiring compliance** 200 201 - Additional legal requirements 202 - Privacy-first messaging 203 - Company registration verification 204 - Data processing transparency 205 206 ## Price Override Process 207 208 When market research indicates a different optimal price point: 209 210 1. **Research**: Gather data on local competitors, willingness to pay 211 2. **Document**: Record reasoning and data sources 212 3. **Override**: Use CLI tool to update price 213 4. **Track**: Monitor conversion rates and adjust 214 215 ```bash 216 # Example: Australia market research shows $349 optimal 217 node src/utils/country-pricing.js override AU 349 "Competitor analysis: AU agencies charge $400-500 for similar reports. A/B test showed 25% higher conversion at $349 vs $247 with minimal volume loss" 218 ``` 219 220 ## Future Enhancements 221 222 ### Exchange Rate Integration 223 224 Currently prices are in USD-equivalent. Future enhancement: 225 226 ```javascript 227 // Convert to local currency using live exchange rates 228 import { getExchangeRate } from './utils/forex.js'; 229 230 const priceInfo = getPrice('AU'); 231 const exchangeRate = await getExchangeRate('USD', 'AUD'); 232 const localPrice = Math.round((priceInfo.priceUsd * exchangeRate) / 5) * 5; 233 // Result: $247 USD × 1.52 = ~$375 AUD 234 ``` 235 236 Recommended API: [ExchangeRate-API](https://www.exchangerate-api.com/) or [Open Exchange Rates](https://openexchangerates.org/) 237 238 ### A/B Testing 239 240 Test pricing variants in select markets: 241 242 - 10% of traffic sees +10% price 243 - Track conversion rate impact 244 - Optimize per-country based on elasticity 245 246 ### Seasonal Adjustments 247 248 Consider holiday/peak season pricing: 249 250 - Q4 typically higher willingness to pay 251 - Post-holiday budget constraints 252 - Country-specific shopping seasons 253 254 ## Data Sources 255 256 - **PPP GDP per capita**: World Bank World Development Indicators (2023) 257 - **Total GDP**: World Bank (2023, current USD) 258 - **Pricing research**: SaaS pricing benchmarks, competitor analysis 259 - **Psychological pricing**: Research from Gumroad, Paddle, Stripe pricing studies 260 261 ## References 262 263 - [World Bank Open Data](https://data.worldbank.org/) 264 - [OECD PPP Data](https://www.oecd.org/sdd/purchasingpowerparities-frequentlyaskedquestionsfaqs.htm) 265 - [Psychological Pricing Research](https://www.priceintelligently.com/blog/psychological-pricing-strategies) 266 - [SaaS Pricing Best Practices](https://www.profitwell.com/recur/all/saas-pricing-strategy) 267 268 ## Migration History 269 270 - **Migration 022** (2026-01-25): Created countries table with PPP-adjusted pricing 271 - Initial base price: $297 USD 272 - 25 countries across 6 pricing tiers 273 - Universal charm pricing (97/47 endings) 274 - **Migration 024** (2026-02-06): Cultural pricing optimization 275 - Updated 15 countries with culturally-appropriate price endings 276 - Priority levels: CRITICAL (KR, CN), HIGH (US, CA, DE, NO, SE, DK, IN), MEDIUM (JP, AU, NZ, CH, MX, AT) 277 - Added `price_overridden`, `override_reason`, `market_notes`, `override_date` columns 278 - **Weekly Repricing** (2026-02-06): Automated cultural rounding 279 - Added `applyCulturalRounding()` function to `src/cron/weekly-repricing.js` 280 - Respects manual overrides (`price_overridden=1`) 281 - Applies region-specific rounding rules automatically