Compute · Assess & Decide · Data & Research
Compute Raise Amount and Implied Valuation from Inflection Point
A single headline raise number, the implied post-money valuation range, the investor ownership range it implies, and a flag for whether the ask sits inside the track-record-appropriate band, so the founder can answer 'how much are you raising?' with one defensible figure.
You receive: A pure function: given months-to-inflection, planned monthly burn at the run rate, a buffer percentage, the valuation multiple range (low/high), and the founder track-record tier, it returns raiseAmount, impliedValuationLow/High, investorOwnershipPctLow/High, and bandStatus ('in_band' | 'below_band' | 'above_band').
Part of Choose Business Model
What's verified: STUD verifies the raise/valuation/ownership arithmetic and the band-membership test against the supplied numbers. It does NOT tell the founder whether the raise is actually achievable, whether investors will agree to the valuation, or whether the inflection point is real; it computes the figures implied by the frozen inputs and the book's bands.
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_raise",
"expectNote": "expect is the comparison-space value (your return value goes through normalize first when one is published)",
"hiddenCaseCount": 12,
"hiddenCaseNames": [
"first_time_buffer25",
"proven_in_band",
"above_band_first_time",
"proven_below",
"buffer_10",
"proven_above",
"first_at_lower_band",
"high_buffer",
"proven_low_multiple",
"small_first",
"mid_first",
"proven_mid"
],
"inputKeys": [
"bufferPct",
"monthsToInflection",
"multipleHigh",
"multipleLow",
"plannedMonthlyBurn",
"trackRecordTier"
],
"normalizeSource": "def _normalize_compute_raise_amount_and_implied_valuation(r):\n if not isinstance(r, dict): return repr(r)\n def n(x, p): return None if x is None else round(float(x), p)\n return {\"raiseAmount\": round(float(r.get(\"raiseAmount\", 0))), \"impliedValuationLow\": n(r.get(\"impliedValuationLow\"), 2),\n \"impliedValuationHigh\": n(r.get(\"impliedValuationHigh\"), 2), \"investorOwnershipPctHigh\": n(r.get(\"investorOwnershipPctHigh\"), 1),\n \"investorOwnershipPctLow\": n(r.get(\"investorOwnershipPctLow\"), 1), \"bandStatus\": r.get(\"bandStatus\")}\n",
"returnShapes": [
[
"bandStatus",
"impliedValuationHigh",
"impliedValuationLow",
"investorOwnershipPctHigh",
"investorOwnershipPctLow",
"raiseAmount"
]
],
"signature": "def compute_raise(inp):",
"submission": "python exposing the entry function; inp is one input object; graded on held-out cases",
"tier": "calculator",
"visibleCases": [
{
"expect": {
"bandStatus": "in_band",
"impliedValuationHigh": 3600000,
"impliedValuationLow": 2160000,
"investorOwnershipPctHigh": 33.3,
"investorOwnershipPctLow": 20,
"raiseAmount": 720000
},
"input": {
"bufferPct": 0,
"monthsToInflection": 18,
"multipleHigh": 5,
"multipleLow": 3,
"plannedMonthlyBurn": 40000,
"trackRecordTier": "first_time"
},
"name": "first_time_no_buffer"
},
{
"expect": {
"bandStatus": "below_band",
"impliedValuationHigh": 1200000,
"impliedValuationLow": 720000,
"investorOwnershipPctHigh": 33.3,
"investorOwnershipPctLow": 20,
"raiseAmount": 240000
},
"input": {
"bufferPct": 0,
"monthsToInflection": 24,
"multipleHigh": 5,
"multipleLow": 3,
"plannedMonthlyBurn": 10000,
"trackRecordTier": "first_time"
},
"name": "below_band"
}
],
"vocabulary": [
"above_band",
"bandStatus",
"below_band",
"bufferPct",
"first_time",
"impliedValuationHigh",
"impliedValuationLow",
"in_band",
"investorOwnershipPctHigh",
"investorOwnershipPctLow",
"monthsToInflection",
"multipleHigh",
"multipleLow",
"plannedMonthlyBurn",
"proven_or_accelerator",
"raiseAmount",
"trackRecordTier"
]
}Get early access to STUD the day it goes live.