Startup CFO
6-Month Cash Flow Forecast β Updated Every Monday Morning
Key Takeaway
Warren generates a rolling 6-month cash flow forecast every Monday using Monte Carlo simulation with 1,000 scenarios, giving us P10/P50/P90 confidence bands instead of a single guess.
The Problem
Cash flow forecasting is the most important and most wrong exercise in corporate finance.
Important because running out of cash kills companies. Wrong because every forecast is built on assumptions that are partially fictional. "We'll close 3 new clients in Q2" β maybe. "Payment from Client X arrives in 30 days" β sometimes it's 60.
At PyratzLabs, the standard forecast was a spreadsheet. One row per month. Known recurring revenue, expected new deals, known expenses, planned hires. A single number per month that was almost certainly wrong.
The problem isn't the model. The model is fine. The problem is that a single-point forecast creates false confidence. "We have 8 months of runway" means nothing if the P10 scenario (where some deals slip and a payment is delayed) shows 4 months.
I don't want a forecast. I want a probability distribution.
The Solution
Warren builds a rolling 6-month cash flow forecast with a Monte Carlo layer. Known items (recurring revenue, signed contracts, payroll) are deterministic. Uncertain items (pipeline deals, payment timing, new client acquisition) are probabilistic. The agent runs 1,000 simulations and outputs confidence bands: P10 (pessimistic), P50 (expected), and P90 (optimistic).
Every Monday morning, the forecast updates automatically. Warren reviews it. If something material shifted, it escalates to me. If not, it logs quietly and we move on.
The Process
Forecast input structure:
yamlShow code
# cash-flow-forecast config
schedule: "0 6 * * 1" # Monday 6AM UTC
forecast_horizon: 6 # months
simulations: 1000
currency: EUR
deterministic_items:
recurring_revenue:
- source: "Billy SaaS"
monthly: 180000
confidence: 0.99 # effectively certain
- source: "Consulting retainers"
monthly: 45000
confidence: 0.95
fixed_expenses:
- item: "Payroll (all entities)"
monthly: 320000
- item: "Cloud infrastructure"
monthly: 28000
- item: "Office + admin"
monthly: 15000
probabilistic_items:
pipeline_revenue:
- client: "Enterprise Deal A"
amount: 150000
probability: 0.60
expected_close: "month_2"
payment_delay_days: { mean: 45, std: 15 }
- client: "Enterprise Deal B"
amount: 85000
probability: 0.35
expected_close: "month_3"
payment_delay_days: { mean: 30, std: 10 }
variable_expenses:
- item: "New hire (senior engineer)"
monthly_cost: 12000
probability: 0.70
start_month: 2
- item: "Conference + travel"
quarterly: 15000
variance: 0.30
alerts:
min_cash_buffer: 200000
alert_on: "P10" # alert if pessimistic scenario breaches buffer
Monte Carlo engine:
pythonShow code
def monte_carlo_forecast(config, n_simulations=1000):
results = []
for _ in range(n_simulations):
monthly_cash = [config.current_balance]
for month in range(1, config.horizon + 1):
inflow = config.deterministic_revenue(month)
outflow = config.deterministic_expenses(month)
# Probabilistic items: coin flip per simulation
for deal in config.pipeline:
if random.random() < deal.probability:
close_month = deal.expected_close
delay = max(0, np.random.normal(
deal.payment_delay_mean, deal.payment_delay_std
))
payment_month = close_month + int(delay / 30)
if payment_month == month:
inflow += deal.amount
for expense in config.variable_expenses:
if random.random() < expense.probability:
if expense.applies_to(month):
outflow += expense.sample_amount()
net = inflow - outflow
monthly_cash.append(monthly_cash[-1] + net)
results.append(monthly_cash)
# Calculate percentiles
results_array = np.array(results)
p10 = np.percentile(results_array, 10, axis=0)
p50 = np.percentile(results_array, 50, axis=0)
p90 = np.percentile(results_array, 90, axis=0)
return ForecastResult(p10=p10, p50=p50, p90=p90, raw=results_array)
Monday morning output:
View details
π CASH FLOW FORECAST β Week of March 9, 2026
Rolling 6-month view | 1,000 simulations
Month | P10 (Pessimistic) | P50 (Expected) | P90 (Optimistic)
---------|-------------------|----------------|------------------
Mar 2026 | β¬1,240K | β¬1,310K | β¬1,380K
Apr 2026 | β¬1,080K | β¬1,195K | β¬1,340K
May 2026 | β¬920K | β¬1,110K | β¬1,350K
Jun 2026 | β¬780K | β¬1,040K | β¬1,410K
Jul 2026 | β¬650K | β¬985K | β¬1,480K
Aug 2026 | β¬510K | β¬940K | β¬1,560K
β οΈ ALERT: P10 scenario breaches β¬200K minimum buffer in month 6
At the 10th percentile, cash drops to β¬510K in August β above buffer,
but trending toward it.
Key drivers of downside:
β’ Enterprise Deal A (β¬150K) doesn't close: -β¬150K
β’ Enterprise Deal B (β¬85K) delays to Q4: -β¬85K
β’ Payment delays extend to 60 days: -β¬90K working capital impact
β’ New hire starts on schedule despite revenue miss: -β¬72K
Recommendation: Consider accelerating Deal A closing or establishing
a β¬200K credit line as insurance against the P10 path.
Ξ vs last week: P50 improved by β¬35K (Billy MRR increase recognized)
The Results
| Metric | Static Spreadsheet (Before) | Monte Carlo Agent (After) |
|---|---|---|
| Forecast type | Single-point | Probability distribution |
| Update frequency | Monthly (manual) | Weekly (automated) |
| Scenarios modeled | 1 | 1,000 per run |
| Time to produce | 4-6 hours | Automated (0 hours) |
| Early warning capability | None (reactive) | P10 alerts (proactive) |
| Accuracy (P50 vs actual, 3-month) | Β±18% | Β±7% |
Try It Yourself
Install the startup-financial-modeling and monte-carlo-financial-simulator skills on Mr.Chief. Configure your known revenue, expenses, and pipeline with probability estimates. The agent runs the simulations and delivers the forecast on your schedule.
The key insight: you don't need a perfect forecast. You need to know the range of outcomes. When the pessimistic scenario still looks fine, you sleep well. When it doesn't, you act early.
A single-point forecast is a lie you tell yourself. A probability distribution is the truth with error bars. I'll take the truth.
Related case studies
Startup CFO
PyratzLabs Runway Simulator β What the Board Sees Every Quarter
Monte Carlo runway simulation with 10,000 scenarios replaced back-of-napkin estimates. How AI agents give our board probabilistic cash runway forecasts with confidence intervals.
Startup CFO
Monthly P&L From Pennylane in 30 Seconds β Formatted for the Board
AI agent pulls Pennylane transactions, reconciles against Qonto, generates consolidated P&L across entities, and builds a 6-month cash flow forecast β in 30 seconds.
Startup CFO
Monte Carlo Says We Have 18 Months of Runway β With 94% Confidence
10,000 Monte Carlo simulations for startup runway projections. 94% confidence on 18 months, sensitivity analysis on revenue and churn. Board-ready, not guesswork.
Want results like these?
Start free with your own AI team. No credit card required.