Open this lesson in your favourite AI. It'll walk you through the why, explain the demo, and quiz you on the try-it list.
Paid loops require you to keep spending to maintain growth — the moment you stop buying, the machine stops. Viral loops compound from within your user base, so the cost per acquired user drops as scale increases. Knowing which loop your product can support determines whether your unit economics will improve or stay flat as you grow.
Model paid and viral acquisition over 6 months starting from the same seed.
Use these three in order. Each builds on the one before.
In one paragraph, explain viral loops versus paid loops like I'm new to it.
Walk me through how a viral loop actually closes step by step — from existing user to new user back to the loop.
Given a consumer app with k=0.6 today, what would happen to viral growth if k drops to 0.4 after a product change, and how would you detect that shift before your monthly numbers show it?
function paidGrowth(monthlyBudget: number, cac: number, months: number) {
const newUsersPerMonth = monthlyBudget / cac;
return Array.from({ length: months }, (_, i) => ({
month: i + 1,
totalUsers: newUsersPerMonth * (i + 1),
totalSpend: monthlyBudget * (i + 1),
}));
}
function viralGrowth(seed: number, k: number, months: number) {
let users = seed;
return Array.from({ length: months }, (_, i) => {
users = users * (1 + k);
return { month: i + 1, totalUsers: Math.round(users), totalSpend: 0 };
});
}
const paid = paidGrowth(10000, 50, 6); // $10k/mo, $50 CAC
const viral = viralGrowth(200, 0.30, 6); // 200 seed users, k=0.30
paid.forEach((p, i) => console.log(`Mo ${p.month}: paid=${p.totalUsers} viral=${viral[i].totalUsers}`));