# IGNY8 Pricing System - Final Simplified Plan **Date:** December 26, 2025 **Status:** APPROVED DIRECTION --- ## 1. Current System Assessment ✅ The existing token-based credit system is **correct and safe**: - ✅ `CreditCostConfig` with `tokens_per_credit` ratio per operation - ✅ `min_credits` per operation (floor protection) - ✅ Actual tokens calculated after AI call (accurate margin) - ✅ Model-aware pricing (different models = different costs) **Keep this system. Just simplify the limits and UI.** --- ## 2. Actual Cost Analysis (From Production Data) ### Per-Article Cost Breakdown (GPT-4.1 pricing) | Stage | Input Tokens | Output Tokens | Actual Cost | |-------|--------------|---------------|-------------| | Clustering (per article share*) | ~400 | ~400 | **$0.005** | | Idea Generation (per article share*) | ~900 | ~1000 | **$0.012** | | Content Writing | 2500 | 3500 | **$0.041** | | Image Prompt Extraction | 500 | 1100 | **$0.012** | | **Text Subtotal** | | | **$0.07** | | Images (3 avg @ $0.04) | | | **$0.12** | | **TOTAL PER ARTICLE** | | | **$0.19** | *With 6 images (max): **$0.31 per article** ### Target Markup: 10-15x | Scenario | Our Cost | 10x Price | 15x Price | |----------|----------|-----------|-----------| | Article (3 images) | $0.19 | $1.90 | $2.85 | | Article (6 images) | $0.31 | $3.10 | $4.65 | --- ## 3. Simplified Credit Pricing (10x Markup) ### 3.1 Credit Cost per Operation Using **1 credit = $0.01** and **10x markup**: | Operation | Actual Cost | Target Price | Credits | |-----------|-------------|--------------|---------| | Clustering | $0.005 | $0.05 | **5** | | Idea Generation | $0.012 | $0.12 | **10** | | Content Writing | $0.041 | $0.41 | **40** | | Image Prompts | $0.012 | $0.12 | **10** | | Image (per image) | $0.04 | $0.40 | **40** | | Linking | $0.003 | $0.03 | **3** | | Optimization | $0.005 | $0.05 | **5** | ### 3.2 Full Article Workflow Cost | Workflow | Calculation | Total Credits | |----------|-------------|---------------| | Text only | 5 + 10 + 40 + 10 = 65 | **65 credits** | | + 3 images | 65 + (3 × 40) = 185 | **185 credits** | | + 6 images | 65 + (6 × 40) = 305 | **305 credits** | | + linking + optimization | +3 +5 = +8 | **+8 credits** | **Typical article: ~200 credits = $2.00** (at 10x margin) --- ## 4. Simplified Plan Structure ### 4.1 Remove All Limits Except Keywords **DELETE:** - ❌ max_content_ideas - ❌ max_content_words - ❌ max_images_basic - ❌ max_images_premium - ❌ max_image_prompts - ❌ max_clusters (soft limit via credits) - ❌ All usage tracking fields **KEEP:** - ✅ Credits (token-based, monthly allocation) - ✅ max_keywords (storage limit, defines plan tier) - ✅ max_sites, max_users (account management) ### 4.2 New Plan Tiers | Plan | Price | Credits/Month | Keywords | Sites | Users | ~Articles | |------|-------|---------------|----------|-------|-------|-----------| | **Free** | $0 | 200 | 100 | 1 | 1 | ~1 | | **Starter** | $29 | 3,000 | 1,000 | 3 | 3 | ~15 | | **Growth** | $79 | 10,000 | 5,000 | 10 | 10 | ~50 | | **Scale** | $199 | 30,000 | Unlimited | ∞ | ∞ | ~150 | **Simple value proposition:** - Starter: ~15 full articles/month for $29 (~$2/article) - Growth: ~50 full articles/month for $79 (~$1.60/article) - Scale: ~150 full articles/month for $199 (~$1.33/article) ### 4.3 Credit Top-Up Pricing | Package | Credits | Price | Per Credit | |---------|---------|-------|------------| | Small | 500 | $7 | $0.014 | | Medium | 2,000 | $25 | $0.0125 | | Large | 5,000 | $55 | $0.011 | | Bulk | 15,000 | $150 | $0.01 | --- ## 5. Content Length Feature (New) ### 5.1 Add Word Count Selection **Content Settings (Site-level default):** ``` Target Article Length: [Short ~800] [Medium ~1500] [Long ~2500] [Custom: ___] ``` **Idea Generation (per-idea):** - Include target word count in idea brief - AI considers length when generating outline **Content Generation (per-content):** - Pass word count to prompt - Affects token usage (longer = more credits) ### 5.2 Credit Adjustment for Length | Length | Words | Token Estimate | Credits | |--------|-------|----------------|---------| | Short | ~800 | 2000 | 25 | | Medium | ~1500 | 3500 | 40 | | Long | ~2500 | 5500 | 60 | | Extra Long | ~4000 | 8000 | 90 | **User sees:** "Short article: ~150 credits, Long article: ~250 credits" --- ## 6. Implementation Plan ### Phase 1: Backend Updates (Day 1-2) **6.1 Update CreditCostConfig values:** ```python # New fixed credit costs (min_credits = display value) CREDIT_CONFIGS = { 'clustering': {'tokens_per_credit': 160, 'min_credits': 5}, 'idea_generation': {'tokens_per_credit': 190, 'min_credits': 10}, 'content_generation': {'tokens_per_credit': 150, 'min_credits': 25}, # Base for short 'image_prompt_extraction': {'tokens_per_credit': 160, 'min_credits': 10}, 'image_generation': {'tokens_per_credit': 1, 'min_credits': 40}, # Fixed per image 'linking': {'tokens_per_credit': 300, 'min_credits': 3}, 'optimization': {'tokens_per_credit': 200, 'min_credits': 5}, } ``` **6.2 Remove monthly limit fields:** ```python # Plan model - DELETE these fields - max_content_ideas - max_content_words - max_images_basic - max_images_premium - max_image_prompts # Account model - DELETE these fields - usage_content_ideas - usage_content_words - usage_images_basic - usage_images_premium - usage_image_prompts - usage_period_start - usage_period_end ``` **6.3 Remove LimitService monthly methods:** - Delete `check_monthly_limit()` - Delete `increment_usage()` - Delete monthly reset task - Keep `check_hard_limit()` for sites/users/keywords ### Phase 2: Content Length Feature (Day 2-3) **6.4 Add ContentSettings.target_word_count:** ```python class ContentSettings(models.Model): # ... existing fields ... target_word_count = models.IntegerField( default=1500, choices=[(800, 'Short'), (1500, 'Medium'), (2500, 'Long'), (4000, 'Extra Long')], help_text="Default target word count for articles" ) ``` **6.5 Update AI prompts:** - `generate_ideas.py` - Include word count in idea brief - `generate_content.py` - Pass word count target ### Phase 3: Frontend Updates (Day 3-4) **6.6 Update Content Settings page:** - Add word count selector **6.7 Update Usage page:** - Show credits only (remove monthly limit bars) - Show keywords used vs limit - Show simple cost reference **6.8 Fix/Replace CreditCostsPanel.tsx:** - Show fixed credit costs (not token-based confusion) - Simple table: "Content: 40 credits, Image: 40 credits" **6.9 Update Pricing page:** - New plan structure - "~X articles/month" messaging ### Phase 4: Migration & Cleanup (Day 4-5) **6.10 Database migration:** - Remove deprecated fields - Update existing plans to new structure **6.11 Clean up dead code:** - Remove LimitService monthly tracking - Remove usage increment calls in services --- ## 7. User Experience (After Simplification) ### What User Sees: **Dashboard:** ``` Credits: 2,847 / 3,000 remaining Keywords: 234 / 1,000 ``` **Before generating content:** ``` Estimated cost: ~185 credits - Content (medium): 40 credits - Image prompts: 10 credits - 3 images: 120 credits - Clustering share: ~5 credits - Ideas share: ~10 credits ``` **Content Settings:** ``` Article Length: [Short] [Medium ✓] [Long] [Extra Long] Images per Article: [3 ▼] ``` ### What Admin Sees: **Plans admin:** - Credits/month - Keywords limit - Sites/Users limits - Price **No more:** - 5 different monthly limit fields - Usage tracking complexity - Monthly reset management --- ## 8. Summary | Before | After | |--------|-------| | Credits + 5 monthly limits | Credits only | | 9 limit fields per plan | 3 limit fields (credits, keywords, sites) | | 5 usage tracking fields | 1 field (credits balance) | | Complex monthly resets | Simple credit allocation | | Unpredictable costs | Clear cost estimates | | No length control | Word count selection | **Result:** - ✅ Safe margins (token-based calculation preserved) - ✅ Simple for user (one number to track) - ✅ Simple for admin (fewer fields to manage) - ✅ Predictable (show estimated costs upfront) - ✅ Flexible (manual or automation workflows work same way) --- ## 9. Immediate Actions 1. **Update CreditCostConfig** in database with new values 2. **Add target_word_count** to ContentSettings model 3. **Update prompts** to include word count 4. **Remove monthly limit checks** from services 5. **Update frontend** Usage page and CreditCostsPanel 6. **Migration** to remove deprecated fields