mdxui

Portfolio Management

Managing multiple AI-operated startups at venture studio scale

Portfolio Management

Startups.Studio enables managing dozens or hundreds of AI-operated startups simultaneously. This guide covers strategies, tools, and best practices for portfolio-scale operations.


Portfolio Structure

A typical Startups.Studio portfolio:

Portfolio
├── Active Startups (30)
│   ├── Idea (10)
│   ├── Validation (8)
│   ├── Build (5)
│   ├── Launch (4)
│   └── Scale (3)
├── Exited Startups (5)
│   ├── Acquired (3)
│   ├── Merged (1)
│   └── Wound Down (1)
└── Archived Ideas (50)

Portfolio Dashboard

The main interface for managing all startups:

┌─────────────────────────────────────────────────────────┐
│  Startups.Studio Portfolio                              │
├─────────────────────────────────────────────────────────┤
│  Overview                                               │
│  • Active: 30 startups                                  │
│  • Total MRR: $250k                                     │
│  • Total ARR: $3M                                       │
│  • Portfolio Value: ~$25M                               │
│  • Growth: +12% MoM                                     │
│                                                         │
│  By Stage                                               │
│  ┌──────┬──────┬──────┬──────┬──────┬──────┐          │
│  │ Idea │ Val  │Build │Launch│Scale │Exit  │          │
│  │  10  │  8   │  5   │  4   │  3   │  5   │          │
│  └──────┴──────┴──────┴──────┴──────┴──────┘          │
│                                                         │
│  Health Status                                          │
│  🟢 Healthy: 22   🟡 At Risk: 6   🔴 Critical: 2      │
│                                                         │
│  Top Performers (by MRR growth)                         │
│  1. Zap Analytics      $50k (+25% MoM) 🟢              │
│  2. Acme SaaS          $35k (+20% MoM) 🟢              │
│  3. Bolt Marketplace   $30k (+18% MoM) 🟢              │
│                                                         │
│  Needs Attention                                        │
│  ⚠️  TaskFlow: High churn (15% this month)             │
│  ⚠️  DataSync: Missed revenue target by 30%            │
│                                                         │
│  Recent Activity                                        │
│  • InvoiceAI: Acquired by BigCo for $8M                │
│  • EmailBot: Launched publicly, 50 signups             │
│  • CRM Pro: Crossed $10k MRR milestone                 │
└─────────────────────────────────────────────────────────┘

Portfolio Metrics

Aggregate Metrics

Track performance across all startups:

export const portfolioMetrics = {
  // Revenue
  totalMRR: 250000,
  totalARR: 3000000,
  portfolioGrowth: 0.12, // 12% MoM

  // Customers
  totalCustomers: 1250,
  avgCustomersPerStartup: 42,
  portfolioChurn: 0.04, // 4% MoM

  // Startups
  activeStartups: 30,
  newThisMonth: 3,
  exitedThisMonth: 1,

  // Unit Economics
  avgCAC: 180,
  avgLTV: 950,
  avgLTVCACRatio: 5.3,

  // Efficiency
  totalAgents: 85,
  avgAgentsPerStartup: 2.8,
  costPerStartup: 2500, // monthly
  revenuePerAgent: 2941, // monthly

  // Portfolio Health
  healthy: 22,
  atRisk: 6,
  critical: 2
}

<PortfolioMetrics data={portfolioMetrics} />

Per-Startup Metrics

Monitor each startup individually:

StartupStageMRRGrowthCustomersHealthAgents
Zap AnalyticsScale$50k+25%180🟢5
Acme SaaSScale$35k+20%120🟢4
Bolt MarketplaceScale$30k+18%200🟢6
InvoiceAILaunch$15k+35%75🟢3
TaskFlowLaunch$12k-10%60🔴3
EmailBotLaunch$8k+50%45🟢2
DataSyncLaunch$6k-5%30🟡2
CRM ProBuild$0N/A15🟢2

Portfolio Strategies

1. Thesis-Driven Portfolio

Build startups around core theses:

export const portfolioTheses = [
  {
    name: 'AI-First SaaS',
    hypothesis: 'AI enables 10x better user experiences at 1/10th the cost',
    startups: [
      'https://acme-analytics.com',
      'https://email-bot.com',
      'https://content-ai.com'
    ],
    metrics: {
      totalMRR: 75000,
      avgMRR: 25000,
      growth: 0.22
    }
  },
  {
    name: 'Vertical SaaS for SMBs',
    hypothesis: 'Underserved verticals will pay for tailored solutions',
    startups: [
      'https://contractor-crm.com',
      'https://dental-practice-mgmt.com',
      'https://gym-operations.com'
    ],
    metrics: {
      totalMRR: 60000,
      avgMRR: 20000,
      growth: 0.15
    }
  },
  {
    name: 'API-First Products',
    hypothesis: 'Developers prefer APIs over UIs for automation',
    startups: [
      'https://webhook-hub.com',
      'https://data-sync-api.com',
      'https://auth-api.com'
    ],
    metrics: {
      totalMRR: 45000,
      avgMRR: 15000,
      growth: 0.18
    }
  }
]

<ThesisPerformance theses={portfolioTheses} />

2. Stage Balancing

Maintain healthy distribution across stages:

export const stageBalance = {
  target: {
    idea: 0.25,       // 25% in ideation
    validation: 0.20, // 20% in validation
    build: 0.15,      // 15% building
    launch: 0.25,     // 25% launching
    scale: 0.15       // 15% scaling
  },

  current: {
    idea: 0.33,       // 10/30 = 33% (over-indexed)
    validation: 0.27, // 8/30 = 27% (over-indexed)
    build: 0.17,      // 5/30 = 17%
    launch: 0.13,     // 4/30 = 13% (under-indexed)
    scale: 0.10       // 3/30 = 10% (under-indexed)
  },

  actions: [
    'Move 2-3 validation startups to build',
    'Accelerate 1-2 build startups to launch',
    'Consider archiving 2-3 ideas with low scores'
  ]
}

<StageBalanceChart balance={stageBalance} />

3. Capital Allocation

Distribute capital based on stage and performance:

export const capitalAllocation = {
  totalBudget: 100000, // monthly

  byStage: {
    idea: 5000,        // $500/startup × 10
    validation: 16000, // $2k/startup × 8
    build: 25000,      // $5k/startup × 5
    launch: 32000,     // $8k/startup × 4
    scale: 22000       // $7.3k/startup × 3 (invest for growth)
  },

  byFunction: {
    agentCosts: 40000,      // AI/compute
    infrastructure: 25000,   // Hosting, tools
    customerAcquisition: 20000, // Ads, marketing
    development: 10000,      // Custom development
    misc: 5000
  },

  topSpenders: [
    { startup: 'Zap Analytics', spend: 12000, reason: 'Scaling marketing' },
    { startup: 'Acme SaaS', spend: 9000, reason: 'Infrastructure for growth' },
    { startup: 'Bolt Marketplace', spend: 8000, reason: 'Two-sided marketplace growth' }
  ]
}

<CapitalAllocation data={capitalAllocation} />

Portfolio Operations

Resource Sharing

Share resources across startups:

// Shared agent pool
export const sharedAgents = {
  support: new SupportAgent({
    name: 'Universal Support',
    servingStartups: [
      'https://acme-analytics.com',
      'https://email-bot.com',
      'https://task-flow.com'
    ],
    capacity: 100, // customers per agent
    allocation: 'round-robin'
  }),

  marketing: new MarketingAgent({
    name: 'Content Factory',
    servingStartups: 'all',
    tasks: ['seo-content', 'social-posts', 'email-campaigns'],
    budget: 10000 // shared budget
  })
}

// Shared infrastructure
export const sharedInfra = {
  database: 'clickhouse-cluster-1',
  email: 'sendgrid-account-main',
  payments: 'stripe-connect-platform',
  analytics: 'plausible-account',
  monitoring: 'sentry-organization'
}

// Shared building blocks
export const sharedBlocks = {
  authSystem: 'https://functions.do/auth',
  paymentFlow: 'https://functions.do/payments',
  onboarding: 'https://functions.do/onboarding'
}

Cross-Portfolio Insights

Learn from data across all startups:

export const crossPortfolioInsights = {
  // What works
  bestPractices: [
    {
      finding: 'Free trial → paid converts at 25% with 7-day trial',
      evidence: 'Data from 8 startups',
      recommendation: 'Standardize on 7-day trials'
    },
    {
      finding: 'Onboarding completion rate 80% when < 3 steps',
      evidence: 'Data from 12 startups',
      recommendation: 'Keep onboarding to 3 steps max'
    },
    {
      finding: 'Email campaigns with personalization convert 3x better',
      evidence: 'A/B tests across 6 startups',
      recommendation: 'Always personalize outreach'
    }
  ],

  // What doesn't work
  antiPatterns: [
    {
      finding: 'Freemium models have 85% higher support costs',
      evidence: 'Comparing 4 freemium vs 8 trial-based',
      recommendation: 'Default to free trial, not freemium'
    },
    {
      finding: 'Complex pricing causes 40% more support tickets',
      evidence: 'Analyzing support data across 10 startups',
      recommendation: 'Keep pricing simple (3 tiers max)'
    }
  ],

  // Benchmarks
  benchmarks: {
    trialToPaid: 0.25,
    activation: 0.75,
    churn: 0.04,
    cac: 180,
    ltv: 950,
    paybackPeriod: 4.5, // months
    monthsToFirstCustomer: 2.5,
    monthsTo10k: 5.2
  }
}

<CrossPortfolioInsights data={crossPortfolioInsights} />

Portfolio Health Monitoring

Health Scoring

Automated health assessment for each startup:

export function calculateHealth(startup: Startup): HealthScore {
  const metrics = {
    growth: startup.mrrGrowth > 0.10 ? 30 : startup.mrrGrowth > 0 ? 20 : 0,
    churn: startup.churn < 0.05 ? 25 : startup.churn < 0.10 ? 15 : 0,
    customers: startup.customers > 50 ? 20 : startup.customers > 10 ? 10 : 0,
    runway: startup.runway > 12 ? 15 : startup.runway > 6 ? 10 : 0,
    nps: startup.nps > 8 ? 10 : startup.nps > 6 ? 5 : 0
  }

  const score = Object.values(metrics).reduce((a, b) => a + b, 0)

  return {
    score,
    status: score > 70 ? 'healthy' : score > 50 ? 'at-risk' : 'critical',
    breakdown: metrics,
    recommendations: generateRecommendations(startup, metrics)
  }
}

// Example output
{
  score: 85,
  status: 'healthy',
  breakdown: {
    growth: 30,  // 15% MoM growth
    churn: 25,   // 3% churn
    customers: 20, // 75 customers
    runway: 15,  // 14 months runway
    nps: 10      // NPS of 8.5
  },
  recommendations: [
    'Maintain current growth trajectory',
    'Focus on reducing churn to < 3%'
  ]
}

Alert System

Proactive alerts for portfolio issues:

export const alertRules = [
  {
    name: 'High Churn',
    condition: (s) => s.churn > 0.10,
    severity: 'critical',
    action: 'Investigate churn reasons, improve retention'
  },
  {
    name: 'Negative Growth',
    condition: (s) => s.mrrGrowth < 0,
    severity: 'warning',
    action: 'Review marketing and sales effectiveness'
  },
  {
    name: 'Low Runway',
    condition: (s) => s.runway < 3,
    severity: 'critical',
    action: 'Inject capital or prepare for shutdown'
  },
  {
    name: 'Stagnant',
    condition: (s) => s.stage === 'Launch' && s.ageInStage > 90,
    severity: 'warning',
    action: 'Either scale or pivot/kill'
  },
  {
    name: 'Agent Inefficiency',
    condition: (s) => s.costPerCustomer > s.ltv * 0.5,
    severity: 'warning',
    action: 'Optimize agent costs or increase prices'
  }
]

// Active alerts
export const activeAlerts = [
  {
    startup: 'TaskFlow',
    alert: 'High Churn',
    severity: 'critical',
    details: 'Churn increased to 15% this month',
    action: 'Schedule customer interviews to identify issues'
  },
  {
    startup: 'DataSync',
    alert: 'Negative Growth',
    severity: 'warning',
    details: 'MRR declined 5% MoM',
    action: 'Review recent product changes and customer feedback'
  }
]

<AlertDashboard alerts={activeAlerts} />

Decision Frameworks

When to Invest More

export const investmentCriteria = {
  doubleDown: [
    'Product-market fit clearly achieved',
    'Unit economics are profitable',
    'Growth rate > 15% MoM',
    'Large market opportunity (TAM > $100M)',
    'Scalable acquisition channels identified'
  ],

  maintain: [
    'Steady growth (5-15% MoM)',
    'Positive unit economics',
    'No major red flags',
    'Learning and iterating'
  ],

  reduce: [
    'Stagnant or declining',
    'Negative unit economics with no path to profitability',
    'Founder/team issues',
    'Market too small'
  ]
}

When to Kill a Startup

export const killCriteria = {
  immediate: [
    'Legal or ethical issues discovered',
    'Regulatory impossibility',
    'Founder quits with no replacement'
  ],

  after3Months: [
    'No validation signals (< 50 waitlist signups)',
    'Extreme negative feedback from customers',
    'Technical impossibility discovered'
  ],

  after6Months: [
    'No paying customers',
    'Zero growth for 3+ months',
    'Uneconomical unit economics with no improvement'
  ],

  after12Months: [
    'Cannot achieve $10k MRR',
    'Perpetual high churn (> 10%)',
    'Better opportunities identified for resources'
  ]
}

// Example decision
const startup = await load('https://failing-startup.com')
const decision = evaluateKill(startup, killCriteria)

if (decision.shouldKill) {
  await windDown(startup, {
    refundCustomers: true,
    archiveCode: true,
    documentLearnings: true,
    reallocateAgents: true
  })
}

When to Pivot

export const pivotSignals = [
  {
    signal: 'Different customer segment shows stronger interest',
    example: 'Built for SMBs but enterprises keep asking for it',
    action: 'Pivot to enterprise'
  },
  {
    signal: 'Feature usage reveals different core value',
    example: 'Built analytics dashboard, but API is most used',
    action: 'Pivot to API-first product'
  },
  {
    signal: 'Adjacent market opportunity is bigger',
    example: 'Built CRM, but workflow automation is the real pain',
    action: 'Pivot to workflow automation'
  },
  {
    signal: 'Technology breakthrough enables new approach',
    example: 'New AI model makes old approach obsolete',
    action: 'Rebuild with new technology'
  }
]

Portfolio Automation

Automated Operations

Let the portfolio run itself:

export const automatedOperations = {
  // Stage transitions
  stageTransitions: {
    enabled: true,
    criteria: lifecycleCriteria
  },

  // Health monitoring
  healthChecks: {
    frequency: 'daily',
    alerts: alertRules,
    autoRemediation: {
      highChurn: 'trigger-retention-campaign',
      lowActivation: 'improve-onboarding-emails',
      slowGrowth: 'increase-marketing-budget'
    }
  },

  // Resource allocation
  resourceAllocation: {
    mode: 'dynamic',
    rules: [
      'Scale agent capacity based on customer count',
      'Increase marketing budget for proven channels',
      'Reduce spend on stagnant startups'
    ]
  },

  // Reporting
  reporting: {
    daily: ['health-summary', 'critical-alerts'],
    weekly: ['portfolio-metrics', 'stage-transitions', 'top-performers'],
    monthly: ['full-portfolio-report', 'cross-portfolio-insights', 'recommendations']
  }
}

Portfolio-Level Agents

AI agents that manage the portfolio itself:

export const portfolioAgents = {
  analyst: new AnalystAgent({
    tasks: [
      'analyze-portfolio-metrics',
      'identify-trends',
      'generate-insights',
      'recommend-actions'
    ],
    frequency: 'daily'
  }),

  strategist: new StrategistAgent({
    tasks: [
      'evaluate-new-ideas',
      'recommend-portfolio-balance',
      'identify-thesis-opportunities',
      'suggest-pivots-kills'
    ],
    frequency: 'weekly'
  }),

  operator: new OperatorAgent({
    tasks: [
      'allocate-resources',
      'manage-agent-fleet',
      'optimize-costs',
      'coordinate-cross-startup-initiatives'
    ],
    frequency: 'daily'
  })
}

Reporting

Portfolio Report Example

---
$type: PortfolioReport
$id: https://reports.startups.studio/2024-12
period: December 2024
---

# Portfolio Report - December 2024

## Executive Summary

- Active Startups: 30 (+2 from last month)
- Total MRR: $250k (+12% MoM)
- Portfolio Value: ~$25M
- Exits This Month: 1 (InvoiceAI acquired for $8M)

## Highlights

### Wins
- **InvoiceAI Acquired**: Sold to BigCo for $8M (8x ARR)
- **EmailBot Launched**: 50 customers in first week
- **CRM Pro**: Crossed $10k MRR milestone

### Challenges
- **TaskFlow**: High churn (15%) - investigating root cause
- **DataSync**: Missed revenue target - needs pivot evaluation

## Metrics

<PortfolioMetrics />

## By Stage

<StageDistribution />

## Top Performers

<TopStartups n={5} sortBy="mrrGrowth" />

## Needs Attention

<AtRiskStartups />

## Learnings

Key insights from this month:
1. Faster validation cycles (2 weeks vs 4) lead to better outcomes
2. Composition-based builds launch 3x faster
3. Agent-heavy operations reduce costs 75% vs human teams

## Next Month Focus

- Move 3 validation startups to build stage
- Launch 2 build-stage startups
- Evaluate pivot/kill for 2 at-risk startups
- Continue optimizing agent fleet efficiency

Best Practices

Portfolio Management

  1. Maintain Balance - Don't overload any single stage
  2. Kill Fast - Don't waste resources on losers
  3. Double Down - Invest heavily in winners
  4. Share Learnings - Apply insights across portfolio
  5. Automate Everything - Let agents handle operations
  6. Monitor Health - Catch problems early
  7. Diversify Theses - Don't put all eggs in one basket
  8. Stay Focused - Quality over quantity

Capital Efficiency

  1. Composition First - Build from blocks before custom code
  2. Share Resources - One agent can serve multiple startups
  3. Leverage Automation - Reduce human costs to near-zero
  4. Test Cheaply - Validate before building
  5. Kill Fast - Don't throw good money after bad
  6. Scale What Works - Invest in proven channels only

Team Leverage

  1. Humans for Strategy - Agents for execution
  2. One Human Can Manage 10+ Startups - With proper automation
  3. Portfolio-Level Agents - Manage the portfolio itself
  4. Cross-Startup Resources - Share agents across startups
  5. Knowledge Sharing - Document and reuse learnings

Next Steps

  • Studio - Learn about the Startups.Studio platform
  • Composition - Build startups from blocks
  • Lifecycle - Manage through lifecycle stages
  • Business - Understand Business-as-Code fundamentals

On this page