Files
igny8/to-do-s/PRICING-SIMPLIFICATION-ANALYSIS.md
IGNY8 VPS (Salman) 33b4454f96 todos docs
2025-12-26 00:12:25 +00:00

8.4 KiB
Raw Blame History

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:

# 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:

# 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:

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