Business Planning & Financial Modeling
Build P&L statements, budgets, and financial projections with CalcMark.
Revenue forecasts, cost breakdowns, margin analysis, budget health checks — financial models are just calculations embedded in narrative. CalcMark makes the narrative and the math live in one document.
Try it now: Open the Household Budget in Lark or run cm remote household-budget in the editor.
Key Features for This Domain #
| Feature | What It Does | Reference |
|---|---|---|
Currency arithmetic ($100 + $50) | Add, subtract, multiply currencies naturally | Currency |
sum of a, b, c | Sum multiple line items without long + chains | Functions |
number() for ratios | Strip currency for dimensionless ratios: number($500) / number($1000) → 0.5 | Formatting |
% of syntax | 20% of income → percentage calculation | Percentages |
{{variable}} interpolation | Embed results in prose: “Total: {{revenue}}” | Templates |
| Exchange rates | Convert between currencies with frontmatter rates | Currency |
| Growth functions | compound($1000, 7%, 10 years) for projections | Growth Functions |
Walkthrough: Budget Health Check #
Step 1: Income #
Start with gross income and deductions:
salary_1 = $6500
salary_2 = $5200
total_gross = salary_1 + salary_2
tax_rate = 0.24
net_income = total_gross * (1 - tax_rate)| salary_1 = $6500 | → | $6,500.00 |
| salary_2 = $5200 | → | $5,200.00 |
| total_gross = salary_1 + salary_2 | → | $11.7K |
| tax_rate = 0.24 | → | 0.24 |
| net_income = total_gross * (1 - tax_rate) | → | $8,892.00 |
Currency arithmetic preserves the $ through every operation.
Step 2: Expenses with sum of
#
Group expenses and total them without long addition chains:
rent = $1800
utilities = $250
insurance = $150
groceries = $600
dining_out = $300
fixed_costs = sum of rent, utilities, insurance
variable_costs = sum of groceries, dining_out
total_expenses = fixed_costs + variable_costs| rent = $1800 | → | $1,800.00 |
| utilities = $250 | → | $250.00 |
| insurance = $150 | → | $150.00 |
| groceries = $600 | → | $600.00 |
| dining_out = $300 | → | $300.00 |
| fixed_costs = sum of rent, utilities, insurance | → | $2,200.00 |
| variable_costs = sum of groceries, dining_out | → | $900.00 |
| total_expenses = fixed_costs + variable_costs | → | $3,100.00 |
Step 3: Ratios with number()
#
Dividing currency by currency is an error — dollars divided by dollars doesn’t produce a dollar amount. Wrap both sides with number() to get a dimensionless ratio:
savings = net_income - total_expenses
savings_rate = number(savings) / number(net_income) * 100| savings = net_income - total_expenses | → | $5,792.00 |
| savings_rate = number(savings) / number(net_income) * 100 | → | 65.1 |
savings_rate is a plain number (e.g., 41.5) representing a percentage. Which side you wrap matters — $100 / number($50) gives $2.00 (currency), while number($100) / number($50) gives 2 (plain number). See number() reference for the full type rules.
Step 4: Inline Results with Templates #
Put a summary at the top of your document that updates automatically:
## Monthly Summary
Net income: {{net_income}}
Total expenses: {{total_expenses}}
Savings: {{savings}} ({{savings_rate}}%)
The {{variable}} tags are replaced with formatted values after all calculations run. Forward references work — your summary can appear before the calculations.
What to Read Next #
- Complete examples: Household Budget, Services P&L, Job Offer Comparison
- Investment modeling: Investment Growth — compound growth, depreciation
- Functions reference: Growth Functions
- Language spec: Type Arithmetic Rules, Template Interpolation