Phase Space AI

Financial Model Notes

Salesforce [CRM]

Salesforce, Inc. [CRM] — Financial Model Notes

As of 2026-07-29. How the numbers in this memo were built, what was rejected, and what a model must not do. Every figure traces to a primary filing; the reproduction scripts are committed under work/.


1. Data provenance

Item Source Retrieval
Prices Alpaca v2/stocks/snapshots and v2/stocks/{sym}/bars work/fetch_prices.py, work/gap_check.py
Fundamentals SEC XBRL companyfacts CIK 0001108524 work/edgar_pull.py, work/extract.py
Balance sheet, income statement 10-Q Q1 FY27 primary document crm-20260430.htm, read directly work/fetch_docs.py, work/q.py
Disclosure language FY24/FY25/FY26 10-Ks + Q1 FY27 10-Q, full text work/censor.py, work/mentions.py
Earnings detail 8-K Ex-99.1 crm-q1fy27xexhibit991.htm, crm-q4fy26xexhibit991.htm work/fetch_pr.py
Multiple history own P/S by fiscal quarter, explicit split factors work/multiple_hist3.py
Implied path ~/.claude/skills/investment-memo/assets/reverse_dcf.py work/run_paths.py, work/run_exit.py
Peer anchor XBRL + balance sheets for 11 comparators work/anchor.py
Option chain Alpaca paper-api/v2/options/contracts + v1beta1/options/snapshots work/liquidity.py

Recency asserted. Latest filing period 2026-04-30, filed 2026-05-28 — 62 days old at the memo date. The GOOGL failure (485-day-stale companyfacts) and the Alcon failure (US filing history ending 2010) do not apply.


2. Quarterly series construction, and the trap in it

Salesforce's fiscal Q4 is not separately tagged in XBRL — only the full year is. Any naive quarterly series therefore skips Q4 entirely, which is the defect that produced a TTM missing a quarter elsewhere tonight.

Method used: Q4 = full-year value less the three filed quarters inside the same annual period, with contiguity enforced (each consecutive period end 80–100 days apart) before any TTM is summed.

Quarter ended Revenue ($m) Derivation
2025-04-30 9,829 filed 10-Q
2025-07-31 10,236 filed 10-Q
2025-10-31 10,259 filed 10-Q
2026-01-31 11,201 derived: FY26 41,525 − (9,829 + 10,236 + 10,259)
2026-04-30 11,133 filed 10-Q

TTM revenue = 10,236 + 10,259 + 11,201 + 11,133 = $42,829m. Matches the screen exactly, which is a genuine cross-check rather than a coincidence: both used TTM rather than last-FY. Note that last-FY revenue ($41,525m) would have understated the base by 3.1% — small here, but the same error understated MU by 136% and SNDK by 76% tonight.


3. The share-count problem, and the two defensible answers

Basis Count Use
dei cover page, 2026-05-21 819.0m Market cap today. What the screen used. Correct as filed.
Diluted weighted average, Q1 FY27 871m EPS cross-check only. A weighted average spanning the ASR; not a point-in-time count.
Pro-forma for ASR completion ~793m Forward EPS and the 12-month target

Both 819m and 793m are right, for different questions, and a model that mixes them is wrong. The ASR delivered 103m of ~129m shares upfront and the remaining ~26m settle in Q3 FY27 with the cash already paid. So: enterprise value is unaffected by the residual delivery; equity value per share is not.

A model must not use 871m for anything except reproducing filed EPS. Doing so overstates the market cap by 6.3%.

Cross-check, mandatory per the brief: net income ÷ diluted shares = 2,107 ÷ 871 = $2.419 against filed diluted EPS of $2.42. ✓ Scale confirmed; no 4.1x or 54% share-count error of the kind found elsewhere tonight.


4. Net cash — the components, read from the balance sheet

The brief records net cash wrong on 11 of 11 names tonight, so this is itemised rather than asserted.

Component 2026-04-30 ($m) Included?
Cash and cash equivalents 8,935 Yes
Marketable securities (current) 2,902 Yes
Debt, current 0 Yes
Noncurrent debt (39,280) Yes
Net cash, ex-lease (27,443) HEADLINE
Operating lease liabilities, current (557) Disclosed, excluded
Operating lease liabilities, noncurrent (2,047) Disclosed, excluded
Net cash incl. all leases (30,047) Alternative
Strategic investments 7,772 Disclosed, excluded
Net cash incl. leases and strategic investments (22,275) Alternative

Tags checked per the brief's instruction: LongTermDebt (39,280 @ 2026-04-30 — matches the balance sheet's noncurrent debt, so it is the total and there is no separate current tranche), LongTermDebtCurrent (0), LongTermDebtNoncurrent (39,280 — identical to LongTermDebt; adding both would double-count $39.3bn), ConvertibleDebtNoncurrent (last reported 2014, not applicable), MarketableSecurities* (MarketableSecuritiesCurrent last reported 2014-10-31 — stale by twelve years; the live tag is AvailableForSaleSecuritiesDebtSecuritiesCurrent at 2,902).

That last point is the trap. A pipeline that looks for MarketableSecuritiesCurrent finds a real, well-formed 2014 value of $51.2m and, if it does not check the date, silently uses it. The screen avoided this by using the AFS tag. It is recorded here because the same pattern is live in ADBE and PANW.

Reconciliation to the screen: screen −$30,025m = 11,837 − 39,280 − 260 (finance lease noncurrent, stale at 2026-01-31) − 275 (finance lease current, stale) − 2,047. It included finance leases from a prior period end and omitted the current operating lease. Difference from my figure: $2,582m, 1.4% of EV. Reported, not silently adopted.


5. Adjustments applied, with reasons

# Adjustment Effect Why
1 Strip $444m Informatica from Q1 FY27 revenue growth 13.3% → 8.8% Company-disclosed. The growth rate is the input the framework ranks on and it must be organic.
2 Strip $558m strategic-investment gain from net income EPS $2.42 → ~$1.92 Non-operating, non-recurring, swung $621m YoY.
3 Step shares to 793m for forward work +3% to forward EPS Announced ASR completion; cash already spent.
4 Exclude strategic investments from net cash EV +$7,772m vs the alternative Illiquid, marked, and the marks are the very item adjusted out in (2). Including them would double-count the optimism.
5 Use ex-lease net debt as headline EV −$2,604m vs incl-lease Consistency with the peer anchor set, which was computed on the same basis.

No adjustment made for SBC. SBC is a real cost, it is 8.3% of revenue, and the GAAP operating margin of 20.4% already carries it. The non-GAAP 34.8% is reported for reference only and is never used as a terminal margin.


6. What the model deliberately does not contain


7. Known weaknesses in my own numbers

Stated so a reviewer can attack them.

  1. The 24% terminal margin is a judgement. It is evidenced by the trajectory but the trajectory has flattened, and 20.4% (no expansion) would move the required CAGR from 9.7% to ~13.5% and the margin from −0.9pp to −4.7pp — i.e. out of the noise band and into a FAIL. This single input decides the verdict and the analysis cannot settle it. That is the honest statement and it is why the verdict is INDETERMINATE.
  2. NTM revenue of $47,400m rolls guidance forward one quarter at ~9%. If organic decelerates to 6% as Q2 guidance implies and does not recover, NTM is closer to $46,600m and the 12-month target falls to ~$212.
  3. The P/S history uses a 45-day filing-date proxy for the price date, not actual filing dates. Across 30 observations this introduces noise of a few percent in individual quarters; it does not move the 5th percentile conclusion, which holds against the entire range.
  4. The anchor set has eight members, of which two were excluded for unusable margins. Six observations is thin for a median. The full range (11.6x–27.7x) is therefore carried through every sensitivity rather than the median being treated as a point estimate.