multi-program-manager
Manage and compare multiple affiliate programs as a portfolio. Triggers on: "manage my affiliate programs", "compare my programs", "portfolio overview", "which program should I focus on", "diversify my affiliate income", "program switching", "affiliate portfolio", "program comparison", "revenue allocation", "which programs to drop", "add new programs", "affiliate program strategy".
What this skill does
# Multi-Program Manager
Manage and compare multiple affiliate programs as a portfolio — overview, performance comparison, diversification strategy, program switching decisions, and revenue allocation. Output is a portfolio dashboard with strategic recommendations and a weekly action plan.
## Stage
S7: Automation — Most affiliates either promote too few programs (concentration risk) or too many (effort dilution). This skill applies portfolio thinking to affiliate marketing: analyze your programs like investments, identify which to double down on, maintain, or drop, and allocate your limited time for maximum ROI.
## When to Use
- User manages multiple affiliate programs and wants a strategic overview
- User asks "which program should I focus on?" or "should I drop this program?"
- User wants to diversify their affiliate income
- User says "compare my programs", "portfolio review", "program strategy"
- User is deciding whether to add or remove programs
- Chaining from S6.3 (performance-report): take performance data and make strategic decisions
## Input Schema
```yaml
programs:
- name: string # REQUIRED — program name
affiliate_url: string # OPTIONAL — affiliate link
reward_value: string # OPTIONAL — commission (e.g., "30% recurring")
reward_type: string # OPTIONAL — "cps_recurring" | "cps_one_time" | "cpl" | "cpc"
monthly_revenue: number # OPTIONAL — avg monthly revenue ($)
monthly_clicks: number # OPTIONAL — avg monthly clicks
niche: string # OPTIONAL — product category
status: string # OPTIONAL — "active" | "paused" | "new" | "considering"
goal: string # OPTIONAL — "maximize_revenue" | "diversify"
# | "reduce_risk" | "find_gaps"
# Default: "maximize_revenue"
budget_hours: number # OPTIONAL — weekly hours available for content
# Default: 10
```
**Chaining context**: If S1 program research or S6.3 performance data exists in conversation, pull program details and metrics automatically.
## Workflow
### Step 1: Build Portfolio Overview
Compile all programs into a dashboard:
- Program name, niche, commission type, commission value
- Monthly revenue, clicks, EPC
- Status (active/paused/new)
- Revenue share (% of total)
### Step 2: Calculate Per-Program Metrics
For each program with data:
- **EPC**: revenue / clicks
- **Revenue Share**: program revenue / total revenue × 100
- **Effort-to-Revenue Ratio**: estimated hours spent / revenue generated
- **Commission Quality Score**: recurring > one-time > per-lead > per-click
### Step 3: Apply Portfolio Analysis
**Concentration Risk**:
- If top program > 50% of revenue → HIGH RISK
- If top 2 programs > 80% → MODERATE RISK
- If no program > 30% → WELL DIVERSIFIED
**Niche Overlap**:
- Multiple programs in same niche → competing for same audience
- Different niches → healthy diversification
**Revenue Stability**:
- Recurring commissions → stable
- One-time commissions → volatile (need constant new traffic)
### Step 4: Generate Recommendations
For each program, assign an action:
- **Double Down**: High EPC, room to grow → create more content, scale traffic
- **Maintain**: Solid performer, no changes needed → keep existing content fresh
- **Optimize**: High traffic but low conversion → improve CTAs, landing pages, test variants
- **Phase Out**: Low EPC, low growth potential → redirect effort to better programs
- **Add**: Gap identified → research new programs with S1
### Step 5: Create Action Plan
Based on `budget_hours`, allocate weekly time:
- Double-down programs get 50% of time
- Maintain programs get 20%
- Optimize programs get 20%
- New program research gets 10%
Provide specific weekly tasks tied to Affitor skills.
### Step 6: Self-Validation
Before presenting output, verify:
- [ ] Revenue share percentages sum to ~100%
- [ ] EPC calculations correct (revenue ÷ clicks per program)
- [ ] Concentration risk accurate (flag if top program >50% of revenue)
- [ ] Actions match performance: double_down (Star), maintain (Cash Cow), optimize (Question Mark), phase_out (Dog)
- [ ] Weekly time allocation sums to user's stated hours budget
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
## Output Schema
```yaml
output_schema_version: "1.0.0" # Semver — bump major on breaking changes
portfolio:
total_programs: number
active_programs: number
total_monthly_revenue: number
concentration_risk: string # "high" | "moderate" | "low"
niche_diversification: string # "good" | "overlapping" | "single_niche"
revenue_stability: string # "stable" | "moderate" | "volatile"
programs:
- name: string
niche: string
reward_type: string
monthly_revenue: number
epc: number
revenue_share: number
action: string # "double_down" | "maintain" | "optimize" | "phase_out"
reason: string
recommendations:
- action: string
program: string
skill: string # which Affitor skill to use
task: string # specific task
priority: number # 1 = highest
weekly_plan:
total_hours: number
allocation:
- program: string
hours: number
tasks: string[]
```
## Output Format
1. **Portfolio Dashboard** — table with all programs, revenue, EPC, revenue share
2. **Portfolio Health** — concentration risk, diversification, stability assessment
3. **Program Scorecards** — per-program action (double down / maintain / optimize / phase out) with reason
4. **Strategic Recommendations** — prioritized list of actions with Affitor skill references
5. **Weekly Action Plan** — hour-by-hour allocation with specific tasks
## Error Handling
- **Only one program**: "You have a single program. That's 100% concentration risk. I'll analyze it and recommend 2-3 complementary programs using S1 (affiliate-program-search)."
- **No revenue data**: "Without revenue data, I'll analyze based on commission structure and niche overlap. For deeper analysis, run S6.3 (performance-report) first to get your numbers."
- **All programs in same niche**: "All your programs are in [niche]. You're diversified by product but not by market. If [niche] declines, all your income is at risk. Consider adding programs in adjacent niches."
## Examples
### Example 1: Portfolio with clear winner
**User**: "I promote HeyGen ($450/mo), Semrush ($320/mo), Notion ($125/mo), Canva ($80/mo). Which should I focus on?"
**Action**: HeyGen is the star (46% revenue, likely highest EPC). Recommend: Double down on HeyGen (more blog content, S7 content-repurposer). Maintain Semrush. Optimize Notion (high conversion rate potential). Evaluate Canva (low revenue, is it worth the effort?). Weekly plan: 5h HeyGen, 2h Semrush, 2h Notion, 1h research.
### Example 2: Diversification analysis
**User**: "I make $2K/month from 3 SaaS tools. How do I reduce risk?"
**Action**: All income from one niche (SaaS) = moderate risk. Recommend: Add 1-2 programs in adjacent niches (e.g., online courses, hosting). Check commission types — if all one-time, recommend adding recurring programs. Use S1 to research programs in new niches.
### Example 3: Program switching decision
**User**: "Should I drop Canva ($80/mo, 500 clicks) and replace it with Jasper?"
**Action**: Canva EPC = $0.16 (low). Calculate opportunity cost: 500 clicks redirected to a $0.50+ EPC program = $250/mo potential. Research Jasper commission (likely $100+ per sale). Recommend: Yes, switch. Use S1 to evaluate Jasper, then S3 for a comparison blog post.
## References
- `shared/references/affiliate-glossary.md` — Portfolio and commission terminology. Referenced in Step 2.
- `shared/references/flywheel-connections.md` — master flywheel connection map
## Flywheel Connections
### Feeds Into
- `commission-calculator` (S1) — managed programRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.