Free Claude skill · Fundraising · v1.0
Term sheet review skill for Claude
Upload a term sheet and Claude turns it into numbers: the effective pre-money after the option pool, what the liquidation preference pays at different exits, and what anti-dilution does in a down round. Then it rates each clause as founder-friendly, market standard or aggressive, and drafts the questions for your lawyer.
By the StartupReader editorial desk · Updated 2026-11-08 · MIT licence · Works on claude.ai, Claude Code and the Claude API
Term sheet review
- clauses it rates
- 18
- calculations it runs
- 3
- network calls
- 0
- MIT licence
- Free
What it does
- Extracts every term into one table, with section numbers, and marks what the document leaves out.
- Works out the price per share and effective pre-money once the option pool is counted, and shows who pays for the pool.
- Shows what the investor and everyone else receive at a low, middle and high exit under the liquidation preference.
- Models a down round at half the price to show what the anti-dilution clause would cost founders.
- Rates each clause as founder-friendly, market standard or aggressive, with the reason, and lists what to negotiate first with a fallback.
- Writes numbered questions for your lawyer that are specific to this document.
Ask Claude things like
- “Here's our Series A term sheet. What's the real valuation?”
- “Is a 1x participating preference capped at 3x normal for a seed round?”
- “Review this LOI and tell me what to push back on.”
- “What does the anti-dilution clause in section 7 cost us if the next round is flat or down?”
What you give it
- The term sheet or letter of intent, as a PDF, Word file or pasted text.
- Your fully diluted share count before the round and any existing unallocated option pool. Without them it uses percentages and says so.
- Optionally, the exit values you care about, for the preference table.
What you get back
- A headline: the real price and what founders own after the round.
- Tables for the option pool, the liquidation preference and, where relevant, anti-dilution.
- Every clause with its section, a rating and the reason.
- Up to five asks, most valuable first, each with a fallback position.
- Questions for your lawyer and a list of terms the document doesn't mention.
Why the headline valuation isn't the price
Most term sheets ask for an employee option pool to be created before the investment and counted inside the pre-money valuation. The investor's percentage is fixed on the post-money, so the new pool comes entirely out of the founders' side. A "$20M pre-money" with a 10% post-money pool prices the founders' shares as if the company were worth $17.5M.
The skill always reports both numbers, the headline and the effective pre-money, and shows the same pool created after the round for comparison, when it would dilute the investor too. That one table is often the most useful thing to bring to a negotiation, because the fix is usually to size the pool to a real hiring plan, not to argue about the valuation.
Why it runs a script instead of doing the maths in its head
Language models are good at reading clauses and weak at long chains of arithmetic. So the reading is Claude's job and the arithmetic is a small Python script bundled with the skill. Claude extracts the terms, runs the script with them, and is told to check every figure in its review against the script's output before answering.
The script uses only Python's standard library and makes no network calls, so it runs in the Claude API's sandbox, which has no internet access, as well as on claude.ai and in Claude Code. You can read all of it below, and run it yourself with the same commands.
How it decides what is aggressive
The skill compares each clause with common practice in seed and Series A rounds, described clause by clause in a reference file it reads only when rating. A 1x non-participating preference, a broad-based weighted average anti-dilution clause and a 30 to 60 day no-shop are market standard. Full participation, full ratchet anti-dilution and a veto over everyday decisions are aggressive.
Two things change a rating: the stage, because later and distressed rounds often carry heavier terms, and how clauses combine. A drag-along with no minimum price is more serious when the investors also control the board. The skill says which stage it assumed and calls out combinations, and it never tells you to accept or reject the deal.
- Founder-friendly: better for the company than common practice.
- Market standard: what most seed and Series A term sheets say.
- Aggressive: worth negotiating, with a fallback position.
Worked example
Acme Logs, a made-up developer-tools startup, has a Series A offer: $5M at a $20M pre-money valuation, a 10% post-money option pool created before the round, a 1x participating preference capped at 3x, and broad-based weighted average anti-dilution. The founders hold 7,000,000 shares and there is no pool yet.
The founder asks
Here's the Acme Logs term sheet (attached). Founders hold 7M shares, no existing pool. What are we really agreeing to?
Claude reads the skill, then runs its script with the figures from the documents. These are the script's real outputs:
$ python scripts/term_sheet_math.py pool --pre 20000000 --raise 5000000 --pool-post 0.10 --existing 7000000Option pool shuffle (pool created before the round, inside the pre-money) Post-money valuation: 25,000,000 Price per share: 2.5000 New investor shares: 2,000,000 (20.0%) Pool shares added: 1,000,000 Pool after round: 1,000,000 (10.0%) Existing holders after: 7,000,000 (70.0%) Effective pre-money: 17,500,000 (headline 20,000,000) Cost of the pool to existing holders: 2,500,000 Same pool created after the round instead: existing holders 72.0%, investor 18.0%
$ python scripts/term_sheet_math.py waterfall --invested 5000000 --stake 0.20 --multiple 1 --participation cap --cap 3 --exits 10000000,25000000,70000000,100000000Liquidation waterfall: 1x participating, capped at 3x, invested 5,000,000, 20.0% as converted Exit value Investor Everyone else How the investor is paid 10,000,000 6,000,000 4,000,000 preference plus its share of the rest 25,000,000 9,000,000 16,000,000 preference plus its share of the rest 70,000,000 15,000,000 55,000,000 hits the cap 100,000,000 20,000,000 80,000,000 converts to common
$ python scripts/term_sheet_math.py waterfall --invested 5000000 --stake 0.20 --multiple 1 --participation none --exits 10000000,25000000,70000000,100000000Liquidation waterfall: 1x non-participating, invested 5,000,000, 20.0% as converted Exit value Investor Everyone else How the investor is paid 10,000,000 5,000,000 5,000,000 takes its preference 25,000,000 5,000,000 20,000,000 takes its preference 70,000,000 14,000,000 56,000,000 converts to common 100,000,000 20,000,000 80,000,000 converts to common
$ python scripts/term_sheet_math.py antidilution --old-price 2.5 --new-price 1.25 --new-money 5000000 --broad 10000000 --narrow 9000000 --invested 5000000Anti-dilution: old price 2.5, down-round price 1.25, new money 5,000,000 B (new money at old price): 2,000,000 shares C (shares actually issued): 4,000,000 The investor's 5,000,000 converts into 2,000,000 shares at the old price Method New price Shares as converted Extra shares Broad-based weighted average 2.1429 2,333,333 +333,333 Narrow-based weighted average 2.1154 2,363,636 +363,636 Full ratchet 1.2500 4,000,000 +2,000,000
The answer, in the skill's format (abridged):
Term sheet review: Acme Logs, Series A
The headline
The $20M pre-money is $17.5M once the pool is counted: the 10% pool is created inside the pre-money, so it costs the founders $2.5M. Founders own 70% after the round, not 80%. Negotiate the participation and the pool size first.
The numbers
| Headline | Effective | |
|---|---|---|
| Pre-money valuation | $20,000,000 | $17,500,000 |
| Price per share | $2.50 | |
| Founders after the round | 70.0% |
At a $25M exit the capped participation pays the investor $9,000,000 and everyone else $16,000,000. A 1x non-participating preference would pay the investor $5,000,000 and everyone else $20,000,000.
Clause by clause (excerpt)
| Clause | What it says | Rating | Why |
|---|---|---|---|
| Liquidation preference | 1x participating, capped at 3x | Aggressive | Takes $5M back plus 20% of the rest until it has $15M |
| Option pool | 10% post-money, before the round | Market standard | Common size; ask which hires it covers |
| Anti-dilution | Broad-based weighted average | Market standard | At half the price: +333,333 shares, against +2,000,000 under full ratchet |
Negotiate first
- Participation: ask for 1x non-participating. Fallback: a lower cap than 3x.
- Pool: size it to the hires planned before the next round.
This is a briefing to discuss with your lawyer, not legal advice.
A made-up company and numbers. Your answer depends on your documents, and Claude's wording varies from run to run; the figures come from the script.
Install it
The skill is one folder. Download it once and add it wherever you use Claude; skills don't sync between claude.ai, Claude Code and the API, so each needs its own copy.
claude.ai and the Claude apps
- Download the ZIP and keep it zipped.
- In Claude, open Settings > Capabilities and turn on Code execution and file creation (called Create and edit files in the newer settings layout).
- Open Customize > Skills, click +, choose Create skill, then Upload a skill, and pick the ZIP.
- Leave the skill switched on. Claude uses it when your request matches its description; you don't have to name it.
On Team and Enterprise plans an owner first turns on code execution and skills under Organization settings > Plugins & skills. Anthropic's help centre has the details for each plan.
Claude Code
Unzip it into your personal skills folder to use it in every project, or into .claude/skills/ in a repository to share it with your team. Claude picks it up automatically; you can also run it by typing /term-sheet-review.
mkdir -p ~/.claude/skills
unzip term-sheet-review.zip -d ~/.claude/skills/Skills with a script need Python 3 on your computer.
Claude API
Upload the unzipped folder once; the response includes the skill's id. Uploaded skills are shared across your API workspace.
curl -X POST "https://api.anthropic.com/v1/skills" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-F "files[]=@term-sheet-review/SKILL.md;filename=term-sheet-review/SKILL.md" \
-F "files[]=@term-sheet-review/references/clauses.md;filename=term-sheet-review/references/clauses.md" \
-F "files[]=@term-sheet-review/scripts/term_sheet_math.py;filename=term-sheet-review/scripts/term_sheet_math.py"Then list it in a request's container, with the code execution tool that skills run in (up to 20 skills per request):
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2026-10-21" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5-5",
"max_tokens": 4096,
"container": {
"skills": [{ "type": "custom", "skill_id": "YOUR_SKILL_ID", "version": "latest" }]
},
"tools": [{ "type": "code_execution_20250825", "name": "code_execution" }],
"messages": [{ "role": "user", "content": "..." }]
}'From Anthropic's skills API guide. Skills on the API run with no network access, which is why these skills' scripts use only Python's standard library.
What's in the skill
Every file, exactly as it is in the download. Claude reads SKILL.md when a request matches, opens the other files only when a step needs them, and runs scripts without loading their code. Read them before you install: a skill can direct Claude to run code, so only add skills you trust.
term-sheet-review/
SKILL.md
references/clauses.md
scripts/term_sheet_math.pySKILL.md111 lines
--- name: term-sheet-review description: Reviews a startup venture capital term sheet clause by clause and quantifies the economic terms. Works out the effective pre-money valuation after the option pool shuffle, liquidation preference payouts at several exit values and the anti-dilution adjustment in a down round, then rates each clause as founder-friendly, market standard or aggressive and lists questions for the founders' lawyer. Use when a founder shares or pastes a term sheet, a letter of intent or an investment offer, or asks about valuation, option pool, liquidation preference, participation, anti-dilution, pro-rata, board seats, protective provisions, drag-along or no-shop terms. license: MIT compatibility: Works on claude.ai, Claude Code and the Claude API. The script needs Python 3.8+ (standard library only) and no network access. metadata: author: StartupReader version: "1.0" homepage: https://startupreader.com/claude-skills/term-sheet-review --- # Term sheet review Turn a term sheet into numbers the founders can see, then judge each clause against common practice. The output is a briefing for the founders and their lawyer, not legal advice. Say so once, at the end. ## Workflow Copy this checklist and tick it off as you go: ``` - [ ] 1. Extract the terms into the term table - [ ] 2. Ask for any missing inputs the maths needs - [ ] 3. Run the numbers with scripts/term_sheet_math.py - [ ] 4. Rate every clause using references/clauses.md - [ ] 5. Write the review in the output format below - [ ] 6. Check every figure in the review against the script output ``` ### 1. Extract the terms Read the whole document before rating anything: a definition on page 3 can change a clause on page 1. Record each term exactly as written, with its section number. Mark anything not mentioned as "not stated". Never fill a gap with a typical value without saying so. Term table fields: instrument (preferred shares, in India usually CCPS; SAFE; convertible note), amount, pre-money or post-money valuation and which one it is, option pool size and whether it sits in the pre-money, liquidation preference (multiple, participation, cap, seniority), dividends, anti-dilution (type and carve-outs), pro-rata and super pro-rata, board composition, protective provisions or reserved matters, drag-along (threshold, minimum price, founder consent), tag-along and right of first refusal, founder vesting or re-vesting, information rights, exclusivity (no-shop) length, legal fee cap, conditions to closing, and which clauses are binding. ### 2. Get the inputs the maths needs The script needs share counts as well as prices. If the founders have not given the fully diluted share count, the existing unallocated pool and the investor's stake, ask for them. If they cannot provide them, use the post-money percentages from the term sheet and say that share counts are illustrative. ### 3. Run the numbers Run the script instead of doing the arithmetic in your head: ```bash # Option pool shuffle: price per share, effective pre-money, who pays for the pool python scripts/term_sheet_math.py pool --pre 20000000 --raise 5000000 --pool-post 0.10 --existing 7000000 --existing-pool 0 # Liquidation preference at low, middle and high exits (use 0.5x, 1x-2x and 5x+ the post-money) python scripts/term_sheet_math.py waterfall --invested 5000000 --stake 0.20 --multiple 1 --participation none --exits 10000000,25000000,100000000 # Anti-dilution in a hypothetical down round at half the price python scripts/term_sheet_math.py antidilution --old-price 2.5 --new-price 1.25 --new-money 5000000 --broad 10000000 --narrow 9000000 --invested 5000000 ``` - `--pool-post` is the unallocated pool after the round as a fraction of post-money. If the pool is stated as a share of pre-money, convert it first and say so. - For `--participation`, use `none` (non-participating), `full` (participating) or `cap` with `--cap` (total return multiple). - Model the down round only when the term sheet has anti-dilution. Present it as "if a later round were priced at half this one", never as a forecast. - If a script exits with an error, fix the input it names and run it again. Do not estimate instead. ### 4. Rate each clause Read [references/clauses.md](references/clauses.md) for what founder-friendly, market standard and aggressive look like for each clause, and which questions to ask. Use exactly three ratings: **Founder-friendly**, **Market standard**, **Aggressive**. Base each one on the text, not on the investor's reputation. Two things change a rating: - **Stage and leverage.** A 1x non-participating preference is standard at seed and Series A. Stacked or higher multiples are more common in late or distressed rounds. Say which stage you are assuming. - **Interaction.** A modest clause can bite in combination: participation plus a large preference, a broad veto list plus a board the investors control, or a drag-along with no minimum price. ### 5. Output format Use this structure: ```markdown # Term sheet review: [Company], [round], [investor] ## The headline Two or three sentences: the real price (effective pre-money), what founders own after the round, and the one or two clauses to negotiate first. ## The numbers | | Headline | Effective | |---|---|---| | Pre-money valuation | ... | ... | | Price per share | ... | ... | | Founders after the round | ... | ... | Then the waterfall table and, if relevant, the anti-dilution table, each with one sentence on what it means. ## Clause by clause | Clause | What it says (section) | Rating | Why | |---|---|---|---| ## Negotiate first Up to five asks, most valuable first, each with a fallback position. ## Questions for your lawyer Numbered, specific to this document. ## Not stated Terms the document leaves out that usually appear. ``` ### 6. Check before sending - Every number in the review appears in the script output or the term sheet. - Each rating has a reason that quotes or cites the clause. - Pre-money and post-money are never mixed up, and the currency matches the document. - The review ends with: "This is a briefing to discuss with your lawyer, not legal advice." ## Rules - Quote the document when a clause is ambiguous, and give both readings rather than choosing one silently. - For Indian rounds, note that the term sheet usually becomes a share subscription agreement (SSA) and a shareholders' agreement (SHA), and that for foreign investors, foreign-exchange pricing rules can limit how far a conversion price can be adjusted. - Do not tell the founders to accept or reject the term sheet. Show the trade-offs and what to ask for.
references/clauses.md102 lines
# Term sheet clauses: what to look for ## Contents - Economics: valuation, option pool, liquidation preference, dividends, anti-dilution, pay-to-play - Future rounds: pro-rata, right of first refusal, tag-along - Control: board, protective provisions, drag-along, founder vesting, information rights - Process: binding terms, exclusivity, costs, closing conditions - Indian rounds Ratings describe common practice in seed and Series A rounds. Later or distressed rounds often carry heavier terms; say when that applies. ## Economics ### Valuation (pre-money or post-money) - Market standard: the term sheet says clearly whether the figure is pre-money or post-money, and what the fully diluted share count includes. - Aggressive: a "pre-money" that already counts a new or enlarged pool, SAFEs and notes, so the effective price is lower than the headline. - Ask: "Is the valuation pre- or post-money, and are the new pool and any SAFEs or notes inside it?" ### Option pool - Founder-friendly: pool sized to a hiring plan for the period until the next round, or created after the round. - Market standard: pool created or topped up before the investment, inside the pre-money, commonly 10–15% of the post-money company. - Aggressive: a pool much larger than the hiring plan needs, which lowers the effective pre-money and leaves unused shares that dilute only existing holders. - Run `pool` to show the effective pre-money. Ask: "Which hires does this pool cover before the next round?" ### Liquidation preference - Founder-friendly or market standard: 1x non-participating. The investor takes its money back or converts to common, whichever is larger. - Aggressive: a multiple above 1x, full participation (the investor takes its preference and then its share of the rest), or preferences stacked so later investors are paid ahead of earlier ones in full. - Middle ground: participation capped at a total return (for example 3x), above which the investor converts. - Run `waterfall` at a low, middle and high exit. Show what founders and employees receive at the low and middle exits; that is where the terms differ. ### Dividends - Market standard: non-cumulative, paid only if declared by the board. - Aggressive: cumulative dividends that accrue each year and are added to the preference. ### Anti-dilution Anti-dilution lowers the investor's conversion price if shares are later sold below its price, so its preferred shares convert into more common shares. It does not protect against ordinary dilution at a higher price. - Market standard: broad-based weighted average, with carve-outs for option grants, conversions of existing instruments and approved acquisitions. - Less favourable: narrow-based weighted average (a smaller A in the formula, so a larger adjustment). - Aggressive: full ratchet, which drops the conversion price to the new price however few shares are sold. Uncommon in venture rounds; tends to appear when the company has little leverage. - Ask for carve-outs and a waiver that a set majority of the protected investors can sign. Run `antidilution` to show the extra shares. ### Pay-to-play Investors keep their protections only if they take up their pro-rata share of a later, usually down, round. Generally helpful to founders because it keeps investors supporting the company. ## Future rounds ### Pro-rata (pre-emptive) rights - Market standard: the right to buy enough of the next round to keep the investor's percentage, often limited to "major investors" above an agreed holding. - Check how ownership is measured: fully diluted or issued shares only. Issued-only gives a larger allocation. - Aggressive: super pro-rata (the right to buy more than its share), especially uncapped or for several rounds. A large pro-rata can crowd out a new lead. ### Right of first refusal (ROFR) The company and/or investors can buy shares a founder wants to sell, on the same terms. Market standard. Check that small transfers to family trusts or for estate planning are excluded. ### Tag-along (co-sale) If founders sell, investors can sell the same proportion of their shares on the same terms. Market standard. ## Control ### Board - Founder-friendly or market standard at seed and Series A: founders keep a majority, or the board is balanced with an independent director both sides agree on. - Aggressive: investors control the board at an early stage, or appoint the independent director alone. ### Protective provisions (reserved matters) Decisions that need the investors' consent. - Market standard: a short, specific list: changing the rights of the investors' shares, issuing senior or equal shares, selling the company, changing the size of the board, large borrowing, winding up. - Aggressive: everyday decisions such as budgets, hiring and firing executives, contracts above a low limit, or any new share issue including employee options, especially with a separate veto for each investor. ### Drag-along Holders above a threshold can make everyone else sell on the same terms. - Founder-friendly: needs founder or common-holder consent, or a minimum price (for example a multiple of the preference). - Market standard: a majority or supermajority of all holders plus a majority of the preferred. - Aggressive: the investors alone can drag, with no minimum price, so a sale that pays only the preference can be forced. ### Founder vesting or re-vesting - Market standard: four years with a one-year cliff, with credit for time already worked if the company is not brand new. - Aggressive: full re-vesting from zero with no credit, or "bad leaver" terms that take back vested shares for reasons other than misconduct. - Ask for double-trigger acceleration: shares vest early if the company is sold and the founder then loses their role. ### Information rights Monthly or quarterly accounts, an annual budget and audit rights. Market standard. Check that the reporting burden is realistic for the team. ## Process ### What binds Usually binding: exclusivity (no-shop), confidentiality, costs and governing law. Usually non-binding: valuation and almost every other term. Either side can walk away from non-binding terms, most often over a due-diligence problem. ### Exclusivity (no-shop) - Market standard: 30–60 days. - Aggressive: longer than 60 days, or no end date. Ask for it to end early if the investor walks away or changes the price. ### Costs Investors often ask the company to pay their legal fees. Market standard with a cap. Aggressive with no cap or a high one. ### Conditions to closing Due diligence, final documents, approvals. Note any condition that depends on a third party, such as a regulator or another investor, because it can delay the money. ## Indian rounds - Investors usually take compulsorily convertible preference shares (CCPS). The term sheet becomes a share subscription agreement (SSA) for the investment and a shareholders' agreement (SHA) for ongoing rights, and the articles of association are amended so those rights can be enforced. - "Reserved matters" is the usual name for protective provisions. - For foreign investors, foreign-exchange rules generally require the conversion formula to be fixed when shares are issued and the conversion price not to fall below the fair value at that time, which can limit how far an anti-dilution adjustment can go. Flag this for the lawyer rather than modelling it.
scripts/term_sheet_math.py178 lines
#!/usr/bin/env python3
"""Term sheet arithmetic: option pool shuffle, liquidation waterfall, anti-dilution.
Standard library only, so it runs in the Claude API sandbox (no network, no
package installs), on claude.ai and in Claude Code.
Usage:
python scripts/term_sheet_math.py pool --pre 20000000 --raise 5000000 \
--pool-post 0.10 --existing 7000000 [--existing-pool 0]
python scripts/term_sheet_math.py waterfall --invested 5000000 --stake 0.20 \
--multiple 1 --participation none|full|cap --cap 3 \
--exits 10000000,25000000,100000000
python scripts/term_sheet_math.py antidilution --old-price 2.5 --new-price 1.25 \
--new-money 5000000 --broad 10000000 [--narrow 9000000] [--invested 5000000]
Amounts are in one currency unit (dollars or rupees); shares are counts.
Results are simplified models for checking a term sheet, not legal advice.
"""
import argparse
import sys
def money(x):
return f"{x:,.0f}"
def pct(x):
return f"{x * 100:.1f}%"
def fail(message):
print(f"Error: {message}", file=sys.stderr)
sys.exit(2)
def pool(args):
"""Investor stake and pool size are fixed on a post-money basis; the pool
is created before the round, so its shares are priced into the pre-money."""
if args.pre <= 0 or args.raise_ <= 0:
fail("--pre and --raise must be positive")
post = args.pre + args.raise_
investor = args.raise_ / post
if not 0 <= args.pool_post < 1 - investor:
fail(f"--pool-post must be between 0 and {1 - investor:.3f} (the investor already takes {pct(investor)})")
# Post-round total T: existing holders keep 1 - investor - pool of it, so
# T = existing / (1 - investor - pool). An existing unallocated pool counts
# toward the target, so only the shortfall is added.
total = args.existing / (1 - investor - args.pool_post)
top_up = args.pool_post * total - args.existing_pool
if top_up < 0:
print(f"Note: the existing pool is already above {pct(args.pool_post)} of post-money, so nothing is added.")
top_up = 0.0
pre_shares = args.existing + args.existing_pool + top_up
price = args.pre / pre_shares
new_shares = args.raise_ / price
total = pre_shares + new_shares
effective_pre = (args.existing + args.existing_pool) * price
print("Option pool shuffle (pool created before the round, inside the pre-money)")
print(f" Post-money valuation: {money(post)}")
print(f" Price per share: {price:,.4f}")
print(f" New investor shares: {money(new_shares)} ({pct(new_shares / total)})")
print(f" Pool shares added: {money(top_up)}")
print(f" Pool after round: {money(args.existing_pool + top_up)} ({pct((args.existing_pool + top_up) / total)})")
print(f" Existing holders after: {money(args.existing)} ({pct(args.existing / total)})")
print(f" Effective pre-money: {money(effective_pre)} (headline {money(args.pre)})")
print(f" Cost of the pool to existing holders: {money(args.pre - effective_pre)}")
if top_up > 0 and args.existing_pool == 0:
# Without the shuffle the investor buys at pre / existing, then a pool
# of the same size dilutes everyone, the investor included.
holders = 1 - investor
print(f" Same pool created after the round instead: existing holders {pct(holders * (1 - args.pool_post))},"
f" investor {pct(investor * (1 - args.pool_post))}")
def waterfall(args):
"""One preferred class, one exit. The investor takes its preference or, if
better, converts to common; participating preferred takes both (up to a cap)."""
if not 0 < args.stake < 1:
fail("--stake must be the investor's as-converted ownership, between 0 and 1")
if args.participation == "cap" and not args.cap:
fail("--participation cap needs --cap (total return multiple, e.g. 3)")
try:
exits = [float(x) for x in args.exits.split(",") if x.strip()]
except ValueError:
fail("--exits must be comma-separated numbers, e.g. 10000000,25000000")
pref = args.invested * args.multiple
if args.participation == "none":
label = "non-participating"
elif args.participation == "full":
label = "fully participating"
else:
label = f"participating, capped at {args.cap:g}x"
print(f"Liquidation waterfall: {args.multiple:g}x {label}, invested {money(args.invested)}, {pct(args.stake)} as converted")
print(f" {'Exit value':>16} {'Investor':>14} {'Everyone else':>14} How the investor is paid")
for exit_value in exits:
converted = args.stake * exit_value
if args.participation == "none":
preferred = min(pref, exit_value)
investor = max(preferred, converted)
how = "converts to common" if converted > preferred else "takes its preference"
elif args.participation == "full":
preferred = min(pref, exit_value)
investor = preferred + args.stake * (exit_value - preferred)
how = "preference plus its share of the rest"
else:
preferred = min(pref, exit_value)
capped = min(preferred + args.stake * (exit_value - preferred), args.invested * args.cap)
investor = max(capped, converted)
how = "converts to common" if converted > capped else ("hits the cap" if capped == args.invested * args.cap else "preference plus its share of the rest")
print(f" {money(exit_value):>16} {money(investor):>14} {money(exit_value - investor):>14} {how}")
def antidilution(args):
"""New conversion price = old price x (A + B) / (A + C).
A = shares outstanding before the new issue (broad: everything incl. options
and the unallocated pool; narrow: a smaller group), B = shares the new money
would buy at the old price, C = new shares actually issued."""
if args.new_price >= args.old_price:
fail("anti-dilution applies only when --new-price is below --old-price")
b = args.new_money / args.old_price
c = args.new_money / args.new_price
rows = [("Broad-based weighted average", args.old_price * (args.broad + b) / (args.broad + c))]
if args.narrow:
rows.append(("Narrow-based weighted average", args.old_price * (args.narrow + b) / (args.narrow + c)))
rows.append(("Full ratchet", args.new_price))
print(f"Anti-dilution: old price {args.old_price:g}, down-round price {args.new_price:g}, new money {money(args.new_money)}")
print(f" B (new money at old price): {money(b)} shares C (shares actually issued): {money(c)}")
if args.invested:
before = args.invested / args.old_price
print(f" The investor's {money(args.invested)} converts into {money(before)} shares at the old price")
print(f" {'Method':<30} {'New price':>10} {'Shares as converted':>20} {'Extra shares':>13}")
else:
print(f" {'Method':<30} {'New price':>10}")
for name, price in rows:
line = f" {name:<30} {price:>10,.4f}"
if args.invested:
after = args.invested / price
line += f" {money(after):>20} {'+' + money(after - before):>13}"
print(line)
def main():
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
sub = parser.add_subparsers(dest="command", required=True)
p = sub.add_parser("pool", help="option pool shuffle and effective pre-money")
p.add_argument("--pre", type=float, required=True, help="headline pre-money valuation")
p.add_argument("--raise", dest="raise_", type=float, required=True, help="amount invested in the round")
p.add_argument("--pool-post", type=float, required=True, help="unallocated pool as a fraction of post-money, e.g. 0.10")
p.add_argument("--existing", type=float, required=True, help="shares held by founders and earlier investors")
p.add_argument("--existing-pool", type=float, default=0, help="unallocated pool shares that already exist")
p.set_defaults(run=pool)
w = sub.add_parser("waterfall", help="what the investor and everyone else get at each exit value")
w.add_argument("--invested", type=float, required=True)
w.add_argument("--stake", type=float, required=True, help="investor's as-converted ownership, e.g. 0.20")
w.add_argument("--multiple", type=float, default=1.0, help="preference multiple, e.g. 1 or 2")
w.add_argument("--participation", choices=["none", "full", "cap"], default="none")
w.add_argument("--cap", type=float, help="total return cap as a multiple of the investment, with --participation cap")
w.add_argument("--exits", required=True, help="comma-separated exit values")
w.set_defaults(run=waterfall)
a = sub.add_parser("antidilution", help="adjusted conversion price in a down round")
a.add_argument("--old-price", type=float, required=True)
a.add_argument("--new-price", type=float, required=True)
a.add_argument("--new-money", type=float, required=True)
a.add_argument("--broad", type=float, required=True, help="A for broad-based: all shares, options and pool")
a.add_argument("--narrow", type=float, help="A for narrow-based, e.g. issued shares only")
a.add_argument("--invested", type=float, help="the protected investor's original investment, to show extra shares")
a.set_defaults(run=antidilution)
args = parser.parse_args()
args.run(args)
if __name__ == "__main__":
main()
Limits
- It is not legal advice and doesn't replace a lawyer acting for the company. It prepares you for that conversation.
- The liquidation model has one preferred class. With several series and stacked preferences, treat the table as a first pass and ask your lawyer for the full waterfall.
- Its sense of 'market standard' describes seed and Series A rounds in general. Terms vary by country, sector and year.
- It reads SAFE and note terms, but its calculations are for priced rounds. Use the cap table modeling skill for SAFE conversion.
- For Indian rounds with foreign investors, foreign-exchange pricing rules can limit anti-dilution adjustments. It flags this rather than modelling it.
Questions
Is this legal advice?
No. The skill turns the term sheet into numbers and compares each clause with common practice, so you go into the conversation with your lawyer knowing what to ask. Every review it writes ends by saying so.
Does it work with Indian term sheets?
Yes. It knows that Indian investors usually take CCPS, that the term sheet becomes a share subscription agreement and a shareholders' agreement, and that protective provisions are usually called reserved matters. For foreign investors it flags that foreign-exchange pricing rules can limit how far a conversion price can be adjusted.
Does the skill send my term sheet anywhere?
The skill itself is instructions and a Python script with no network calls, so it sends nothing anywhere. The document you upload is handled under your Claude plan's normal data terms, so check those before sharing anything confidential.
Can it review a SAFE or convertible note?
It reads and rates SAFE and note terms such as the valuation cap, discount and most-favoured-nation clause, but its calculations are for priced rounds. Pair it with the cap table modeling skill to see what a SAFE converts into.
Why does it ask for our share count?
The option pool and anti-dilution maths needs share counts, not just percentages. If you don't have them to hand, it works from the percentages in the term sheet and says the share counts are illustrative.
Learn what the skill checks
The skill is built from the same rules and formulas as these StartupReader pages, so you can follow its reasoning step by step.
- ExplainerTerm sheet explained: the key terms and what is binding →A term sheet sets out the main terms of a startup investment before the legal documents. Valuation, option pool, preferences, control rights and what binds.
- ExplainerPre-money vs post-money valuation, with examples →Pre-money is what a startup is worth before new investment; post-money adds the new money. How to calculate both, investors' ownership and the option pool effect.
- ExplainerLiquidation preference explained, with worked examples →A liquidation preference decides who gets paid first when a startup is sold. 1x non-participating vs participating, worked through at two exit prices.
- ExplainerAnti-dilution protection: full ratchet vs weighted average →Anti-dilution clauses protect investors if a later round is priced lower. Full ratchet vs broad- and narrow-based weighted average, with a down-round example.
- ExplainerPro-rata rights explained: how investors keep their stake →Pro-rata rights let investors buy into later rounds to keep their percentage. How the maths works, super pro-rata, major investor thresholds and why it matters.
- ExplainerDrag-along and tag-along rights explained, with an example →Drag-along rights let a majority make the rest sell in an exit; tag-along rights let minority holders join a sale. Thresholds, terms and an Indian SHA example.
- CalculatorStartup dilution calculator →Model rounds, pool top-ups and dilution share by share.
- CalculatorSAFE conversion calculator →See whether a post-money SAFE converts at its valuation cap or discount in a priced round, and who owns what afterwards.
Pairs well with
- Claude skill · Equity and cap tablesCap table modeling →A free Claude skill that converts your SAFEs and convertible notes, tops up the option pool and shows who owns what after your next priced round.
- Claude skill · FundraisingDue diligence prep →A free Claude skill that builds your data room index from file names, maps your documents to a due diligence checklist and flags the gaps and red flags.
- Claude skill · Equity and cap tablesFounder equity split →A free Claude skill that suggests a co-founder equity split from weighted scores, then models vesting, a founder leaving and dilution from funding rounds.
- Claude skill · FundraisingPitch deck review →A free Claude skill that reviews your investor deck slide by slide, rebuilds your market size bottom-up and checks that every number agrees.
- Claude skill · Metrics and investor updatesSaaS metrics analysis →A free Claude skill that turns an MRR export into the monthly MRR bridge, churn, NRR, GRR and ARPA, then LTV:CAC, CAC payback, runway and burn multiple.
- Claude skill · Metrics and investor updatesInvestor update writing →A free Claude skill that drafts monthly or quarterly investor updates: a KPI table with changes, lowlights up front, specific asks, net burn and runway.
The weekly brief
More on term sheet review, once a week
Who raised, who launched and the founder terms worth knowing, in one short email a week.
The StartupReader app
Startup news in 60-second swipes
Funding, launches and founder programs, each on one card with the key numbers. Free, with read-aloud and auto-scroll.
Building something? List your startup free.
Written and tested by the StartupReader editorial desk with AI assistance; the example outputs are the skill's scripts run on the made-up figures shown. StartupReader is not affiliated with Anthropic. The skill gives general information, not legal, tax or financial advice. Spotted something wrong? Tell us.