Compute Rule of 40 so Growth and Margin Are One Board Number, Not Two Stories
The problem
Growth-at-all-costs and margin-at-all-costs both look fine in isolation; Rule of 40 is the board check that growth % plus profit margin % should clear about 40 for a healthy SaaS tradeoff, and most teams do not have a shareable calculator for scenarios.
Run it in your LLM
One prompt for Claude or ChatGPT that turns a YoY P&L window into the board check that growth and profit have to be traded off together: growth % plus margin % vs a stated target. Type run the example after pasting it to test it on the fictional data built into the prompt.
# Rule of 40
You are a RevOps and FP&A lead reporting to the CFO. From starting and ending revenue over a YoY window and a profit figure, compute Rule of 40 = growth % + profit margin %, show how much of the score is growth vs margin, and show what growth or margin change alone would clear a stated target, with every number traceable to the extract.
## Rules
- Use only the data in this conversation. Do not invent Rule of 40 benchmarks, "healthy SaaS" cutoffs, or peer medians. If something is missing, ask for it, or use the fallback this prompt defines and label it as an assumption.
- Run the calculations in code if you can. If you cannot run code, say so at the top and show the working.
- Show the formula next to every headline number.
- The 40 is a common board target and an input here, not a law. Default it only when the user says "run the example".
- Name the margin: free cash flow margin (default), operating margin, or EBITDA margin. The formula is the same; the numerator changes. Do not call FCF margin "GAAP profit".
- Read only. Do not change anything in the ledger. Report what the numbers imply and leave the tradeoff to the user.
- Format: money to the nearest dollar, percentages and the score to one decimal.
## Definitions
- Starting revenue (or ARR) is the prior year. Ending revenue (or ARR) is the current year. Growth % = (ending - starting) / starting x 100. ARR is a snapshot; if the user gives ARR, label the growth as ARR growth, not recognized revenue growth.
- Profit margin % = profit / ending x 100. Default profit is free cash flow for the ending year. Operating income and EBITDA are allowed when the user names them. A loss is a negative profit.
- Rule of 40 score = growth % + margin %. Points below target = target - score (negative means above the target).
- Growth-only bridge: the growth % that hits the target holding margin fixed = target - margin %. Ending revenue at that growth = starting x (1 + that growth / 100).
- Margin-only bridge: the margin % that hits the target holding growth fixed = target - growth %. Profit at that margin = ending x that margin / 100.
## Step 0. Inputs
If the user says "run the example", use the EXAMPLE DATA section at the end of this prompt, do not ask any questions, and label every output "Example data (fictional)".
Otherwise ask for everything below in one message, skipping anything the user already gave:
1. A CSV of fiscal years, one row per year, with these columns (ask the user to map theirs):
- fiscal_year, revenue, fcf, operating_income, ebitda
Where to get it: the P&L and cash flow statement, or ARR from billing if they want an ARR version. Say which one you used.
2. Which two years are the YoY window. Default: the last two complete years in the file.
3. Which profit to use: fcf (default), operating, or ebitda.
4. The target score. Default 40 only if they ask you to pick; otherwise they name it.
Then report a data check: rows read; rows left out and why (duplicate year, no revenue); years kept; starting and ending revenue; profit used and which column it came from. Ask the user to confirm before going on, unless they said "run the example".
## Step 1. Score
- Growth % = (ending - starting) / starting x 100.
- Margin % = profit / ending x 100.
- Score = growth % + margin %.
- Growth-only: growth to clear, ending revenue at that growth, gap vs current ending.
- Margin-only: margin to clear, profit at that margin on current ending, gap vs current profit.
## Step 2. Output
Start with a five-line summary:
- Headline: "Rule of 40 is {score}: {growth} growth + {margin} {kind} margin, {points} points {below|above} a {target} target."
- Contribution: which of growth or margin is doing more of the work, as arithmetic, not a judgment.
- Growth-only: the ending revenue that would clear the target at today's margin.
- Margin-only: the profit that would clear the target at today's growth.
- One line: "Window {start} to {end}; profit is {kind}; {excluded} rows were left out."
Then these tables:
1. Data check
2. Score (starting, ending, profit, growth %, margin %, score, target, points below)
3. Bridges (growth-only ending and gap; margin-only profit and gap)
4. Assumptions, each labeled as an assumption, including: ARR vs recognized revenue; which profit; the target; history is not a forecast.
If you can create files, offer the score row as a CSV download.
## EXAMPLE DATA (fictional, for testing this prompt)
Use this only when the user says "run the example". The company and years are made up.
- Window: fiscal 2025 to fiscal 2026
- Profit: free cash flow (fcf column)
- Target 40 (example input, the namesake, not a law)
Years:
```csv
fiscal_year,revenue,fcf,operating_income,ebitda
2025,10000000,800000,400000,1500000
2026,12000000,1200000,900000,2100000
2026,12000000,1200000,900000,2100000
2024,0,0,0,0
```
How to run it
- Open Claude or ChatGPT with code execution on (Claude's analysis tool, ChatGPT data analysis). Without it the model does arithmetic by hand, and you should check every number.
- Paste the prompt. To test it first, send "run the example" and compare with the expected results below.
- Attach a CSV of fiscal years with revenue, FCF, operating income, and EBITDA, and give the prompt the two years, which profit to use, and your target. The prompt lists the columns.
- Read the data check first, then take the score, the growth vs margin split, and the two bridges to the board pack. Name the margin. Do not call FCF GAAP profit.
Before you paste P&L data
Revenue and profit are commercially sensitive. Check your company's AI and data policy, prefer a business or enterprise plan, and drop entity names you do not need: the prompt only needs years and amounts. It reads the extract and changes nothing in the ledger.
Expected results on the example data
A correct run of "run the example" should match these, give or take rounding. They are computed from the prompt's definitions by a reference implementation that is tested against hand-worked numbers. The data is fictional.
- Data check
- 4 rows; window 2025 to 2026; left out: 2026 (duplicate fiscal year), 2024 (no revenue)
- Growth
- ($12,000,000 - $10,000,000) / $10,000,000 = 20.0%
- FCF margin and score
- $1,200,000 / $12,000,000 = 10.0%; score 30.0; 10.0 points below 40
- Bridges to 40
- Growth-only ending $13,000,000 ($1,000,000 more); margin-only profit $2,400,000 ($1,200,000 more)
| Window | Growth | FCF margin | Score | Points below | Growth-only ending | Margin-only profit |
|---|---|---|---|---|---|---|
| 2025 to 2026 | 20.0% | 10.0% | 30.0 | 10.0 | $13,000,000 | $2,400,000 |
ARR grows from $10,000,000 to $12,000,000 (20.0%) with $1,200,000 of FCF (10.0% margin). Score 30.0, 10.0 points below 40. Holding margin fixed, ending ARR would have to be $13,000,000. Holding growth fixed, FCF would have to be $2,400,000. Those are sizing numbers, not a forecast.
Rule of 40
Score = YoY growth % + profit margin %. Default profit is free cash flow; switch the label if you are using operating income or EBITDA. Prefilled with the fictional example.
- Rule of 40 score
- 30.0
- 20.0% growth + 10.0% free cash flow margin
- YoY growth
- 20.0%
- ($12,000,000 - $10,000,000) / $10,000,000
- free cash flow margin
- 10.0%
- $1,200,000 / $12,000,000
- Points below the target
- 10.0
- Target 40.0
- Growth-only ending to clear
- $13,000,000
- 30.0% growth holding margin fixed (+$1,000,000)
- Margin-only profit to clear
- $2,400,000
- 20.0% margin holding growth fixed (+$1,200,000)
If you enter ARR, the growth line is ARR growth, not recognized revenue. FCF margin is cash, not GAAP profit. Holding growth or margin fixed is a sizing device, not a forecast of what a price change or a cost cut would do. The 40 is an input.
Implementation steps
- 1
Write the window and the profit definition down with finance: starting and ending revenue (or ARR) over a YoY year, and which profit is in the margin (free cash flow by default, or operating income, or EBITDA). ARR growth is not recognized-revenue growth; FCF margin is not GAAP profit. Put the labels on the tab
- 2
Export two complete years with revenue, FCF, operating income, and EBITDA. Drop duplicate years and rows with no revenue, and list each dropped row
- 3
Growth % = (ending - starting) / starting x 100. Margin % = profit / ending x 100, using the profit you named. Score = growth % + margin %. Points below the target = target - score (negative means above)
- 4
Show the contribution: how many points came from growth vs from margin, as arithmetic, not as a verdict on which is better
- 5
Growth-only bridge, holding margin fixed: the growth % that hits the target = target - margin %. Ending revenue at that growth = starting x (1 + that growth / 100). Margin-only bridge, holding growth fixed: the margin % that hits the target = target - growth %. Profit at that margin = ending x that margin / 100
- 6
The 40 is a common board target and an input (40 in the fictional example). If the score is already above, the bridges show how far ending revenue or profit could fall and still hit. Those are sizing numbers, not a forecast
- 7
Run it with the copy-paste prompt on this page in Claude or ChatGPT, or with formulas in the template, and use the calculator on this page to test FCF vs operating vs EBITDA and other targets. Share the score, the split, and the two bridges with the CFO
- 8
Rerun each year when the books close, and optionally each quarter on a trailing twelve-month window using the same profit definition, and store the score so a growth slowdown or a margin recovery shows up in the next board pack
Template outline
The structure to recreate in your own workspace. Field names and thresholds are starting points.
Google Sheet: Rule of 40 FYxx (Finance owns it)
Tab inputs: start_year, end_year, margin_kind (fcf / operating / ebitda), target (default 40, an input)
Tab years (one row per fiscal year):
fiscal_year, revenue, fcf, operating_income, ebitda
kept = unique year AND revenue > 0
profit = the column named by margin_kind on the ending year
Tab score:
growth_pct = (ending - starting) / starting x 100
margin_pct = profit / ending x 100
score = growth_pct + margin_pct
points_below = target - score
growth_to_clear = target - margin_pct
ending_at_growth = starting x (1 + growth_to_clear / 100)
margin_to_clear = target - growth_pct
profit_at_margin = ending x margin_to_clear / 100
Worked example (example data, fictional): 2025 to 2026, FCF, target 40
4 rows read, 2 kept. Left out: 2026 listed twice; 2024 no revenue.
Starting $10,000,000. Ending $12,000,000. Growth 20.0%.
FCF $1,200,000 / $12,000,000 = 10.0% margin. Score 30.0. 10.0 points below 40.
Growth-only: need 30.0% growth. Ending $13,000,000 ($1,000,000 more).
Margin-only: need 20.0% FCF margin. Profit $2,400,000 ($1,200,000 more).
Calculator on this page, prefilled: starting $10,000,000, ending $12,000,000, FCF $1,200,000, target 40. Every money line above matches.
Slack to #finance after year close:
"Rule of 40 {{end_year}}: {{score}} ({{growth}} growth + {{margin}} {{kind}}).
{{points}} vs {{target}}. Growth-only ending {{ending_at_growth}}; margin-only profit {{profit_at_margin}}.
Sheet: {{sheet_url}}"
Tab history: year, growth, margin, score, target, points_belowCost, time saved, and break-even
Tool cost here is your share of an LLM plan, which depends on your vendor, so it is an input. Every number below is an example input; replace each with your own figure.
Inputs (all assumptions)
Replace each value with your own figure.
- THours a quarter to pull a trailing-twelve-month P&L window and compute Rule of 40 by hand, including a couple of scenarios3AssumptionTime the next board-pack Rule of 40 slide.
- VHours a quarter with the prompt or template (export, review the data check and the results)0.5AssumptionTime the first two quarterly runs.
- RLoaded hourly cost of the FP&A analyst$75AssumptionSalary plus benefits, divided by working hours.
- KMonthly tool cost for the LLM plan$20AssumptionYour share of the Claude or ChatGPT plan, from current vendor pricing and your invoices; Google Sheets and Slack are usually already paid for.
Formulas
- Time saved per quarter
T - V - 3 - 0.5 = 2.5 hours
- Time saved per week
(T - V) / 13 - 2.5 / 13 = 0.2 hours
- Value of time saved per quarter
(T - V) x R - 2.5 x $75 = $187.50
- Tool cost per quarter
K x 3 - $20 x 3 = $60
- Break-even hours per quarter
K x 3 / R - $60 / $75 = 0.8 hours, so the run covers its tool cost once it saves 48 minutes a quarter
- Rule of 40 (fictional example data)
growth % + FCF margin % - 20.0 + 10.0 = 30.0; 10.0 points below a 40 target
- The time math counts analyst time only. A growth or margin change that moves the score is a much larger number, but that decision is yours, so it is not added to the time savings.
- Holding growth or margin fixed is a sizing device. Recheck when the books close.
- Rerun the time math after the first two years with your real review time V.
Common questions
- How do you calculate Rule of 40?
- Score = YoY revenue growth % + profit margin %. In the fictional example ARR grows from $10,000,000 to $12,000,000 (20.0%) and FCF is $1,200,000 (10.0% of ending), so the score is 30.0. The 40 is a target you set, not a law.
- Which profit margin should I use?
- This page defaults to free cash flow margin (FCF / ending revenue). Operating margin and EBITDA margin use the same formula with a different numerator. Name which one you used. FCF is cash, not GAAP profit, and is not ASC 606 revenue.
- What if we are below 40?
- Show two sizing bridges, each holding the other number fixed. In the fictional example, 10.0 points below 40: growth would have to be 30.0% (ending $13,000,000) at today's margin, or FCF margin 20.0% (profit $2,400,000) at today's growth. That is not a forecast of a price change or a cost cut.
- Is ARR growth the same as revenue growth?
- No. ARR is a snapshot of contracted recurring revenue. Recognized revenue follows the books, including deferred amounts. If you enter ARR, label the growth line as ARR growth. The fictional example uses ARR as the revenue stand-in and says so.
- Does a score above 40 mean we should grow slower or spend more?
- The score does not decide that. If you are above the target, the bridges show how far ending revenue or profit could fall and still hit. The tradeoff is yours. This page does not treat 40 as a ceiling or a floor other than the input you type.
Keep going
Related playbooks
- Finance/FP&AIntermediate
Compute the SaaS Magic Number so Blended CAC Stops Answering "Are We Efficient?"
Boards ask "are we efficient?" and finance answers with a blended CAC or burn multiple that hides whether last quarter's S&M actually produced enough net-new ARR to justify the spend.
HubSpot or SalesforceGoogle SheetsClaude or ChatGPT+1Estimate: 0.3 hrs/week - Finance/FP&AIntermediate
Measure LTV:CAC by Segment so Blended Payback Stops Hiding the Ones That Never Pay Back
Blended LTV:CAC hides that some segments never pay back while others carry the business, so budget and SDR time keep funding the wrong ones.
HubSpot or SalesforceGoogle SheetsClaude or ChatGPT+1Estimate: 0.4 hrs/week - Finance/FP&AIntermediate
Measure Logo Churn and Gross Retention by Acquisition Cohort
Net revenue retention is usually one period number, so nobody can see whether last winter's cohort is still paying, how much of its starting ARR has churned, and whether expansion on the logos that stayed is hiding a logo problem.
StripeHubSpot or SalesforceGoogle Sheets+2Estimate: 0.3 hrs/week - Finance/FP&AIntermediate
Measure How Much ARR Sits in the Top Logos, and the Bookings Hit If They Churn
Board and finance ask how much ARR sits in the top accounts, but the answer is a one-off spreadsheet, so nobody sees concentration drift or the bookings hit if the top 1, 3, or 10 churn.
StripeHubSpot or SalesforceGoogle Sheets+2Estimate: 0.3 hrs/week - Finance/FP&AIntermediate
Compute the SaaS Burn Multiple so the Board Sees Dollars of Net Burn per Dollar of Net-New ARR
Boards ask how efficiently cash is turning into growth, and finance answers with a cash-down number that mixes a fundraise into the story, or with a blended CAC that never shows how many dollars of net burn it took to add a dollar of net-new ARR.
Google SheetsClaude or ChatGPTSlackEstimate: 0.3 hrs/week - Finance/FP&AIntermediate
Compute the SaaS Quick Ratio so Growth Quality Is Visible, Not the Balance-Sheet Quick Ratio
Boards hear "we grew" without seeing whether new-plus-expansion ARR outran churn-plus-contraction, and some packs paste the balance-sheet quick ratio (current assets minus inventory, over current liabilities) onto a SaaS slide by mistake.
Google SheetsClaude or ChatGPTSlackEstimate: 0.2 hrs/week
Need help implementing a playbook?
Our team builds custom Clay workflows and AI automations for revenue teams.
Get it built for you