diff --git a/PRE-LAUNCH-AUDIT.md b/to-do-s/PRE-LAUNCH-AUDIT.md similarity index 100% rename from PRE-LAUNCH-AUDIT.md rename to to-do-s/PRE-LAUNCH-AUDIT.md diff --git a/to-do-s/PRICING-SIMPLIFICATION-ANALYSIS.md b/to-do-s/PRICING-SIMPLIFICATION-ANALYSIS.md new file mode 100644 index 00000000..5c93ea80 --- /dev/null +++ b/to-do-s/PRICING-SIMPLIFICATION-ANALYSIS.md @@ -0,0 +1,308 @@ +# 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 diff --git a/PRODUCTION-READINESS-PLAN.md b/to-do-s/PRODUCTION-READINESS-PLAN.md similarity index 100% rename from PRODUCTION-READINESS-PLAN.md rename to to-do-s/PRODUCTION-READINESS-PLAN.md