Files
igny8/docs/plans/final-dev-guides-of-futute-implementation/DocD-Business-Services-Dev-Guide.md
2026-03-08 02:36:44 +00:00

34 KiB
Raw Blame History

Doc D — Business & Services: Development Guide for Claude Code

Version: 1.0 Date: March 2026 For: Claude Code (Opus 4.6) in VSCode on IGNY8 repo Purpose: Implementation guide for the business/revenue layer — Managed Services Add-On, Backlink Service Tiers, client onboarding workflows, white-label reporting, and billing integration for services Scope: Managed Add-On tiers (Lite $100, Pro $399/site/month), Backlink service packaging (self-service + managed), Alorig client portfolio servicing, billing models and margin tracking Rule: Core IGNY8 SaaS subscription plans (Free/Starter/Growth/Scale) are unchanged. Managed services are add-ons purchased per site, layered on top of existing plans. All service delivery uses existing IGNY8 platform features — no separate tool stack. Dependency: Doc A (SAG Architecture) provides blueprints and campaign generation. Doc B (Platform Modules) provides content pipeline, GSC, Socializer. Doc C (WordPress Ecosystem) provides plugin infrastructure for delivery.


Table of Contents

  1. Business Context — Current Revenue Model
  2. Managed Services Add-On — Product Definition
  3. Backlink Services — Product Definition
  4. Implementation: Backend Models & Billing
  5. Implementation: Frontend — Service Management UI
  6. Implementation: Service Delivery Workflow
  7. Implementation: Client Onboarding Automation
  8. Implementation: Reporting & White-Label
  9. Implementation: Alorig Client Portfolio Servicing
  10. API Endpoints
  11. Celery Tasks
  12. Feature Flags
  13. Margin Tracking & Business Intelligence

1. Business Context — Current Revenue Model

1.1 Existing Subscription Plans

Plan Price Sites Users Credits/Month
Free $0 1 1 100
Starter $49 3 3 1,000
Growth $149 10 10 5,000
Scale $349 Unlimited Unlimited 25,000

Payment: Stripe and PayPal integrated (pending production credentials). Manual payment methods available.

Billing models: modules/billing/ (API layer), business/billing/ (services). CreditService manages all credit operations. Plan model in auth/models.py.

1.2 Revenue Expansion Opportunities

The current model is pure SaaS subscription + credits. Two service layers add high-margin revenue without changing the core platform:

  1. Managed Services Add-On — Alorig team operates the IGNY8 platform on behalf of clients. Client pays subscription + managed fee. Alorig does the work.
  2. Backlink Services — Link building packages using FatGrid/PR distribution. Self-service (client buys intelligence, executes themselves) or managed (Alorig team executes).

Both use the existing platform. No separate tools needed. The "service" is human expertise + platform operation — not new software features.

1.3 Existing Infrastructure to Leverage

What Exists How Services Use It
SAG Site Builder (Doc A Phase 4) Managed: Alorig runs wizard for client. Self-service: client runs it themselves.
Content Pipeline (Doc B Modules 1-2) Managed: Alorig configures and runs automation. Client gets published content.
Backlink Campaign Generator (Doc A Phase 10) Both: Platform generates campaign plan. Managed: Alorig executes. Self-service: client executes.
GSC Integration (Doc B Module 4) Managed: Alorig monitors indexing, submits URLs. Reports to client.
Socializer (Doc B Module 6) Managed Pro: Alorig configures social posting for client.
Rich Schema (Doc B Module 5) Managed: Alorig runs retroactive enhancement on client sites.
WordPress Plugin (Doc C) Both: Plugin installed on client site. Managed: Alorig configures connected mode.

2. Managed Services Add-On — Product Definition

2.1 Tiers

Tier Price What Client Gets What Alorig Does
Managed Lite $100/site/month 10 articles/month, basic SEO setup, monthly report Run SAG wizard, configure automation for 10 articles, publish to WordPress, basic optimization, email monthly report
Managed Pro $399/site/month 30 articles/month, full SAG architecture, backlink campaign management, social posting, weekly report, dedicated account manager Full SAG build, configure all automation stages, manage backlink campaign execution, configure socializer, run retroactive schema enhancement, weekly report with KPIs

2.2 What's Included in Each Tier

Managed Lite ($100/site/month):

  • Initial SAG blueprint generation (one-time, first month)
  • 10 articles/month through the content pipeline
  • Basic WordPress taxonomy setup from blueprint
  • Content published to WordPress (auto or scheduled)
  • Monthly PDF report: articles published, keywords tracked, basic traffic metrics
  • Email support (48hr response)

Managed Pro ($399/site/month):

  • Everything in Lite, plus:
  • Full SAG architecture with detailed mode (not quick mode)
  • 30 articles/month (hub pages + supporting content per blueprint execution priority)
  • Taxonomy term content generation (term landing pages)
  • Backlink campaign management: plan generation, link sourcing via FatGrid, quality verification, anchor text management
  • Monthly backlink budget: separate from service fee, passed through at cost + 20% markup
  • Social media content generation + scheduling across configured platforms
  • Retroactive schema enhancement on existing site pages
  • GSC monitoring: auto-indexing, re-inspection, issue alerts
  • Weekly PDF report: content published, backlinks built, indexing status, keyword rankings, traffic, DR progress
  • Dedicated Slack channel or email thread (24hr response)

2.3 Client Requirements

The client must provide or enable:

  • WordPress admin access (or install IGNY8 plugin themselves)
  • Domain/hosting (Alorig does not host client sites)
  • Business data for SAG wizard (products/services, brands, locations, problems solved — per Doc A Section 9.3)
  • Approval on SAG blueprint before execution (Alorig presents, client approves)
  • Social media account access (for Managed Pro social posting)
  • Backlink budget approval (for Managed Pro, separate from service fee)

2.4 Margin Analysis

Component Managed Lite Managed Pro
Service fee $100/month $399/month
IGNY8 platform cost (credits) ~$15-25/month (10 articles, basic images) ~$50-80/month (30 articles, quality images, social, schema)
Human time (Alorig team) ~2-3 hrs/month ~8-12 hrs/month
Effective hourly rate $25-40/hr $25-35/hr
Gross margin ~75% ~70-80% (excluding backlink pass-through)

Backlink costs are pass-through with 20% markup — not included in the service fee.


3.1 Two Modes

Self-Service Mode: Client uses IGNY8's backlink campaign module (Doc A Phase 10) to generate campaign plans, browse FatGrid publishers, and track links. IGNY8 provides the intelligence. Client executes link building themselves.

No additional subscription needed — included with Scale plan or as a credit-based add-on.

Managed Mode: Client submits campaign to Alorig team. Alorig sources links, manages quality, tracks progress, generates white-label reports. Client pays per-link or monthly retainer.

3.2 Service Tiers (Managed Mode)

Tier Service IGNY8/Alorig Cost Client Price Margin
Basic Guest Post DR 30-50 via FatGrid $30-80 $150-300 3-5x
Standard Guest Post DR 50-70 via FatGrid $100-300 $400-800 2-3x
Premium Guest Post DR 70+ via FatGrid $500-2,000 $1,500-5,000 2-3x
PR Basic 300+ outlets via EIN Presswire $99-499 $500-1,500 3-5x
PR Premium Yahoo/Bloomberg/Fox via PRNews.io/Linking News $500-5,000 $2,000-15,000 3-4x

3.3 Monthly Packages (Managed Mode)

Package Links/Month DR Range Monthly Cost Typical Site Size
Starter 5-8 links DR 30-50 $800-1,500 Small sites, PK market
Growth 10-15 links DR 30-70 mix $2,000-4,000 Medium sites, UK/CA market
Authority 15-25 links DR 40-70+ mix + PR $4,000-8,000 Large sites, USA market
Enterprise Custom Custom Custom Multi-site, agency clients

3.4 Niche Surcharges

Niche Multiplier Reason
Crypto/Casino 2-3x Limited publishers, high competition
Finance/Insurance 1.5-2x YMYL, stricter publisher requirements
Health/Medical 1.5-2x YMYL, content quality requirements
Tech/SaaS 1.2-1.5x Moderate competition
General 1x (baseline) Standard pricing

4. Implementation: Backend Models & Billing

4.1 New Models

Add to existing billing module or create new services module:

# modules/billing/models.py or new modules/services/models.py

class ManagedServiceSubscription(AccountBaseModel):
    """Managed service add-on subscription per site."""
    id = models.UUIDField(primary_key=True, default=uuid4)
    site = models.ForeignKey('auth.Site', on_delete=models.CASCADE, related_name='managed_subscriptions')
    tier = models.CharField(max_length=20, choices=[
        ('lite', 'Managed Lite'),
        ('pro', 'Managed Pro'),
    ])
    status = models.CharField(max_length=20, choices=[
        ('pending', 'Pending Setup'),
        ('active', 'Active'),
        ('paused', 'Paused'),
        ('cancelled', 'Cancelled'),
    ], default='pending')
    monthly_price = models.DecimalField(max_digits=8, decimal_places=2)
    articles_per_month = models.IntegerField()
    
    # Assigned team member
    account_manager = models.ForeignKey('auth.User', null=True, blank=True, on_delete=models.SET_NULL,
        related_name='managed_clients')
    
    # Tracking
    current_month_articles_published = models.IntegerField(default=0)
    current_month_start = models.DateField(null=True, blank=True)
    
    # Service config
    service_config = models.JSONField(default=dict, help_text='Per-site service configuration: automation settings, social platforms, backlink budget, report schedule')
    
    started_at = models.DateTimeField(null=True, blank=True)
    cancelled_at = models.DateTimeField(null=True, blank=True)
    next_billing_date = models.DateField(null=True, blank=True)

class BacklinkServiceOrder(AccountBaseModel):
    """Individual backlink service order or monthly retainer."""
    id = models.UUIDField(primary_key=True, default=uuid4)
    site = models.ForeignKey('auth.Site', on_delete=models.CASCADE)
    campaign = models.ForeignKey('sag.SAGCampaign', null=True, blank=True, on_delete=models.SET_NULL)
    
    order_type = models.CharField(max_length=20, choices=[
        ('one_time', 'One-Time Order'),
        ('monthly', 'Monthly Retainer'),
    ])
    package = models.CharField(max_length=30, choices=[
        ('starter', 'Starter (5-8 links)'),
        ('growth', 'Growth (10-15 links)'),
        ('authority', 'Authority (15-25 links)'),
        ('enterprise', 'Enterprise (custom)'),
        ('custom', 'Custom Order'),
    ], blank=True)
    
    # Financial
    client_price = models.DecimalField(max_digits=10, decimal_places=2)
    actual_cost = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    margin = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    niche_surcharge = models.FloatField(default=1.0, help_text='Multiplier: 1.0 = baseline')
    
    # Delivery
    links_ordered = models.IntegerField(default=0)
    links_delivered = models.IntegerField(default=0)
    links_live = models.IntegerField(default=0)
    
    status = models.CharField(max_length=20, choices=[
        ('draft', 'Draft'),
        ('approved', 'Approved'),
        ('in_progress', 'In Progress'),
        ('delivered', 'Delivered'),
        ('completed', 'Completed'),
    ], default='draft')
    
    # Tracking
    ordered_at = models.DateTimeField(null=True, blank=True)
    delivered_at = models.DateTimeField(null=True, blank=True)
    notes = models.TextField(blank=True)

class ServiceReport(AccountBaseModel):
    """Generated report for a managed service client."""
    id = models.UUIDField(primary_key=True, default=uuid4)
    site = models.ForeignKey('auth.Site', on_delete=models.CASCADE)
    managed_subscription = models.ForeignKey(ManagedServiceSubscription, null=True, blank=True, on_delete=models.SET_NULL)
    
    report_type = models.CharField(max_length=20, choices=[
        ('weekly', 'Weekly Report'),
        ('monthly', 'Monthly Report'),
        ('quarterly', 'Quarterly Review'),
    ])
    period_start = models.DateField()
    period_end = models.DateField()
    
    # Report data
    report_data = models.JSONField(default=dict, help_text='All metrics for this period')
    report_pdf_url = models.URLField(blank=True, help_text='Generated PDF stored in S3')
    
    # White-label
    is_white_label = models.BooleanField(default=False)
    brand_name = models.CharField(max_length=200, blank=True, help_text='Client-facing brand name (if white-label)')
    brand_logo_url = models.URLField(blank=True)
    
    generated_at = models.DateTimeField(auto_now_add=True)
    sent_at = models.DateTimeField(null=True, blank=True)

4.2 Billing Integration

Managed services integrate with the existing billing system:

# business/billing/managed_billing_service.py    # NEW

class ManagedBillingService:
    def create_managed_subscription(self, site, tier, payment_method):
        """Create managed service subscription + first invoice."""
        # 1. Create ManagedServiceSubscription record
        # 2. Create Stripe/PayPal subscription or manual invoice
        # 3. Deduct from account credit balance OR charge directly
        # 4. Set next_billing_date
        pass
    
    def process_monthly_billing(self):
        """Celery task: process all active managed subscriptions monthly."""
        # For each active subscription:
        # 1. Generate invoice
        # 2. Charge payment method
        # 3. Reset current_month_articles_published
        # 4. Update current_month_start
        pass
    
    def process_backlink_order(self, order):
        """Process payment for a backlink service order."""
        # 1. Calculate total: client_price × niche_surcharge
        # 2. Charge payment method
        # 3. Update order status to 'approved'
        pass
    
    def calculate_margin(self, order):
        """Calculate and store margin on a completed backlink order."""
        order.margin = order.client_price - order.actual_cost
        order.save()

4.3 Service Configuration Storage

The service_config JSON field on ManagedServiceSubscription stores per-client settings:

{
  "automation": {
    "schedule": "weekly",
    "articles_per_run": 3,
    "content_types": ["post", "cluster_hub", "taxonomy_landing"],
    "auto_publish": false,
    "review_required": true
  },
  "backlinks": {
    "monthly_budget": 2000,
    "target_country": "US",
    "package": "growth",
    "auto_approve_under": 200
  },
  "social": {
    "platforms": ["linkedin", "twitter"],
    "auto_post_on_publish": true,
    "posting_schedule": "best_time"
  },
  "reporting": {
    "frequency": "weekly",
    "format": "pdf",
    "white_label": false,
    "recipients": ["client@example.com"],
    "include_backlinks": true,
    "include_rankings": true,
    "include_traffic": true
  }
}

5. Implementation: Frontend — Service Management UI

5.1 Admin-Only Service Dashboard

This is an internal Alorig team interface, not client-facing.

frontend/src/pages/
└── Services/                          # NEW page (admin only)
    ├── ServicesDashboard.tsx          # Overview: all managed clients, revenue summary
    │   ├── ClientList.tsx             # All managed subscriptions with status
    │   ├── RevenueSummary.tsx         # MRR, active clients, margin totals
    │   └── UpcomingActions.tsx        # Tasks due: reports, renewals, content due
    ├── ClientDetail.tsx               # Single client management view
    │   ├── ClientConfig.tsx           # Service config editor (automation, social, backlinks)
    │   ├── ContentTracker.tsx         # Articles published this month vs target
    │   ├── BacklinkTracker.tsx        # Links ordered vs delivered vs live
    │   ├── ReportHistory.tsx          # Generated reports with resend option
    │   └── BillingHistory.tsx         # Invoices, payments, margin
    ├── BacklinkOrders.tsx             # All backlink orders across clients
    │   ├── OrderList.tsx              # Filterable by client, status, package
    │   └── OrderDetail.tsx            # Individual order with link-by-link tracking
    └── ReportGenerator.tsx            # Generate reports for any client/period

Sidebar addition (admin only):

ADMIN
  ├── Sector Templates
  └── Managed Services (NEW — admin only)

5.2 Client-Facing View (Optional)

Managed clients who also have IGNY8 app access see a simplified view:

frontend/src/pages/
└── ManagedService/                    # NEW page (for managed clients)
    ├── ServiceOverview.tsx            # What's included, current month progress
    ├── ReportViewer.tsx               # View past reports
    └── ApprovalQueue.tsx              # Approve blueprint, content (if review_required)

This page appears in the client's sidebar only if they have an active ManagedServiceSubscription:

ACCOUNT
  ├── Account Settings
  ├── Plans & Billing
  ├── Managed Service (NEW — if managed subscription active)
  ├── Usage
  └── AI Models

6. Implementation: Service Delivery Workflow

6.1 Managed Lite — Monthly Workflow

Month Start
  │
  ├── Check: blueprint exists? If not → run SAG wizard for client (first month)
  │
  ├── Run automation pipeline (10 articles):
  │   1. Blueprint check → load unfulfilled content needs
  │   2. Generate ideas from blueprint (execution priority order)
  │   3. Create tasks (content_type based on blueprint)
  │   4. Generate content (type-specific prompts)
  │   5. Generate images
  │   6. → Review queue
  │
  ├── Alorig team reviews content (manual quality check)
  │   - Approve or edit in Writer → Review tab
  │   - Publish approved content to WordPress
  │
  ├── Update ManagedServiceSubscription.current_month_articles_published
  │
  └── Month End:
      ├── Generate monthly report (ServiceReport)
      ├── Send to client via email
      └── Process next month billing

6.2 Managed Pro — Monthly Workflow

Month Start
  │
  ├── Everything from Lite, PLUS:
  │
  ├── Run automation for 30 articles (hub pages prioritized in early months)
  │
  ├── Backlink campaign management:
  │   1. Load this month's plan from SAGCampaign
  │   2. Browse FatGrid for publishers matching plan criteria
  │   3. Place orders on FatGrid/PR platforms
  │   4. Track delivery: ordered → pending → live
  │   5. Quality check each delivered link
  │   6. Log in SAGBacklink records
  │   7. Run dead link check on previous links
  │
  ├── Social media:
  │   1. Generate social posts for published content
  │   2. Schedule across configured platforms
  │   3. Monitor engagement metrics
  │
  ├── Schema enhancement:
  │   1. Run retroactive schema scan on any new/updated pages
  │   2. Generate and push schemas to WordPress
  │
  ├── GSC monitoring:
  │   1. Check indexing status of all published content
  │   2. Re-request indexing for pending items
  │   3. Flag issues to client if needed
  │
  └── Week End (weekly report):
      ├── Generate weekly report (ServiceReport)
      ├── Include: articles published, backlinks built, indexing status, ranking changes
      └── Send to client
Client approves monthly backlink budget
  │
  ├── Alorig loads this month's campaign plan from IGNY8
  │   - Target pages, DR ranges, anchor text mix, link count
  │
  ├── Browse FatGrid publishers:
  │   - Filter by: country, niche, DR range, budget
  │   - Compare prices across marketplaces
  │   - Select best-value publishers
  │
  ├── Place orders:
  │   - Guest post orders on FatGrid
  │   - PR distribution on EIN Presswire / PRNews.io
  │   - Create BacklinkServiceOrder record
  │
  ├── Track delivery:
  │   - Monitor publisher for content creation
  │   - Verify link is live (HTTP check)
  │   - Quality check: DR, traffic, niche relevance, outbound links
  │   - Log each link as SAGBacklink
  │
  ├── Quality scoring:
  │   - Auto-score where possible (Ahrefs/FatGrid data)
  │   - Manual checks: content quality, relevance, link placement
  │   - Flag issues if quality below threshold
  │
  └── Update campaign:
      - BacklinkServiceOrder.links_delivered++
      - SAGCampaign KPI update
      - Calculate margin: client_price - actual_cost

7. Implementation: Client Onboarding Automation

7.1 Managed Client Onboarding Flow

When a managed service subscription is created:

# business/services/onboarding_service.py    # NEW

class ManagedOnboardingService:
    def onboard_client(self, subscription):
        """Automated onboarding for new managed client."""
        site = subscription.site
        
        # Step 1: Ensure IGNY8 plugin is installed and connected
        # Check site.wp_api_key exists → if not, send installation guide email
        
        # Step 2: Run SAG Site Builder if no blueprint exists
        if not site.sag_blueprint_id:
            # Queue Celery task to generate blueprint
            # Notification to account manager: "Blueprint ready for review"
            pass
        
        # Step 3: Configure automation based on service_config
        # Set AutomationConfig schedule, stages, content types
        
        # Step 4: Send welcome email to client
        # Include: what to expect, how to approve content, contact info
        
        # Step 5: Create first month tasks in internal queue
        # Notification to account manager: "New client onboarded, first content due"
        
        # Step 6: Update subscription status: pending → active

7.2 Client Intake Form

For collecting business data (feeds into SAG wizard):

frontend/src/pages/Services/
└── components/
    └── ClientIntakeForm.tsx    # NEW — admin fills this during client onboarding

Collects per Doc A Section 9.3:

  • Site URL, industry, sectors
  • Products/services list
  • Problems solved
  • Brands (if e-commerce)
  • Locations (if service-based)
  • Competitors
  • Target countries (for backlink campaigns)
  • Social media accounts
  • Current SEO status (any existing plugins, backlink profile)

This data feeds directly into the SAG wizard's business data inputs.


8. Implementation: Reporting & White-Label

8.1 Report Generation Service

# business/services/report_service.py    # NEW

class ReportService:
    def generate_report(self, site, period_start, period_end, report_type, white_label=False):
        """Generate a service report for a managed client."""
        report_data = {
            'content': self._get_content_metrics(site, period_start, period_end),
            'backlinks': self._get_backlink_metrics(site, period_start, period_end),
            'indexing': self._get_indexing_metrics(site, period_start, period_end),
            'rankings': self._get_ranking_metrics(site, period_start, period_end),
            'traffic': self._get_traffic_metrics(site, period_start, period_end),
            'social': self._get_social_metrics(site, period_start, period_end),
            'health': self._get_sag_health(site),
        }
        
        # Generate PDF
        pdf_url = self._render_pdf(report_data, white_label, site)
        
        # Create ServiceReport record
        report = ServiceReport.objects.create(
            site=site, report_type=report_type,
            period_start=period_start, period_end=period_end,
            report_data=report_data, report_pdf_url=pdf_url,
            is_white_label=white_label,
        )
        return report
    
    def _get_content_metrics(self, site, start, end):
        """Articles published, content types breakdown, word count total."""
        pass
    
    def _get_backlink_metrics(self, site, start, end):
        """Links built, DR distribution, cost, quality scores."""
        pass
    
    def _get_indexing_metrics(self, site, start, end):
        """Pages indexed, pending, errors (from GSC module)."""
        pass
    
    def _get_ranking_metrics(self, site, start, end):
        """Keywords in top 10/20/50, position changes (from GSC module)."""
        pass
    
    def _get_traffic_metrics(self, site, start, end):
        """Organic traffic, impressions, CTR (from GSC module)."""
        pass
    
    def _get_social_metrics(self, site, start, end):
        """Posts published, engagement, clicks (from Socializer module)."""
        pass
    
    def _get_sag_health(self, site):
        """SAG health score, cluster completion (from SAG module)."""
        pass

8.2 PDF Report Template

Reports generated as PDF using a template system. Stored in S3/media storage.

Report sections (configurable per client):

  1. Executive Summary — key wins this period
  2. Content Performance — articles published, type breakdown
  3. Indexing Status — indexed/pending/error counts with trend
  4. Keyword Rankings — top movers, new entries, lost positions
  5. Organic Traffic — clicks, impressions, CTR with month-over-month
  6. Backlink Campaign (if active) — links built, DR distribution, budget spent, quality
  7. Social Media (if active) — posts, engagement, top performers
  8. SAG Health — overall score, cluster completion, recommendations
  9. Next Month Plan — what's coming, what client needs to approve

8.3 White-Label Support

For agency clients reselling IGNY8 services:

  • ServiceReport.brand_name replaces "IGNY8" / "Alorig" throughout PDF
  • ServiceReport.brand_logo_url replaces logo in PDF header
  • Report footer shows agency contact info, not Alorig
  • White-label reports generated via Linking News API for backlink reporting

9. Implementation: Alorig Client Portfolio Servicing

9.1 Current Alorig Clients (from Rich Schema doc)

Client Type Site Priority Services
Banner Printing (UK) Service/eCommerce ~50 pages FAQ Schema, Breadcrumbs, Local Business Schema, Review markup
Aterna Advisors (CA) Finance content ~135 pages Article + Author Schema (YMYL), FAQ, TL;DR, Definition blocks
Seva Mattress WooCommerce Product catalog Product Schema, AggregateRating, FAQ, Pros & Cons
VAINO WooCommerce + brand Product + brand pages Product Schema, Breadcrumbs, FAQ, Review markup
African Fair Trade Society Nonprofit content Content + service pages Article Schema, FAQ, Organization Schema, Breadcrumbs
Halal VPN Blog + product Blog + product pages Article, HowTo, FAQ, Comparison Tables, Pros & Cons

9.2 Per-Client Service Plan

Each Alorig client can be onboarded as a Managed Service subscriber:

For each client:
  1. Create ManagedServiceSubscription (Lite or Pro based on scope)
  2. Run client intake → collect business data
  3. Run SAG Site Builder → generate blueprint
  4. Install/update IGNY8 plugin on client site
  5. Run retroactive schema enhancement (Rich Schema module)
  6. Configure content pipeline based on gaps
  7. Set up reporting schedule
  8. (Pro clients) Generate backlink campaign, begin execution

9.3 Internal Service Tracking

The admin Services Dashboard provides at-a-glance view of all Alorig clients:

  • Client name, site, tier, status
  • This month: articles target vs published, backlinks target vs delivered
  • Overdue items: reports not sent, content not published, links behind schedule
  • Revenue: MRR from managed services, backlink revenue, total margin

10. API Endpoints

Managed Services

GET    /api/v1/services/subscriptions/                    # List managed subscriptions (admin)
POST   /api/v1/services/subscriptions/                    # Create subscription
GET    /api/v1/services/subscriptions/{id}/               # Subscription detail
PATCH  /api/v1/services/subscriptions/{id}/               # Update config, status
POST   /api/v1/services/subscriptions/{id}/onboard/       # Trigger onboarding workflow
POST   /api/v1/services/subscriptions/{id}/pause/         # Pause subscription
POST   /api/v1/services/subscriptions/{id}/cancel/        # Cancel subscription
GET    /api/v1/services/backlink-orders/                  # List orders (admin)
POST   /api/v1/services/backlink-orders/                  # Create order
GET    /api/v1/services/backlink-orders/{id}/             # Order detail
PATCH  /api/v1/services/backlink-orders/{id}/             # Update status, delivery
GET    /api/v1/services/backlink-orders/{id}/links/       # Links in this order

Reports

GET    /api/v1/services/reports/                          # List reports (admin + client)
POST   /api/v1/services/reports/generate/                 # Generate report
GET    /api/v1/services/reports/{id}/                     # Report detail + PDF URL
POST   /api/v1/services/reports/{id}/send/                # Email report to client

Dashboard (Admin)

GET    /api/v1/services/dashboard/                        # Revenue summary, client overview
GET    /api/v1/services/dashboard/overdue/                # Overdue tasks across clients
GET    /api/v1/services/dashboard/margin/                 # Margin tracking summary

11. Celery Tasks

Task Schedule Purpose
process_managed_billing Monthly (1st of month) Invoice all active managed subscriptions
generate_weekly_reports Weekly (Monday 6am) Generate reports for all Pro clients
generate_monthly_reports Monthly (1st of month) Generate reports for all Lite + Pro clients
send_pending_reports Daily Email any generated but unsent reports
check_overdue_deliverables Daily Flag any managed clients behind on content/links
reset_monthly_counters Monthly (1st of month) Reset current_month_articles_published
check_backlink_delivery Daily Check FatGrid/publisher status on open orders

12. Feature Flags

Flag Controls Default
managed_services_enabled Services admin page, subscription management, onboarding False
backlink_orders_enabled Backlink order management (independent of campaign module) False
white_label_reports White-label branding on reports False

13. Margin Tracking & Business Intelligence

13.1 What to Track

Metric Source Aggregation
Managed Services MRR Sum of active ManagedServiceSubscription.monthly_price Monthly
Backlink Revenue Sum of BacklinkServiceOrder.client_price (completed orders) Monthly
Backlink Cost Sum of BacklinkServiceOrder.actual_cost Monthly
Backlink Margin Revenue - Cost per order, aggregated Monthly
Blended Margin % (Total Revenue - Total Cost) / Total Revenue Monthly
Cost Per Article Platform credits used / articles published per client Monthly
Team Hours (manual tracking) Time spent per client Monthly
Effective Hourly Rate (Revenue - Platform Costs) / Hours Monthly
Client Retention Active subscriptions / Total ever created Lifetime
Average Revenue Per Client Total revenue / Active clients Monthly

13.2 Admin Dashboard Metrics

The Services Dashboard (admin-only) shows:

  • Total MRR from managed services
  • Total backlink revenue (monthly)
  • Blended margin percentage
  • Client count by tier (Lite vs Pro)
  • Top 5 clients by revenue
  • Clients behind on deliverables
  • Month-over-month growth

13.3 Future: Automated Margin Calculation

When FatGrid API integration is complete (Doc A Phase 10), backlink order costs can be auto-populated from actual FatGrid transaction data, making margin tracking fully automated instead of manually entered.


Reference Documents

Document Purpose
IGNY8-Current-State.md Billing system, credit costs, subscription plans
SAG-Doc4-External-Backlink-Campaign-PLAN.md Campaign generation, FatGrid tiers, service pricing
IGNY8-Rich-Schema-SERP-Enhancement-Module.docx Client portfolio with retroactive enhancement opportunities
Doc A — SAG Architecture Dev Guide Campaign module (Phase 10), SAG Site Builder (Phase 4)
Doc B — Platform Modules Dev Guide GSC, Socializer, Rich Schema — features delivered to managed clients
Doc C — WordPress Ecosystem Dev Guide Plugin installation and configuration for managed sites

End of Doc D — Business & Services Development Guide