Compute · Assess & Decide · Data & Research
Compute Viral Coefficient and Loop-Driven User Growth
A founder learns their viral K-factor and the cumulative users a seed cohort generates across viral cycles, so they can judge whether the product can grow on the viral engine alone.
You receive: A pure calculator returning a JSON object with the viral coefficient, a per-cycle and cumulative user table for N cycles starting from a seed cohort, and a growth-regime flag, given invites per user, invite conversion rate, seed users, and cycle count.
Part of Choose Business Model
What's verified: STUD verifies the K-factor math and the deterministic cycle projection given the inputs. It does NOT verify the invites-per-user or conversion-rate inputs are real, that cycle length maps to any calendar time, or that the product can sustain virality.
Opens soon
This objective is verified and ready. It opens soon, once sign-in and payments are live.
Deliverable interface
The exact vocabulary the automated check enforces: keys, tokens, entry points, and worked examples. Generated from the verification source.
{
"constants": {},
"entryName": "compute_viral_growth",
"expectNote": "expect is the comparison-space value (your return value goes through normalize first when one is published)",
"hiddenCaseCount": 12,
"hiddenCaseNames": [
"linear_k1",
"slightly_viral",
"high_k",
"tiny_k",
"k_just_over_1",
"k_just_under_1",
"one_cycle",
"zero_cycles",
"k_exactly_1_alt",
"small_seed_high_k",
"decay_fast",
"moderate"
],
"inputKeys": [
"cycles",
"invite_conversion_rate",
"invites_per_user",
"seed_users"
],
"normalizeSource": "def _normalize_compute_viral_coefficient_and_loop_growth(r):\n if not isinstance(r, dict): return repr(r)\n return {\"K\": (None if r.get(\"K\") is None else round(float(r[\"K\"]), 4)),\n \"new_users\": [int(x) for x in r.get(\"new_users\", [])], \"cumulative_final\": int(r.get(\"cumulative_final\", 0)),\n \"regime\": r.get(\"regime\")}\n",
"returnShapes": [
[
"K",
"cumulative_final",
"new_users",
"regime"
]
],
"signature": "def compute_viral_growth(inp):",
"submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
"tier": "calculator",
"visibleCases": [
{
"expect": {
"K": 2,
"cumulative_final": 1500,
"new_users": [
100,
200,
400,
800
],
"regime": "exponential"
},
"input": {
"cycles": 3,
"invite_conversion_rate": 0.5,
"invites_per_user": 4,
"seed_users": 100
},
"name": "exp_k2"
},
{
"expect": {
"K": 0.5,
"cumulative_final": 1875,
"new_users": [
1000,
500,
250,
125
],
"regime": "decaying"
},
"input": {
"cycles": 3,
"invite_conversion_rate": 0.25,
"invites_per_user": 2,
"seed_users": 1000
},
"name": "decaying"
}
],
"vocabulary": [
"K",
"cumulative_final",
"cycles",
"decaying",
"exponential",
"invite_conversion_rate",
"invites_per_user",
"linear",
"new_users",
"regime",
"seed_users"
]
}Get early access to STUD the day it goes live.