Files
igny8/v2/V2-Execution-Docs/04A-managed-services.md
IGNY8 VPS (Salman) 0570052fec 1
2026-03-23 17:20:51 +00:00

22 KiB
Raw Blame History

IGNY8 Phase 4: Managed Services (04A)

Document Version: 1.0 Date: 2026-03-23 Phase: IGNY8 Phase 4 — Business Layer Status: Build Ready Source of Truth: Codebase at /data/app/igny8/ Audience: Claude Code, Backend Developers, Business Operations, Architects


1. CURRENT STATE

Billing Infrastructure Exists

The billing app provides:

  • Plan — subscription tier definition (Free/$49/$149/$349)
  • Subscription — active subscription per account, links to Plan
  • CreditTransaction — credit debit/credit events
  • CreditUsageLog — per-operation usage tracking
  • CreditCostConfig — configurable cost per operation type (PK = operation_type)
  • AccountPaymentMethod — saved Stripe/PayPal payment methods
  • Payment + Invoice — payment and invoice records
  • CreditService in business/billing/ — pattern: check_credits() → execute → deduct_credits()log_usage()
  • Stripe + PayPal live and integrated

Current Plans

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

What Does NOT Exist

  • No managed services layer — Alorig manages client sites manually
  • No backlink order tracking — orders placed manually on FatGrid/PRNews
  • No Ahrefs integration — domain/backlink data checked manually
  • No backlink indexing service — links indexed organically or manually submitted
  • No automated onboarding — each client setup is manual
  • 6 existing Alorig clients ready for managed service conversion

Phase 2 Models Available

  • SAGCampaign, SAGBacklink, CampaignKPISnapshot (02E) — backlink campaign engine
  • GSCConnection, URLInspectionRecord, GSCMetricsCache (02C) — GSC data
  • SAGLink, SAGLinkAudit, LinkMap (02D) — internal linking
  • SocialPost, SocialAccount, SocialEngagement (02H) — socializer
  • SchemaTemplate, SERPEnhancement, SchemaValidationResult (02G) — schema
  • AutomationConfig, AutomationRun (automation app) — pipeline orchestration
  • All IDs are integers (BigAutoField)

2. WHAT TO BUILD

Overview

A managed services layer that lets Alorig sell done-for-you SEO services at two tiers, with integrated backlink ordering, Ahrefs API monitoring, and backlink indexing. Everything builds on existing IGNY8 models and infrastructure.

Managed Service Tiers

Managed Lite ($100/site/month):

  • 10 articles/month (published to WordPress via pipeline)
  • Basic SAG setup + automation configuration (first month)
  • Monthly PDF report
  • Email support (48-hour response)
  • Automation config: weekly schedule, 3 articles/run, post + cluster_hub types
  • Review required before publish (Alorig team reviews in Writer)

Managed Pro ($399/site/month):

  • 30 articles/month (hubs prioritized early, supporting content later)
  • Full SAG architecture with detailed mode
  • Backlink campaign management (budget separate — pass-through + 20% markup)
  • Social media content generation + scheduling (configured platforms)
  • Retroactive schema enhancement on existing pages
  • GSC monitoring: auto-indexing, re-inspection, issue alerts
  • Weekly PDF report with full KPIs
  • Dedicated account manager (24-hour response)
  • Taxonomy term content generation

By Quality Level:

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

Monthly Retainer Packages:

Package Links/Mo DR Range Monthly Cost Market
Starter 5-8 DR 30-50 $800-1,500 PK
Growth 10-15 DR 30-70 mix $2,000-4,000 UK/CA
Authority 15-25 DR 40-70+ mix + PR $4,000-8,000 USA
Enterprise Custom Custom Custom Multi-site/agency

Niche Surcharges: Crypto/Casino 2-3×, Finance/Insurance 1.5-2×, Health/Medical 1.5-2×, Tech/SaaS 1.2-1.5×, General 1× baseline.

Ahrefs API Integration

IGNY8 integrates with Ahrefs API v3 for automated domain metrics and backlink monitoring.

API Endpoints Used:

Ahrefs Endpoint IGNY8 Use Case
GET /v3/site-explorer/domain-rating DR for any domain (backlink quality scoring)
GET /v3/site-explorer/backlinks Verify placed backlinks are live
GET /v3/site-explorer/referring-domains Referring domain list + metrics
GET /v3/site-explorer/organic-keywords Keyword rankings (supplement GSC data)
GET /v3/site-explorer/pages-by-traffic Top pages by organic traffic
GET /v3/site-explorer/metrics Domain summary (DR, referring domains, traffic, keywords)
GET /v3/site-explorer/metrics-history Historical DR + traffic trend
GET /v3/site-explorer/refdomains-history Referring domains over time

Use Cases:

  1. Backlink verification — after SAGBacklink placed, verify via Ahrefs crawl data
  2. Quality scoring — auto-populate source_dr, source_traffic on SAGBacklink
  3. Campaign KPIs — pull DR, referring domains, keywords for CampaignKPISnapshot
  4. Competitor analysis — compare client's metrics against competitors
  5. Dead link detection — cross-reference lost backlinks with SAGBacklink records
  6. Reporting — feed ServiceReport data (04B)
  7. Link prospecting — find competitor backlinks for outreach

Pricing: Credits-based (varies by Ahrefs plan). API key stored per account in AhrefsConnection.

After a backlink is placed and verified live, submit it for Google indexing to accelerate authority transfer.

Indexing Services (integrate best available):

  • IndexNow API (free) — Bing/Yandex submission
  • SpeedyIndex — fast indexing, API available, credit-based
  • Omega Indexer — bulk indexing, ~$0.02-0.05/URL

Integration Flow:

SAGBacklink.status → 'live'
  → Verify URL accessible (HTTP 200)
  → Queue BacklinkIndexingRequest (status: queued)
  → Submit via indexing service API (status: submitted)
  → Wait 7 days, check if indexed
  → If indexed → is_indexed = True, status → indexed
  → If not after 14 days → re-submit once (status: resubmitted)
  → If still not after 28 days → status → failed, flag for review

Client Pricing: $0.10-0.20 per URL (5-10× markup); included in Managed Pro tier.

Client Onboarding Automation

When ManagedServiceSubscription is created:

  1. Verify site has IGNY8 plugin installed + connected (SiteIntegration exists)
  2. If no blueprint → queue Celery task to auto-generate SAG blueprint
  3. Configure AutomationConfig based on service_config (schedule, stages, content types)
  4. Send welcome email (expectations, content approval process, contact info)
  5. Create first month's content tasks in pipeline queue
  6. Notify account manager: "New client onboarded, first content due"
  7. Update subscription status: pending → active

Monthly Delivery Workflow (Lite):

Month Start → Verify blueprint → Run pipeline (10 articles) →
Alorig reviews → Approve/edit → Publish to WP →
Update articles_published counter → Month End → Generate report → Send → Bill

Monthly Delivery Workflow (Pro — extends Lite):

+ Run pipeline for 30 articles (hubs prioritized)
+ Taxonomy term content generation
+ Backlink: Load SAGCampaign plan → Browse FatGrid → Place orders →
  Track delivery → Quality check → Log SAGBacklink → Submit for indexing
+ Social: Generate adapted posts → Schedule via best-time algorithm
+ Schema: Retroactive scan → Push to WP
+ GSC: Check indexing → Re-request pending → Flag issues
+ Weekly: Generate report → Send

Margin Analysis

Component Managed Lite Managed Pro
Service Fee $100/month $399/month
Platform Cost (credits) ~$15-25 ~$50-80
Human Time ~2-3 hrs/month ~8-12 hrs/month
Ahrefs API cost ~$2-5 ~$10-20
Indexing service cost $0 ~$5-15
Gross Margin ~70-75% ~65-75%

Backlink purchase costs are pass-through with 20% markup — separate from service fee.


3. DATA MODELS & APIS

New App: services

App Label: services Location: igny8_core/services/ Table Prefix: igny8_

New Models

ManagedServiceSubscription (extends AccountBaseModel)

Field Type Description
site ForeignKey(Site) Which site is being managed
tier CharField(max_length=20) lite / pro
status CharField(max_length=20) pending / active / paused / cancelled
monthly_price DecimalField(8,2) Monthly fee
articles_per_month IntegerField Target articles per month
account_manager ForeignKey(User, null=True) Assigned team member
current_month_articles_published IntegerField(default=0) Counter
current_month_start DateField(null=True) Current billing period start
service_config JSONField Per-site settings (automation, social, backlinks, reporting)
started_at DateTimeField(null=True) Service start timestamp
cancelled_at DateTimeField(null=True) Cancellation timestamp
next_billing_date DateField(null=True) Next billing date

Table: igny8_managed_service_subscriptions

BacklinkServiceOrder (extends AccountBaseModel)

Field Type Description
site ForeignKey(Site) Target site
campaign ForeignKey(SAGCampaign, null=True) Linked campaign from 02E
managed_subscription ForeignKey(ManagedServiceSubscription, null=True) If part of managed service
order_type CharField(max_length=20) one_time / monthly
package CharField(max_length=50) starter / growth / authority / enterprise / custom
client_price DecimalField(10,2) Price charged to client
actual_cost DecimalField(10,2, default=0) Actual cost to Alorig
margin DecimalField(10,2, default=0) Calculated margin
niche_surcharge FloatField(default=1.0) Niche multiplier
links_ordered IntegerField(default=0) Total links ordered
links_delivered IntegerField(default=0) Links delivered by vendor
links_live IntegerField(default=0) Confirmed live
links_indexed IntegerField(default=0) Confirmed indexed
status CharField(max_length=20) draft / approved / in_progress / delivered / completed
ordered_at DateTimeField(null=True) Order placement date
delivered_at DateTimeField(null=True) Full delivery date
notes TextField(blank=True) Internal notes

Table: igny8_backlink_service_orders

AhrefsConnection (extends AccountBaseModel)

Field Type Description
api_key TextField Encrypted Ahrefs API key
plan_type CharField(null=True) lite / standard / advanced / enterprise
credits_remaining IntegerField(null=True) Remaining API credits
last_synced DateTimeField(null=True) Last sync timestamp
status CharField(max_length=20) active / expired / error

Table: igny8_ahrefs_connections

AhrefsDomainSnapshot (extends SiteSectorBaseModel)

Field Type Description
domain CharField(max_length=255) Domain name
domain_rating FloatField DR score
referring_domains IntegerField Count
organic_keywords IntegerField Count
organic_traffic IntegerField Estimated monthly
backlinks_total IntegerField Total backlinks
snapshot_date DateField Date of snapshot
raw_data JSONField Full API response

Table: igny8_ahrefs_domain_snapshots

BacklinkIndexingRequest (extends SiteSectorBaseModel)

Field Type Description
backlink ForeignKey(SAGBacklink) Linked backlink from 02E
url URLField Source URL to be indexed
indexing_service CharField(max_length=30) speedyindex / omega / colossus / indexnow / manual
service_request_id CharField(null=True) External service reference
submitted_at DateTimeField(null=True) Submission timestamp
first_check_at DateTimeField(null=True) First index check
last_check_at DateTimeField(null=True) Last index check
check_count IntegerField(default=0) Times checked
is_indexed BooleanField(default=False) Is indexed
indexed_at DateTimeField(null=True) When indexed
status CharField(max_length=20) queued / submitted / checking / indexed / failed / resubmitted
cost DecimalField(6,4, default=0) Cost per submission

Table: igny8_backlink_indexing_requests

Modified Models

SAGBacklink (from 02E linker app) — add fields:

Field Type Description
is_indexed BooleanField(default=False) Indexed in Google
indexed_at DateTimeField(null=True) When indexed
ahrefs_verified BooleanField(default=False) Verified via Ahrefs
ahrefs_last_seen DateTimeField(null=True) Last seen in Ahrefs
indexing_submitted BooleanField(default=False) Submitted for indexing

API Endpoints

All under /api/v1/:

Managed Service Subscriptions:

Method Endpoint Purpose
GET /services/subscriptions/ List all (admin only)
POST /services/subscriptions/ Create subscription
GET /services/subscriptions/{id}/ Detail
PATCH /services/subscriptions/{id}/ Update config/status
POST /services/subscriptions/{id}/onboard/ Trigger onboarding flow
POST /services/subscriptions/{id}/pause/ Pause service
POST /services/subscriptions/{id}/resume/ Resume service
POST /services/subscriptions/{id}/cancel/ Cancel service

Backlink Service Orders:

Method Endpoint Purpose
GET /services/backlink-orders/ List all (admin)
POST /services/backlink-orders/ Create order
GET /services/backlink-orders/{id}/ Detail
PATCH /services/backlink-orders/{id}/ Update status
GET /services/backlink-orders/{id}/links/ Links in order
POST /services/backlink-orders/{id}/approve/ Client approval

Ahrefs Integration:

Method Endpoint Purpose
POST /integration/ahrefs/connect/ Save API key
DELETE /integration/ahrefs/disconnect/ Remove connection
GET /integration/ahrefs/status/ Connection status + credits
GET /integration/ahrefs/domain/{domain}/ Domain metrics
GET /integration/ahrefs/domain/{domain}/history/ DR + traffic history
GET /integration/ahrefs/backlinks/{domain}/ Backlinks list
GET /integration/ahrefs/referring-domains/{domain}/ Referring domains
GET /integration/ahrefs/organic-keywords/{domain}/ Organic keywords
POST /integration/ahrefs/verify-backlinks/ Bulk verify SAGBacklinks
POST /integration/ahrefs/snapshot/ Take domain snapshot

Backlink Indexing:

Method Endpoint Purpose
POST /linker/indexing/submit/ Submit URLs for indexing
POST /linker/indexing/bulk-submit/ Bulk submit all live unindexed
GET /linker/indexing/requests/ List requests (filter by site_id)
GET /linker/indexing/requests/{id}/ Single request status
GET /linker/indexing/stats/ Success rate, pending count

Admin Dashboard:

Method Endpoint Purpose
GET /services/dashboard/ Revenue summary, client count, MRR
GET /services/dashboard/overdue/ Overdue deliverables
GET /services/dashboard/margin/ Margin tracking across orders

Celery Tasks

Task Schedule Purpose
onboard_managed_client On-demand Full onboarding flow
process_managed_billing Monthly (1st) Invoice all active subscriptions
reset_monthly_counters Monthly (1st) Reset articles_published counters
check_delivery_status Daily Flag subscriptions behind on deliverables
sync_ahrefs_domain_snapshot Weekly Pull DR/traffic/referring domains per connected site
verify_backlinks_via_ahrefs Weekly Cross-reference SAGBacklinks with Ahrefs data
submit_backlinks_for_indexing Daily Submit live unindexed backlinks
check_indexing_status Daily Check submitted URLs (after 7-day wait)
detect_lost_backlinks_ahrefs Weekly Compare Ahrefs lost links with SAGBacklink records

Services

Service Purpose
ManagedBillingService Subscription CRUD, billing, margin calculation
AhrefsService API client wrapper, rate limiting, credit tracking
BacklinkIndexingService Submit to indexing service, track status, retry logic

4. IMPLEMENTATION STEPS

Build Sequence

Week 1: Foundation

  1. Create services app under igny8_core/services/
  2. Create ManagedServiceSubscription model + migration
  3. Create BacklinkServiceOrder model + migration
  4. Create serializers + viewsets for both
  5. Build ManagedBillingService — subscription CRUD, billing integration
  6. Build onboarding Celery task

Week 2: Ahrefs + Indexing

  1. Create AhrefsConnection + AhrefsDomainSnapshot models + migration
  2. Build AhrefsService — API client with rate limiting and credit tracking
  3. Create BacklinkIndexingRequest model + migration
  4. Build BacklinkIndexingService — multi-provider submission
  5. Add 5 new fields to SAGBacklink model + migration
  6. Wire up all Celery tasks

Week 3: API + Dashboard

  1. Register all API endpoints
  2. Build admin dashboard endpoints (revenue, overdue, margin)
  3. Build onboarding flow end-to-end
  4. Test full managed service lifecycle

5. ACCEPTANCE CRITERIA

Managed Services

  • ManagedServiceSubscription creates for Lite and Pro tiers
  • Onboarding flow: verify plugin → generate blueprint → configure automation → welcome email
  • Monthly billing generates invoices via existing Stripe/PayPal integration
  • articles_published counter tracks against articles_per_month target
  • Pause/resume/cancel flows work without data loss
  • Service config JSON stores per-site automation, social, backlink settings
  • BacklinkServiceOrder tracks full lifecycle: draft → approved → in_progress → delivered → completed
  • Links tracker: ordered vs delivered vs live vs indexed counts accurate
  • Margin calculated correctly with niche surcharges
  • Orders linkable to SAGCampaign (02E)

Ahrefs Integration

  • API key stored encrypted, connection test validates key
  • Domain metrics endpoint returns DR, referring domains, traffic, keywords
  • Weekly snapshots auto-populate AhrefsDomainSnapshot
  • Backlink verification cross-references SAGBacklink records
  • Lost backlink detection flags dead links
  • Credits consumption tracked
  • BacklinkIndexingRequest tracks full lifecycle: queued → submitted → checking → indexed/failed
  • Submissions go to configured indexing service API
  • 7-day wait before first check, re-submit at 14 days, fail at 28 days
  • Cost tracking per submission
  • SAGBacklink.is_indexed updated when confirmed

Admin Dashboard

  • Revenue summary shows total MRR, client count by tier
  • Overdue endpoint flags behind-schedule content/links
  • Margin tracking shows per-order and aggregate margins

6. CLAUDE CODE INSTRUCTIONS

Context Requirements

  1. Read 02E (Linker External) — SAGCampaign, SAGBacklink, CampaignKPISnapshot models
  2. Read existing billing app models — Plan, Subscription, CreditService
  3. Read 03B (WP Plugin Connected) — content delivery flow that managed services triggers
  4. Read automation app — AutomationConfig, AutomationRun for pipeline configuration

Execution Order

services app skeleton → models + migrations → ManagedBillingService → AhrefsService →
BacklinkIndexingService → API endpoints → Celery tasks → admin dashboard

Critical Rules

  1. All IDs are integers — BigAutoField PKs, integer FKs
  2. Model names PLURAL — Clusters, Keywords, Tasks, etc.
  3. Table prefixigny8_ for all tables
  4. App labelservices for new app
  5. Celery appigny8_core (same as all other tasks)
  6. API pattern/api/v1/services/ for managed service endpoints, /api/v1/integration/ahrefs/ for Ahrefs, /api/v1/linker/indexing/ for indexing
  7. AccountBaseModel for account-scoped models, SiteSectorBaseModel for site-scoped
  8. Encrypt API keys — Ahrefs API key encrypted at rest
  9. Rate limiting — respect Ahrefs API rate limits, exponential backoff on 429
  10. No blocking — all external API calls in Celery tasks, never in request/response cycle

Cross-References

Doc Relationship
02E Linker External SAGCampaign, SAGBacklink models — backlink orders link to these
02C GSC Integration GSCMetricsCache — monitoring data for Pro tier, indexing status
02D Linker Internal SAGLink, LinkMap — internal linking health for service delivery
02H Socializer SocialPost, SocialAccount — social content for Pro tier
02G Rich Schema SERP SchemaTemplate — retroactive schema enhancement for Pro tier
01A SAG Data Foundation SAGBlueprint — auto-generated during onboarding
03B WP Plugin Connected Content delivery to WordPress via sync endpoints
04B Whitelabel Reporting Reports consume subscription + order data from this doc
04C Pricing Launch Feature gates control who can purchase managed services