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

309 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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